# Byte-compiled / caches
__pycache__/
*.py[cod]
.pytest_cache/
.ruff_cache/
.mypy_cache/
.pyre/
.tox/
.nox/

# Virtual environments (uv creates .venv/)
.venv/
venv/

# uv: uv.lock IS committed (see pyproject/dev docs); nothing to ignore here.

# Environment / secrets
.env
.env.*
!.env.example

# Test / coverage
.coverage
coverage.xml
htmlcov/

# Build artifacts
dist/
build/
*.egg-info/

# Databases / logs
*.db
*.sqlite
*.sqlite3
*.log

# Editors / OS
.DS_Store
.idea/
.vscode/
.codex/
.agents/
# ...except the Codex plugin's own marketplace manifest: `.agents/plugins/
# marketplace.json` is where `codex plugin marketplace add <dir>` looks first,
# so it is package content, not local agent scratch.
!codex-plugin-telem/.agents/

# Node (openclaw plugin package)
node_modules/

# npm pack/publish artifacts (npm publish dry-runs, `npm pack`)
openclaw-plugin-telem/*.tgz
opencode-plugin-telem/*.tgz
pi_coding/*.tgz
create-telemai/*.tgz

# The bundler's module list, written beside the package rather than into dist/ so it
# cannot ride into a published tarball (it names every internal source path). Local
# diagnostic only — nothing reads it.
create-telemai/.build-inputs

# Runtime state the Claude plugin writes into $CLAUDE_PLUGIN_ROOT, which IS this
# directory when the hooks are exercised from a checkout. It holds session ids.
claude-plugin-telem/window.json

# The plugin packages COPIED into @telemai/create at prepack (scripts/copy-plugins.mjs)
# so a published npx run can install them. Build output, never source: the originals
# are claude-plugin-telem/ and codex-plugin-telem/ at the repo root, and `postpack`
# removes the copy again.
create-telemai/plugins/

# Docs site (Astro/Starlight) — also covered by docs-site/.gitignore, listed
# explicitly per task brief
docs-site/dist/
docs-site/node_modules/

# Staged public-repo exports (sync/export.mjs)
sync/.staging/
