codebase-index 2.0.0__tar.gz → 2.1.0__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.
Files changed (426) hide show
  1. codebase_index-2.1.0/.claude/skills/codebase-index/.skill_version +1 -0
  2. codebase_index-2.1.0/.claude/skills/codebase-index/SKILL.md +65 -0
  3. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/references/commands.md +18 -0
  4. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude-plugin/plugin.json +1 -1
  5. codebase_index-2.1.0/.codex/skills/codebase-index/.skill_version +1 -0
  6. codebase_index-2.1.0/.codex/skills/codebase-index/SKILL.md +65 -0
  7. {codebase_index-2.0.0/.opencode → codebase_index-2.1.0/.codex}/skills/codebase-index/references/commands.md +18 -0
  8. codebase_index-2.1.0/.opencode/skills/codebase-index/.skill_version +1 -0
  9. codebase_index-2.1.0/.opencode/skills/codebase-index/SKILL.md +65 -0
  10. {codebase_index-2.0.0/.codex → codebase_index-2.1.0/.opencode}/skills/codebase-index/references/commands.md +18 -0
  11. {codebase_index-2.0.0 → codebase_index-2.1.0}/CHANGELOG.md +97 -1
  12. {codebase_index-2.0.0 → codebase_index-2.1.0}/PKG-INFO +14 -7
  13. {codebase_index-2.0.0 → codebase_index-2.1.0}/README.md +13 -6
  14. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/BENCHMARKS.md +25 -7
  15. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/installer.md +1 -1
  16. {codebase_index-2.0.0 → codebase_index-2.1.0}/requirements.lock +1 -1
  17. codebase_index-2.1.0/skill/SKILL.md +65 -0
  18. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/references/commands.md +18 -0
  19. codebase_index-2.1.0/skills/codebase-index/SKILL.md +65 -0
  20. codebase_index-2.1.0/skills/codebase-index/references/commands.md +106 -0
  21. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/__init__.py +1 -1
  22. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/cli.py +68 -7
  23. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/graph/builder.py +92 -13
  24. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/graph/expand.py +21 -5
  25. codebase_index-2.1.0/src/codebase_index/graph/modules.py +112 -0
  26. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/graph/navigate.py +64 -4
  27. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/indexer/pipeline.py +29 -2
  28. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/mcp/server.py +11 -3
  29. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/models.py +31 -0
  30. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/output/markdown.py +118 -4
  31. codebase_index-2.1.0/src/codebase_index/parsers/base.py +74 -0
  32. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/parsers/treesitter.py +105 -1
  33. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/intent.py +18 -0
  34. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/pipeline.py +87 -2
  35. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/priors.py +35 -2
  36. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/rerank.py +11 -1
  37. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/searchers.py +154 -22
  38. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/tuning.py +47 -1
  39. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/service.py +2 -0
  40. codebase_index-2.1.0/src/codebase_index/skill_template/SKILL.md +65 -0
  41. codebase_index-2.1.0/src/codebase_index/skill_template/references/commands.md +106 -0
  42. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/storage/db.py +2 -1
  43. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/storage/repo.py +97 -17
  44. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/storage/schema.sql +4 -1
  45. codebase_index-2.1.0/tests/eval/results/2026-09-24-agent-pilot.md +72 -0
  46. codebase_index-2.1.0/tests/eval/results/2026-09-24-retrieval-2.1.0.txt +47 -0
  47. codebase_index-2.1.0/tests/eval/results/2026-09-24-terra-nl-queries.yml +75 -0
  48. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/run_eval.py +2 -0
  49. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/describe_refresh.json +6 -2
  50. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/impact_user_model.json +1 -0
  51. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_describe_symbol.json +6 -2
  52. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_find_refs.json +12 -3
  53. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_find_symbol.json +1 -0
  54. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_impact_of.json +1 -0
  55. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_search_code.json +2 -2
  56. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/refs_refresh_access_token.json +12 -3
  57. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/search_token.json +2 -2
  58. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/symbol_user.json +1 -0
  59. codebase_index-2.1.0/tests/test_agent_ergonomics.py +227 -0
  60. codebase_index-2.1.0/tests/test_compact_output.py +114 -0
  61. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_migration_1x.py +11 -8
  62. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_priors.py +28 -0
  63. codebase_index-2.1.0/tests/test_qualified_refs.py +320 -0
  64. codebase_index-2.0.0/.claude/skills/codebase-index/.skill_version +0 -1
  65. codebase_index-2.0.0/.claude/skills/codebase-index/SKILL.md +0 -111
  66. codebase_index-2.0.0/.codex/skills/codebase-index/.skill_version +0 -1
  67. codebase_index-2.0.0/.codex/skills/codebase-index/SKILL.md +0 -111
  68. codebase_index-2.0.0/.opencode/skills/codebase-index/.skill_version +0 -1
  69. codebase_index-2.0.0/.opencode/skills/codebase-index/SKILL.md +0 -111
  70. codebase_index-2.0.0/skill/SKILL.md +0 -111
  71. codebase_index-2.0.0/skills/codebase-index/SKILL.md +0 -111
  72. codebase_index-2.0.0/skills/codebase-index/references/commands.md +0 -88
  73. codebase_index-2.0.0/src/codebase_index/parsers/base.py +0 -47
  74. codebase_index-2.0.0/src/codebase_index/skill_template/SKILL.md +0 -111
  75. codebase_index-2.0.0/src/codebase_index/skill_template/references/commands.md +0 -88
  76. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/examples/hooks/settings.json +0 -0
  77. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/references/memory.md +0 -0
  78. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/references/response-contract.md +0 -0
  79. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/scripts/cbx +0 -0
  80. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/scripts/cbx.ps1 +0 -0
  81. {codebase_index-2.0.0 → codebase_index-2.1.0}/.claude-plugin/marketplace.json +0 -0
  82. {codebase_index-2.0.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/examples/hooks/settings.json +0 -0
  83. {codebase_index-2.0.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/references/memory.md +0 -0
  84. {codebase_index-2.0.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/references/response-contract.md +0 -0
  85. {codebase_index-2.0.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/scripts/cbx +0 -0
  86. {codebase_index-2.0.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/scripts/cbx.ps1 +0 -0
  87. {codebase_index-2.0.0 → codebase_index-2.1.0}/.editorconfig +0 -0
  88. {codebase_index-2.0.0 → codebase_index-2.1.0}/.gitattributes +0 -0
  89. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/benchmark_report.yml +0 -0
  90. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  91. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  92. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  93. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/language_support.yml +0 -0
  94. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/skill_listing_request.yml +0 -0
  95. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  96. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/SUPPORT.md +0 -0
  97. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/labels.yml +0 -0
  98. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/workflows/ci.yml +0 -0
  99. {codebase_index-2.0.0 → codebase_index-2.1.0}/.github/workflows/release.yml +0 -0
  100. {codebase_index-2.0.0 → codebase_index-2.1.0}/.gitignore +0 -0
  101. {codebase_index-2.0.0 → codebase_index-2.1.0}/.opencode/agents/codebase-index.md +0 -0
  102. {codebase_index-2.0.0 → codebase_index-2.1.0}/.opencode/commands/codebase-index.md +0 -0
  103. {codebase_index-2.0.0 → codebase_index-2.1.0}/.opencode/skills/codebase-index/examples/hooks/settings.json +0 -0
  104. {codebase_index-2.0.0 → codebase_index-2.1.0}/.opencode/skills/codebase-index/references/memory.md +0 -0
  105. {codebase_index-2.0.0 → codebase_index-2.1.0}/.opencode/skills/codebase-index/references/response-contract.md +0 -0
  106. {codebase_index-2.0.0 → codebase_index-2.1.0}/.opencode/skills/codebase-index/scripts/cbx +0 -0
  107. {codebase_index-2.0.0 → codebase_index-2.1.0}/.opencode/skills/codebase-index/scripts/cbx.ps1 +0 -0
  108. {codebase_index-2.0.0 → codebase_index-2.1.0}/AGENTS.md +0 -0
  109. {codebase_index-2.0.0 → codebase_index-2.1.0}/CODE_OF_CONDUCT.md +0 -0
  110. {codebase_index-2.0.0 → codebase_index-2.1.0}/CONTRIBUTING.md +0 -0
  111. {codebase_index-2.0.0 → codebase_index-2.1.0}/LICENSE +0 -0
  112. {codebase_index-2.0.0 → codebase_index-2.1.0}/ROADMAP.md +0 -0
  113. {codebase_index-2.0.0 → codebase_index-2.1.0}/SECURITY.md +0 -0
  114. {codebase_index-2.0.0 → codebase_index-2.1.0}/adapters/claude.ps1 +0 -0
  115. {codebase_index-2.0.0 → codebase_index-2.1.0}/adapters/claude.sh +0 -0
  116. {codebase_index-2.0.0 → codebase_index-2.1.0}/adapters/codex.ps1 +0 -0
  117. {codebase_index-2.0.0 → codebase_index-2.1.0}/adapters/codex.sh +0 -0
  118. {codebase_index-2.0.0 → codebase_index-2.1.0}/adapters/opencode.ps1 +0 -0
  119. {codebase_index-2.0.0 → codebase_index-2.1.0}/adapters/opencode.sh +0 -0
  120. {codebase_index-2.0.0 → codebase_index-2.1.0}/assets/architecture.svg +0 -0
  121. {codebase_index-2.0.0 → codebase_index-2.1.0}/assets/benchmark.svg +0 -0
  122. {codebase_index-2.0.0 → codebase_index-2.1.0}/assets/demo-terminal.svg +0 -0
  123. {codebase_index-2.0.0 → codebase_index-2.1.0}/assets/mark.png +0 -0
  124. {codebase_index-2.0.0 → codebase_index-2.1.0}/assets/social-preview.png +0 -0
  125. {codebase_index-2.0.0 → codebase_index-2.1.0}/bin/cbx +0 -0
  126. {codebase_index-2.0.0 → codebase_index-2.1.0}/bin/cbx.ps1 +0 -0
  127. {codebase_index-2.0.0 → codebase_index-2.1.0}/bin/codebase-index +0 -0
  128. {codebase_index-2.0.0 → codebase_index-2.1.0}/bin/codebase-index.ps1 +0 -0
  129. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/ARCHITECTURE.md +0 -0
  130. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/COMMUNITY_AUDIT.md +0 -0
  131. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/COMMUNITY_LAUNCH.md +0 -0
  132. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/COMPARISON.md +0 -0
  133. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/DATABASE_SCHEMA.md +0 -0
  134. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/DEMO.md +0 -0
  135. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/DEVELOPMENT.md +0 -0
  136. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/FAQ.md +0 -0
  137. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/INSTALLATION.md +0 -0
  138. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/LANGUAGES.md +0 -0
  139. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/MCP.md +0 -0
  140. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/MEMORY.md +0 -0
  141. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/PRODUCT_UPGRADE_PLAN.md +0 -0
  142. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/QUICKSTART.md +0 -0
  143. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/RELEASE_CHECKLIST.md +0 -0
  144. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/RETRIEVAL.md +0 -0
  145. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/RETRIEVAL_PIPELINE.md +0 -0
  146. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/ROADMAP.md +0 -0
  147. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/SCHEMA.md +0 -0
  148. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/SECURITY.md +0 -0
  149. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/SECURITY_MODEL.md +0 -0
  150. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/SKILL_DESIGN.md +0 -0
  151. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/demo.tape +0 -0
  152. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-benchmark-index-improvements.md +0 -0
  153. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-generalize-skill-research-discipline.md +0 -0
  154. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m1-storage-discovery.md +0 -0
  155. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m2-fts-lexical.md +0 -0
  156. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m3-treesitter-symbols.md +0 -0
  157. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m4-hybrid-search.md +0 -0
  158. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m5-graph-impact.md +0 -0
  159. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m6-embeddings-vector.md +0 -0
  160. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m7-5-plugin-one-command-install.md +0 -0
  161. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m7-skill-packaging.md +0 -0
  162. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m8-hooks-watch.md +0 -0
  163. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m9-release.md +0 -0
  164. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-multilang-symbols-make-skill-win.md +0 -0
  165. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-06-24-snippet-skeletonization.md +0 -0
  166. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-05-29-plugin-one-command-install-design.md +0 -0
  167. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md +0 -0
  168. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-06-24-snippet-skeletonization-design.md +0 -0
  169. {codebase_index-2.0.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-09-10-evidence-memory-design.md +0 -0
  170. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/config.example.json +0 -0
  171. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/demo/EXPECTED_OUTPUT.md +0 -0
  172. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/demo/README.md +0 -0
  173. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/demo/run_demo.ps1 +0 -0
  174. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/demo/run_demo.sh +0 -0
  175. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/hooks/settings.json +0 -0
  176. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/queries.md +0 -0
  177. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/sample-queries.md +0 -0
  178. {codebase_index-2.0.0 → codebase_index-2.1.0}/examples/sample-retrieval-output.md +0 -0
  179. {codebase_index-2.0.0 → codebase_index-2.1.0}/hooks/hooks.json +0 -0
  180. {codebase_index-2.0.0 → codebase_index-2.1.0}/install.ps1 +0 -0
  181. {codebase_index-2.0.0 → codebase_index-2.1.0}/install.sh +0 -0
  182. {codebase_index-2.0.0 → codebase_index-2.1.0}/lib/common.ps1 +0 -0
  183. {codebase_index-2.0.0 → codebase_index-2.1.0}/lib/common.sh +0 -0
  184. {codebase_index-2.0.0 → codebase_index-2.1.0}/pyproject.toml +0 -0
  185. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/2.0-audit.md +0 -0
  186. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/README.md +0 -0
  187. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/__init__.py +0 -0
  188. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/architecture.md +0 -0
  189. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/build_indexes.py +0 -0
  190. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/data/.gitignore +0 -0
  191. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/diagnose_accretion.py +0 -0
  192. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/diagnose_calibration.py +0 -0
  193. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/diagnose_slots.py +0 -0
  194. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/diagnose_structure.py +0 -0
  195. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/experiment_memory.py +0 -0
  196. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/experiments.md +0 -0
  197. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/fit_gate.py +0 -0
  198. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/fit_weights.py +0 -0
  199. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/hypotheses.md +0 -0
  200. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/novelty.md +0 -0
  201. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/nucleus/__init__.py +0 -0
  202. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/nucleus/baselines.py +0 -0
  203. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/nucleus/evalrun.py +0 -0
  204. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/nucleus/memory.py +0 -0
  205. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/nucleus/relations.py +0 -0
  206. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/nucleus/search.py +0 -0
  207. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/related-work.md +0 -0
  208. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/selection.md +0 -0
  209. {codebase_index-2.0.0 → codebase_index-2.1.0}/research/test_nucleus.py +0 -0
  210. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/apply_labels.sh +0 -0
  211. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/bootstrap.ps1 +0 -0
  212. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/bootstrap.sh +0 -0
  213. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/check_links.py +0 -0
  214. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/check_versions.py +0 -0
  215. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/gen_assets.py +0 -0
  216. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/gen_benchmark_chart.py +0 -0
  217. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/gen_terminal_svg.py +0 -0
  218. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/release_notes.py +0 -0
  219. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/release_smoke.py +0 -0
  220. {codebase_index-2.0.0 → codebase_index-2.1.0}/scripts/sync_skill_copies.py +0 -0
  221. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/examples/basic-usage.md +0 -0
  222. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/examples/claude-md-example.md +0 -0
  223. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/examples/hooks-example.json +0 -0
  224. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/references/memory.md +0 -0
  225. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/references/response-contract.md +0 -0
  226. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/scripts/bootstrap.py +0 -0
  227. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/scripts/cbx +0 -0
  228. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/scripts/cbx.ps1 +0 -0
  229. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/scripts/doctor.py +0 -0
  230. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/scripts/install.py +0 -0
  231. {codebase_index-2.0.0 → codebase_index-2.1.0}/skill/scripts/smoke_test.py +0 -0
  232. {codebase_index-2.0.0 → codebase_index-2.1.0}/skills/codebase-index/references/memory.md +0 -0
  233. {codebase_index-2.0.0 → codebase_index-2.1.0}/skills/codebase-index/references/response-contract.md +0 -0
  234. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/__main__.py +0 -0
  235. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/config.py +0 -0
  236. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/discovery/__init__.py +0 -0
  237. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/discovery/classify.py +0 -0
  238. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/discovery/gates.py +0 -0
  239. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/discovery/ignore.py +0 -0
  240. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/discovery/walker.py +0 -0
  241. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/doctor.py +0 -0
  242. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/__init__.py +0 -0
  243. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/backend.py +0 -0
  244. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/external.py +0 -0
  245. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/local.py +0 -0
  246. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/noop.py +0 -0
  247. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/graph/__init__.py +0 -0
  248. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/graph/analysis.py +0 -0
  249. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/graph/export.py +0 -0
  250. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/graph/retrieval.py +0 -0
  251. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/indexer/__init__.py +0 -0
  252. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/indexer/doc_chunks.py +0 -0
  253. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/indexer/freshness.py +0 -0
  254. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/mcp/__init__.py +0 -0
  255. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/memory/__init__.py +0 -0
  256. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/memory/identity.py +0 -0
  257. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/memory/session.py +0 -0
  258. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/memory/store.py +0 -0
  259. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/memory/validate.py +0 -0
  260. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/output/__init__.py +0 -0
  261. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/output/json.py +0 -0
  262. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/output/redact.py +0 -0
  263. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/parsers/__init__.py +0 -0
  264. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/parsers/languages.py +0 -0
  265. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/parsers/line_chunker.py +0 -0
  266. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/parsers/symbol_chunks.py +0 -0
  267. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/__init__.py +0 -0
  268. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/budget.py +0 -0
  269. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/diversity.py +0 -0
  270. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/features.py +0 -0
  271. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/fusion.py +0 -0
  272. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/fuzzy.py +0 -0
  273. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/lexical.py +0 -0
  274. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/skeleton.py +0 -0
  275. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/types.py +0 -0
  276. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/scaffold.py +0 -0
  277. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/skill_template/examples/hooks/settings.json +0 -0
  278. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/skill_template/references/memory.md +0 -0
  279. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/skill_template/references/response-contract.md +0 -0
  280. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/skill_template/scripts/cbx +0 -0
  281. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/skill_template/scripts/cbx.ps1 +0 -0
  282. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/skill_update.py +0 -0
  283. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/storage/__init__.py +0 -0
  284. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/watch/__init__.py +0 -0
  285. {codebase_index-2.0.0 → codebase_index-2.1.0}/src/codebase_index/watch/watcher.py +0 -0
  286. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/__init__.py +0 -0
  287. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/benchmark_honest.py +0 -0
  288. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/benchmark_honest_RESULTS.md +0 -0
  289. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/benchmark_honest_newtowny.txt +0 -0
  290. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/benchmark_public.py +0 -0
  291. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/benchmark_public_RESULTS.md +0 -0
  292. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/benchmark_real_repo.py +0 -0
  293. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/conftest.py +0 -0
  294. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/README.md +0 -0
  295. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/__init__.py +0 -0
  296. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/baselines.py +0 -0
  297. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/gen_queries.py +0 -0
  298. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/harness.py +0 -0
  299. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/memory_eval.py +0 -0
  300. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/metrics.py +0 -0
  301. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/queries/self_repo.yml +0 -0
  302. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/queries/self_repo_git.yml +0 -0
  303. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/results/1.10.0-perf.json +0 -0
  304. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/results/1.10.0-retrieval-8corpus.txt +0 -0
  305. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/results/2026-09-04-public-baselines.json +0 -0
  306. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/results/2026-09-04-public-baselines.md +0 -0
  307. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/results/2026-09-14-evidence-memory.json +0 -0
  308. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/results/2026-09-14-evidence-memory.md +0 -0
  309. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/eval/run_baselines.py +0 -0
  310. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/README.md +0 -0
  311. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/expected_answers.yml +0 -0
  312. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/index-1.10.0/index.sqlite +0 -0
  313. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.go +0 -0
  314. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.java +0 -0
  315. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.rs +0 -0
  316. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/.env +0 -0
  317. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/.gitignore +0 -0
  318. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/huge.json +0 -0
  319. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/logo.png +0 -0
  320. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/node_modules/leftpad/index.js +0 -0
  321. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/secrets.pem +0 -0
  322. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/api/service.py +0 -0
  323. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/auth/token.py +0 -0
  324. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/models/user.py +0 -0
  325. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/schema.generated.ts +0 -0
  326. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/web/app.ts +0 -0
  327. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/architecture.json +0 -0
  328. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/explain_auth.json +0 -0
  329. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_architecture.json +0 -0
  330. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_explain_code.json +0 -0
  331. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_healthcheck.json +0 -0
  332. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_impact_of_diff.json +0 -0
  333. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_index_stats.json +0 -0
  334. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/mcp_path_between.json +0 -0
  335. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/path_renew_to_token.json +0 -0
  336. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden/stats.json +0 -0
  337. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/golden_utils.py +0 -0
  338. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/installer/smoke.ps1 +0 -0
  339. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/installer/smoke.sh +0 -0
  340. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_analysis.py +0 -0
  341. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_benchmark_comparison.py +0 -0
  342. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_bootstrap.py +0 -0
  343. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_budget.py +0 -0
  344. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_chunker.py +0 -0
  345. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_classify.py +0 -0
  346. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_clean_cli.py +0 -0
  347. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_cli.py +0 -0
  348. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_cli_golden.py +0 -0
  349. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_config.py +0 -0
  350. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_diff_impact.py +0 -0
  351. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_discovery.py +0 -0
  352. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_diversity.py +0 -0
  353. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_doc_chunks.py +0 -0
  354. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_doctor.py +0 -0
  355. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_embeddings_backend.py +0 -0
  356. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_embeddings_external.py +0 -0
  357. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_embeddings_local.py +0 -0
  358. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_eval_baselines.py +0 -0
  359. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_freshness.py +0 -0
  360. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_fusion.py +0 -0
  361. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_fuzzy.py +0 -0
  362. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_gen_queries.py +0 -0
  363. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_graph.py +0 -0
  364. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_graph_coverage.py +0 -0
  365. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_graph_export_cli.py +0 -0
  366. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_graph_retrieval.py +0 -0
  367. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_hooks_merge.py +0 -0
  368. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_hybrid_ranking.py +0 -0
  369. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_ignore.py +0 -0
  370. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_impact_cli.py +0 -0
  371. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_impact_decay.py +0 -0
  372. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_index_cli.py +0 -0
  373. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_init_cli.py +0 -0
  374. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_intent.py +0 -0
  375. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_languages.py +0 -0
  376. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_lexical.py +0 -0
  377. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_mcp_golden.py +0 -0
  378. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_mcp_server.py +0 -0
  379. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_eval_smoke.py +0 -0
  380. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_identity.py +0 -0
  381. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_lifecycle.py +0 -0
  382. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_session.py +0 -0
  383. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_stale_context.py +0 -0
  384. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_store.py +0 -0
  385. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_surfaces.py +0 -0
  386. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_memory_validate.py +0 -0
  387. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_multilang_symbols.py +0 -0
  388. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_navigate.py +0 -0
  389. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_output.py +0 -0
  390. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_packaging.py +0 -0
  391. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_parse_guardrails.py +0 -0
  392. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_perf_smoke.py +0 -0
  393. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_pipeline.py +0 -0
  394. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_pipeline_search.py +0 -0
  395. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_pipeline_vectors.py +0 -0
  396. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_plugin_manifest.py +0 -0
  397. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_plugin_skill_parity.py +0 -0
  398. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_plugin_wrappers.py +0 -0
  399. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_public_benchmark.py +0 -0
  400. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_quality_benchmark.py +0 -0
  401. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_ranking_features.py +0 -0
  402. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_read_cap.py +0 -0
  403. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_redact.py +0 -0
  404. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_release_scripts.py +0 -0
  405. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_repo_search.py +0 -0
  406. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_rerank.py +0 -0
  407. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_retrieval_types.py +0 -0
  408. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_scaffold.py +0 -0
  409. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_search_cli.py +0 -0
  410. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_searchers.py +0 -0
  411. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_seeded_index.py +0 -0
  412. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_service.py +0 -0
  413. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_skeleton.py +0 -0
  414. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_skill_update.py +0 -0
  415. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_storage.py +0 -0
  416. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_symbol_cli.py +0 -0
  417. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_symbol_ranking.py +0 -0
  418. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_symbol_refs.py +0 -0
  419. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_sync_skill_copies.py +0 -0
  420. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_treesitter.py +0 -0
  421. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_tuning_contract.py +0 -0
  422. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_update.py +0 -0
  423. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_update_cli.py +0 -0
  424. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_vector_search.py +0 -0
  425. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_vectors_storage.py +0 -0
  426. {codebase_index-2.0.0 → codebase_index-2.1.0}/tests/test_watcher.py +0 -0
@@ -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.
@@ -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.0.0",
6
+ "version": "2.1.0",
7
7
  "author": {
8
8
  "name": "codebase-index contributors"
9
9
  },
@@ -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,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,101 @@ All notable changes to this project are documented here. The format is based on
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.1.0] - 2026-09-24
10
+
11
+ Agent-efficiency release. An agent answering five code questions on a 5.9k-file
12
+ Java/Rust monorepo spent **19% fewer tokens (83.5k vs 103.0k) and 25% fewer tool calls
13
+ (9 vs 12)** with the skill than with Grep/Read alone, three runs per arm, with no
14
+ overlap between the arms' ranges; before this release the two were at parity. The
15
+ gain comes from answer-ready output (`--compact`: ranked files with numbered matching
16
+ lines), `refs`/`impact` that resolve `Owner.member` targets exactly and say when a list
17
+ may be incomplete, build-module awareness in `impact`, and ranking measured over 342
18
+ queries (MRR +0.010, p=0.031). Index schema 4: the first `update` rebuilds the index
19
+ once.
20
+
21
+ ### Fixed
22
+
23
+ - `refs`, `impact` and `symbol` accept a qualified `Owner.member` target
24
+ (`TownService.refresh`, also `pkg.Owner.member`, `Owner::member`, `Owner#member`),
25
+ where the owner is a type or a module (`activation::place`). Before, a qualified name
26
+ matched nothing and a bare name that several types share (`refresh`) returned every
27
+ same-named method's callers mixed together.
28
+ - Calls written against a type or module (`TownService.refresh(server)`, `Foo::new()`,
29
+ `activation::place(..)`) now resolve across files when exactly one type or module of
30
+ that name defines the callee, so `impact` walks them. These edges are marked
31
+ `inferred`.
32
+ - Call resolution no longer invents edges: a call never binds across languages (a
33
+ Python `queue.take()` to a Java `take`), a call on another type
34
+ (`ApprenticeService.take`) no longer binds to the repo's only `take` when that one
35
+ belongs to a different type, and a call on a type the file does not define no
36
+ longer binds to a same-named method in the calling file. Name uniqueness is now
37
+ judged per language family (JVM, JS/TS, C/C++), so a Rust `place` resolves even
38
+ when Java also defines one.
39
+ - `refs "Owner.member"` no longer reports a confident empty answer when calls it
40
+ cannot type exist (`chest.holdings().take(..)`): they are listed as
41
+ `possible_call`, nearest to the definition first, and `coverage.partial` is true.
42
+ - `refs` and `impact` report `coverage.partial: true` with a reason when the target
43
+ matches no indexed definition or call site, instead of an empty answer that looked
44
+ like "no callers".
45
+ - `update` parses changed files in a process pool, like a full build. It used to parse
46
+ them one at a time, so a large change set was slower to update than to rebuild
47
+ (2009 changed files: 149 s, against 13 s for a full build of all 5904).
48
+ - A class is returned instead of its same-named constructor. The constructor's
49
+ `new X()` callers gave it the higher in-degree, so it took the file's one slot on
50
+ the page with a one-line body while the class never appeared.
51
+ - Kotlin call sites are extracted (with their receiver). Kotlin's `call_expression`
52
+ has no named fields, so no Kotlin call edge was ever recorded.
53
+
54
+ ### Added
55
+
56
+ - Rust enum variants, Java enum constants and C# enum members are indexed as
57
+ `variant` symbols (`CoreError.ObjectDamaged`), and a Rust `Owner::name` path used in a
58
+ pattern or as a value (`Err(CoreError::ObjectDamaged(_)) =>`, `if let Kind::A = ..`)
59
+ is recorded as a `reference` edge. `refs` reports these as `kind: "reference"`, so it
60
+ finds where a variant is handled, not only where it is constructed.
61
+ - `refs --exclude-tests`, `refs --path <prefix>` (repeatable; also on the MCP
62
+ `find_refs` tool) and `refs --compact`, which prints one line per site:
63
+ `path:line kind caller -> target [confidence]`.
64
+ - `describe` on a class, enum, struct or trait lists its `members` and folds their
65
+ edges from and to code outside the type into `used_by` / `uses`. It used to report
66
+ zero callers and callees for a class, whose methods, not the class, are called.
67
+ - `--session` is accepted by `symbol`, `refs` and `impact`, so one tag can be passed to
68
+ every read command.
69
+ - `search --compact` / `explain --compact`: agent text instead of JSON. Each result is
70
+ `path:start-end symbols` with up to eight numbered lines underneath that carry the
71
+ match (rarer query words first), so an agent can cite `file:line` without a Read or
72
+ a `grep -n`. On a benchmark query the packet went from 9.6 KB of JSON to 3.7 KB.
73
+ Evidence already sent to the session prints as `(already sent)`.
74
+ - `impact --compact`, and a `modules` field on `impact`: the build-system module the
75
+ target lives in (Gradle, Maven, Cargo, npm, Go, Python) and the lines of other
76
+ build files that name it, split into workspace membership and dependencies. "Does
77
+ another module depend on this?" no longer needs a grep over build files.
78
+ - The skill routes every question through `--compact` and is 40% shorter.
79
+
80
+ ### Changed
81
+
82
+ - Ranking, measured over 342 queries on six query sets (five repositories, including
83
+ 24 natural-language "how does X work" questions): MRR +0.010 (p=0.036), recall@10
84
+ +0.015 (p=0.038), nDCG@10 +0.009 (p=0.018), useful@budget +0.020 (p=0.015), 15 fewer
85
+ snippet tokens per query; no corpus regressed. On the natural-language questions MRR
86
+ went 0.428 → 0.475 and recall@10 0.708 → 0.833. Three signals, each ablatable:
87
+ - `resource_priors`: localisation catalogues (`lang/en_us.json`, `i18n/*.json`,
88
+ `.po`) and workflow artifacts (review `.diff`/`.patch` files, agent scratch
89
+ directories such as `.superpowers/`) are demoted like generated code;
90
+ - `stem_match`: a file named after a query term (`Treasury.java` for a question
91
+ about the treasury) gets a small bonus;
92
+ - `question_pool_floor`: a question-form query ("how is a crop loaded") gets a
93
+ 40-deep candidate pool, so the class it paraphrases reaches the reranker.
94
+ - `symbol` returns exact matches alone when there are any, with a count of the prefix
95
+ matches it left out (`more_prefix_matches`), instead of burying the one symbol asked
96
+ for among twenty `TreasuryX` prefix matches.
97
+
98
+ - Every `refs` site carries `caller` (the function it sits in), `target` (the
99
+ definition it resolved to) and `receiver` (what the call was made on), so callers can
100
+ be named and same-named methods told apart without reading each file.
101
+ - Index schema 4: call edges store their receiver. The first `update` after upgrading
102
+ rebuilds the index once; read commands keep working on an older index until then.
103
+
9
104
  ## [2.0.0] - 2026-09-14
10
105
 
11
106
  Evidence release. Everything an agent reads through `codebase-index` is now identified
@@ -773,7 +868,8 @@ Pooled over 305 queries (Python, Java, TypeScript), v1.8.0 → 1.9.0:
773
868
  - Hooks example + `watch` mode for keeping the index fresh without blocking the edit loop (M8).
774
869
  - `doctor`, `stats`, `clean` diagnostics/maintenance commands.
775
870
 
776
- [Unreleased]: https://github.com/denfry/codebase-index/compare/v2.0.0...HEAD
871
+ [Unreleased]: https://github.com/denfry/codebase-index/compare/v2.1.0...HEAD
872
+ [2.1.0]: https://github.com/denfry/codebase-index/compare/v2.0.0...v2.1.0
777
873
  [2.0.0]: https://github.com/denfry/codebase-index/compare/v1.9.0...v2.0.0
778
874
  [1.10.0]: https://github.com/denfry/codebase-index/compare/v1.9.0...abb67df
779
875
  [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.0.0
3
+ Version: 2.1.0
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,13 +180,16 @@ 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
- Add `--json` to any command for the machine-readable packet.
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 reads only `recommended_reads` ranges; optional PostToolUse hook keeps the index fresh |
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 |
@@ -222,10 +225,14 @@ significant on a pooled multi-language query set
222
225
  ([tests/eval](tests/eval/README.md)). 1.9.0 removed two signals that could not
223
226
  show a benefit and rejected five plausible ones.
224
227
 
225
- **What is not measured yet**: whether an *agent* completes tasks better with the
226
- index. That needs model calls and a rubric and is the top item in
227
- [BENCHMARKS.md](docs/BENCHMARKS.md#future-work-in-priority-order). Please do not
228
- quote task-success numbers for this project; there are none.
228
+ **Agent pilot (2.1.0).** The same five code questions on a 5.9k-file Java/Rust
229
+ monorepo, answered by a coding agent three times with the skill and three times with
230
+ Grep/Read only: **19% fewer tokens and 25% fewer tool calls** with the skill, all
231
+ answers correct in both arms, no overlap between the arms' token ranges. It is one
232
+ private repository and five questions, so read it as a direction:
233
+ [raw runs and caveats](tests/eval/results/2026-09-24-agent-pilot.md). A broader
234
+ task-level evaluation is still the top item in
235
+ [BENCHMARKS.md](docs/BENCHMARKS.md#future-work-in-priority-order).
229
236
 
230
237
  ## How it works
231
238
 
@@ -130,13 +130,16 @@ 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
- Add `--json` to any command for the machine-readable packet.
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 reads only `recommended_reads` ranges; optional PostToolUse hook keeps the index fresh |
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 |
@@ -172,10 +175,14 @@ significant on a pooled multi-language query set
172
175
  ([tests/eval](tests/eval/README.md)). 1.9.0 removed two signals that could not
173
176
  show a benefit and rejected five plausible ones.
174
177
 
175
- **What is not measured yet**: whether an *agent* completes tasks better with the
176
- index. That needs model calls and a rubric and is the top item in
177
- [BENCHMARKS.md](docs/BENCHMARKS.md#future-work-in-priority-order). Please do not
178
- quote task-success numbers for this project; there are none.
178
+ **Agent pilot (2.1.0).** The same five code questions on a 5.9k-file Java/Rust
179
+ monorepo, answered by a coding agent three times with the skill and three times with
180
+ Grep/Read only: **19% fewer tokens and 25% fewer tool calls** with the skill, all
181
+ answers correct in both arms, no overlap between the arms' token ranges. It is one
182
+ private repository and five questions, so read it as a direction:
183
+ [raw runs and caveats](tests/eval/results/2026-09-24-agent-pilot.md). A broader
184
+ task-level evaluation is still the top item in
185
+ [BENCHMARKS.md](docs/BENCHMARKS.md#future-work-in-priority-order).
179
186
 
180
187
  ## How it works
181
188
 
@@ -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*. The baselines here are
227
- retrieval metrics; nobody has measured whether an agent with the index
228
- finishes tasks faster or better. That is the most important open item.
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 same questions, an actual coding agent
233
- (Claude Code or Codex CLI) with and without the skill, measuring answer
234
- correctness, files read, tokens, and wall time. Needs model calls and a
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
@@ -110,7 +110,7 @@ pwsh ./install.ps1 -Target claude -InstallDir "D:\skills\codebase-index"
110
110
  **Pin to a branch or tag** (reproducibility and safety):
111
111
 
112
112
  ```sh
113
- sh install.sh --branch v2.0.0
113
+ sh install.sh --branch v2.1.0
114
114
  ```
115
115
 
116
116
  ---
@@ -1,3 +1,3 @@
1
- codebase-index @ https://github.com/denfry/codebase-index/archive/refs/tags/v2.0.0.tar.gz
1
+ codebase-index @ https://github.com/denfry/codebase-index/archive/refs/tags/v2.1.0.tar.gz
2
2
  tree-sitter==0.25.2
3
3
  tree-sitter-language-pack==1.8.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).