############################################
# Global / OS / Editors
############################################
.DS_Store
Thumbs.db
*.swp
*.swo
*.orig
*.rej
*.bak
*.tmp
*.temp
~$*

# VS Code (keep shared configs if added explicitly)
.vscode/*
!.vscode/settings.json
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/tasks.json
.idea/
*.iml

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

# Distribution / packaging
build/
dist/
.eggs/
*.egg-info/
*.egg
pip-wheel-metadata/
MANIFEST

# Virtual environments
.venv/
venv/
ENV/
env/
.envrc
.python-version

# Unit test / coverage
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.cache/
.tox/
.nox/
.mypy_cache/
.dmypy.json
.pyre/
.pytype/
pytest-debug.log

# Type checker caches
.mypy_cache/

# Jupyter
.ipynb_checkpoints/

############################################
# Dependencies & lock files
# (We KEEP uv.lock intentionally for reproducibility)
# If you later add Poetry, remove comment and ignore poetry.lock only if desired.
Pipfile.lock
poetry.toml
poetry.lock

############################################
# Environment & secrets
############################################
.env
.env.*
!.env.example
*.pem
*.key
*.crt
*.cer
*.der
*.p12
*.jks
*.keystore

# GCP Workload Identity credential file written into the workspace by
# google-github-actions/auth. Must be ignored so it never lands in a commit
# AND so `apex-release`'s check_git_clean preflight doesn't count it as a
# dirty path and abort the tag-driven release.
gha-creds-*.json

############################################
# Logs & runtime artifacts
############################################
logs/
log/
*.log
*.log.*
*.out
*.err
.profile
.prof
*.pid

############################################
# AWS / Cloud / Infrastructure
############################################
# AWS CDK synthesized output (regenerate via `cdk synth`)
cdk.out/
cdk.out.*/
# SAM / Serverless
.aws-sam/
# Terraform (if used)
.terraform/
.terraform.*
terraform.tfstate
terraform.tfstate.*
crash.log
crash.*.log
override.tf
override.tf.json
*.tfvars
*.tfvars.json
# CloudFormation change sets / exports
*.template.json
*-stack-output.json

############################################
# MCP (Model Context Protocol) server artifacts
############################################
.mcp/
mcp.log*
*.mcp.log

############################################
# GitHub SpecKit artifacts
############################################
# Commit .specify/ (specs, plans, tasks, constitution)
# Claude Code conventions - track team-shared files, ignore personal ones
.claude/settings.local.json
.claude/projects/
# Track these (team-shared):
#   .claude/settings.json   - hooks, permissions
#   .claude/commands/        - SpecKit slash commands
#   .claude/rules/           - architectural rules
#   .claude/hooks/           - automation scripts

############################################
# LLM / AI / Model artifacts
############################################
# Hugging Face / model caches (project-local copies)
huggingface/
.huggingface/
# Vector / embedding stores
.chroma/
chroma/
chroma_db/
vectorstore/
indexes/
# General model weights & large binaries (stored in ~/.apex/models/)
models/
!models/README.md
# Models are now stored in ~/.apex/models/ and auto-downloaded
src/apex_core/tools/models/
*.bin
*.pt
*.pth
*.ckpt
*.onnx
*.tflite
*.safetensors

# Prompt / session caches
*.prompt-cache
prompt_cache/

############################################
# Data artifacts (adjust if you want some tracked)
############################################
*.sqlite3
*.db
*.db-journal
*.sqlite
*.parquet
*.feather
*.arrow
*.h5
*.hdf5
*.npy
*.npz
*.csv
*.tsv
*.xls
*.xlsx
*.orc

############################################
# Archives
############################################
*.zip
*.tar
*.tar.gz
*.tgz
*.bz2
*.7z

############################################
# Generated docs / site builds
############################################
site/
public/
.build-docs/

############################################
# Temporary scratch & experimental folders
############################################
scratch/
.tmp/
.tmp*/

############################################
# Node (in case of embedded tooling)
############################################
node_modules/
.npm/
.pnpm-store/

############################################
# Misc tooling
############################################
coverage*/
.DS_STORE

############################################
# Local override configs (add examples separately)
############################################
*.local.yaml
*.local.yml
*.override.yaml
*.override.yml

############################################
# Ignore generated diagrams / images if recreated automatically
############################################
# docs/images/generated/

############################################
# Exceptions / Keep important infra context files
############################################
!cdk.context.json
!**/README.md

# End of .gitignore

############################################
# Test outputs & temporary files (APEX-specific)
############################################
*_output.txt
*_final*.txt
workflow_*.txt
run_output*.txt
list_output.txt
cleanup_*.py
remove_*.py
test_results*.txt
coverage.json
.claude/worktrees/
