# Python
__pycache__/
*.pyc
*.pyo
.pytest_cache/
.ruff_cache/

# venv (uv-managed)
.venv/

# Secrets — never commit
.env
*.env
!.env.example

# Runtime data: audit log, checkpoints, budget (see plan .data/ decision)
.data/

# Company Docs library (v7 M19): CEO-curated documents = local user data, restored
# from backup (backup.sh covers it), never committed.
company-docs/

# Per-agent profiles: only the `default` template is committed (holds no secrets,
# only token_env NAMES). Real per-agent profiles stay local.
profiles/*
!profiles/default/
!profiles/default/**
# Staff templates: shipped prefill source for the CreateAgent wizard, not a per-agent
# runtime profile — committed like profiles/default/.
!profiles/templates/
!profiles/templates/**

# Company identity (name + coordinator + team-task cap) — per-install user data like
# real profiles; load_company() degrades safely when absent on a fresh clone.
company.yaml

# Agent tooling / instructions — not part of the published project
.claude/
AGENTS.md
CLAUDE.md

# Internal working artifacts — not part of the published project
plans/
docs/references/
.dandori-agent

# Frontend (M4): ignore deps + the in-web build cache, but COMMIT the served dist
# at my_crew/server/static/app/ (the "FastAPI serves static, zero Node step" property).
web/node_modules/
web/dist/

# MCP servers installed from npm by the installer (P4) into a repo-local prefix —
# never committed, re-created by deploy/install.sh.
.mcp-servers/

# OS
.DS_Store
.setup-complete
.env.bak
# demo-mode swap backup (chứa data THẬT khi demo đang bật — tuyệt đối không commit)
.demo-backup/
# v18: registry is user data (the CEO's real team) — template is registry.example.yaml
/registry.yaml
