# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
venv/
env/
ENV/
.venv

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Claude Code local session state / tooling (settings, worktrees, audit notes)
.claude/

# Testing
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.benchmarks/

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pytype/
.hypothesis/

# Environment variables and secrets
.env
.env.local
.env.*.local
*.pem
*.key
credentials.json

# Development artifacts
.archive/
.research/
checkpoints/
*.exe

# Go build artifacts
*.test
*.out
*.prof

# Compiled Go example/pattern/harness binaries (built from sibling main.go;
# never commit these — they are arch-specific and bloat the repo + the
# agenkit-go distribution mirror). Build them on demand instead.
agenkit-go/main
agenkit-go/router
agenkit-go/router_pattern
agenkit-go/sequential_pattern
agenkit-go/parallel_pattern
agenkit-go/fallback_pattern
agenkit-go/advanced_approval
agenkit-go/basic_hitl
agenkit-go/websocket
agenkit-go/sse_transport
agenkit-go/examples/protocols/agui/advanced_approval/advanced_approval
agenkit-go/examples/techniques/graph_of_thought/graph_of_thought
agenkit-go/tests/cross_language_harness
agenkit-zig/tests/cross_language_harness
tests/cross_language/harness_go_bin
tests/cross_language/harness_go/main
tests/cross_language/harness_go/cross_language_harness
# What `go build .` produces by default in that directory (Go names the binary
# after the directory), matching the harness_rust/harness_zig entries below.
tests/cross_language/harness_go/harness_go
tests/cross_language/harness_rust/harness_rust
tests/cross_language/harness_zig/harness_zig
agenkit-go/basic
agenkit-go/test_client
agenkit-go/memory_hierarchy
# All compiled Go example binaries (built from examples/*; never commit).
agenkit-go/*_example
# Compiled Rust artifacts (also covered by target/ rules, belt-and-suspenders).
*.rlib
*.rmeta

# Zig cache
agenkit-zig/.zig-cache/

# Documentation build
site/
.cache/

# Marimo notebook session cache (written by `marimo edit`/`marimo export`
# under the notebook's directory, e.g. tutorials/__marimo__/)
__marimo__/

# Ruff cache
.ruff_cache/

# Node.js
node_modules/
# Lockfiles are ignored for examples (where they'd churn without adding value),
# but committed for the published packages and the test harnesses, where a
# reproducible dependency set is the point. agenkit-ts and packages/wasm predate
# this rule and stay tracked because .gitignore does not affect already-tracked
# paths; the harness needs an explicit negation. Its CI gate runs `npm ci`,
# which requires the lockfile to be present (#736).
package-lock.json
!agenkit-ts/package-lock.json
!packages/wasm/package-lock.json
!tests/cross_language/harness_ts/package-lock.json
.npm/

# Astro generated type cache (astro 7+)
.astro/

# WASM binaries copied into the browser examples by examples/browser/copy-wasm.mjs
# (run from each example's predev/prebuild). Build inputs, not source — the
# originals live in packages/wasm/wasm/.
examples/browser/*/public/wasm/

# Deployment artifacts
deploy/**/node_modules/
deploy/**/.terraform/
deploy/**/.terraform.lock.hcl
deploy/**/terraform.tfstate
deploy/**/terraform.tfstate.backup
deploy/**/tfplan
deploy/**/bootstrap
deploy/**/*.zip
deploy/**/.mf/
deploy/**/.wrangler/

# Lambda build artifacts under examples/ — `make build` in
# examples/deployment/aws-lambda/go/ writes ./bootstrap, and `make package` a .zip.
# Only deploy/** was covered, so these landed as untracked noise (#857).
examples/deployment/**/bootstrap
examples/deployment/**/*.zip
examples/deployment/**/.aws-sam/

# Compiled output of the out-of-tree example Go modules. These have no extension
# to match generically: `go build` names the executable after the thing it built,
# so a single-main module yields the module path's last element and `go build
# ./cmd/worker` yields `worker`. Names below were taken from running each build,
# not inferred. scripts/check-go-modules.sh uses -o to a scratch dir and no longer
# produces them, but a bare `go build` still does, and `git add -A` would then
# track ~52 MB of them — which is how #660 tracked ~1 GB.
examples/infrastructure/go/infrastructure-go
examples/go/techniques/reasoning/go-techniques-reasoning
examples/e2e/cross-language-system/go/e2e-cross-language-worker
examples/deployment/aws-lambda/go/aws-lambda-go
examples/apps/*/go/worker

# Rust build artifacts
agenkit-rust/target/
agenkit-rust/Cargo.lock

# Zig build artifacts
agenkit-zig/zig-cache/
agenkit-zig/zig-out/
agenkit-zig/test_arraylist*
# Zig cache anywhere in the tree (e.g. cross-language harness)
**/.zig-cache/
**/zig-out/

# C++ build artifacts
agenkit-cpp/build/
agenkit-cpp/.cmake/

# C#/.NET build artifacts
agenkit-cs/**/bin/
agenkit-cs/**/obj/

# C#/.NET, JVM build/test artifacts
agenkit-java/.jqwik-database
agenkit-java/target/
agenkit-scala/project/target/
agenkit-scala/target/

# Cross-language test harness build artifacts
tests/cross_language/harness_rust/target/
tests/cross_language/harness_zig/.zig-cache/

# Generated by scripts/test-parity.sh. TEST_PARITY.md is a status dashboard, and
# CLAUDE.md keeps status/progress docs in GitHub only -- it was removed from the
# tree in #623 but the script still regenerates it, so ignore it rather than
# leaving a forbidden file untracked in every working copy. The JSON report stays
# tracked: tests/test_parity_validation.py reads it as its input.
docs/TEST_PARITY.md

# Stray editor/backup files
*.old

# Stray tooling artifacts
=*
*.log
excalidraw.log
