codebase-index 2.1.1__tar.gz → 2.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codebase_index-2.1.2/.claude/skills/codebase-index/.skill_version +1 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude-plugin/plugin.json +1 -1
- codebase_index-2.1.2/.codex/skills/codebase-index/.skill_version +1 -0
- codebase_index-2.1.2/.opencode/skills/codebase-index/.skill_version +1 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/CHANGELOG.md +18 -1
- {codebase_index-2.1.1 → codebase_index-2.1.2}/PKG-INFO +1 -1
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/installer.md +1 -1
- {codebase_index-2.1.1 → codebase_index-2.1.2}/requirements.lock +1 -1
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/__init__.py +1 -1
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/hooks.py +39 -23
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_hooks_guard.py +37 -0
- codebase_index-2.1.1/.claude/skills/codebase-index/.skill_version +0 -1
- codebase_index-2.1.1/.codex/skills/codebase-index/.skill_version +0 -1
- codebase_index-2.1.1/.opencode/skills/codebase-index/.skill_version +0 -1
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/SKILL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/references/commands.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/scripts/cbx +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/scripts/cbx.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.claude-plugin/marketplace.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/SKILL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/references/commands.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/scripts/cbx +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/scripts/cbx.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.editorconfig +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.gitattributes +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/ISSUE_TEMPLATE/benchmark_report.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/ISSUE_TEMPLATE/language_support.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/ISSUE_TEMPLATE/skill_listing_request.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/SUPPORT.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/labels.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/workflows/ci.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.github/workflows/release.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.gitignore +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/agents/codebase-index.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/commands/codebase-index.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/SKILL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/references/commands.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/scripts/cbx +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/scripts/cbx.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/AGENTS.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/CODE_OF_CONDUCT.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/CONTRIBUTING.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/LICENSE +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/README.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/ROADMAP.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/SECURITY.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/adapters/claude.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/adapters/claude.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/adapters/codex.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/adapters/codex.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/adapters/opencode.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/adapters/opencode.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/assets/architecture.svg +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/assets/benchmark.svg +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/assets/demo-terminal.svg +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/assets/mark.png +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/assets/social-preview.png +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/bin/cbx +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/bin/cbx.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/bin/codebase-index +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/bin/codebase-index.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/ARCHITECTURE.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/BENCHMARKS.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/COMMUNITY_AUDIT.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/COMMUNITY_LAUNCH.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/COMPARISON.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/DATABASE_SCHEMA.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/DEMO.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/DEVELOPMENT.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/FAQ.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/INSTALLATION.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/LANGUAGES.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/MCP.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/MEMORY.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/PRODUCT_UPGRADE_PLAN.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/QUICKSTART.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/RELEASE_CHECKLIST.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/RETRIEVAL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/RETRIEVAL_PIPELINE.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/ROADMAP.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/SCHEMA.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/SECURITY.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/SECURITY_MODEL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/SKILL_DESIGN.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/demo.tape +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-benchmark-index-improvements.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-generalize-skill-research-discipline.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m1-storage-discovery.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m2-fts-lexical.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m3-treesitter-symbols.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m4-hybrid-search.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m5-graph-impact.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m6-embeddings-vector.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m7-5-plugin-one-command-install.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m7-skill-packaging.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m8-hooks-watch.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m9-release.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-multilang-symbols-make-skill-win.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-06-24-snippet-skeletonization.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/specs/2026-05-29-plugin-one-command-install-design.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/specs/2026-06-24-snippet-skeletonization-design.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/specs/2026-09-10-evidence-memory-design.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/config.example.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/demo/EXPECTED_OUTPUT.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/demo/README.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/demo/run_demo.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/demo/run_demo.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/hooks/settings.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/queries.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/sample-queries.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/examples/sample-retrieval-output.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/hooks/hooks.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/install.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/install.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/lib/common.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/lib/common.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/pyproject.toml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/2.0-audit.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/README.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/architecture.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/build_indexes.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/data/.gitignore +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/diagnose_accretion.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/diagnose_calibration.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/diagnose_slots.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/diagnose_structure.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/experiment_memory.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/experiments.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/fit_gate.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/fit_weights.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/hypotheses.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/novelty.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/nucleus/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/nucleus/baselines.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/nucleus/evalrun.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/nucleus/memory.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/nucleus/relations.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/nucleus/search.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/related-work.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/selection.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/research/test_nucleus.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/apply_labels.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/bootstrap.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/bootstrap.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/check_links.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/check_versions.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/gen_assets.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/gen_benchmark_chart.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/gen_terminal_svg.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/release_notes.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/release_smoke.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/scripts/sync_skill_copies.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/SKILL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/examples/basic-usage.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/examples/claude-md-example.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/examples/hooks-example.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/references/commands.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/references/memory.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/references/response-contract.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/scripts/bootstrap.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/scripts/cbx +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/scripts/cbx.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/scripts/doctor.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/scripts/install.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skill/scripts/smoke_test.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skills/codebase-index/SKILL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skills/codebase-index/references/commands.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/__main__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/config.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/discovery/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/discovery/classify.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/discovery/gates.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/discovery/ignore.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/discovery/walker.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/doctor.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/embeddings/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/embeddings/backend.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/embeddings/external.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/embeddings/local.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/embeddings/noop.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/analysis.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/builder.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/expand.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/export.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/modules.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/navigate.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/graph/retrieval.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/indexer/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/indexer/doc_chunks.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/indexer/freshness.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/indexer/pipeline.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/mcp/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/mcp/server.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/memory/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/memory/identity.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/memory/session.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/memory/store.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/memory/validate.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/models.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/output/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/output/json.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/output/markdown.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/output/redact.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/parsers/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/parsers/base.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/parsers/languages.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/parsers/line_chunker.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/parsers/symbol_chunks.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/parsers/treesitter.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/budget.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/diversity.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/features.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/fusion.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/fuzzy.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/intent.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/lexical.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/pipeline.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/priors.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/rerank.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/searchers.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/skeleton.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/tuning.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/retrieval/types.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/scaffold.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/service.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_template/SKILL.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_template/examples/hooks/settings.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_template/references/commands.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_template/references/memory.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_template/references/response-contract.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_template/scripts/cbx +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_template/scripts/cbx.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/skill_update.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/storage/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/storage/db.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/storage/repo.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/storage/schema.sql +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/watch/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/src/codebase_index/watch/watcher.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/benchmark_honest.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/benchmark_honest_RESULTS.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/benchmark_honest_newtowny.txt +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/benchmark_public.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/benchmark_public_RESULTS.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/benchmark_real_repo.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/conftest.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/README.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/__init__.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/baselines.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/gen_queries.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/harness.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/memory_eval.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/metrics.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/queries/self_repo.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/queries/self_repo_git.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/1.10.0-perf.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/1.10.0-retrieval-8corpus.txt +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/2026-09-04-public-baselines.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/2026-09-04-public-baselines.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/2026-09-14-evidence-memory.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/2026-09-14-evidence-memory.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/2026-09-24-agent-pilot.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/2026-09-24-retrieval-2.1.0.txt +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/results/2026-09-24-terra-nl-queries.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/run_baselines.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/eval/run_eval.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/README.md +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/expected_answers.yml +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/index-1.10.0/index.sqlite +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/multilang/sample.go +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/multilang/sample.java +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/multilang/sample.rs +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/.env +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/.gitignore +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/huge.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/logo.png +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/node_modules/leftpad/index.js +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/secrets.pem +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/src/api/service.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/src/auth/token.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/src/models/user.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/src/schema.generated.ts +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/fixtures/sample_repo/web/app.ts +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/architecture.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/describe_refresh.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/explain_auth.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/impact_user_model.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_architecture.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_describe_symbol.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_explain_code.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_find_refs.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_find_symbol.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_healthcheck.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_impact_of.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_impact_of_diff.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_index_stats.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_path_between.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/mcp_search_code.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/path_renew_to_token.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/refs_refresh_access_token.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/search_token.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/stats.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden/symbol_user.json +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/golden_utils.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/installer/smoke.ps1 +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/installer/smoke.sh +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_agent_ergonomics.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_analysis.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_benchmark_comparison.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_bootstrap.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_budget.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_chunker.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_classify.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_clean_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_cli_golden.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_compact_output.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_config.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_diff_impact.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_discovery.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_diversity.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_doc_chunks.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_doctor.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_embeddings_backend.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_embeddings_external.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_embeddings_local.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_eval_baselines.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_freshness.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_fusion.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_fuzzy.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_gen_queries.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_graph.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_graph_coverage.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_graph_export_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_graph_retrieval.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_hooks_merge.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_hybrid_ranking.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_ignore.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_impact_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_impact_decay.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_index_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_init_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_intent.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_languages.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_lexical.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_mcp_golden.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_mcp_server.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_eval_smoke.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_identity.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_lifecycle.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_session.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_stale_context.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_store.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_surfaces.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_memory_validate.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_migration_1x.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_multilang_symbols.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_navigate.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_output.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_packaging.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_parse_guardrails.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_perf_smoke.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_pipeline.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_pipeline_search.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_pipeline_vectors.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_plugin_manifest.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_plugin_skill_parity.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_plugin_wrappers.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_priors.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_public_benchmark.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_qualified_refs.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_quality_benchmark.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_ranking_features.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_read_cap.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_redact.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_release_scripts.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_repo_search.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_rerank.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_retrieval_types.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_scaffold.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_search_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_searchers.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_seeded_index.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_service.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_skeleton.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_skill_update.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_storage.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_symbol_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_symbol_ranking.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_symbol_refs.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_sync_skill_copies.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_treesitter.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_tuning_contract.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_update.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_update_cli.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_vector_search.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_vectors_storage.py +0 -0
- {codebase_index-2.1.1 → codebase_index-2.1.2}/tests/test_watcher.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.2
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "codebase-index",
|
|
4
4
|
"displayName": "Codebase Index",
|
|
5
5
|
"description": "Give Claude a precise local map of your codebase: find implementations, trace behavior, and predict change impact with file-line evidence.",
|
|
6
|
-
"version": "2.1.
|
|
6
|
+
"version": "2.1.2",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "codebase-index contributors"
|
|
9
9
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.2
|
|
@@ -6,6 +6,22 @@ All notable changes to this project are documented here. The format is based on
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [2.1.2] - 2026-09-25
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- The `PreToolUse` guard no longer blocks work it should let through:
|
|
14
|
+
- the first `codebase-index` command of a session turns the guard off even when it
|
|
15
|
+
is the command that builds the index; before, a repository without an index kept
|
|
16
|
+
the guard on for the whole session. Session state now lives in the system temp
|
|
17
|
+
directory (`CBX_HOOK_STATE` overrides it) instead of inside the index;
|
|
18
|
+
- heredoc bodies (`cat > script.ps1 <<'EOF'`, `python - <<EOF`) are file content, not
|
|
19
|
+
commands, and are no longer scanned for `grep`/`Select-String`;
|
|
20
|
+
- a retry is matched by its search term, not by the whole tool call, so a rewritten
|
|
21
|
+
command or a new description for the same search goes through;
|
|
22
|
+
- a quoted alternation such as `grep "a\|b"` is read whole, and a search on its own
|
|
23
|
+
line of a multi-line command is recognised.
|
|
24
|
+
|
|
9
25
|
## [2.1.1] - 2026-09-25
|
|
10
26
|
|
|
11
27
|
### Added
|
|
@@ -886,7 +902,8 @@ Pooled over 305 queries (Python, Java, TypeScript), v1.8.0 → 1.9.0:
|
|
|
886
902
|
- Hooks example + `watch` mode for keeping the index fresh without blocking the edit loop (M8).
|
|
887
903
|
- `doctor`, `stats`, `clean` diagnostics/maintenance commands.
|
|
888
904
|
|
|
889
|
-
[Unreleased]: https://github.com/denfry/codebase-index/compare/v2.1.
|
|
905
|
+
[Unreleased]: https://github.com/denfry/codebase-index/compare/v2.1.2...HEAD
|
|
906
|
+
[2.1.2]: https://github.com/denfry/codebase-index/compare/v2.1.1...v2.1.2
|
|
890
907
|
[2.1.1]: https://github.com/denfry/codebase-index/compare/v2.1.0...v2.1.1
|
|
891
908
|
[2.1.0]: https://github.com/denfry/codebase-index/compare/v2.0.0...v2.1.0
|
|
892
909
|
[2.0.0]: https://github.com/denfry/codebase-index/compare/v1.9.0...v2.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codebase-index
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.2
|
|
4
4
|
Summary: A precise local codebase map for AI coding agents: find, trace, and predict with file-line evidence.
|
|
5
5
|
Project-URL: Homepage, https://github.com/denfry/codebase-index
|
|
6
6
|
Project-URL: Documentation, https://github.com/denfry/codebase-index/tree/main/docs
|
|
@@ -6,9 +6,11 @@ Two events, both no-ops outside a repository that has an index:
|
|
|
6
6
|
is indexed, and which commands answer code questions.
|
|
7
7
|
- ``guard`` (PreToolUse on Grep and Bash) intercepts a code search the first time
|
|
8
8
|
in a session, before any ``codebase-index`` command has run, and names the
|
|
9
|
-
index command to use instead. It is a nudge, not a wall:
|
|
10
|
-
|
|
11
|
-
the guard off
|
|
9
|
+
index command to use instead. It is a nudge, not a wall: searching for the
|
|
10
|
+
same term again lets it through, the first ``codebase-index`` command in the
|
|
11
|
+
session turns the guard off (even one that has yet to build the index), and
|
|
12
|
+
searches over docs, logs or config, or inside heredoc bodies, are never
|
|
13
|
+
intercepted.
|
|
12
14
|
|
|
13
15
|
Measured on a 5.9k-file monorepo, an agent spent 19% fewer tokens with the index
|
|
14
16
|
than with grep (tests/eval/results/2026-09-24-agent-pilot.md), but agents reach
|
|
@@ -17,6 +19,8 @@ only the standard library and does no index work beyond one small SQLite read.
|
|
|
17
19
|
|
|
18
20
|
Entry point: ``codebase-index-hook <event>`` reads the hook JSON on stdin and
|
|
19
21
|
prints the hook JSON reply (or nothing). ``CBX_GUARD=0`` disables the guard.
|
|
22
|
+
Per-session state lives in the system temp directory (``CBX_HOOK_STATE``
|
|
23
|
+
overrides it), so it exists before the repository has an index.
|
|
20
24
|
"""
|
|
21
25
|
|
|
22
26
|
from __future__ import annotations
|
|
@@ -27,21 +31,31 @@ import os
|
|
|
27
31
|
import re
|
|
28
32
|
import sqlite3
|
|
29
33
|
import sys
|
|
34
|
+
import tempfile
|
|
30
35
|
import time
|
|
31
36
|
from pathlib import Path
|
|
32
37
|
from typing import Any, Optional
|
|
33
38
|
|
|
34
39
|
INDEX_REL = Path(".claude") / "cache" / "codebase-index" / "index.sqlite"
|
|
35
|
-
_STATE_DIR = "
|
|
40
|
+
_STATE_DIR = "codebase-index-hooks"
|
|
36
41
|
_STATE_TTL_S = 2 * 24 * 3600
|
|
37
42
|
|
|
38
43
|
# A shell segment that searches file contents: the first command of the segment
|
|
39
|
-
# (after `&&`, `||`,
|
|
44
|
+
# (after `&&`, `||`, `;`, a newline or the start), so `ps aux | grep x` is not a
|
|
45
|
+
# repo search. Quoted arguments may hold `|`, as in grep "a\|b".
|
|
40
46
|
_SEARCH_CMD = re.compile(
|
|
41
|
-
r"(
|
|
42
|
-
r"(?P<cmd>git\s+grep|grep|egrep|fgrep|rg|ag|ack|findstr|Select-String)\b
|
|
47
|
+
r"(?:^|&&|\|\||;|\n)[ \t]*(?:cd\s+\S+\s*&&\s*)?"
|
|
48
|
+
r"(?P<cmd>git\s+grep|grep|egrep|fgrep|rg|ag|ack|findstr|Select-String)\b"
|
|
49
|
+
r"""(?P<args>(?:"[^"\n]*"|'[^'\n]*'|[^|;&\n"'])*)""",
|
|
43
50
|
re.IGNORECASE,
|
|
44
51
|
)
|
|
52
|
+
# A heredoc body is file content (a script being written, stdin for python), not
|
|
53
|
+
# commands; an unterminated one runs to the end of the command.
|
|
54
|
+
_HEREDOC = re.compile(
|
|
55
|
+
r"""(?<!<)<<-?(?!<)[ \t]*(['"]?)([A-Za-z_][\w-]*)\1(?P<rest>[^\n]*)\n"""
|
|
56
|
+
r".*?(?:^[ \t]*\2[ \t]*$|\Z)",
|
|
57
|
+
re.DOTALL | re.MULTILINE,
|
|
58
|
+
)
|
|
45
59
|
_INDEX_CMD = re.compile(r"(?:^|[\s;&|/\\\"'])(?:codebase-index|cbx)(?:\.exe|\.ps1)?\s+\w")
|
|
46
60
|
# Searches over prose, logs and config are what grep is for; leave them alone.
|
|
47
61
|
_NON_CODE = re.compile(
|
|
@@ -132,15 +146,12 @@ def guard(payload: dict) -> Optional[dict]:
|
|
|
132
146
|
tool_input = payload.get("tool_input") or {}
|
|
133
147
|
if tool not in ("Grep", "Bash"):
|
|
134
148
|
return None
|
|
135
|
-
|
|
136
|
-
if root is None:
|
|
137
|
-
return None
|
|
138
|
-
session = str(payload.get("session_id") or "default")
|
|
139
|
-
state = _State(root, session)
|
|
149
|
+
state = _State(str(payload.get("session_id") or "default"))
|
|
140
150
|
|
|
141
151
|
if tool == "Bash":
|
|
142
|
-
command = str(tool_input.get("command") or "")
|
|
152
|
+
command = _HEREDOC.sub(lambda m: "<<" + m.group("rest"), str(tool_input.get("command") or ""))
|
|
143
153
|
if _INDEX_CMD.search(command):
|
|
154
|
+
# Checked before the index exists: the first search is what builds it.
|
|
144
155
|
state.mark_used()
|
|
145
156
|
return None
|
|
146
157
|
pattern = _shell_search_pattern(command)
|
|
@@ -151,11 +162,11 @@ def guard(payload: dict) -> Optional[dict]:
|
|
|
151
162
|
return None
|
|
152
163
|
pattern = str(tool_input.get("pattern") or "")
|
|
153
164
|
|
|
154
|
-
if state.used:
|
|
165
|
+
if state.used or find_index_root(_cwd(payload)) is None:
|
|
155
166
|
return None
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
).hexdigest()
|
|
167
|
+
# Keyed by the search term, not the whole call: a retry rarely repeats the
|
|
168
|
+
# command byte for byte (a new description, another pipe, a regenerated script).
|
|
169
|
+
fingerprint = hashlib.sha1(_term(pattern).lower().encode("utf-8")).hexdigest()
|
|
159
170
|
if state.was_denied(fingerprint):
|
|
160
171
|
return None # the retry after a nudge: the agent decided grep is right
|
|
161
172
|
state.deny(fingerprint)
|
|
@@ -190,26 +201,31 @@ def _grep_targets_non_code(tool_input: dict) -> bool:
|
|
|
190
201
|
return bool(_NON_CODE.search(target))
|
|
191
202
|
|
|
192
203
|
|
|
204
|
+
def _term(pattern: str) -> str:
|
|
205
|
+
"""A regex search pattern as plain query words."""
|
|
206
|
+
return " ".join(re.sub(r"""[\\^$()\[\]{}|*+?"']""", " ", pattern).split())[:80]
|
|
207
|
+
|
|
208
|
+
|
|
193
209
|
def _reason(pattern: str) -> str:
|
|
194
|
-
term =
|
|
195
|
-
term = " ".join(term.split())[:80]
|
|
210
|
+
term = _term(pattern) or "<what you are looking for>"
|
|
196
211
|
return (
|
|
197
212
|
"codebase-index: this repository is indexed, and the index answers code "
|
|
198
213
|
"searches with ranked, numbered lines in fewer tokens than grep. Run it first:\n"
|
|
199
214
|
f' codebase-index search "{term}" --compact # where / how\n'
|
|
200
215
|
' codebase-index refs "Owner.member" --compact # every call site, with callers\n'
|
|
201
216
|
' codebase-index symbol "Name" # a definition\n'
|
|
202
|
-
"If the index does not answer,
|
|
203
|
-
"codebase-index command has run in this session, searches are not
|
|
217
|
+
"If the index does not answer, search for the same term again and it will run. "
|
|
218
|
+
"Once any codebase-index command has run in this session, searches are not "
|
|
219
|
+
"intercepted."
|
|
204
220
|
)
|
|
205
221
|
|
|
206
222
|
|
|
207
223
|
class _State:
|
|
208
224
|
"""Per-session guard state: whether the index was used, which calls were nudged."""
|
|
209
225
|
|
|
210
|
-
def __init__(self,
|
|
226
|
+
def __init__(self, session: str) -> None:
|
|
211
227
|
safe = re.sub(r"[^A-Za-z0-9_.-]", "_", session)[:80] or "default"
|
|
212
|
-
self.dir =
|
|
228
|
+
self.dir = Path(os.environ.get("CBX_HOOK_STATE") or Path(tempfile.gettempdir()) / _STATE_DIR)
|
|
213
229
|
self.path = self.dir / f"{safe}.json"
|
|
214
230
|
self.data: dict[str, Any] = {"used": False, "denied": []}
|
|
215
231
|
try:
|
|
@@ -11,6 +11,11 @@ import pytest
|
|
|
11
11
|
from codebase_index import hooks, scaffold
|
|
12
12
|
|
|
13
13
|
|
|
14
|
+
@pytest.fixture(autouse=True)
|
|
15
|
+
def _state_dir(tmp_path: Path, monkeypatch):
|
|
16
|
+
monkeypatch.setenv("CBX_HOOK_STATE", str(tmp_path / "hook-state"))
|
|
17
|
+
|
|
18
|
+
|
|
14
19
|
@pytest.fixture
|
|
15
20
|
def repo(tmp_path: Path) -> Path:
|
|
16
21
|
db = tmp_path / "repo" / hooks.INDEX_REL
|
|
@@ -68,6 +73,38 @@ def test_non_code_and_non_search_shell_commands_pass(repo: Path, command: str):
|
|
|
68
73
|
assert _call(repo, "Bash", command=command) is None
|
|
69
74
|
|
|
70
75
|
|
|
76
|
+
def test_the_retry_is_matched_by_search_term_not_by_the_whole_call(repo: Path):
|
|
77
|
+
assert _denied(_call(repo, "Bash", command="grep -rn TownService src",
|
|
78
|
+
description="Find the service"))
|
|
79
|
+
assert _call(repo, "Bash", command="cd src && grep -rn TownService . | head",
|
|
80
|
+
description="Find it again") is None
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_an_index_command_that_builds_the_index_turns_the_guard_off(tmp_path: Path, repo: Path):
|
|
84
|
+
# The first `codebase-index search` in a fresh repository builds the index, so the
|
|
85
|
+
# guard sees that call before any index exists.
|
|
86
|
+
fresh = tmp_path / "fresh"
|
|
87
|
+
(fresh / "src").mkdir(parents=True)
|
|
88
|
+
assert _call(fresh, "Bash", command='codebase-index search "x" --compact') is None
|
|
89
|
+
assert _call(repo, "Grep", pattern="anything") is None
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@pytest.mark.parametrize("command", [
|
|
93
|
+
# A heredoc body is file content, not commands.
|
|
94
|
+
"cat > /tmp/close.ps1 <<'EOF'\n$log = Get-Content x; Select-String \"BUILD FAILED\" $log\nEOF\n"
|
|
95
|
+
"echo done",
|
|
96
|
+
"python - <<EOF\nimport re; grep = 1\nEOF",
|
|
97
|
+
])
|
|
98
|
+
def test_heredoc_bodies_are_not_searched(repo: Path, command: str):
|
|
99
|
+
assert _call(repo, "Bash", command=command) is None
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def test_a_search_on_its_own_line_is_guarded_and_quoted_alternation_kept(repo: Path):
|
|
103
|
+
reply = _call(repo, "Bash", command='ls src\ngrep -rn "Lifecycle\\|onInit" src --include=*.java')
|
|
104
|
+
assert _denied(reply)
|
|
105
|
+
assert 'search "Lifecycle onInit"' in reply["hookSpecificOutput"]["permissionDecisionReason"]
|
|
106
|
+
|
|
107
|
+
|
|
71
108
|
@pytest.mark.parametrize("command", [
|
|
72
109
|
"grep -rn treasurerDeparted --include=*.java .",
|
|
73
110
|
"cd /c/Projects/x && rg -n 'TownService.refresh' realism-polity",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.1.1
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.1.1
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.1.1
|
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/references/commands.md
RENAMED
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.claude/skills/codebase-index/references/memory.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/references/commands.md
RENAMED
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.codex/skills/codebase-index/references/memory.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.github/ISSUE_TEMPLATE/skill_listing_request.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/references/commands.md
RENAMED
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/references/memory.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/.opencode/skills/codebase-index/scripts/cbx.ps1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m2-fts-lexical.md
RENAMED
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m4-hybrid-search.md
RENAMED
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m5-graph-impact.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m8-hooks-watch.md
RENAMED
|
File without changes
|
{codebase_index-2.1.1 → codebase_index-2.1.2}/docs/superpowers/plans/2026-05-29-m9-release.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|