__pycache__/
*.pyc
.env
.venv/
.pytest_cache/
# Runtime state (SQLite, generated artifacts, per-company data)
/data/
*.sqlite
*.sqlite3
companies/*/data/
companies/*/state.json
# Shared skills the operator wrote or imported. In a source checkout
# paths.user_home() is the repository root, so this is where they land.
/skills/
# Installed plugin folders, but not plugins/registry.json, which is the
# curated allow-list and belongs to the repository.
/plugins/*/
# Local model caches
.ollama/

data-demo/
backups/

# PyInstaller build output (packaging/corparius.spec)
/build/
/dist/
.coverage
coverage.json
htmlcov/
.ruff_cache/
.mypy_cache/

# Companies reelles : configuration, skills, leads, dossiers de migration.
# Le depot est public. Ces dossiers contiennent du positionnement commercial et des
# adresses email de personnes identifiables, ils ne doivent jamais y arriver.
# Seule companies/example/ reste versionnee, cest le gabarit livre avec le framework.
companies/*
!companies/example/

# The front end's tools and its output.
#
# `node_modules/` is obvious. `corparius/api/static/` is **generated** by `npm run build` and is not
# tracked: it is a build artefact declared in pyproject's wheel `artifacts` and in the PyInstaller
# spec, produced by CI before either packages anything. A fresh checkout therefore has no `/app/`,
# and that is the supported state the route reports — `/` still serves the single-file console.
#
# `package-lock.json` **is** tracked, and has to be: CI runs `npm ci`, which requires it, and caches
# on its hash.
/web/node_modules/
/corparius/api/static/
