codebase-index 2.0.0__tar.gz → 2.1.1__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.1/.claude/skills/codebase-index/.skill_version +1 -0
- codebase_index-2.1.1/.claude/skills/codebase-index/SKILL.md +65 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/references/commands.md +18 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude-plugin/plugin.json +1 -1
- codebase_index-2.1.1/.codex/skills/codebase-index/.skill_version +1 -0
- codebase_index-2.1.1/.codex/skills/codebase-index/SKILL.md +65 -0
- {codebase_index-2.0.0/.opencode → codebase_index-2.1.1/.codex}/skills/codebase-index/references/commands.md +18 -0
- codebase_index-2.1.1/.opencode/skills/codebase-index/.skill_version +1 -0
- codebase_index-2.1.1/.opencode/skills/codebase-index/SKILL.md +65 -0
- {codebase_index-2.0.0/.codex → codebase_index-2.1.1/.opencode}/skills/codebase-index/references/commands.md +18 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/CHANGELOG.md +116 -1
- {codebase_index-2.0.0 → codebase_index-2.1.1}/PKG-INFO +18 -8
- {codebase_index-2.0.0 → codebase_index-2.1.1}/README.md +17 -7
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/BENCHMARKS.md +25 -7
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/installer.md +1 -1
- codebase_index-2.1.1/hooks/hooks.json +31 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/pyproject.toml +1 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/requirements.lock +1 -1
- codebase_index-2.1.1/skill/SKILL.md +65 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/references/commands.md +18 -0
- codebase_index-2.1.1/skills/codebase-index/SKILL.md +65 -0
- codebase_index-2.1.1/skills/codebase-index/references/commands.md +106 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/__init__.py +1 -1
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/cli.py +103 -7
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/builder.py +92 -13
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/expand.py +21 -5
- codebase_index-2.1.1/src/codebase_index/graph/modules.py +112 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/navigate.py +64 -4
- codebase_index-2.1.1/src/codebase_index/hooks.py +256 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/pipeline.py +29 -2
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/mcp/server.py +11 -3
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/models.py +31 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/markdown.py +118 -4
- codebase_index-2.1.1/src/codebase_index/parsers/base.py +74 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/treesitter.py +105 -1
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/intent.py +18 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/pipeline.py +87 -2
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/priors.py +35 -2
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/rerank.py +11 -1
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/searchers.py +154 -22
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/tuning.py +47 -1
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/scaffold.py +61 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/service.py +2 -0
- codebase_index-2.1.1/src/codebase_index/skill_template/SKILL.md +65 -0
- codebase_index-2.1.1/src/codebase_index/skill_template/references/commands.md +106 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/db.py +2 -1
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/repo.py +97 -17
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/schema.sql +4 -1
- codebase_index-2.1.1/tests/eval/results/2026-09-24-agent-pilot.md +72 -0
- codebase_index-2.1.1/tests/eval/results/2026-09-24-retrieval-2.1.0.txt +47 -0
- codebase_index-2.1.1/tests/eval/results/2026-09-24-terra-nl-queries.yml +75 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/run_eval.py +2 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/describe_refresh.json +6 -2
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/impact_user_model.json +1 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_describe_symbol.json +6 -2
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_find_refs.json +12 -3
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_find_symbol.json +1 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_impact_of.json +1 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_search_code.json +2 -2
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/refs_refresh_access_token.json +12 -3
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/search_token.json +2 -2
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/symbol_user.json +1 -0
- codebase_index-2.1.1/tests/test_agent_ergonomics.py +227 -0
- codebase_index-2.1.1/tests/test_compact_output.py +114 -0
- codebase_index-2.1.1/tests/test_hooks_guard.py +120 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_migration_1x.py +11 -8
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_priors.py +28 -0
- codebase_index-2.1.1/tests/test_qualified_refs.py +320 -0
- codebase_index-2.0.0/.claude/skills/codebase-index/.skill_version +0 -1
- codebase_index-2.0.0/.claude/skills/codebase-index/SKILL.md +0 -111
- codebase_index-2.0.0/.codex/skills/codebase-index/.skill_version +0 -1
- codebase_index-2.0.0/.codex/skills/codebase-index/SKILL.md +0 -111
- codebase_index-2.0.0/.opencode/skills/codebase-index/.skill_version +0 -1
- codebase_index-2.0.0/.opencode/skills/codebase-index/SKILL.md +0 -111
- codebase_index-2.0.0/hooks/hooks.json +0 -14
- codebase_index-2.0.0/skill/SKILL.md +0 -111
- codebase_index-2.0.0/skills/codebase-index/SKILL.md +0 -111
- codebase_index-2.0.0/skills/codebase-index/references/commands.md +0 -88
- codebase_index-2.0.0/src/codebase_index/parsers/base.py +0 -47
- codebase_index-2.0.0/src/codebase_index/skill_template/SKILL.md +0 -111
- codebase_index-2.0.0/src/codebase_index/skill_template/references/commands.md +0 -88
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/scripts/cbx +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/scripts/cbx.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude-plugin/marketplace.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/scripts/cbx +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/scripts/cbx.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.editorconfig +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.gitattributes +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/benchmark_report.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/language_support.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/skill_listing_request.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/SUPPORT.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/labels.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/workflows/ci.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/workflows/release.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.gitignore +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/agents/codebase-index.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/commands/codebase-index.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/examples/hooks/settings.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/scripts/cbx +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/scripts/cbx.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/AGENTS.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/CODE_OF_CONDUCT.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/CONTRIBUTING.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/LICENSE +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/ROADMAP.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/SECURITY.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/claude.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/claude.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/codex.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/codex.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/opencode.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/opencode.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/architecture.svg +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/benchmark.svg +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/demo-terminal.svg +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/mark.png +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/social-preview.png +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/cbx +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/cbx.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/codebase-index +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/codebase-index.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/ARCHITECTURE.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/COMMUNITY_AUDIT.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/COMMUNITY_LAUNCH.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/COMPARISON.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/DATABASE_SCHEMA.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/DEMO.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/DEVELOPMENT.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/FAQ.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/INSTALLATION.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/LANGUAGES.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/MCP.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/MEMORY.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/PRODUCT_UPGRADE_PLAN.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/QUICKSTART.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/RELEASE_CHECKLIST.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/RETRIEVAL.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/RETRIEVAL_PIPELINE.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/ROADMAP.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SCHEMA.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SECURITY.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SECURITY_MODEL.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SKILL_DESIGN.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/demo.tape +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-benchmark-index-improvements.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-generalize-skill-research-discipline.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m1-storage-discovery.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m2-fts-lexical.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m3-treesitter-symbols.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m4-hybrid-search.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m5-graph-impact.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m6-embeddings-vector.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m7-5-plugin-one-command-install.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m7-skill-packaging.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m8-hooks-watch.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m9-release.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-multilang-symbols-make-skill-win.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-06-24-snippet-skeletonization.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-05-29-plugin-one-command-install-design.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-06-24-snippet-skeletonization-design.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-09-10-evidence-memory-design.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/config.example.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/EXPECTED_OUTPUT.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/README.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/run_demo.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/run_demo.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/hooks/settings.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/queries.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/sample-queries.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/sample-retrieval-output.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/install.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/install.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/lib/common.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/lib/common.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/2.0-audit.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/README.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/architecture.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/build_indexes.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/data/.gitignore +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_accretion.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_calibration.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_slots.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_structure.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/experiment_memory.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/experiments.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/fit_gate.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/fit_weights.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/hypotheses.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/novelty.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/baselines.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/evalrun.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/memory.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/relations.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/search.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/related-work.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/selection.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/research/test_nucleus.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/apply_labels.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/bootstrap.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/bootstrap.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/check_links.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/check_versions.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/gen_assets.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/gen_benchmark_chart.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/gen_terminal_svg.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/release_notes.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/release_smoke.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/sync_skill_copies.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/examples/basic-usage.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/examples/claude-md-example.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/examples/hooks-example.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/references/memory.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/references/response-contract.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/bootstrap.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/cbx +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/cbx.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/doctor.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/install.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/smoke_test.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skills/codebase-index/references/memory.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/skills/codebase-index/references/response-contract.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/__main__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/config.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/classify.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/gates.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/ignore.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/walker.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/doctor.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/backend.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/external.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/local.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/noop.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/analysis.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/export.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/retrieval.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/doc_chunks.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/freshness.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/mcp/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/identity.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/session.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/store.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/validate.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/json.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/redact.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/languages.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/line_chunker.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/symbol_chunks.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/budget.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/diversity.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/features.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/fusion.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/fuzzy.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/lexical.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/skeleton.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/types.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/examples/hooks/settings.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/references/memory.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/references/response-contract.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/scripts/cbx +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/scripts/cbx.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_update.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/watch/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/watch/watcher.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_honest.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_honest_RESULTS.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_honest_newtowny.txt +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_public.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_public_RESULTS.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_real_repo.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/conftest.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/README.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/__init__.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/baselines.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/gen_queries.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/harness.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/memory_eval.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/metrics.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/queries/self_repo.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/queries/self_repo_git.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/1.10.0-perf.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/1.10.0-retrieval-8corpus.txt +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-04-public-baselines.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-04-public-baselines.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-14-evidence-memory.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-14-evidence-memory.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/run_baselines.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/README.md +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/expected_answers.yml +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/index-1.10.0/index.sqlite +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/multilang/sample.go +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/multilang/sample.java +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/multilang/sample.rs +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/.env +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/.gitignore +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/huge.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/logo.png +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/node_modules/leftpad/index.js +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/secrets.pem +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/api/service.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/auth/token.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/models/user.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/schema.generated.ts +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/web/app.ts +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/architecture.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/explain_auth.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_architecture.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_explain_code.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_healthcheck.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_impact_of_diff.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_index_stats.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_path_between.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/path_renew_to_token.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/stats.json +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden_utils.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/installer/smoke.ps1 +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/installer/smoke.sh +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_analysis.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_benchmark_comparison.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_bootstrap.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_budget.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_chunker.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_classify.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_clean_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_cli_golden.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_config.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_diff_impact.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_discovery.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_diversity.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_doc_chunks.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_doctor.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_embeddings_backend.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_embeddings_external.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_embeddings_local.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_eval_baselines.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_freshness.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_fusion.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_fuzzy.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_gen_queries.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph_coverage.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph_export_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph_retrieval.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_hooks_merge.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_hybrid_ranking.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_ignore.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_impact_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_impact_decay.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_index_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_init_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_intent.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_languages.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_lexical.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_mcp_golden.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_mcp_server.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_eval_smoke.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_identity.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_lifecycle.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_session.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_stale_context.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_store.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_surfaces.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_validate.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_multilang_symbols.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_navigate.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_output.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_packaging.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_parse_guardrails.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_perf_smoke.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_pipeline.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_pipeline_search.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_pipeline_vectors.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_plugin_manifest.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_plugin_skill_parity.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_plugin_wrappers.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_public_benchmark.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_quality_benchmark.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_ranking_features.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_read_cap.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_redact.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_release_scripts.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_repo_search.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_rerank.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_retrieval_types.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_scaffold.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_search_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_searchers.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_seeded_index.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_service.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_skeleton.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_skill_update.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_storage.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_symbol_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_symbol_ranking.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_symbol_refs.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_sync_skill_copies.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_treesitter.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_tuning_contract.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_update.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_update_cli.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_vector_search.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_vectors_storage.py +0 -0
- {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_watcher.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.1
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-index
|
|
3
|
+
description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository, and verify evidence gathered earlier before relying on it.
|
|
4
|
+
allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index verify *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Codebase Index
|
|
8
|
+
|
|
9
|
+
Use the local index before reading repository files. It answers with ranked,
|
|
10
|
+
numbered lines, so most answers need no Read and no Grep at all.
|
|
11
|
+
|
|
12
|
+
## Route the question — always `--compact`
|
|
13
|
+
|
|
14
|
+
| Intent | Command |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Where / how does X work? | `codebase-index search "X" --compact --session <tag>` |
|
|
17
|
+
| Overview of a feature | `codebase-index explain "X" --compact --session <tag>` |
|
|
18
|
+
| Every caller / call site of X | `codebase-index refs "Owner.member" --compact` |
|
|
19
|
+
| What breaks if X changes (incl. other modules) | `codebase-index impact "Owner.member" --compact` |
|
|
20
|
+
| Find a definition | `codebase-index symbol "X"` |
|
|
21
|
+
| A class: members, who uses it | `codebase-index describe "Class" --json` |
|
|
22
|
+
| What does my diff affect? | `codebase-index diff-impact --json` |
|
|
23
|
+
| Is what I read earlier still true? | `codebase-index verify --session <tag> --json` |
|
|
24
|
+
|
|
25
|
+
`--compact` prints `path:start-end symbol` per result with the matching lines
|
|
26
|
+
numbered underneath (` 24| public static final String FILE_ID = ...`). Cite
|
|
27
|
+
those lines as `path:24` directly. Read a range only when the lines shown do not
|
|
28
|
+
answer the question — and then only that range, never the whole file.
|
|
29
|
+
|
|
30
|
+
Name members as `Owner.member` (`TownService.refresh`, `activation::place`,
|
|
31
|
+
`CoreError::ObjectDamaged`) so same-named methods of other types are excluded.
|
|
32
|
+
`refs --compact` lines are `path:line kind caller -> target`: the list of call
|
|
33
|
+
sites with the calling function is usually the whole answer. Add
|
|
34
|
+
`--exclude-tests` for production-only lists and `--path <prefix>` for one module.
|
|
35
|
+
`kind reference` is a non-call use, e.g. an enum variant matched in a `match` arm.
|
|
36
|
+
|
|
37
|
+
`impact --compact` starts with `# module <m>: build files depending on it: ...`
|
|
38
|
+
— the answer to "does another module depend on this", with no build-file grep.
|
|
39
|
+
|
|
40
|
+
## Protocol
|
|
41
|
+
|
|
42
|
+
1. Pick one session tag per conversation (e.g. `auth-fix-1`); pass it to
|
|
43
|
+
`search`/`explain`. Results already sent in this session print as
|
|
44
|
+
`(already sent)` — use your earlier copy.
|
|
45
|
+
2. A header saying `index stale` → run `codebase-index update` once; `NO INDEX`
|
|
46
|
+
→ `codebase-index index`.
|
|
47
|
+
3. Batch independent questions into one Bash call (`cmd1; echo ---; cmd2`).
|
|
48
|
+
4. `# partial:` on refs/impact means the list may be incomplete. For
|
|
49
|
+
`Owner.member` it lists `possible_call` sites (calls on a variable the index
|
|
50
|
+
cannot type), nearest first: check those few lines, do not grep the repo.
|
|
51
|
+
5. Before relying on evidence from earlier in a long task, run
|
|
52
|
+
`codebase-index verify --session <tag> --json`.
|
|
53
|
+
6. Grep only when the index returns nothing relevant or for non-code text.
|
|
54
|
+
|
|
55
|
+
Edge confidence: `extracted` exact, `inferred` heuristic (receiver matched a
|
|
56
|
+
type), `ambiguous` unresolved. Never present an inferred chain as certain.
|
|
57
|
+
|
|
58
|
+
## Answer
|
|
59
|
+
|
|
60
|
+
Lead with the answer, then the minimum `file:line` evidence. State uncertainty
|
|
61
|
+
only when evidence is partial, inferred or stale.
|
|
62
|
+
|
|
63
|
+
Options and JSON fields: [references/commands.md](references/commands.md),
|
|
64
|
+
[references/response-contract.md](references/response-contract.md),
|
|
65
|
+
session memory: [references/memory.md](references/memory.md).
|
{codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/references/commands.md
RENAMED
|
@@ -37,6 +37,24 @@ codebase-index describe "<file-or-symbol>" --json
|
|
|
37
37
|
|
|
38
38
|
- `architecture` reads module analysis cached at index time.
|
|
39
39
|
- `refs` finds definitions, calls, and graph-backed references.
|
|
40
|
+
For a method whose name several types share, pass `Owner.member`
|
|
41
|
+
(`TownService.refresh`, or `module::fn` for a top-level function); each site
|
|
42
|
+
names its `caller` and the `target` it resolved to. Calls the index cannot type
|
|
43
|
+
(`chest.holdings().take(..)`) come back as `possible_call`, nearest first, with
|
|
44
|
+
`coverage.partial: true`: read those before claiming a complete list.
|
|
45
|
+
`impact` and `symbol` accept the same form.
|
|
46
|
+
Filters: `--exclude-tests`, `--path <prefix>` (repeatable). `--compact` prints
|
|
47
|
+
`path:line kind caller -> target [confidence]`, one site per line.
|
|
48
|
+
- `search`, `explain` and `impact` also take `--compact`: agent text instead of
|
|
49
|
+
JSON. For search/explain, each result is `path:start-end symbols` followed by up
|
|
50
|
+
to eight numbered lines that carry the match (rarer query words first);
|
|
51
|
+
evidence already sent to the session prints as `(already sent)`. For impact,
|
|
52
|
+
one `d<hops> path:line name via edge` line per node, after a
|
|
53
|
+
`# module ...` line naming the build files that depend on the target's module.
|
|
54
|
+
- `symbol` returns exact matches alone when there are any and reports how many
|
|
55
|
+
prefix matches it left out (`more_prefix_matches`); `--exact` drops them.
|
|
56
|
+
- `describe` on a class, enum, struct or trait also lists its `members` and
|
|
57
|
+
folds their edges into `used_by` / `uses` (code outside the type).
|
|
40
58
|
- `impact` walks dependents (`up`), dependencies (`down`), or both.
|
|
41
59
|
- `diff-impact` aggregates impact for tracked changes relative to a verified
|
|
42
60
|
Git commit; new or excluded files are reported as unresolved.
|
|
@@ -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.
|
|
6
|
+
"version": "2.1.1",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "codebase-index contributors"
|
|
9
9
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.1
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-index
|
|
3
|
+
description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository, and verify evidence gathered earlier before relying on it.
|
|
4
|
+
allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index verify *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Codebase Index
|
|
8
|
+
|
|
9
|
+
Use the local index before reading repository files. It answers with ranked,
|
|
10
|
+
numbered lines, so most answers need no Read and no Grep at all.
|
|
11
|
+
|
|
12
|
+
## Route the question — always `--compact`
|
|
13
|
+
|
|
14
|
+
| Intent | Command |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Where / how does X work? | `codebase-index search "X" --compact --session <tag>` |
|
|
17
|
+
| Overview of a feature | `codebase-index explain "X" --compact --session <tag>` |
|
|
18
|
+
| Every caller / call site of X | `codebase-index refs "Owner.member" --compact` |
|
|
19
|
+
| What breaks if X changes (incl. other modules) | `codebase-index impact "Owner.member" --compact` |
|
|
20
|
+
| Find a definition | `codebase-index symbol "X"` |
|
|
21
|
+
| A class: members, who uses it | `codebase-index describe "Class" --json` |
|
|
22
|
+
| What does my diff affect? | `codebase-index diff-impact --json` |
|
|
23
|
+
| Is what I read earlier still true? | `codebase-index verify --session <tag> --json` |
|
|
24
|
+
|
|
25
|
+
`--compact` prints `path:start-end symbol` per result with the matching lines
|
|
26
|
+
numbered underneath (` 24| public static final String FILE_ID = ...`). Cite
|
|
27
|
+
those lines as `path:24` directly. Read a range only when the lines shown do not
|
|
28
|
+
answer the question — and then only that range, never the whole file.
|
|
29
|
+
|
|
30
|
+
Name members as `Owner.member` (`TownService.refresh`, `activation::place`,
|
|
31
|
+
`CoreError::ObjectDamaged`) so same-named methods of other types are excluded.
|
|
32
|
+
`refs --compact` lines are `path:line kind caller -> target`: the list of call
|
|
33
|
+
sites with the calling function is usually the whole answer. Add
|
|
34
|
+
`--exclude-tests` for production-only lists and `--path <prefix>` for one module.
|
|
35
|
+
`kind reference` is a non-call use, e.g. an enum variant matched in a `match` arm.
|
|
36
|
+
|
|
37
|
+
`impact --compact` starts with `# module <m>: build files depending on it: ...`
|
|
38
|
+
— the answer to "does another module depend on this", with no build-file grep.
|
|
39
|
+
|
|
40
|
+
## Protocol
|
|
41
|
+
|
|
42
|
+
1. Pick one session tag per conversation (e.g. `auth-fix-1`); pass it to
|
|
43
|
+
`search`/`explain`. Results already sent in this session print as
|
|
44
|
+
`(already sent)` — use your earlier copy.
|
|
45
|
+
2. A header saying `index stale` → run `codebase-index update` once; `NO INDEX`
|
|
46
|
+
→ `codebase-index index`.
|
|
47
|
+
3. Batch independent questions into one Bash call (`cmd1; echo ---; cmd2`).
|
|
48
|
+
4. `# partial:` on refs/impact means the list may be incomplete. For
|
|
49
|
+
`Owner.member` it lists `possible_call` sites (calls on a variable the index
|
|
50
|
+
cannot type), nearest first: check those few lines, do not grep the repo.
|
|
51
|
+
5. Before relying on evidence from earlier in a long task, run
|
|
52
|
+
`codebase-index verify --session <tag> --json`.
|
|
53
|
+
6. Grep only when the index returns nothing relevant or for non-code text.
|
|
54
|
+
|
|
55
|
+
Edge confidence: `extracted` exact, `inferred` heuristic (receiver matched a
|
|
56
|
+
type), `ambiguous` unresolved. Never present an inferred chain as certain.
|
|
57
|
+
|
|
58
|
+
## Answer
|
|
59
|
+
|
|
60
|
+
Lead with the answer, then the minimum `file:line` evidence. State uncertainty
|
|
61
|
+
only when evidence is partial, inferred or stale.
|
|
62
|
+
|
|
63
|
+
Options and JSON fields: [references/commands.md](references/commands.md),
|
|
64
|
+
[references/response-contract.md](references/response-contract.md),
|
|
65
|
+
session memory: [references/memory.md](references/memory.md).
|
|
@@ -37,6 +37,24 @@ codebase-index describe "<file-or-symbol>" --json
|
|
|
37
37
|
|
|
38
38
|
- `architecture` reads module analysis cached at index time.
|
|
39
39
|
- `refs` finds definitions, calls, and graph-backed references.
|
|
40
|
+
For a method whose name several types share, pass `Owner.member`
|
|
41
|
+
(`TownService.refresh`, or `module::fn` for a top-level function); each site
|
|
42
|
+
names its `caller` and the `target` it resolved to. Calls the index cannot type
|
|
43
|
+
(`chest.holdings().take(..)`) come back as `possible_call`, nearest first, with
|
|
44
|
+
`coverage.partial: true`: read those before claiming a complete list.
|
|
45
|
+
`impact` and `symbol` accept the same form.
|
|
46
|
+
Filters: `--exclude-tests`, `--path <prefix>` (repeatable). `--compact` prints
|
|
47
|
+
`path:line kind caller -> target [confidence]`, one site per line.
|
|
48
|
+
- `search`, `explain` and `impact` also take `--compact`: agent text instead of
|
|
49
|
+
JSON. For search/explain, each result is `path:start-end symbols` followed by up
|
|
50
|
+
to eight numbered lines that carry the match (rarer query words first);
|
|
51
|
+
evidence already sent to the session prints as `(already sent)`. For impact,
|
|
52
|
+
one `d<hops> path:line name via edge` line per node, after a
|
|
53
|
+
`# module ...` line naming the build files that depend on the target's module.
|
|
54
|
+
- `symbol` returns exact matches alone when there are any and reports how many
|
|
55
|
+
prefix matches it left out (`more_prefix_matches`); `--exact` drops them.
|
|
56
|
+
- `describe` on a class, enum, struct or trait also lists its `members` and
|
|
57
|
+
folds their edges into `used_by` / `uses` (code outside the type).
|
|
40
58
|
- `impact` walks dependents (`up`), dependencies (`down`), or both.
|
|
41
59
|
- `diff-impact` aggregates impact for tracked changes relative to a verified
|
|
42
60
|
Git commit; new or excluded files are reported as unresolved.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.1.1
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-index
|
|
3
|
+
description: Use before answering repository questions about architecture, implementation, symbols, references, dependencies, refactoring impact, data flow, or bugs. Query the local hybrid index first so the agent reads only evidence-bearing file:line ranges instead of scanning the repository, and verify evidence gathered earlier before relying on it.
|
|
4
|
+
allowed-tools: Bash(codebase-index search *), Bash(codebase-index explain *), Bash(codebase-index architecture *), Bash(codebase-index symbol *), Bash(codebase-index refs *), Bash(codebase-index impact *), Bash(codebase-index diff-impact *), Bash(codebase-index path *), Bash(codebase-index describe *), Bash(codebase-index verify *), Bash(codebase-index graph *), Bash(codebase-index stats *), Bash(codebase-index doctor *), Bash(codebase-index update *), Bash(codebase-index index *), Bash(cbx *), Read, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Codebase Index
|
|
8
|
+
|
|
9
|
+
Use the local index before reading repository files. It answers with ranked,
|
|
10
|
+
numbered lines, so most answers need no Read and no Grep at all.
|
|
11
|
+
|
|
12
|
+
## Route the question — always `--compact`
|
|
13
|
+
|
|
14
|
+
| Intent | Command |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Where / how does X work? | `codebase-index search "X" --compact --session <tag>` |
|
|
17
|
+
| Overview of a feature | `codebase-index explain "X" --compact --session <tag>` |
|
|
18
|
+
| Every caller / call site of X | `codebase-index refs "Owner.member" --compact` |
|
|
19
|
+
| What breaks if X changes (incl. other modules) | `codebase-index impact "Owner.member" --compact` |
|
|
20
|
+
| Find a definition | `codebase-index symbol "X"` |
|
|
21
|
+
| A class: members, who uses it | `codebase-index describe "Class" --json` |
|
|
22
|
+
| What does my diff affect? | `codebase-index diff-impact --json` |
|
|
23
|
+
| Is what I read earlier still true? | `codebase-index verify --session <tag> --json` |
|
|
24
|
+
|
|
25
|
+
`--compact` prints `path:start-end symbol` per result with the matching lines
|
|
26
|
+
numbered underneath (` 24| public static final String FILE_ID = ...`). Cite
|
|
27
|
+
those lines as `path:24` directly. Read a range only when the lines shown do not
|
|
28
|
+
answer the question — and then only that range, never the whole file.
|
|
29
|
+
|
|
30
|
+
Name members as `Owner.member` (`TownService.refresh`, `activation::place`,
|
|
31
|
+
`CoreError::ObjectDamaged`) so same-named methods of other types are excluded.
|
|
32
|
+
`refs --compact` lines are `path:line kind caller -> target`: the list of call
|
|
33
|
+
sites with the calling function is usually the whole answer. Add
|
|
34
|
+
`--exclude-tests` for production-only lists and `--path <prefix>` for one module.
|
|
35
|
+
`kind reference` is a non-call use, e.g. an enum variant matched in a `match` arm.
|
|
36
|
+
|
|
37
|
+
`impact --compact` starts with `# module <m>: build files depending on it: ...`
|
|
38
|
+
— the answer to "does another module depend on this", with no build-file grep.
|
|
39
|
+
|
|
40
|
+
## Protocol
|
|
41
|
+
|
|
42
|
+
1. Pick one session tag per conversation (e.g. `auth-fix-1`); pass it to
|
|
43
|
+
`search`/`explain`. Results already sent in this session print as
|
|
44
|
+
`(already sent)` — use your earlier copy.
|
|
45
|
+
2. A header saying `index stale` → run `codebase-index update` once; `NO INDEX`
|
|
46
|
+
→ `codebase-index index`.
|
|
47
|
+
3. Batch independent questions into one Bash call (`cmd1; echo ---; cmd2`).
|
|
48
|
+
4. `# partial:` on refs/impact means the list may be incomplete. For
|
|
49
|
+
`Owner.member` it lists `possible_call` sites (calls on a variable the index
|
|
50
|
+
cannot type), nearest first: check those few lines, do not grep the repo.
|
|
51
|
+
5. Before relying on evidence from earlier in a long task, run
|
|
52
|
+
`codebase-index verify --session <tag> --json`.
|
|
53
|
+
6. Grep only when the index returns nothing relevant or for non-code text.
|
|
54
|
+
|
|
55
|
+
Edge confidence: `extracted` exact, `inferred` heuristic (receiver matched a
|
|
56
|
+
type), `ambiguous` unresolved. Never present an inferred chain as certain.
|
|
57
|
+
|
|
58
|
+
## Answer
|
|
59
|
+
|
|
60
|
+
Lead with the answer, then the minimum `file:line` evidence. State uncertainty
|
|
61
|
+
only when evidence is partial, inferred or stale.
|
|
62
|
+
|
|
63
|
+
Options and JSON fields: [references/commands.md](references/commands.md),
|
|
64
|
+
[references/response-contract.md](references/response-contract.md),
|
|
65
|
+
session memory: [references/memory.md](references/memory.md).
|
|
@@ -37,6 +37,24 @@ codebase-index describe "<file-or-symbol>" --json
|
|
|
37
37
|
|
|
38
38
|
- `architecture` reads module analysis cached at index time.
|
|
39
39
|
- `refs` finds definitions, calls, and graph-backed references.
|
|
40
|
+
For a method whose name several types share, pass `Owner.member`
|
|
41
|
+
(`TownService.refresh`, or `module::fn` for a top-level function); each site
|
|
42
|
+
names its `caller` and the `target` it resolved to. Calls the index cannot type
|
|
43
|
+
(`chest.holdings().take(..)`) come back as `possible_call`, nearest first, with
|
|
44
|
+
`coverage.partial: true`: read those before claiming a complete list.
|
|
45
|
+
`impact` and `symbol` accept the same form.
|
|
46
|
+
Filters: `--exclude-tests`, `--path <prefix>` (repeatable). `--compact` prints
|
|
47
|
+
`path:line kind caller -> target [confidence]`, one site per line.
|
|
48
|
+
- `search`, `explain` and `impact` also take `--compact`: agent text instead of
|
|
49
|
+
JSON. For search/explain, each result is `path:start-end symbols` followed by up
|
|
50
|
+
to eight numbered lines that carry the match (rarer query words first);
|
|
51
|
+
evidence already sent to the session prints as `(already sent)`. For impact,
|
|
52
|
+
one `d<hops> path:line name via edge` line per node, after a
|
|
53
|
+
`# module ...` line naming the build files that depend on the target's module.
|
|
54
|
+
- `symbol` returns exact matches alone when there are any and reports how many
|
|
55
|
+
prefix matches it left out (`more_prefix_matches`); `--exact` drops them.
|
|
56
|
+
- `describe` on a class, enum, struct or trait also lists its `members` and
|
|
57
|
+
folds their edges into `used_by` / `uses` (code outside the type).
|
|
40
58
|
- `impact` walks dependents (`up`), dependencies (`down`), or both.
|
|
41
59
|
- `diff-impact` aggregates impact for tracked changes relative to a verified
|
|
42
60
|
Git commit; new or excluded files are reported as unresolved.
|
|
@@ -6,6 +6,119 @@ All notable changes to this project are documented here. The format is based on
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [2.1.1] - 2026-09-25
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `codebase-index install-hooks [--global]` makes Claude Code search through the index
|
|
14
|
+
by default. It merges two hooks into `.claude/settings.json` (or
|
|
15
|
+
`~/.claude/settings.json`), keeping every other hook:
|
|
16
|
+
- `SessionStart`: in an indexed repository, one line of context naming the commands
|
|
17
|
+
that answer code questions;
|
|
18
|
+
- `PreToolUse` on `Grep|Bash`: the first code search of a session, before any
|
|
19
|
+
`codebase-index` command has run, is sent back with the index command to use
|
|
20
|
+
instead. Repeating the same call lets it through, the first index command turns the
|
|
21
|
+
guard off for the session, and searches over docs, logs or config, pipelines such
|
|
22
|
+
as `ps | grep`, and directories without an index are never intercepted.
|
|
23
|
+
`CBX_GUARD=0` disables it; `install-hooks --uninstall` removes both hooks.
|
|
24
|
+
The hooks run as `codebase-index-hook`, a standard-library-only entry point (about
|
|
25
|
+
0.1 s per call). The Claude Code plugin registers the same hooks.
|
|
26
|
+
|
|
27
|
+
## [2.1.0] - 2026-09-24
|
|
28
|
+
|
|
29
|
+
Agent-efficiency release. An agent answering five code questions on a 5.9k-file
|
|
30
|
+
Java/Rust monorepo spent **19% fewer tokens (83.5k vs 103.0k) and 25% fewer tool calls
|
|
31
|
+
(9 vs 12)** with the skill than with Grep/Read alone, three runs per arm, with no
|
|
32
|
+
overlap between the arms' ranges; before this release the two were at parity. The
|
|
33
|
+
gain comes from answer-ready output (`--compact`: ranked files with numbered matching
|
|
34
|
+
lines), `refs`/`impact` that resolve `Owner.member` targets exactly and say when a list
|
|
35
|
+
may be incomplete, build-module awareness in `impact`, and ranking measured over 342
|
|
36
|
+
queries (MRR +0.010, p=0.031). Index schema 4: the first `update` rebuilds the index
|
|
37
|
+
once.
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
|
|
41
|
+
- `refs`, `impact` and `symbol` accept a qualified `Owner.member` target
|
|
42
|
+
(`TownService.refresh`, also `pkg.Owner.member`, `Owner::member`, `Owner#member`),
|
|
43
|
+
where the owner is a type or a module (`activation::place`). Before, a qualified name
|
|
44
|
+
matched nothing and a bare name that several types share (`refresh`) returned every
|
|
45
|
+
same-named method's callers mixed together.
|
|
46
|
+
- Calls written against a type or module (`TownService.refresh(server)`, `Foo::new()`,
|
|
47
|
+
`activation::place(..)`) now resolve across files when exactly one type or module of
|
|
48
|
+
that name defines the callee, so `impact` walks them. These edges are marked
|
|
49
|
+
`inferred`.
|
|
50
|
+
- Call resolution no longer invents edges: a call never binds across languages (a
|
|
51
|
+
Python `queue.take()` to a Java `take`), a call on another type
|
|
52
|
+
(`ApprenticeService.take`) no longer binds to the repo's only `take` when that one
|
|
53
|
+
belongs to a different type, and a call on a type the file does not define no
|
|
54
|
+
longer binds to a same-named method in the calling file. Name uniqueness is now
|
|
55
|
+
judged per language family (JVM, JS/TS, C/C++), so a Rust `place` resolves even
|
|
56
|
+
when Java also defines one.
|
|
57
|
+
- `refs "Owner.member"` no longer reports a confident empty answer when calls it
|
|
58
|
+
cannot type exist (`chest.holdings().take(..)`): they are listed as
|
|
59
|
+
`possible_call`, nearest to the definition first, and `coverage.partial` is true.
|
|
60
|
+
- `refs` and `impact` report `coverage.partial: true` with a reason when the target
|
|
61
|
+
matches no indexed definition or call site, instead of an empty answer that looked
|
|
62
|
+
like "no callers".
|
|
63
|
+
- `update` parses changed files in a process pool, like a full build. It used to parse
|
|
64
|
+
them one at a time, so a large change set was slower to update than to rebuild
|
|
65
|
+
(2009 changed files: 149 s, against 13 s for a full build of all 5904).
|
|
66
|
+
- A class is returned instead of its same-named constructor. The constructor's
|
|
67
|
+
`new X()` callers gave it the higher in-degree, so it took the file's one slot on
|
|
68
|
+
the page with a one-line body while the class never appeared.
|
|
69
|
+
- Kotlin call sites are extracted (with their receiver). Kotlin's `call_expression`
|
|
70
|
+
has no named fields, so no Kotlin call edge was ever recorded.
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
|
|
74
|
+
- Rust enum variants, Java enum constants and C# enum members are indexed as
|
|
75
|
+
`variant` symbols (`CoreError.ObjectDamaged`), and a Rust `Owner::name` path used in a
|
|
76
|
+
pattern or as a value (`Err(CoreError::ObjectDamaged(_)) =>`, `if let Kind::A = ..`)
|
|
77
|
+
is recorded as a `reference` edge. `refs` reports these as `kind: "reference"`, so it
|
|
78
|
+
finds where a variant is handled, not only where it is constructed.
|
|
79
|
+
- `refs --exclude-tests`, `refs --path <prefix>` (repeatable; also on the MCP
|
|
80
|
+
`find_refs` tool) and `refs --compact`, which prints one line per site:
|
|
81
|
+
`path:line kind caller -> target [confidence]`.
|
|
82
|
+
- `describe` on a class, enum, struct or trait lists its `members` and folds their
|
|
83
|
+
edges from and to code outside the type into `used_by` / `uses`. It used to report
|
|
84
|
+
zero callers and callees for a class, whose methods, not the class, are called.
|
|
85
|
+
- `--session` is accepted by `symbol`, `refs` and `impact`, so one tag can be passed to
|
|
86
|
+
every read command.
|
|
87
|
+
- `search --compact` / `explain --compact`: agent text instead of JSON. Each result is
|
|
88
|
+
`path:start-end symbols` with up to eight numbered lines underneath that carry the
|
|
89
|
+
match (rarer query words first), so an agent can cite `file:line` without a Read or
|
|
90
|
+
a `grep -n`. On a benchmark query the packet went from 9.6 KB of JSON to 3.7 KB.
|
|
91
|
+
Evidence already sent to the session prints as `(already sent)`.
|
|
92
|
+
- `impact --compact`, and a `modules` field on `impact`: the build-system module the
|
|
93
|
+
target lives in (Gradle, Maven, Cargo, npm, Go, Python) and the lines of other
|
|
94
|
+
build files that name it, split into workspace membership and dependencies. "Does
|
|
95
|
+
another module depend on this?" no longer needs a grep over build files.
|
|
96
|
+
- The skill routes every question through `--compact` and is 40% shorter.
|
|
97
|
+
|
|
98
|
+
### Changed
|
|
99
|
+
|
|
100
|
+
- Ranking, measured over 342 queries on six query sets (five repositories, including
|
|
101
|
+
24 natural-language "how does X work" questions): MRR +0.010 (p=0.036), recall@10
|
|
102
|
+
+0.015 (p=0.038), nDCG@10 +0.009 (p=0.018), useful@budget +0.020 (p=0.015), 15 fewer
|
|
103
|
+
snippet tokens per query; no corpus regressed. On the natural-language questions MRR
|
|
104
|
+
went 0.428 → 0.475 and recall@10 0.708 → 0.833. Three signals, each ablatable:
|
|
105
|
+
- `resource_priors`: localisation catalogues (`lang/en_us.json`, `i18n/*.json`,
|
|
106
|
+
`.po`) and workflow artifacts (review `.diff`/`.patch` files, agent scratch
|
|
107
|
+
directories such as `.superpowers/`) are demoted like generated code;
|
|
108
|
+
- `stem_match`: a file named after a query term (`Treasury.java` for a question
|
|
109
|
+
about the treasury) gets a small bonus;
|
|
110
|
+
- `question_pool_floor`: a question-form query ("how is a crop loaded") gets a
|
|
111
|
+
40-deep candidate pool, so the class it paraphrases reaches the reranker.
|
|
112
|
+
- `symbol` returns exact matches alone when there are any, with a count of the prefix
|
|
113
|
+
matches it left out (`more_prefix_matches`), instead of burying the one symbol asked
|
|
114
|
+
for among twenty `TreasuryX` prefix matches.
|
|
115
|
+
|
|
116
|
+
- Every `refs` site carries `caller` (the function it sits in), `target` (the
|
|
117
|
+
definition it resolved to) and `receiver` (what the call was made on), so callers can
|
|
118
|
+
be named and same-named methods told apart without reading each file.
|
|
119
|
+
- Index schema 4: call edges store their receiver. The first `update` after upgrading
|
|
120
|
+
rebuilds the index once; read commands keep working on an older index until then.
|
|
121
|
+
|
|
9
122
|
## [2.0.0] - 2026-09-14
|
|
10
123
|
|
|
11
124
|
Evidence release. Everything an agent reads through `codebase-index` is now identified
|
|
@@ -773,7 +886,9 @@ Pooled over 305 queries (Python, Java, TypeScript), v1.8.0 → 1.9.0:
|
|
|
773
886
|
- Hooks example + `watch` mode for keeping the index fresh without blocking the edit loop (M8).
|
|
774
887
|
- `doctor`, `stats`, `clean` diagnostics/maintenance commands.
|
|
775
888
|
|
|
776
|
-
[Unreleased]: https://github.com/denfry/codebase-index/compare/v2.
|
|
889
|
+
[Unreleased]: https://github.com/denfry/codebase-index/compare/v2.1.1...HEAD
|
|
890
|
+
[2.1.1]: https://github.com/denfry/codebase-index/compare/v2.1.0...v2.1.1
|
|
891
|
+
[2.1.0]: https://github.com/denfry/codebase-index/compare/v2.0.0...v2.1.0
|
|
777
892
|
[2.0.0]: https://github.com/denfry/codebase-index/compare/v1.9.0...v2.0.0
|
|
778
893
|
[1.10.0]: https://github.com/denfry/codebase-index/compare/v1.9.0...abb67df
|
|
779
894
|
[1.9.0]: https://github.com/denfry/codebase-index/compare/v1.8.0...v1.9.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codebase-index
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.1
|
|
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
|
|
@@ -180,19 +180,25 @@ affected files (8): src/flask/app.py, src/flask/ctx.py, src/flask/globals.py, ..
|
|
|
180
180
|
|
|
181
181
|
More: `explain "how are blueprints registered"`, `describe dispatch_request`,
|
|
182
182
|
`architecture` (modules, god nodes, surprising links), `graph User --output graph.html`.
|
|
183
|
-
|
|
183
|
+
Name a method as `Owner.member` (`SessionInterface.open_session`) to leave out
|
|
184
|
+
same-named methods of other types. Add `--json` to any command for the
|
|
185
|
+
machine-readable packet, or `--compact` (search, explain, refs, impact) for the
|
|
186
|
+
agent format: `path:start-end symbol` with the matching lines numbered underneath.
|
|
184
187
|
|
|
185
188
|
## Agent integrations
|
|
186
189
|
|
|
187
190
|
| Agent | Setup | What it gets |
|
|
188
191
|
|---|---|---|
|
|
189
|
-
| **Claude Code** | `codebase-index init --target claude`, or the plugin: `/plugin marketplace add denfry/codebase-index` then `/plugin install codebase-index@codebase-index` | A skill that routes repository questions to the index and
|
|
192
|
+
| **Claude Code** | `codebase-index init --target claude`, or the plugin: `/plugin marketplace add denfry/codebase-index` then `/plugin install codebase-index@codebase-index` | A skill that routes repository questions to the index and answers from `--compact` output (ranked files with numbered matching lines, `refs` with the calling function per site); optional PostToolUse hook keeps the index fresh |
|
|
190
193
|
| **Codex CLI** | `codebase-index init --target codex` | A managed block in `AGENTS.md` plus the skill resources |
|
|
191
194
|
| **OpenCode** | `codebase-index init --target opencode` | `/codebase-index` command, agent file, skill resources |
|
|
192
195
|
| **Any MCP client** (Claude Desktop, Cursor, VS Code, Zed, Windsurf, ...) | `pip install "codebase-index[mcp]"` then `codebase-index mcp --root /path/to/repo` | 11 tools (`search_code`, `find_refs`, `impact_of`, `impact_of_diff`, `path_between`, ...) with a versioned JSON envelope |
|
|
193
196
|
| **Anything with a shell** | `codebase-index --json ...` | The same payloads as plain JSON, plus a local SQLite database you can query yourself |
|
|
194
197
|
|
|
195
|
-
`init --target auto` detects which of these are present.
|
|
198
|
+
`init --target auto` detects which of these are present. To make Claude Code reach for
|
|
199
|
+
the index before Grep in every indexed repository, run
|
|
200
|
+
`codebase-index install-hooks --global`: a session-start note plus a guard that sends the
|
|
201
|
+
first code search of a session to the index (repeat the call to run it anyway). See
|
|
196
202
|
[INSTALLATION.md](docs/INSTALLATION.md) and [MCP.md](docs/MCP.md).
|
|
197
203
|
|
|
198
204
|
## Evidence
|
|
@@ -222,10 +228,14 @@ significant on a pooled multi-language query set
|
|
|
222
228
|
([tests/eval](tests/eval/README.md)). 1.9.0 removed two signals that could not
|
|
223
229
|
show a benefit and rejected five plausible ones.
|
|
224
230
|
|
|
225
|
-
**
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
231
|
+
**Agent pilot (2.1.0).** The same five code questions on a 5.9k-file Java/Rust
|
|
232
|
+
monorepo, answered by a coding agent three times with the skill and three times with
|
|
233
|
+
Grep/Read only: **19% fewer tokens and 25% fewer tool calls** with the skill, all
|
|
234
|
+
answers correct in both arms, no overlap between the arms' token ranges. It is one
|
|
235
|
+
private repository and five questions, so read it as a direction:
|
|
236
|
+
[raw runs and caveats](tests/eval/results/2026-09-24-agent-pilot.md). A broader
|
|
237
|
+
task-level evaluation is still the top item in
|
|
238
|
+
[BENCHMARKS.md](docs/BENCHMARKS.md#future-work-in-priority-order).
|
|
229
239
|
|
|
230
240
|
## How it works
|
|
231
241
|
|
|
@@ -130,19 +130,25 @@ affected files (8): src/flask/app.py, src/flask/ctx.py, src/flask/globals.py, ..
|
|
|
130
130
|
|
|
131
131
|
More: `explain "how are blueprints registered"`, `describe dispatch_request`,
|
|
132
132
|
`architecture` (modules, god nodes, surprising links), `graph User --output graph.html`.
|
|
133
|
-
|
|
133
|
+
Name a method as `Owner.member` (`SessionInterface.open_session`) to leave out
|
|
134
|
+
same-named methods of other types. Add `--json` to any command for the
|
|
135
|
+
machine-readable packet, or `--compact` (search, explain, refs, impact) for the
|
|
136
|
+
agent format: `path:start-end symbol` with the matching lines numbered underneath.
|
|
134
137
|
|
|
135
138
|
## Agent integrations
|
|
136
139
|
|
|
137
140
|
| Agent | Setup | What it gets |
|
|
138
141
|
|---|---|---|
|
|
139
|
-
| **Claude Code** | `codebase-index init --target claude`, or the plugin: `/plugin marketplace add denfry/codebase-index` then `/plugin install codebase-index@codebase-index` | A skill that routes repository questions to the index and
|
|
142
|
+
| **Claude Code** | `codebase-index init --target claude`, or the plugin: `/plugin marketplace add denfry/codebase-index` then `/plugin install codebase-index@codebase-index` | A skill that routes repository questions to the index and answers from `--compact` output (ranked files with numbered matching lines, `refs` with the calling function per site); optional PostToolUse hook keeps the index fresh |
|
|
140
143
|
| **Codex CLI** | `codebase-index init --target codex` | A managed block in `AGENTS.md` plus the skill resources |
|
|
141
144
|
| **OpenCode** | `codebase-index init --target opencode` | `/codebase-index` command, agent file, skill resources |
|
|
142
145
|
| **Any MCP client** (Claude Desktop, Cursor, VS Code, Zed, Windsurf, ...) | `pip install "codebase-index[mcp]"` then `codebase-index mcp --root /path/to/repo` | 11 tools (`search_code`, `find_refs`, `impact_of`, `impact_of_diff`, `path_between`, ...) with a versioned JSON envelope |
|
|
143
146
|
| **Anything with a shell** | `codebase-index --json ...` | The same payloads as plain JSON, plus a local SQLite database you can query yourself |
|
|
144
147
|
|
|
145
|
-
`init --target auto` detects which of these are present.
|
|
148
|
+
`init --target auto` detects which of these are present. To make Claude Code reach for
|
|
149
|
+
the index before Grep in every indexed repository, run
|
|
150
|
+
`codebase-index install-hooks --global`: a session-start note plus a guard that sends the
|
|
151
|
+
first code search of a session to the index (repeat the call to run it anyway). See
|
|
146
152
|
[INSTALLATION.md](docs/INSTALLATION.md) and [MCP.md](docs/MCP.md).
|
|
147
153
|
|
|
148
154
|
## Evidence
|
|
@@ -172,10 +178,14 @@ significant on a pooled multi-language query set
|
|
|
172
178
|
([tests/eval](tests/eval/README.md)). 1.9.0 removed two signals that could not
|
|
173
179
|
show a benefit and rejected five plausible ones.
|
|
174
180
|
|
|
175
|
-
**
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
181
|
+
**Agent pilot (2.1.0).** The same five code questions on a 5.9k-file Java/Rust
|
|
182
|
+
monorepo, answered by a coding agent three times with the skill and three times with
|
|
183
|
+
Grep/Read only: **19% fewer tokens and 25% fewer tool calls** with the skill, all
|
|
184
|
+
answers correct in both arms, no overlap between the arms' token ranges. It is one
|
|
185
|
+
private repository and five questions, so read it as a direction:
|
|
186
|
+
[raw runs and caveats](tests/eval/results/2026-09-24-agent-pilot.md). A broader
|
|
187
|
+
task-level evaluation is still the top item in
|
|
188
|
+
[BENCHMARKS.md](docs/BENCHMARKS.md#future-work-in-priority-order).
|
|
179
189
|
|
|
180
190
|
## How it works
|
|
181
191
|
|
|
@@ -178,6 +178,25 @@ Every ranking signal that ships has an ablation row. 1.9.0 removed two signals
|
|
|
178
178
|
that could not demonstrate a benefit and rejected several plausible ones
|
|
179
179
|
(IDF-weighted coverage, stemming, graph propagation, MMR, a file-length prior).
|
|
180
180
|
|
|
181
|
+
## Agent pilot (2.1.0)
|
|
182
|
+
|
|
183
|
+
The first task-level measurement: five code questions on one private 5.9k-file
|
|
184
|
+
Java/Rust monorepo, a Claude Code subagent answering each set three times with the
|
|
185
|
+
skill and three times with Grep/Read only
|
|
186
|
+
([raw runs, questions, ground truth, caveats](../tests/eval/results/2026-09-24-agent-pilot.md)).
|
|
187
|
+
|
|
188
|
+
| arm | mean tokens | range | mean tool calls | correct |
|
|
189
|
+
|---|---:|---|---:|---|
|
|
190
|
+
| skill 2.1.0 | **83.5k** | 82.1k–85.0k | **9.0** | 15/15 |
|
|
191
|
+
| Grep/Read only | 103.0k | 98.7k–107.1k | 12.0 | 15/15 |
|
|
192
|
+
| skill, pre-2.1.0 template | 100.6k | 96.1k–103.5k | 16.7 | 15/15 |
|
|
193
|
+
|
|
194
|
+
The 2.1.0 ranking changes were gated separately over 342 queries (six query sets,
|
|
195
|
+
five repositories, 24 of them natural-language questions): MRR +0.010 (p=0.031),
|
|
196
|
+
recall@10 +0.019 (p=0.017), nDCG@10 +0.011 (p=0.005), useful@budget +0.022
|
|
197
|
+
(p=0.008), no corpus regressing
|
|
198
|
+
([log](../tests/eval/results/2026-09-24-retrieval-2.1.0.txt)).
|
|
199
|
+
|
|
181
200
|
## Evidence memory
|
|
182
201
|
|
|
183
202
|
`tests/eval/memory_eval.py` replays a repository's own history: for every git-derived
|
|
@@ -223,16 +242,15 @@ Do not write, imply, or ship any of these until a run with published logs exists
|
|
|
223
242
|
- Any *token savings* multiplier without naming the read model. Under
|
|
224
243
|
symmetric accounting the index costs about the same as disciplined grep.
|
|
225
244
|
- Latency comparisons against external tools.
|
|
226
|
-
- Any statement about *LLM agent task success
|
|
227
|
-
|
|
228
|
-
|
|
245
|
+
- Any general statement about *LLM agent task success* or savings beyond the
|
|
246
|
+
pilot above (one private repository, five questions, one model). Quote the
|
|
247
|
+
pilot with its scope or not at all.
|
|
229
248
|
|
|
230
249
|
## Future work, in priority order
|
|
231
250
|
|
|
232
|
-
1. **Agent task-level evaluation**: the
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
grading rubric; not started.
|
|
251
|
+
1. **Agent task-level evaluation**: the pilot above covers one repository and
|
|
252
|
+
five questions. Next: public repositories, natural-language and debugging
|
|
253
|
+
tasks, more runs per arm, and a second agent (Codex CLI).
|
|
236
254
|
2. **Large repository run**: a 500k–1M LOC monorepo, reporting index build
|
|
237
255
|
time, incremental update latency, memory, and the same retrieval metrics.
|
|
238
256
|
3. **Graph task benchmark**: hand-labelled `refs`, `impact`, and
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/bootstrap.sh\""
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "command",
|
|
12
|
+
"command": "codebase-index-hook session-start 2>/dev/null || true",
|
|
13
|
+
"timeout": 5
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"PreToolUse": [
|
|
19
|
+
{
|
|
20
|
+
"matcher": "Grep|Bash",
|
|
21
|
+
"hooks": [
|
|
22
|
+
{
|
|
23
|
+
"type": "command",
|
|
24
|
+
"command": "codebase-index-hook guard 2>/dev/null || true",
|
|
25
|
+
"timeout": 5
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -57,6 +57,7 @@ build = ["build>=1.2", "twine>=5.0"]
|
|
|
57
57
|
codebase-index = "codebase_index.cli:app"
|
|
58
58
|
cbx = "codebase_index.cli:app" # short alias
|
|
59
59
|
codebase-index-mcp = "codebase_index.mcp.server:run" # standalone MCP entry point
|
|
60
|
+
codebase-index-hook = "codebase_index.hooks:main" # Claude Code hooks (stdlib only, fast)
|
|
60
61
|
|
|
61
62
|
[project.urls]
|
|
62
63
|
Homepage = "https://github.com/denfry/codebase-index"
|