codebase-index 1.9.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 (449) 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-1.9.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/references/commands.md +33 -0
  4. codebase_index-2.1.0/.claude/skills/codebase-index/references/memory.md +49 -0
  5. {codebase_index-1.9.0/.opencode → codebase_index-2.1.0/.claude}/skills/codebase-index/references/response-contract.md +12 -1
  6. {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/scripts/cbx +1 -1
  7. {codebase_index-1.9.0/.opencode → codebase_index-2.1.0/.claude}/skills/codebase-index/scripts/cbx.ps1 +1 -1
  8. {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude-plugin/plugin.json +1 -1
  9. codebase_index-2.1.0/.codex/skills/codebase-index/.skill_version +1 -0
  10. codebase_index-2.1.0/.codex/skills/codebase-index/SKILL.md +65 -0
  11. {codebase_index-1.9.0/skill → codebase_index-2.1.0/.codex/skills/codebase-index}/references/commands.md +33 -0
  12. codebase_index-2.1.0/.codex/skills/codebase-index/references/memory.md +49 -0
  13. {codebase_index-1.9.0/.claude → codebase_index-2.1.0/.codex}/skills/codebase-index/references/response-contract.md +12 -1
  14. {codebase_index-1.9.0/.opencode → codebase_index-2.1.0/.codex}/skills/codebase-index/scripts/cbx +1 -1
  15. {codebase_index-1.9.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/scripts/cbx.ps1 +1 -1
  16. codebase_index-2.1.0/.gitattributes +16 -0
  17. codebase_index-2.1.0/.github/ISSUE_TEMPLATE/benchmark_report.yml +62 -0
  18. codebase_index-2.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +74 -0
  19. codebase_index-2.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  20. codebase_index-2.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +50 -0
  21. codebase_index-2.1.0/.github/ISSUE_TEMPLATE/language_support.yml +48 -0
  22. codebase_index-2.1.0/.github/PULL_REQUEST_TEMPLATE.md +21 -0
  23. codebase_index-2.1.0/.github/SUPPORT.md +25 -0
  24. codebase_index-2.1.0/.github/labels.yml +63 -0
  25. {codebase_index-1.9.0 → codebase_index-2.1.0}/.github/workflows/ci.yml +21 -0
  26. {codebase_index-1.9.0 → codebase_index-2.1.0}/.github/workflows/release.yml +14 -0
  27. {codebase_index-1.9.0 → codebase_index-2.1.0}/.gitignore +2 -0
  28. codebase_index-2.1.0/.opencode/skills/codebase-index/.skill_version +1 -0
  29. codebase_index-2.1.0/.opencode/skills/codebase-index/SKILL.md +65 -0
  30. {codebase_index-1.9.0/.codex → codebase_index-2.1.0/.opencode}/skills/codebase-index/references/commands.md +33 -0
  31. codebase_index-2.1.0/.opencode/skills/codebase-index/references/memory.md +49 -0
  32. {codebase_index-1.9.0/skill → codebase_index-2.1.0/.opencode/skills/codebase-index}/references/response-contract.md +12 -1
  33. {codebase_index-1.9.0/.codex → codebase_index-2.1.0/.opencode}/skills/codebase-index/scripts/cbx +1 -1
  34. {codebase_index-1.9.0/.claude → codebase_index-2.1.0/.opencode}/skills/codebase-index/scripts/cbx.ps1 +1 -1
  35. {codebase_index-1.9.0 → codebase_index-2.1.0}/AGENTS.md +9 -4
  36. {codebase_index-1.9.0 → codebase_index-2.1.0}/CHANGELOG.md +369 -1
  37. codebase_index-2.1.0/CONTRIBUTING.md +120 -0
  38. codebase_index-2.1.0/PKG-INFO +322 -0
  39. codebase_index-2.1.0/README.md +272 -0
  40. codebase_index-2.1.0/ROADMAP.md +34 -0
  41. codebase_index-2.1.0/SECURITY.md +73 -0
  42. codebase_index-2.1.0/assets/architecture.svg +96 -0
  43. codebase_index-2.1.0/assets/benchmark.svg +98 -0
  44. codebase_index-2.1.0/assets/demo-terminal.svg +49 -0
  45. {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/cbx +1 -1
  46. {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/cbx.ps1 +1 -1
  47. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/ARCHITECTURE.md +19 -13
  48. codebase_index-2.1.0/docs/BENCHMARKS.md +263 -0
  49. codebase_index-2.1.0/docs/COMMUNITY_AUDIT.md +262 -0
  50. codebase_index-2.1.0/docs/COMMUNITY_LAUNCH.md +281 -0
  51. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/COMPARISON.md +19 -19
  52. codebase_index-2.1.0/docs/DATABASE_SCHEMA.md +6 -0
  53. codebase_index-2.1.0/docs/DEMO.md +103 -0
  54. codebase_index-2.1.0/docs/DEVELOPMENT.md +236 -0
  55. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/FAQ.md +39 -29
  56. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/INSTALLATION.md +22 -19
  57. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/MCP.md +18 -5
  58. codebase_index-2.1.0/docs/MEMORY.md +107 -0
  59. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/QUICKSTART.md +41 -30
  60. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/RELEASE_CHECKLIST.md +27 -18
  61. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/RETRIEVAL.md +128 -17
  62. codebase_index-2.1.0/docs/RETRIEVAL_PIPELINE.md +5 -0
  63. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/ROADMAP.md +14 -2
  64. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/SCHEMA.md +17 -4
  65. codebase_index-2.1.0/docs/SECURITY.md +7 -0
  66. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/SECURITY_MODEL.md +34 -19
  67. codebase_index-2.1.0/docs/demo.tape +29 -0
  68. codebase_index-2.1.0/docs/installer.md +238 -0
  69. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m9-release.md +1 -1
  70. codebase_index-2.1.0/docs/superpowers/specs/2026-09-10-evidence-memory-design.md +365 -0
  71. {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/config.example.json +4 -1
  72. codebase_index-2.1.0/examples/demo/EXPECTED_OUTPUT.md +187 -0
  73. codebase_index-2.1.0/examples/demo/README.md +53 -0
  74. codebase_index-2.1.0/examples/demo/run_demo.ps1 +42 -0
  75. codebase_index-2.1.0/examples/demo/run_demo.sh +53 -0
  76. {codebase_index-1.9.0 → codebase_index-2.1.0}/pyproject.toml +3 -2
  77. {codebase_index-1.9.0 → codebase_index-2.1.0}/requirements.lock +1 -1
  78. codebase_index-2.1.0/research/2.0-audit.md +175 -0
  79. codebase_index-2.1.0/research/README.md +125 -0
  80. codebase_index-2.1.0/research/architecture.md +185 -0
  81. codebase_index-2.1.0/research/build_indexes.py +68 -0
  82. codebase_index-2.1.0/research/data/.gitignore +8 -0
  83. codebase_index-2.1.0/research/diagnose_accretion.py +141 -0
  84. codebase_index-2.1.0/research/diagnose_calibration.py +59 -0
  85. codebase_index-2.1.0/research/diagnose_slots.py +118 -0
  86. codebase_index-2.1.0/research/diagnose_structure.py +293 -0
  87. codebase_index-2.1.0/research/experiment_memory.py +162 -0
  88. codebase_index-2.1.0/research/experiments.md +313 -0
  89. codebase_index-2.1.0/research/fit_gate.py +68 -0
  90. codebase_index-2.1.0/research/fit_weights.py +185 -0
  91. codebase_index-2.1.0/research/hypotheses.md +284 -0
  92. codebase_index-2.1.0/research/novelty.md +98 -0
  93. codebase_index-2.1.0/research/nucleus/__init__.py +6 -0
  94. codebase_index-2.1.0/research/nucleus/baselines.py +313 -0
  95. codebase_index-2.1.0/research/nucleus/evalrun.py +382 -0
  96. codebase_index-2.1.0/research/nucleus/memory.py +161 -0
  97. codebase_index-2.1.0/research/nucleus/relations.py +355 -0
  98. codebase_index-2.1.0/research/nucleus/search.py +508 -0
  99. codebase_index-2.1.0/research/related-work.md +250 -0
  100. codebase_index-2.1.0/research/selection.md +95 -0
  101. codebase_index-2.1.0/research/test_nucleus.py +129 -0
  102. codebase_index-2.1.0/scripts/apply_labels.sh +19 -0
  103. codebase_index-2.1.0/scripts/check_links.py +92 -0
  104. codebase_index-2.1.0/scripts/check_versions.py +101 -0
  105. {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/gen_assets.py +0 -111
  106. codebase_index-2.1.0/scripts/gen_benchmark_chart.py +119 -0
  107. codebase_index-2.1.0/scripts/gen_terminal_svg.py +149 -0
  108. codebase_index-2.1.0/scripts/release_notes.py +113 -0
  109. codebase_index-2.1.0/skill/SKILL.md +65 -0
  110. {codebase_index-1.9.0/.opencode/skills/codebase-index → codebase_index-2.1.0/skill}/references/commands.md +33 -0
  111. codebase_index-2.1.0/skill/references/memory.md +49 -0
  112. {codebase_index-1.9.0/.codex/skills/codebase-index → codebase_index-2.1.0/skill}/references/response-contract.md +12 -1
  113. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/cbx +1 -1
  114. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/cbx.ps1 +1 -1
  115. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/doctor.py +2 -2
  116. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/smoke_test.py +0 -1
  117. codebase_index-2.1.0/skills/codebase-index/SKILL.md +65 -0
  118. codebase_index-2.1.0/skills/codebase-index/references/commands.md +106 -0
  119. codebase_index-2.1.0/skills/codebase-index/references/memory.md +49 -0
  120. codebase_index-2.1.0/skills/codebase-index/references/response-contract.md +93 -0
  121. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/__init__.py +1 -1
  122. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/cli.py +218 -14
  123. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/config.py +15 -0
  124. codebase_index-2.1.0/src/codebase_index/discovery/gates.py +117 -0
  125. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/walker.py +26 -20
  126. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/doctor.py +38 -0
  127. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/builder.py +92 -13
  128. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/expand.py +21 -5
  129. codebase_index-2.1.0/src/codebase_index/graph/modules.py +112 -0
  130. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/navigate.py +64 -4
  131. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/pipeline.py +29 -2
  132. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/mcp/server.py +85 -22
  133. codebase_index-2.1.0/src/codebase_index/memory/__init__.py +5 -0
  134. codebase_index-2.1.0/src/codebase_index/memory/identity.py +181 -0
  135. codebase_index-2.1.0/src/codebase_index/memory/session.py +230 -0
  136. codebase_index-2.1.0/src/codebase_index/memory/store.py +435 -0
  137. codebase_index-2.1.0/src/codebase_index/memory/validate.py +150 -0
  138. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/models.py +31 -0
  139. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/markdown.py +170 -6
  140. codebase_index-2.1.0/src/codebase_index/parsers/base.py +74 -0
  141. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/treesitter.py +105 -1
  142. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/diversity.py +45 -9
  143. codebase_index-2.1.0/src/codebase_index/retrieval/features.py +119 -0
  144. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/intent.py +18 -0
  145. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/pipeline.py +160 -4
  146. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/priors.py +35 -2
  147. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/rerank.py +37 -3
  148. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/searchers.py +154 -22
  149. codebase_index-2.1.0/src/codebase_index/retrieval/tuning.py +274 -0
  150. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/scaffold.py +12 -4
  151. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/service.py +206 -18
  152. codebase_index-2.1.0/src/codebase_index/skill_template/SKILL.md +65 -0
  153. codebase_index-2.1.0/src/codebase_index/skill_template/references/commands.md +106 -0
  154. codebase_index-2.1.0/src/codebase_index/skill_template/references/memory.md +49 -0
  155. codebase_index-2.1.0/src/codebase_index/skill_template/references/response-contract.md +93 -0
  156. codebase_index-2.1.0/src/codebase_index/skill_template/scripts/cbx +25 -0
  157. codebase_index-2.1.0/src/codebase_index/skill_template/scripts/cbx.ps1 +28 -0
  158. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/db.py +2 -1
  159. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/repo.py +97 -17
  160. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/schema.sql +4 -1
  161. codebase_index-2.1.0/tests/__init__.py +0 -0
  162. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_honest_RESULTS.md +6 -0
  163. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_public_RESULTS.md +4 -3
  164. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/README.md +69 -2
  165. codebase_index-2.1.0/tests/eval/baselines.py +443 -0
  166. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/gen_queries.py +8 -4
  167. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/harness.py +71 -5
  168. codebase_index-2.1.0/tests/eval/memory_eval.py +660 -0
  169. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/metrics.py +32 -0
  170. codebase_index-2.1.0/tests/eval/results/1.10.0-perf.json +14 -0
  171. codebase_index-2.1.0/tests/eval/results/1.10.0-retrieval-8corpus.txt +58 -0
  172. codebase_index-2.1.0/tests/eval/results/2026-09-04-public-baselines.json +14501 -0
  173. codebase_index-2.1.0/tests/eval/results/2026-09-04-public-baselines.md +104 -0
  174. codebase_index-2.1.0/tests/eval/results/2026-09-14-evidence-memory.json +960 -0
  175. codebase_index-2.1.0/tests/eval/results/2026-09-14-evidence-memory.md +19 -0
  176. codebase_index-2.1.0/tests/eval/results/2026-09-24-agent-pilot.md +72 -0
  177. codebase_index-2.1.0/tests/eval/results/2026-09-24-retrieval-2.1.0.txt +47 -0
  178. codebase_index-2.1.0/tests/eval/results/2026-09-24-terra-nl-queries.yml +75 -0
  179. codebase_index-2.1.0/tests/eval/run_baselines.py +348 -0
  180. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/run_eval.py +24 -7
  181. codebase_index-2.1.0/tests/fixtures/index-1.10.0/index.sqlite +0 -0
  182. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/describe_refresh.json +6 -2
  183. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/impact_user_model.json +1 -0
  184. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_describe_symbol.json +6 -2
  185. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_find_refs.json +12 -3
  186. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_find_symbol.json +1 -0
  187. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_healthcheck.json +4 -0
  188. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_impact_of.json +1 -0
  189. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_index_stats.json +4 -0
  190. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_search_code.json +2 -2
  191. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/refs_refresh_access_token.json +12 -3
  192. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/search_token.json +2 -2
  193. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/stats.json +4 -0
  194. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/symbol_user.json +1 -0
  195. codebase_index-2.1.0/tests/test_agent_ergonomics.py +227 -0
  196. codebase_index-2.1.0/tests/test_compact_output.py +114 -0
  197. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_discovery.py +24 -0
  198. codebase_index-2.1.0/tests/test_eval_baselines.py +68 -0
  199. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_gen_queries.py +15 -0
  200. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_mcp_golden.py +5 -7
  201. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_mcp_server.py +33 -7
  202. codebase_index-2.1.0/tests/test_memory_eval_smoke.py +119 -0
  203. codebase_index-2.1.0/tests/test_memory_identity.py +156 -0
  204. codebase_index-2.1.0/tests/test_memory_lifecycle.py +232 -0
  205. codebase_index-2.1.0/tests/test_memory_session.py +293 -0
  206. codebase_index-2.1.0/tests/test_memory_stale_context.py +124 -0
  207. codebase_index-2.1.0/tests/test_memory_store.py +208 -0
  208. codebase_index-2.1.0/tests/test_memory_surfaces.py +197 -0
  209. codebase_index-2.1.0/tests/test_memory_validate.py +210 -0
  210. codebase_index-2.1.0/tests/test_migration_1x.py +107 -0
  211. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_packaging.py +2 -2
  212. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_plugin_wrappers.py +24 -0
  213. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_priors.py +28 -0
  214. codebase_index-2.1.0/tests/test_qualified_refs.py +320 -0
  215. codebase_index-2.1.0/tests/test_ranking_features.py +263 -0
  216. codebase_index-2.1.0/tests/test_read_cap.py +61 -0
  217. codebase_index-2.1.0/tests/test_release_scripts.py +172 -0
  218. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_tuning_contract.py +25 -1
  219. codebase_index-1.9.0/.claude/skills/codebase-index/.skill_version +0 -1
  220. codebase_index-1.9.0/.claude/skills/codebase-index/SKILL.md +0 -89
  221. codebase_index-1.9.0/.codex/skills/codebase-index/.skill_version +0 -1
  222. codebase_index-1.9.0/.codex/skills/codebase-index/SKILL.md +0 -89
  223. codebase_index-1.9.0/.gitattributes +0 -7
  224. codebase_index-1.9.0/.github/FUNDING.yml +0 -8
  225. codebase_index-1.9.0/.github/ISSUE_TEMPLATE/bug_report.yml +0 -74
  226. codebase_index-1.9.0/.github/ISSUE_TEMPLATE/feature_request.yml +0 -56
  227. codebase_index-1.9.0/.github/PULL_REQUEST_TEMPLATE.md +0 -38
  228. codebase_index-1.9.0/.opencode/skills/codebase-index/.skill_version +0 -1
  229. codebase_index-1.9.0/.opencode/skills/codebase-index/SKILL.md +0 -89
  230. codebase_index-1.9.0/CONTRIBUTING.md +0 -162
  231. codebase_index-1.9.0/PKG-INFO +0 -381
  232. codebase_index-1.9.0/README.md +0 -331
  233. codebase_index-1.9.0/ROADMAP.md +0 -112
  234. codebase_index-1.9.0/SECURITY.md +0 -51
  235. codebase_index-1.9.0/assets/demo.png +0 -0
  236. codebase_index-1.9.0/docs/BENCHMARKS.md +0 -134
  237. codebase_index-1.9.0/docs/DATABASE_SCHEMA.md +0 -185
  238. codebase_index-1.9.0/docs/RETRIEVAL_PIPELINE.md +0 -179
  239. codebase_index-1.9.0/docs/SECURITY.md +0 -119
  240. codebase_index-1.9.0/docs/SEO.md +0 -196
  241. codebase_index-1.9.0/docs/installer.md +0 -239
  242. codebase_index-1.9.0/examples/demo-project/README.md +0 -55
  243. codebase_index-1.9.0/skill/SKILL.md +0 -89
  244. codebase_index-1.9.0/skills/codebase-index/SKILL.md +0 -89
  245. codebase_index-1.9.0/skills/codebase-index/references/commands.md +0 -73
  246. codebase_index-1.9.0/skills/codebase-index/references/response-contract.md +0 -82
  247. codebase_index-1.9.0/src/codebase_index/parsers/base.py +0 -47
  248. codebase_index-1.9.0/src/codebase_index/retrieval/tuning.py +0 -146
  249. codebase_index-1.9.0/src/codebase_index/skill_template/SKILL.md +0 -89
  250. codebase_index-1.9.0/src/codebase_index/skill_template/references/commands.md +0 -73
  251. codebase_index-1.9.0/src/codebase_index/skill_template/references/response-contract.md +0 -82
  252. codebase_index-1.9.0/src/codebase_index/skill_template/scripts/cbx +0 -25
  253. codebase_index-1.9.0/src/codebase_index/skill_template/scripts/cbx.ps1 +0 -28
  254. {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude/skills/codebase-index/examples/hooks/settings.json +0 -0
  255. {codebase_index-1.9.0 → codebase_index-2.1.0}/.claude-plugin/marketplace.json +0 -0
  256. {codebase_index-1.9.0 → codebase_index-2.1.0}/.codex/skills/codebase-index/examples/hooks/settings.json +0 -0
  257. {codebase_index-1.9.0 → codebase_index-2.1.0}/.editorconfig +0 -0
  258. {codebase_index-1.9.0 → codebase_index-2.1.0}/.github/ISSUE_TEMPLATE/skill_listing_request.yml +0 -0
  259. {codebase_index-1.9.0 → codebase_index-2.1.0}/.opencode/agents/codebase-index.md +0 -0
  260. {codebase_index-1.9.0 → codebase_index-2.1.0}/.opencode/commands/codebase-index.md +0 -0
  261. {codebase_index-1.9.0 → codebase_index-2.1.0}/.opencode/skills/codebase-index/examples/hooks/settings.json +0 -0
  262. {codebase_index-1.9.0 → codebase_index-2.1.0}/CODE_OF_CONDUCT.md +0 -0
  263. {codebase_index-1.9.0 → codebase_index-2.1.0}/LICENSE +0 -0
  264. {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/claude.ps1 +0 -0
  265. {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/claude.sh +0 -0
  266. {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/codex.ps1 +0 -0
  267. {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/codex.sh +0 -0
  268. {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/opencode.ps1 +0 -0
  269. {codebase_index-1.9.0 → codebase_index-2.1.0}/adapters/opencode.sh +0 -0
  270. {codebase_index-1.9.0 → codebase_index-2.1.0}/assets/mark.png +0 -0
  271. {codebase_index-1.9.0 → codebase_index-2.1.0}/assets/social-preview.png +0 -0
  272. {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/codebase-index +0 -0
  273. {codebase_index-1.9.0 → codebase_index-2.1.0}/bin/codebase-index.ps1 +0 -0
  274. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/LANGUAGES.md +0 -0
  275. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/PRODUCT_UPGRADE_PLAN.md +0 -0
  276. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/SKILL_DESIGN.md +0 -0
  277. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-benchmark-index-improvements.md +0 -0
  278. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-generalize-skill-research-discipline.md +0 -0
  279. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m1-storage-discovery.md +0 -0
  280. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m2-fts-lexical.md +0 -0
  281. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m3-treesitter-symbols.md +0 -0
  282. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m4-hybrid-search.md +0 -0
  283. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m5-graph-impact.md +0 -0
  284. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m6-embeddings-vector.md +0 -0
  285. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m7-5-plugin-one-command-install.md +0 -0
  286. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m7-skill-packaging.md +0 -0
  287. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-m8-hooks-watch.md +0 -0
  288. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-05-29-multilang-symbols-make-skill-win.md +0 -0
  289. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/plans/2026-06-24-snippet-skeletonization.md +0 -0
  290. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-05-29-plugin-one-command-install-design.md +0 -0
  291. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md +0 -0
  292. {codebase_index-1.9.0 → codebase_index-2.1.0}/docs/superpowers/specs/2026-06-24-snippet-skeletonization-design.md +0 -0
  293. {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/hooks/settings.json +0 -0
  294. {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/queries.md +0 -0
  295. {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/sample-queries.md +0 -0
  296. {codebase_index-1.9.0 → codebase_index-2.1.0}/examples/sample-retrieval-output.md +0 -0
  297. {codebase_index-1.9.0 → codebase_index-2.1.0}/hooks/hooks.json +0 -0
  298. {codebase_index-1.9.0 → codebase_index-2.1.0}/install.ps1 +0 -0
  299. {codebase_index-1.9.0 → codebase_index-2.1.0}/install.sh +0 -0
  300. {codebase_index-1.9.0 → codebase_index-2.1.0}/lib/common.ps1 +0 -0
  301. {codebase_index-1.9.0 → codebase_index-2.1.0}/lib/common.sh +0 -0
  302. {codebase_index-1.9.0/tests → codebase_index-2.1.0/research}/__init__.py +0 -0
  303. {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/bootstrap.ps1 +0 -0
  304. {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/bootstrap.sh +0 -0
  305. {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/release_smoke.py +0 -0
  306. {codebase_index-1.9.0 → codebase_index-2.1.0}/scripts/sync_skill_copies.py +0 -0
  307. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/examples/basic-usage.md +0 -0
  308. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/examples/claude-md-example.md +0 -0
  309. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/examples/hooks-example.json +0 -0
  310. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/bootstrap.py +0 -0
  311. {codebase_index-1.9.0 → codebase_index-2.1.0}/skill/scripts/install.py +0 -0
  312. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/__main__.py +0 -0
  313. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/__init__.py +0 -0
  314. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/classify.py +0 -0
  315. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/discovery/ignore.py +0 -0
  316. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/__init__.py +0 -0
  317. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/backend.py +0 -0
  318. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/external.py +0 -0
  319. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/local.py +0 -0
  320. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/embeddings/noop.py +0 -0
  321. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/__init__.py +0 -0
  322. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/analysis.py +0 -0
  323. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/export.py +0 -0
  324. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/graph/retrieval.py +0 -0
  325. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/__init__.py +0 -0
  326. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/doc_chunks.py +0 -0
  327. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/indexer/freshness.py +0 -0
  328. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/mcp/__init__.py +0 -0
  329. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/__init__.py +0 -0
  330. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/json.py +0 -0
  331. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/output/redact.py +0 -0
  332. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/__init__.py +0 -0
  333. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/languages.py +0 -0
  334. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/line_chunker.py +0 -0
  335. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/parsers/symbol_chunks.py +0 -0
  336. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/__init__.py +0 -0
  337. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/budget.py +0 -0
  338. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/fusion.py +0 -0
  339. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/fuzzy.py +0 -0
  340. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/lexical.py +0 -0
  341. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/skeleton.py +0 -0
  342. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/retrieval/types.py +0 -0
  343. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/skill_template/examples/hooks/settings.json +0 -0
  344. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/skill_update.py +0 -0
  345. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/storage/__init__.py +0 -0
  346. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/watch/__init__.py +0 -0
  347. {codebase_index-1.9.0 → codebase_index-2.1.0}/src/codebase_index/watch/watcher.py +0 -0
  348. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_honest.py +0 -0
  349. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_honest_newtowny.txt +0 -0
  350. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_public.py +0 -0
  351. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/benchmark_real_repo.py +0 -0
  352. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/conftest.py +0 -0
  353. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/__init__.py +0 -0
  354. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/queries/self_repo.yml +0 -0
  355. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/eval/queries/self_repo_git.yml +0 -0
  356. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/README.md +0 -0
  357. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/expected_answers.yml +0 -0
  358. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.go +0 -0
  359. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.java +0 -0
  360. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/multilang/sample.rs +0 -0
  361. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/.env +0 -0
  362. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/.gitignore +0 -0
  363. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/huge.json +0 -0
  364. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/logo.png +0 -0
  365. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/node_modules/leftpad/index.js +0 -0
  366. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/secrets.pem +0 -0
  367. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/api/service.py +0 -0
  368. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/auth/token.py +0 -0
  369. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/models/user.py +0 -0
  370. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/src/schema.generated.ts +0 -0
  371. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/fixtures/sample_repo/web/app.ts +0 -0
  372. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/architecture.json +0 -0
  373. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/explain_auth.json +0 -0
  374. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_architecture.json +0 -0
  375. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_explain_code.json +0 -0
  376. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_impact_of_diff.json +0 -0
  377. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/mcp_path_between.json +0 -0
  378. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden/path_renew_to_token.json +0 -0
  379. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/golden_utils.py +0 -0
  380. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/installer/smoke.ps1 +0 -0
  381. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/installer/smoke.sh +0 -0
  382. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_analysis.py +0 -0
  383. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_benchmark_comparison.py +0 -0
  384. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_bootstrap.py +0 -0
  385. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_budget.py +0 -0
  386. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_chunker.py +0 -0
  387. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_classify.py +0 -0
  388. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_clean_cli.py +0 -0
  389. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_cli.py +0 -0
  390. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_cli_golden.py +0 -0
  391. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_config.py +0 -0
  392. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_diff_impact.py +0 -0
  393. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_diversity.py +0 -0
  394. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_doc_chunks.py +0 -0
  395. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_doctor.py +0 -0
  396. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_embeddings_backend.py +0 -0
  397. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_embeddings_external.py +0 -0
  398. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_embeddings_local.py +0 -0
  399. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_freshness.py +0 -0
  400. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_fusion.py +0 -0
  401. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_fuzzy.py +0 -0
  402. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph.py +0 -0
  403. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph_coverage.py +0 -0
  404. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph_export_cli.py +0 -0
  405. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_graph_retrieval.py +0 -0
  406. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_hooks_merge.py +0 -0
  407. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_hybrid_ranking.py +0 -0
  408. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_ignore.py +0 -0
  409. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_impact_cli.py +0 -0
  410. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_impact_decay.py +0 -0
  411. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_index_cli.py +0 -0
  412. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_init_cli.py +0 -0
  413. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_intent.py +0 -0
  414. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_languages.py +0 -0
  415. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_lexical.py +0 -0
  416. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_multilang_symbols.py +0 -0
  417. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_navigate.py +0 -0
  418. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_output.py +0 -0
  419. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_parse_guardrails.py +0 -0
  420. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_perf_smoke.py +0 -0
  421. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_pipeline.py +0 -0
  422. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_pipeline_search.py +0 -0
  423. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_pipeline_vectors.py +0 -0
  424. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_plugin_manifest.py +0 -0
  425. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_plugin_skill_parity.py +0 -0
  426. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_public_benchmark.py +0 -0
  427. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_quality_benchmark.py +0 -0
  428. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_redact.py +0 -0
  429. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_repo_search.py +0 -0
  430. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_rerank.py +0 -0
  431. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_retrieval_types.py +0 -0
  432. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_scaffold.py +0 -0
  433. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_search_cli.py +0 -0
  434. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_searchers.py +0 -0
  435. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_seeded_index.py +0 -0
  436. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_service.py +0 -0
  437. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_skeleton.py +0 -0
  438. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_skill_update.py +0 -0
  439. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_storage.py +0 -0
  440. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_symbol_cli.py +0 -0
  441. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_symbol_ranking.py +0 -0
  442. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_symbol_refs.py +0 -0
  443. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_sync_skill_copies.py +0 -0
  444. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_treesitter.py +0 -0
  445. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_update.py +0 -0
  446. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_update_cli.py +0 -0
  447. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_vector_search.py +0 -0
  448. {codebase_index-1.9.0 → codebase_index-2.1.0}/tests/test_vectors_storage.py +0 -0
  449. {codebase_index-1.9.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).
@@ -17,6 +17,9 @@ Useful search options:
17
17
  - `--offset <pagination offset>`
18
18
  - `--raw` to disable snippet skeletonization
19
19
  - `--no-fallback` to suppress fallback suggestions
20
+ - `--session <tag>` to name this conversation's context: unchanged evidence it
21
+ already received comes back as `reused: true` without the snippet, and
22
+ evidence that changed is listed under `memory.invalidated`
20
23
 
21
24
  `explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer
22
25
  it over repeatedly rewording a broad search.
@@ -34,6 +37,24 @@ codebase-index describe "<file-or-symbol>" --json
34
37
 
35
38
  - `architecture` reads module analysis cached at index time.
36
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).
37
58
  - `impact` walks dependents (`up`), dependencies (`down`), or both.
38
59
  - `diff-impact` aggregates impact for tracked changes relative to a verified
39
60
  Git commit; new or excluded files are reported as unresolved.
@@ -49,6 +70,18 @@ codebase-index graph "<target>" --direction both --depth 2 --output graph.html
49
70
  For headless work, use `--output`; do not use `--open`. Exports also support
50
71
  `--format graphml|dot|neo4j`.
51
72
 
73
+ ## Evidence
74
+
75
+ ```bash
76
+ codebase-index verify --session <tag> --json
77
+ codebase-index verify "<path:start-end@hash>" ... --json
78
+ ```
79
+
80
+ - `verify` is read-only and needs no index: it checks evidence against the
81
+ working tree. `all_valid` is true only when every checked span still holds.
82
+ - `--strict` exits 1 when anything is invalid (useful in scripts).
83
+ - See [memory.md](memory.md) for verdict states and when to reread.
84
+
52
85
  ## Index health
53
86
 
54
87
  ```bash
@@ -0,0 +1,49 @@
1
+ # Evidence Memory
2
+
3
+ Load this when you use `--session`, when a packet contains `reused`, `stale` or
4
+ `memory`, or when you want to cite evidence for later.
5
+
6
+ ## What is guaranteed
7
+
8
+ Evidence is identified by the exact bytes of a file span. `reused: true` is set
9
+ only when this session already received the same text — or the whole span —
10
+ and those bytes are unchanged now. Nothing is decided by query similarity, and
11
+ memory stores no source text.
12
+
13
+ ## Verdict states
14
+
15
+ | state | still true? | do this |
16
+ |---|---|---|
17
+ | `valid` | yes | use it |
18
+ | `relocated` | yes — identical content moved inside the file | use it; cite the new lines |
19
+ | `changed` | no | reread the range before relying on it |
20
+ | `ambiguous` | no — identical content now occurs more than once | reread |
21
+ | `deleted` | no — file gone; a rename or move counts as deleted | search again |
22
+ | `excluded` | no — now ignored or secret-like | do not read it |
23
+ | `unreadable` | no | search again |
24
+
25
+ ## Reread even when evidence is valid
26
+
27
+ - You are about to edit and need the exact current text.
28
+ - The earlier snippet was a skeleton or a signature and you need the body.
29
+ - Your context was cleared or compacted, or you cannot see the earlier snippet.
30
+ - A tool output was truncated.
31
+
32
+ ## Citing evidence across conversations
33
+
34
+ `codebase-index verify --session <tag> --json` lists everything the session
35
+ received as `path:start-end@hash` references. Keep the references next to the
36
+ conclusions they support in notes or handoffs:
37
+
38
+ ```text
39
+ Refunds are capped at the invoice total [billing/refund.py:3-4@3f9a2c1b7d4e8a90]
40
+ ```
41
+
42
+ Later, from any agent, check them before trusting the note:
43
+
44
+ ```bash
45
+ codebase-index verify "billing/refund.py:3-4@3f9a2c1b7d4e8a90" --json
46
+ ```
47
+
48
+ `all_valid: true` means every cited span still holds exactly. Otherwise reread
49
+ the invalid spans and re-derive the conclusion; do not patch the old one.
@@ -16,9 +16,20 @@ Each result can contain:
16
16
  - `snippet`
17
17
  - `skeletonized`
18
18
  - `elided_lines`
19
+ - `stale` — only when the index text no longer matches the file
20
+ - `reused` — only with `--session`, when `snippet` was withheld because this
21
+ session already received that exact text from unchanged source
19
22
 
20
23
  `recommended_reads` is the read plan. Start with its first one to three entries
21
- and use exact line ranges.
24
+ and use exact line ranges. An entry with `truncated: true` was capped at the
25
+ definition head (`max_read_lines`, default 120); `line_end_full` gives the real
26
+ extent. Read the capped range first and continue only when the head is not
27
+ enough.
28
+
29
+ With `--session`, the packet also carries `memory`: `session`, `reused`,
30
+ `tokens_saved`, and `invalidated` — references to evidence the session received
31
+ that has since changed. `available: false` means nothing was withheld. See
32
+ [memory.md](memory.md).
22
33
 
23
34
  `pagination.has_more` and `pagination.next_offset` indicate additional results.
24
35
  Prefer a more specific command or a larger token budget before paging.
@@ -4,7 +4,7 @@
4
4
  # - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch).
5
5
  set -euo pipefail
6
6
 
7
- ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index"
7
+ ALLOWED="search explain architecture symbol refs impact diff-impact path describe verify graph stats doctor update index"
8
8
 
9
9
  sub="${1:-}"
10
10
  case " $ALLOWED " in
@@ -10,7 +10,7 @@ param(
10
10
  $ErrorActionPreference = "Stop"
11
11
  $allowed = @(
12
12
  "search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact",
13
- "path", "describe", "graph", "stats", "doctor", "update", "index"
13
+ "path", "describe", "verify", "graph", "stats", "doctor", "update", "index"
14
14
  )
15
15
 
16
16
  if ($allowed -notcontains $Subcommand) {
@@ -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": "1.9.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).
@@ -17,6 +17,9 @@ Useful search options:
17
17
  - `--offset <pagination offset>`
18
18
  - `--raw` to disable snippet skeletonization
19
19
  - `--no-fallback` to suppress fallback suggestions
20
+ - `--session <tag>` to name this conversation's context: unchanged evidence it
21
+ already received comes back as `reused: true` without the snippet, and
22
+ evidence that changed is listed under `memory.invalidated`
20
23
 
21
24
  `explain` uses the HOW_IT_WORKS intent and a larger default token budget. Prefer
22
25
  it over repeatedly rewording a broad search.
@@ -34,6 +37,24 @@ codebase-index describe "<file-or-symbol>" --json
34
37
 
35
38
  - `architecture` reads module analysis cached at index time.
36
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).
37
58
  - `impact` walks dependents (`up`), dependencies (`down`), or both.
38
59
  - `diff-impact` aggregates impact for tracked changes relative to a verified
39
60
  Git commit; new or excluded files are reported as unresolved.
@@ -49,6 +70,18 @@ codebase-index graph "<target>" --direction both --depth 2 --output graph.html
49
70
  For headless work, use `--output`; do not use `--open`. Exports also support
50
71
  `--format graphml|dot|neo4j`.
51
72
 
73
+ ## Evidence
74
+
75
+ ```bash
76
+ codebase-index verify --session <tag> --json
77
+ codebase-index verify "<path:start-end@hash>" ... --json
78
+ ```
79
+
80
+ - `verify` is read-only and needs no index: it checks evidence against the
81
+ working tree. `all_valid` is true only when every checked span still holds.
82
+ - `--strict` exits 1 when anything is invalid (useful in scripts).
83
+ - See [memory.md](memory.md) for verdict states and when to reread.
84
+
52
85
  ## Index health
53
86
 
54
87
  ```bash
@@ -0,0 +1,49 @@
1
+ # Evidence Memory
2
+
3
+ Load this when you use `--session`, when a packet contains `reused`, `stale` or
4
+ `memory`, or when you want to cite evidence for later.
5
+
6
+ ## What is guaranteed
7
+
8
+ Evidence is identified by the exact bytes of a file span. `reused: true` is set
9
+ only when this session already received the same text — or the whole span —
10
+ and those bytes are unchanged now. Nothing is decided by query similarity, and
11
+ memory stores no source text.
12
+
13
+ ## Verdict states
14
+
15
+ | state | still true? | do this |
16
+ |---|---|---|
17
+ | `valid` | yes | use it |
18
+ | `relocated` | yes — identical content moved inside the file | use it; cite the new lines |
19
+ | `changed` | no | reread the range before relying on it |
20
+ | `ambiguous` | no — identical content now occurs more than once | reread |
21
+ | `deleted` | no — file gone; a rename or move counts as deleted | search again |
22
+ | `excluded` | no — now ignored or secret-like | do not read it |
23
+ | `unreadable` | no | search again |
24
+
25
+ ## Reread even when evidence is valid
26
+
27
+ - You are about to edit and need the exact current text.
28
+ - The earlier snippet was a skeleton or a signature and you need the body.
29
+ - Your context was cleared or compacted, or you cannot see the earlier snippet.
30
+ - A tool output was truncated.
31
+
32
+ ## Citing evidence across conversations
33
+
34
+ `codebase-index verify --session <tag> --json` lists everything the session
35
+ received as `path:start-end@hash` references. Keep the references next to the
36
+ conclusions they support in notes or handoffs:
37
+
38
+ ```text
39
+ Refunds are capped at the invoice total [billing/refund.py:3-4@3f9a2c1b7d4e8a90]
40
+ ```
41
+
42
+ Later, from any agent, check them before trusting the note:
43
+
44
+ ```bash
45
+ codebase-index verify "billing/refund.py:3-4@3f9a2c1b7d4e8a90" --json
46
+ ```
47
+
48
+ `all_valid: true` means every cited span still holds exactly. Otherwise reread
49
+ the invalid spans and re-derive the conclusion; do not patch the old one.
@@ -16,9 +16,20 @@ Each result can contain:
16
16
  - `snippet`
17
17
  - `skeletonized`
18
18
  - `elided_lines`
19
+ - `stale` — only when the index text no longer matches the file
20
+ - `reused` — only with `--session`, when `snippet` was withheld because this
21
+ session already received that exact text from unchanged source
19
22
 
20
23
  `recommended_reads` is the read plan. Start with its first one to three entries
21
- and use exact line ranges.
24
+ and use exact line ranges. An entry with `truncated: true` was capped at the
25
+ definition head (`max_read_lines`, default 120); `line_end_full` gives the real
26
+ extent. Read the capped range first and continue only when the head is not
27
+ enough.
28
+
29
+ With `--session`, the packet also carries `memory`: `session`, `reused`,
30
+ `tokens_saved`, and `invalidated` — references to evidence the session received
31
+ that has since changed. `available: false` means nothing was withheld. See
32
+ [memory.md](memory.md).
22
33
 
23
34
  `pagination.has_more` and `pagination.next_offset` indicate additional results.
24
35
  Prefer a more specific command or a larger token budget before paging.
@@ -4,7 +4,7 @@
4
4
  # - Whitelists subcommands so the skill can never invoke destructive ones (clean/init/watch).
5
5
  set -euo pipefail
6
6
 
7
- ALLOWED="search explain architecture symbol refs impact diff-impact path describe graph stats doctor update index"
7
+ ALLOWED="search explain architecture symbol refs impact diff-impact path describe verify graph stats doctor update index"
8
8
 
9
9
  sub="${1:-}"
10
10
  case " $ALLOWED " in
@@ -10,7 +10,7 @@ param(
10
10
  $ErrorActionPreference = "Stop"
11
11
  $allowed = @(
12
12
  "search", "explain", "architecture", "symbol", "refs", "impact", "diff-impact",
13
- "path", "describe", "graph", "stats", "doctor", "update", "index"
13
+ "path", "describe", "verify", "graph", "stats", "doctor", "update", "index"
14
14
  )
15
15
 
16
16
  if ($allowed -notcontains $Subcommand) {
@@ -0,0 +1,16 @@
1
+ # Скрипты-инсталляторы должны иметь LF, иначе ломаются на macOS/Linux
2
+ # (shebang "#!/usr/bin/env sh\r" недопустим). PowerShell-файлы — тоже LF для единообразия.
3
+ *.sh text eol=lf
4
+ *.ps1 text eol=lf
5
+ *.py text eol=lf
6
+ # cbx — POSIX-скрипт без расширения; CRLF в worktree ломает shebang при копировании
7
+ cbx text eol=lf
8
+ # .skill_version хранит ровно "<version>\n"; scripts/sync_skill_copies.py пишет и
9
+ # сравнивает байты, поэтому при core.autocrlf=true git подставлял CRLF в worktree и
10
+ # test_real_repo_is_in_sync падал на любом свежем клоне под Windows.
11
+ .skill_version text eol=lf
12
+ # sample_repo сравнивается побайтно: tests/fixtures/index-1.10.0/index.sqlite хранит sha256
13
+ # её файлов. Файлы без правила (web/app.ts) git под Windows с core.autocrlf=true отдавал
14
+ # с CRLF, под Linux/macOS с LF, и update на CI переиндексировал файл. -text отключает
15
+ # любую конверсию: в рабочем дереве те же байты, что в репозитории, на любой ОС.
16
+ tests/fixtures/sample_repo/** -text
@@ -0,0 +1,62 @@
1
+ name: Benchmark report
2
+ description: Share a reproduced, failed, or new benchmark run (good or bad numbers both welcome)
3
+ title: "[Benchmark]: "
4
+ labels: ["benchmark"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Independent runs are how this project keeps its numbers honest. Unflattering results are as useful as flattering ones.
10
+
11
+ - type: dropdown
12
+ id: kind
13
+ attributes:
14
+ label: What did you run?
15
+ options:
16
+ - tests/eval/run_eval.py (retrieval eval, own corpus)
17
+ - tests/eval/run_eval.py (shipped query sets)
18
+ - tests/benchmark_public.py (synthetic suite)
19
+ - tests/benchmark_honest.py (index vs rg+window)
20
+ - Something else (describe below)
21
+ validations:
22
+ required: true
23
+
24
+ - type: input
25
+ id: version
26
+ attributes:
27
+ label: codebase-index version / commit
28
+ placeholder: "1.9.0 or git SHA"
29
+ validations:
30
+ required: true
31
+
32
+ - type: input
33
+ id: corpus
34
+ attributes:
35
+ label: Corpus
36
+ description: Public repository URL + commit SHA, or language / size if private.
37
+ placeholder: "https://github.com/pallets/flask @ d318b68 — Python, ~18k LOC"
38
+ validations:
39
+ required: true
40
+
41
+ - type: textarea
42
+ id: command
43
+ attributes:
44
+ label: Exact commands
45
+ render: shell
46
+ validations:
47
+ required: true
48
+
49
+ - type: textarea
50
+ id: results
51
+ attributes:
52
+ label: Results table / raw output
53
+ description: Paste the pooled table and significance rows as printed. Attach the JSON if large.
54
+ render: markdown
55
+ validations:
56
+ required: true
57
+
58
+ - type: textarea
59
+ id: notes
60
+ attributes:
61
+ label: Observations
62
+ description: Anything surprising, queries that failed, or where the baseline beat the index.
@@ -0,0 +1,74 @@
1
+ name: Bug report
2
+ description: Something is wrong, crashes, or returns the wrong result
3
+ title: "[Bug]: "
4
+ labels: ["bug", "triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks. A reproducible report gets fixed fastest. Do not paste real secrets — the tool redacts snippets, your logs may not.
10
+
11
+ - type: input
12
+ id: version
13
+ attributes:
14
+ label: codebase-index version
15
+ description: "`pip show codebase-index` (there is no --version flag)"
16
+ placeholder: "1.9.0"
17
+ validations:
18
+ required: true
19
+
20
+ - type: input
21
+ id: env
22
+ attributes:
23
+ label: Python and OS
24
+ placeholder: "Python 3.12.3 · macOS 14.4 / Ubuntu 24.04 / Windows 11"
25
+ validations:
26
+ required: true
27
+
28
+ - type: dropdown
29
+ id: surface
30
+ attributes:
31
+ label: Surface
32
+ options:
33
+ - CLI
34
+ - Claude Code skill / plugin
35
+ - Codex CLI
36
+ - OpenCode
37
+ - MCP server
38
+ - Installer scripts
39
+ - Other
40
+ validations:
41
+ required: true
42
+
43
+ - type: textarea
44
+ id: what-happened
45
+ attributes:
46
+ label: What happened, and what did you expect?
47
+ placeholder: |
48
+ Ran `codebase-index refs open_session --json` on <repo>. Expected the call in ctx.py; got an empty list with coverage.partial=false.
49
+ validations:
50
+ required: true
51
+
52
+ - type: textarea
53
+ id: repro
54
+ attributes:
55
+ label: Steps to reproduce
56
+ description: Ideally against a public repository or a tiny snippet we can index.
57
+ placeholder: |
58
+ 1. git clone https://github.com/... && cd ...
59
+ 2. codebase-index index
60
+ 3. codebase-index search "..." --json
61
+ validations:
62
+ required: true
63
+
64
+ - type: textarea
65
+ id: doctor
66
+ attributes:
67
+ label: "`codebase-index doctor` output"
68
+ render: shell
69
+
70
+ - type: textarea
71
+ id: logs
72
+ attributes:
73
+ label: Relevant output (`--json` where applicable) or traceback
74
+ render: shell
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Questions and ideas
4
+ url: https://github.com/denfry/codebase-index/discussions
5
+ about: Ask how to use the tool, discuss design, or share what you built with it.
6
+ - name: Security vulnerability
7
+ url: https://github.com/denfry/codebase-index/security/advisories/new
8
+ about: Report privately. Please do not open a public issue (see SECURITY.md).
@@ -0,0 +1,50 @@
1
+ name: Feature request
2
+ description: Propose an improvement or a new capability
3
+ title: "[Feature]: "
4
+ labels: ["enhancement", "triage"]
5
+ body:
6
+ - type: textarea
7
+ id: problem
8
+ attributes:
9
+ label: Problem
10
+ description: What are you trying to do with your agent that the tool makes hard today?
11
+ placeholder: "When I ask Claude Code about ..., codebase-index returns ..., so the agent ends up reading ..."
12
+ validations:
13
+ required: true
14
+
15
+ - type: textarea
16
+ id: proposal
17
+ attributes:
18
+ label: Proposal
19
+ description: What should happen instead? A CLI example or a sketch of the JSON is ideal.
20
+ validations:
21
+ required: true
22
+
23
+ - type: dropdown
24
+ id: area
25
+ attributes:
26
+ label: Area
27
+ options:
28
+ - Retrieval quality (ranking, fusion, budget)
29
+ - Graph extraction (edges, impact, paths)
30
+ - Language support
31
+ - Indexing (discovery, parsing, freshness)
32
+ - CLI / output format
33
+ - MCP server
34
+ - Claude Code / Codex / OpenCode integration
35
+ - Benchmarks / evaluation
36
+ - Documentation
37
+ - Other
38
+ validations:
39
+ required: true
40
+
41
+ - type: textarea
42
+ id: evidence
43
+ attributes:
44
+ label: How would we know it worked?
45
+ description: Retrieval changes need a measurable effect (see tests/eval). A query and the file you expected is enough to start.
46
+
47
+ - type: textarea
48
+ id: alternatives
49
+ attributes:
50
+ label: Alternatives or workarounds you tried