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.
Files changed (429) hide show
  1. codebase_index-2.1.1/.claude/skills/codebase-index/.skill_version +1 -0
  2. codebase_index-2.1.1/.claude/skills/codebase-index/SKILL.md +65 -0
  3. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/references/commands.md +18 -0
  4. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude-plugin/plugin.json +1 -1
  5. codebase_index-2.1.1/.codex/skills/codebase-index/.skill_version +1 -0
  6. codebase_index-2.1.1/.codex/skills/codebase-index/SKILL.md +65 -0
  7. {codebase_index-2.0.0/.opencode → codebase_index-2.1.1/.codex}/skills/codebase-index/references/commands.md +18 -0
  8. codebase_index-2.1.1/.opencode/skills/codebase-index/.skill_version +1 -0
  9. codebase_index-2.1.1/.opencode/skills/codebase-index/SKILL.md +65 -0
  10. {codebase_index-2.0.0/.codex → codebase_index-2.1.1/.opencode}/skills/codebase-index/references/commands.md +18 -0
  11. {codebase_index-2.0.0 → codebase_index-2.1.1}/CHANGELOG.md +116 -1
  12. {codebase_index-2.0.0 → codebase_index-2.1.1}/PKG-INFO +18 -8
  13. {codebase_index-2.0.0 → codebase_index-2.1.1}/README.md +17 -7
  14. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/BENCHMARKS.md +25 -7
  15. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/installer.md +1 -1
  16. codebase_index-2.1.1/hooks/hooks.json +31 -0
  17. {codebase_index-2.0.0 → codebase_index-2.1.1}/pyproject.toml +1 -0
  18. {codebase_index-2.0.0 → codebase_index-2.1.1}/requirements.lock +1 -1
  19. codebase_index-2.1.1/skill/SKILL.md +65 -0
  20. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/references/commands.md +18 -0
  21. codebase_index-2.1.1/skills/codebase-index/SKILL.md +65 -0
  22. codebase_index-2.1.1/skills/codebase-index/references/commands.md +106 -0
  23. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/__init__.py +1 -1
  24. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/cli.py +103 -7
  25. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/builder.py +92 -13
  26. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/expand.py +21 -5
  27. codebase_index-2.1.1/src/codebase_index/graph/modules.py +112 -0
  28. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/navigate.py +64 -4
  29. codebase_index-2.1.1/src/codebase_index/hooks.py +256 -0
  30. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/pipeline.py +29 -2
  31. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/mcp/server.py +11 -3
  32. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/models.py +31 -0
  33. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/markdown.py +118 -4
  34. codebase_index-2.1.1/src/codebase_index/parsers/base.py +74 -0
  35. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/treesitter.py +105 -1
  36. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/intent.py +18 -0
  37. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/pipeline.py +87 -2
  38. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/priors.py +35 -2
  39. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/rerank.py +11 -1
  40. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/searchers.py +154 -22
  41. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/tuning.py +47 -1
  42. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/scaffold.py +61 -0
  43. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/service.py +2 -0
  44. codebase_index-2.1.1/src/codebase_index/skill_template/SKILL.md +65 -0
  45. codebase_index-2.1.1/src/codebase_index/skill_template/references/commands.md +106 -0
  46. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/db.py +2 -1
  47. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/repo.py +97 -17
  48. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/schema.sql +4 -1
  49. codebase_index-2.1.1/tests/eval/results/2026-09-24-agent-pilot.md +72 -0
  50. codebase_index-2.1.1/tests/eval/results/2026-09-24-retrieval-2.1.0.txt +47 -0
  51. codebase_index-2.1.1/tests/eval/results/2026-09-24-terra-nl-queries.yml +75 -0
  52. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/run_eval.py +2 -0
  53. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/describe_refresh.json +6 -2
  54. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/impact_user_model.json +1 -0
  55. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_describe_symbol.json +6 -2
  56. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_find_refs.json +12 -3
  57. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_find_symbol.json +1 -0
  58. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_impact_of.json +1 -0
  59. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_search_code.json +2 -2
  60. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/refs_refresh_access_token.json +12 -3
  61. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/search_token.json +2 -2
  62. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/symbol_user.json +1 -0
  63. codebase_index-2.1.1/tests/test_agent_ergonomics.py +227 -0
  64. codebase_index-2.1.1/tests/test_compact_output.py +114 -0
  65. codebase_index-2.1.1/tests/test_hooks_guard.py +120 -0
  66. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_migration_1x.py +11 -8
  67. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_priors.py +28 -0
  68. codebase_index-2.1.1/tests/test_qualified_refs.py +320 -0
  69. codebase_index-2.0.0/.claude/skills/codebase-index/.skill_version +0 -1
  70. codebase_index-2.0.0/.claude/skills/codebase-index/SKILL.md +0 -111
  71. codebase_index-2.0.0/.codex/skills/codebase-index/.skill_version +0 -1
  72. codebase_index-2.0.0/.codex/skills/codebase-index/SKILL.md +0 -111
  73. codebase_index-2.0.0/.opencode/skills/codebase-index/.skill_version +0 -1
  74. codebase_index-2.0.0/.opencode/skills/codebase-index/SKILL.md +0 -111
  75. codebase_index-2.0.0/hooks/hooks.json +0 -14
  76. codebase_index-2.0.0/skill/SKILL.md +0 -111
  77. codebase_index-2.0.0/skills/codebase-index/SKILL.md +0 -111
  78. codebase_index-2.0.0/skills/codebase-index/references/commands.md +0 -88
  79. codebase_index-2.0.0/src/codebase_index/parsers/base.py +0 -47
  80. codebase_index-2.0.0/src/codebase_index/skill_template/SKILL.md +0 -111
  81. codebase_index-2.0.0/src/codebase_index/skill_template/references/commands.md +0 -88
  82. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/examples/hooks/settings.json +0 -0
  83. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/references/memory.md +0 -0
  84. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/references/response-contract.md +0 -0
  85. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/scripts/cbx +0 -0
  86. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude/skills/codebase-index/scripts/cbx.ps1 +0 -0
  87. {codebase_index-2.0.0 → codebase_index-2.1.1}/.claude-plugin/marketplace.json +0 -0
  88. {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/examples/hooks/settings.json +0 -0
  89. {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/references/memory.md +0 -0
  90. {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/references/response-contract.md +0 -0
  91. {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/scripts/cbx +0 -0
  92. {codebase_index-2.0.0 → codebase_index-2.1.1}/.codex/skills/codebase-index/scripts/cbx.ps1 +0 -0
  93. {codebase_index-2.0.0 → codebase_index-2.1.1}/.editorconfig +0 -0
  94. {codebase_index-2.0.0 → codebase_index-2.1.1}/.gitattributes +0 -0
  95. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/benchmark_report.yml +0 -0
  96. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  97. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  98. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  99. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/language_support.yml +0 -0
  100. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/ISSUE_TEMPLATE/skill_listing_request.yml +0 -0
  101. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  102. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/SUPPORT.md +0 -0
  103. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/labels.yml +0 -0
  104. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/workflows/ci.yml +0 -0
  105. {codebase_index-2.0.0 → codebase_index-2.1.1}/.github/workflows/release.yml +0 -0
  106. {codebase_index-2.0.0 → codebase_index-2.1.1}/.gitignore +0 -0
  107. {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/agents/codebase-index.md +0 -0
  108. {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/commands/codebase-index.md +0 -0
  109. {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/examples/hooks/settings.json +0 -0
  110. {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/references/memory.md +0 -0
  111. {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/references/response-contract.md +0 -0
  112. {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/scripts/cbx +0 -0
  113. {codebase_index-2.0.0 → codebase_index-2.1.1}/.opencode/skills/codebase-index/scripts/cbx.ps1 +0 -0
  114. {codebase_index-2.0.0 → codebase_index-2.1.1}/AGENTS.md +0 -0
  115. {codebase_index-2.0.0 → codebase_index-2.1.1}/CODE_OF_CONDUCT.md +0 -0
  116. {codebase_index-2.0.0 → codebase_index-2.1.1}/CONTRIBUTING.md +0 -0
  117. {codebase_index-2.0.0 → codebase_index-2.1.1}/LICENSE +0 -0
  118. {codebase_index-2.0.0 → codebase_index-2.1.1}/ROADMAP.md +0 -0
  119. {codebase_index-2.0.0 → codebase_index-2.1.1}/SECURITY.md +0 -0
  120. {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/claude.ps1 +0 -0
  121. {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/claude.sh +0 -0
  122. {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/codex.ps1 +0 -0
  123. {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/codex.sh +0 -0
  124. {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/opencode.ps1 +0 -0
  125. {codebase_index-2.0.0 → codebase_index-2.1.1}/adapters/opencode.sh +0 -0
  126. {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/architecture.svg +0 -0
  127. {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/benchmark.svg +0 -0
  128. {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/demo-terminal.svg +0 -0
  129. {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/mark.png +0 -0
  130. {codebase_index-2.0.0 → codebase_index-2.1.1}/assets/social-preview.png +0 -0
  131. {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/cbx +0 -0
  132. {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/cbx.ps1 +0 -0
  133. {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/codebase-index +0 -0
  134. {codebase_index-2.0.0 → codebase_index-2.1.1}/bin/codebase-index.ps1 +0 -0
  135. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/ARCHITECTURE.md +0 -0
  136. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/COMMUNITY_AUDIT.md +0 -0
  137. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/COMMUNITY_LAUNCH.md +0 -0
  138. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/COMPARISON.md +0 -0
  139. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/DATABASE_SCHEMA.md +0 -0
  140. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/DEMO.md +0 -0
  141. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/DEVELOPMENT.md +0 -0
  142. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/FAQ.md +0 -0
  143. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/INSTALLATION.md +0 -0
  144. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/LANGUAGES.md +0 -0
  145. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/MCP.md +0 -0
  146. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/MEMORY.md +0 -0
  147. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/PRODUCT_UPGRADE_PLAN.md +0 -0
  148. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/QUICKSTART.md +0 -0
  149. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/RELEASE_CHECKLIST.md +0 -0
  150. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/RETRIEVAL.md +0 -0
  151. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/RETRIEVAL_PIPELINE.md +0 -0
  152. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/ROADMAP.md +0 -0
  153. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SCHEMA.md +0 -0
  154. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SECURITY.md +0 -0
  155. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SECURITY_MODEL.md +0 -0
  156. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/SKILL_DESIGN.md +0 -0
  157. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/demo.tape +0 -0
  158. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-benchmark-index-improvements.md +0 -0
  159. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-generalize-skill-research-discipline.md +0 -0
  160. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m1-storage-discovery.md +0 -0
  161. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m2-fts-lexical.md +0 -0
  162. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m3-treesitter-symbols.md +0 -0
  163. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m4-hybrid-search.md +0 -0
  164. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m5-graph-impact.md +0 -0
  165. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m6-embeddings-vector.md +0 -0
  166. {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
  167. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m7-skill-packaging.md +0 -0
  168. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m8-hooks-watch.md +0 -0
  169. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-m9-release.md +0 -0
  170. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-05-29-multilang-symbols-make-skill-win.md +0 -0
  171. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/plans/2026-06-24-snippet-skeletonization.md +0 -0
  172. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-05-29-plugin-one-command-install-design.md +0 -0
  173. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md +0 -0
  174. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-06-24-snippet-skeletonization-design.md +0 -0
  175. {codebase_index-2.0.0 → codebase_index-2.1.1}/docs/superpowers/specs/2026-09-10-evidence-memory-design.md +0 -0
  176. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/config.example.json +0 -0
  177. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/EXPECTED_OUTPUT.md +0 -0
  178. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/README.md +0 -0
  179. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/run_demo.ps1 +0 -0
  180. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/demo/run_demo.sh +0 -0
  181. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/hooks/settings.json +0 -0
  182. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/queries.md +0 -0
  183. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/sample-queries.md +0 -0
  184. {codebase_index-2.0.0 → codebase_index-2.1.1}/examples/sample-retrieval-output.md +0 -0
  185. {codebase_index-2.0.0 → codebase_index-2.1.1}/install.ps1 +0 -0
  186. {codebase_index-2.0.0 → codebase_index-2.1.1}/install.sh +0 -0
  187. {codebase_index-2.0.0 → codebase_index-2.1.1}/lib/common.ps1 +0 -0
  188. {codebase_index-2.0.0 → codebase_index-2.1.1}/lib/common.sh +0 -0
  189. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/2.0-audit.md +0 -0
  190. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/README.md +0 -0
  191. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/__init__.py +0 -0
  192. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/architecture.md +0 -0
  193. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/build_indexes.py +0 -0
  194. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/data/.gitignore +0 -0
  195. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_accretion.py +0 -0
  196. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_calibration.py +0 -0
  197. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_slots.py +0 -0
  198. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/diagnose_structure.py +0 -0
  199. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/experiment_memory.py +0 -0
  200. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/experiments.md +0 -0
  201. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/fit_gate.py +0 -0
  202. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/fit_weights.py +0 -0
  203. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/hypotheses.md +0 -0
  204. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/novelty.md +0 -0
  205. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/__init__.py +0 -0
  206. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/baselines.py +0 -0
  207. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/evalrun.py +0 -0
  208. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/memory.py +0 -0
  209. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/relations.py +0 -0
  210. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/nucleus/search.py +0 -0
  211. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/related-work.md +0 -0
  212. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/selection.md +0 -0
  213. {codebase_index-2.0.0 → codebase_index-2.1.1}/research/test_nucleus.py +0 -0
  214. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/apply_labels.sh +0 -0
  215. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/bootstrap.ps1 +0 -0
  216. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/bootstrap.sh +0 -0
  217. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/check_links.py +0 -0
  218. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/check_versions.py +0 -0
  219. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/gen_assets.py +0 -0
  220. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/gen_benchmark_chart.py +0 -0
  221. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/gen_terminal_svg.py +0 -0
  222. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/release_notes.py +0 -0
  223. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/release_smoke.py +0 -0
  224. {codebase_index-2.0.0 → codebase_index-2.1.1}/scripts/sync_skill_copies.py +0 -0
  225. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/examples/basic-usage.md +0 -0
  226. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/examples/claude-md-example.md +0 -0
  227. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/examples/hooks-example.json +0 -0
  228. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/references/memory.md +0 -0
  229. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/references/response-contract.md +0 -0
  230. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/bootstrap.py +0 -0
  231. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/cbx +0 -0
  232. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/cbx.ps1 +0 -0
  233. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/doctor.py +0 -0
  234. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/install.py +0 -0
  235. {codebase_index-2.0.0 → codebase_index-2.1.1}/skill/scripts/smoke_test.py +0 -0
  236. {codebase_index-2.0.0 → codebase_index-2.1.1}/skills/codebase-index/references/memory.md +0 -0
  237. {codebase_index-2.0.0 → codebase_index-2.1.1}/skills/codebase-index/references/response-contract.md +0 -0
  238. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/__main__.py +0 -0
  239. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/config.py +0 -0
  240. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/__init__.py +0 -0
  241. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/classify.py +0 -0
  242. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/gates.py +0 -0
  243. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/ignore.py +0 -0
  244. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/discovery/walker.py +0 -0
  245. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/doctor.py +0 -0
  246. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/__init__.py +0 -0
  247. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/backend.py +0 -0
  248. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/external.py +0 -0
  249. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/local.py +0 -0
  250. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/embeddings/noop.py +0 -0
  251. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/__init__.py +0 -0
  252. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/analysis.py +0 -0
  253. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/export.py +0 -0
  254. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/graph/retrieval.py +0 -0
  255. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/__init__.py +0 -0
  256. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/doc_chunks.py +0 -0
  257. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/indexer/freshness.py +0 -0
  258. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/mcp/__init__.py +0 -0
  259. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/__init__.py +0 -0
  260. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/identity.py +0 -0
  261. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/session.py +0 -0
  262. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/store.py +0 -0
  263. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/memory/validate.py +0 -0
  264. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/__init__.py +0 -0
  265. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/json.py +0 -0
  266. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/output/redact.py +0 -0
  267. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/__init__.py +0 -0
  268. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/languages.py +0 -0
  269. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/line_chunker.py +0 -0
  270. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/parsers/symbol_chunks.py +0 -0
  271. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/__init__.py +0 -0
  272. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/budget.py +0 -0
  273. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/diversity.py +0 -0
  274. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/features.py +0 -0
  275. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/fusion.py +0 -0
  276. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/fuzzy.py +0 -0
  277. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/lexical.py +0 -0
  278. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/skeleton.py +0 -0
  279. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/retrieval/types.py +0 -0
  280. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/examples/hooks/settings.json +0 -0
  281. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/references/memory.md +0 -0
  282. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/references/response-contract.md +0 -0
  283. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/scripts/cbx +0 -0
  284. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_template/scripts/cbx.ps1 +0 -0
  285. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/skill_update.py +0 -0
  286. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/storage/__init__.py +0 -0
  287. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/watch/__init__.py +0 -0
  288. {codebase_index-2.0.0 → codebase_index-2.1.1}/src/codebase_index/watch/watcher.py +0 -0
  289. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/__init__.py +0 -0
  290. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_honest.py +0 -0
  291. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_honest_RESULTS.md +0 -0
  292. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_honest_newtowny.txt +0 -0
  293. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_public.py +0 -0
  294. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_public_RESULTS.md +0 -0
  295. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/benchmark_real_repo.py +0 -0
  296. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/conftest.py +0 -0
  297. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/README.md +0 -0
  298. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/__init__.py +0 -0
  299. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/baselines.py +0 -0
  300. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/gen_queries.py +0 -0
  301. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/harness.py +0 -0
  302. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/memory_eval.py +0 -0
  303. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/metrics.py +0 -0
  304. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/queries/self_repo.yml +0 -0
  305. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/queries/self_repo_git.yml +0 -0
  306. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/1.10.0-perf.json +0 -0
  307. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/1.10.0-retrieval-8corpus.txt +0 -0
  308. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-04-public-baselines.json +0 -0
  309. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-04-public-baselines.md +0 -0
  310. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-14-evidence-memory.json +0 -0
  311. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/results/2026-09-14-evidence-memory.md +0 -0
  312. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/eval/run_baselines.py +0 -0
  313. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/README.md +0 -0
  314. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/expected_answers.yml +0 -0
  315. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/index-1.10.0/index.sqlite +0 -0
  316. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/multilang/sample.go +0 -0
  317. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/multilang/sample.java +0 -0
  318. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/multilang/sample.rs +0 -0
  319. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/.env +0 -0
  320. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/.gitignore +0 -0
  321. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/huge.json +0 -0
  322. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/logo.png +0 -0
  323. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/node_modules/leftpad/index.js +0 -0
  324. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/secrets.pem +0 -0
  325. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/api/service.py +0 -0
  326. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/auth/token.py +0 -0
  327. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/models/user.py +0 -0
  328. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/src/schema.generated.ts +0 -0
  329. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/fixtures/sample_repo/web/app.ts +0 -0
  330. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/architecture.json +0 -0
  331. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/explain_auth.json +0 -0
  332. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_architecture.json +0 -0
  333. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_explain_code.json +0 -0
  334. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_healthcheck.json +0 -0
  335. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_impact_of_diff.json +0 -0
  336. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_index_stats.json +0 -0
  337. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/mcp_path_between.json +0 -0
  338. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/path_renew_to_token.json +0 -0
  339. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden/stats.json +0 -0
  340. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/golden_utils.py +0 -0
  341. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/installer/smoke.ps1 +0 -0
  342. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/installer/smoke.sh +0 -0
  343. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_analysis.py +0 -0
  344. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_benchmark_comparison.py +0 -0
  345. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_bootstrap.py +0 -0
  346. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_budget.py +0 -0
  347. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_chunker.py +0 -0
  348. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_classify.py +0 -0
  349. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_clean_cli.py +0 -0
  350. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_cli.py +0 -0
  351. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_cli_golden.py +0 -0
  352. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_config.py +0 -0
  353. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_diff_impact.py +0 -0
  354. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_discovery.py +0 -0
  355. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_diversity.py +0 -0
  356. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_doc_chunks.py +0 -0
  357. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_doctor.py +0 -0
  358. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_embeddings_backend.py +0 -0
  359. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_embeddings_external.py +0 -0
  360. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_embeddings_local.py +0 -0
  361. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_eval_baselines.py +0 -0
  362. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_freshness.py +0 -0
  363. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_fusion.py +0 -0
  364. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_fuzzy.py +0 -0
  365. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_gen_queries.py +0 -0
  366. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph.py +0 -0
  367. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph_coverage.py +0 -0
  368. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph_export_cli.py +0 -0
  369. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_graph_retrieval.py +0 -0
  370. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_hooks_merge.py +0 -0
  371. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_hybrid_ranking.py +0 -0
  372. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_ignore.py +0 -0
  373. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_impact_cli.py +0 -0
  374. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_impact_decay.py +0 -0
  375. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_index_cli.py +0 -0
  376. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_init_cli.py +0 -0
  377. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_intent.py +0 -0
  378. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_languages.py +0 -0
  379. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_lexical.py +0 -0
  380. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_mcp_golden.py +0 -0
  381. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_mcp_server.py +0 -0
  382. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_eval_smoke.py +0 -0
  383. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_identity.py +0 -0
  384. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_lifecycle.py +0 -0
  385. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_session.py +0 -0
  386. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_stale_context.py +0 -0
  387. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_store.py +0 -0
  388. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_surfaces.py +0 -0
  389. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_memory_validate.py +0 -0
  390. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_multilang_symbols.py +0 -0
  391. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_navigate.py +0 -0
  392. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_output.py +0 -0
  393. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_packaging.py +0 -0
  394. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_parse_guardrails.py +0 -0
  395. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_perf_smoke.py +0 -0
  396. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_pipeline.py +0 -0
  397. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_pipeline_search.py +0 -0
  398. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_pipeline_vectors.py +0 -0
  399. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_plugin_manifest.py +0 -0
  400. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_plugin_skill_parity.py +0 -0
  401. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_plugin_wrappers.py +0 -0
  402. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_public_benchmark.py +0 -0
  403. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_quality_benchmark.py +0 -0
  404. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_ranking_features.py +0 -0
  405. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_read_cap.py +0 -0
  406. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_redact.py +0 -0
  407. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_release_scripts.py +0 -0
  408. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_repo_search.py +0 -0
  409. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_rerank.py +0 -0
  410. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_retrieval_types.py +0 -0
  411. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_scaffold.py +0 -0
  412. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_search_cli.py +0 -0
  413. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_searchers.py +0 -0
  414. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_seeded_index.py +0 -0
  415. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_service.py +0 -0
  416. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_skeleton.py +0 -0
  417. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_skill_update.py +0 -0
  418. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_storage.py +0 -0
  419. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_symbol_cli.py +0 -0
  420. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_symbol_ranking.py +0 -0
  421. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_symbol_refs.py +0 -0
  422. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_sync_skill_copies.py +0 -0
  423. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_treesitter.py +0 -0
  424. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_tuning_contract.py +0 -0
  425. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_update.py +0 -0
  426. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_update_cli.py +0 -0
  427. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_vector_search.py +0 -0
  428. {codebase_index-2.0.0 → codebase_index-2.1.1}/tests/test_vectors_storage.py +0 -0
  429. {codebase_index-2.0.0 → codebase_index-2.1.1}/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.1",
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,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.0.0...HEAD
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.0.0
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
- 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 |
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. See
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
- **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.
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
- 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 |
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. See
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
- **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.
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*. 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.1
114
114
  ```
115
115
 
116
116
  ---
@@ -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"