# Dependencies
node_modules/
__pycache__/
*.pyc
*.pyo
.pytest_cache/
.mypy_cache/
.ruff_cache/
target/
dist/
*.egg-info/
.eggs/

# Build outputs
build/
*.whl
*.so
*.dylib

# Environment
.env
.env.local
.env.*.local
.venv/
venv/
env/

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

# OS
.DS_Store
Thumbs.db

# Logs
*.log
logs/

# Testing
coverage/
htmlcov/
.coverage

# Frontend
src/frontend/dist/
src/frontend/.cache/
src/frontend/node_modules/

# Rust
src/core/target/

# Data (local development)
data/
*.mcap
*.bag

*/skills
*/agents

# Environment files
*.env
*.env.*

design-log/
**/.docusaurus/

# Docs (Docusaurus)
docs/node_modules/
docs/build/
docs/.docusaurus/

# Build intermediates (the 3.0 OpenAPI document the Rust generator reads)
/build/

# `make contract` deletes and regenerates src/contract wholesale, so a lock file
# there would show as deleted and break the contract diff gate. It is a library
# crate; the CLI's lock is the one that matters.
/src/contract/Cargo.lock

# The CLI's link file: a developer's own linked directory is not the repo's business.
.bagpacker.toml
