# Environment - never commit API keys
.env

# Python
__pycache__/
*.py[cod]
*.pyo
.Python
*.egg-info/
dist/
build/
.eggs/

# Virtual environment - uv creates this automatically
.venv/

# IDE
.vscode/
.idea/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

# Agent runtime/session data
.agent_jobs.db
.agent_runs.db
.agent_cron.log
local/
.oauth_tokens.json
.tool_results/
.sessions/
.projects.json
.projects/
.artifacts/
.workflow-definitions.json
.file_history/
.task_graph_*.json
.agent_history
memory/sessions/
.skill_quarantine/
frontend/dist/
frontend/node_modules/
frontend/tsconfig.tsbuildinfo

# Local active configs
hooks.json
mcp_servers.json

# NOTE: uv.lock SHOULD be committed - it pins exact dependency versions
# for reproducible installs. Do NOT add uv.lock here.

# Web UI / local tooling
node_modules/
.pytest_cache/
.brian-skill-store.lock
web/tsconfig.tsbuildinfo
.claude/worktrees/

mainDocs/.scratch/

# Runtime diagnostic log (loop.py _diag) — churns constantly, never commit
.diag_log.txt

# [FEATURE: durable-workspace] BRIAN's per-project working dirs + backups
workspace/
.backups/

# local secret dumps — never commit
env_export*.txt

# SQLite sidecars for ignored runtime dbs
.agent_runs.db-*
.agent_jobs.db-*

# Instance data and local leftovers — not the public product
memory/
ollama_proxy/
.claude/
mainDocs/
/assets/
bench/
/skills/
.coverage
.brian-skill-audit.jsonl
test.txt
test_autocomplete.py
requirements.txt
.github/workflows/deploy.yml
deploy/nginx/
deploy/*.conf.template
deploy/deploy-web.sh
deploy/restart-api.sh
deploy/systemd/ollama-rotator.service
scripts/animate_bellcurve.py
scripts/live_provider_smoke.py
scripts/ttg_chat_client.py

# [FEATURE: model-bench] harness venv + run outputs are built/ephemeral
bench/harness/.venv/
bench/runs/
bench/results.json
