# Python
__pycache__/
*.py[cod]
*$py.class
*.so

# Distribution / packaging
dist/
# Ignore build artifacts, but NOT build/package/ (release packaging config = source).
# Must be `build/*` (not `build/`) so the re-include below can take effect.
build/*
!build/package/
*.egg-info/
*.egg

# Virtual environments
.venv/
venv/
ENV/

# Environment variables
.env
.env.*
!.env.example
!.env.template

# IDE
.idea/
.vscode/
*.swp
*.swo
*~
# Ignore .claude/ contents (use /* so a single file can be re-included below;
# git cannot un-ignore a file whose parent dir is excluded with a bare `.claude/`).
.claude/*
# ...but DO track the shared project hooks: the PostToolUse hook wires the
# blocking ruff/ty quality gate, so every contributor using Claude Code gets it.
# Local-only overrides still belong in the (ignored) .claude/settings.local.json.
!.claude/settings.json
.audit/

# Browser-automation MCP scratch (console logs, page snapshots)
.playwright-mcp/

# Testing
.pytest_cache/
.coverage
htmlcov/

# mypy
.mypy_cache/

# ruff
.ruff_cache/

# Explorer (deprecated -- use 'llm export' instead)
kbc-explorer/

# Docs (local-only subdirectories)
docs/done/
docs/AGENT-REPORTS/

# OS
.DS_Store
Thumbs.db
.kbagent/
tmp/

# web/ Node + React build artifacts
/node_modules/
web/backend/node_modules/
web/backend/dist/
web/frontend/node_modules/
web/frontend/dist/
web/**/.vite/
web/**/.cache/
web/**/npm-debug.log*
web/frontend/tsconfig.tsbuildinfo

# Hatch build hook copies the built SPA here right before wheel / sdist
# packaging so the installed package can serve `kbagent serve --ui`
# without needing the source `web/` tree. Generated -- never checked in.
src/keboola_agent_cli/_ui_dist/

# Lineage caches produced by `kbagent lineage build --output ...`. They
# embed live Keboola project aliases, FQN table IDs, and SQL bodies, so
# committing them would leak per-project metadata into the public repo.
# The default output filename + the conventional `.lineage.json` suffix
# are both ignored.
lineage.json
*.lineage.json
