# ─── Secrets — never commit ────────────────────────────────────────────────
.env
.env.*
!.env.example
.envrc
.npmrc
*.pem
*.key
*.crt
*.p12
*.pfx
*.token
*.secret
secrets.*
.secrets/

# ─── Python ────────────────────────────────────────────────────────────────
__pycache__/
*.py[cod]
*.pyo
*.so
*.egg-info/
.eggs/
build/
dist/
*.whl
.pytest_cache/
.mypy_cache/
.ruff_cache/
.tox/
.nox/
.pyre/
.pytype/
.coverage
.coverage.*
htmlcov/
coverage.xml
.hypothesis/

# Virtualenvs
.venv/
venv/
env/
ENV/
__pypackages__/

# uv / pip / poetry
uv.lock
poetry.lock
pip-wheel-metadata/

# Cython artifacts (kept out — built inside Docker for the hosted image)
pineforge_codegen/**/*.c
pineforge_codegen/**/*.cpp

# ─── Node / TypeScript ─────────────────────────────────────────────────────
node_modules/
**/node_modules/
package-lock.json
**/package-lock.json
yarn.lock
pnpm-lock.yaml
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnp.*
.yarn/
.npm/
.eslintcache
*.tsbuildinfo

# Build output
dist/
**/dist/
build/
**/build/
out/
**/out/
.turbo/
.next/

# ─── Editor / IDE ──────────────────────────────────────────────────────────
.vscode/
!.vscode/extensions.json
!.vscode/settings.shared.json
.idea/
*.swp
*.swo
*.swn
*~
.history/

# ─── OS junk ───────────────────────────────────────────────────────────────
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
desktop.ini

# ─── Logs / temp / scratch ─────────────────────────────────────────────────
*.log
logs/
tmp/
temp/
*.tmp
*.bak
*.orig
*.rej
.scratch/

# ─── Tooling caches (Claude Code, AI agents) ───────────────────────────────
.claude/
.cursor/
.aider*

# ─── Project-specific notes ────────────────────────────────────────────────
# cloud/mcp-local/ was extracted to a public repo:
#   https://github.com/fullpass-4pass/pineforge-codegen-mcp
# Don't bring it back here.
