cgraphx 1.4.1 → 2.0.0

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 (1311) hide show
  1. package/LICENSE +1 -1
  2. package/README.en.md +126 -0
  3. package/README.md +78 -196
  4. package/dist/.claude-template/.cgraphx/timeline-current-turn.json +1 -0
  5. package/dist/.claude-template/CLAUDE.md +10 -0
  6. package/dist/.claude-template/FLOW-MAP.md +107 -0
  7. package/dist/.claude-template/agents/knowledge-recall.md +126 -0
  8. package/dist/.claude-template/commands/end.md +62 -0
  9. package/dist/.claude-template/commands/my-query.md +1 -1
  10. package/dist/.claude-template/deprecated-assets.json +11 -0
  11. package/dist/.claude-template/hooks/precommit-check/precommit-check.cjs +27 -24
  12. package/dist/.claude-template/skills/.cgraphx/timeline-current-turn.json +1 -0
  13. package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +22 -24
  14. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +350 -165
  15. package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +211 -0
  16. package/dist/.claude-template/skills/clarify-requirements/SKILL.md +75 -383
  17. package/dist/.claude-template/skills/developer-timeline/SKILL.md +3 -2
  18. package/dist/.claude-template/skills/export-table-ddl/SKILL.md +3 -2
  19. package/dist/.claude-template/skills/handdrawn-deck/.cgraphx/timeline-current-turn.json +1 -0
  20. package/dist/.claude-template/skills/handdrawn-deck/SKILL.md +305 -0
  21. package/dist/.claude-template/skills/handdrawn-deck/references/.cgraphx/timeline-current-turn.json +1 -0
  22. package/dist/.claude-template/skills/handdrawn-deck/references/deck-template.html +469 -0
  23. package/dist/.claude-template/skills/handdrawn-deck/references/gen-script-md.cjs +44 -0
  24. package/dist/.claude-template/skills/handdrawn-deck/references/seg.cjs +54 -0
  25. package/dist/.claude-template/skills/handdrawn-sketch-engine/.cgraphx/timeline-current-turn.json +1 -0
  26. package/dist/.claude-template/skills/handdrawn-sketch-engine/SKILL.md +279 -0
  27. package/dist/.claude-template/skills/handdrawn-sketch-engine/assets/icon-library.js +238 -0
  28. package/dist/.claude-template/skills/handdrawn-sketch-engine/references/engine-template.html +275 -0
  29. package/dist/.claude-template/skills/handdrawn-sketch-engine/references/reference-render.html +445 -0
  30. package/dist/.claude-template/skills/implementation/SKILL.md +36 -110
  31. package/dist/.claude-template/skills/init-project-guides/SKILL.md +81 -0
  32. package/dist/.claude-template/skills/init-project-guides/templates/git-standards.md +37 -0
  33. package/dist/.claude-template/skills/init-project-guides/templates/go.md +160 -0
  34. package/dist/.claude-template/skills/init-project-guides/templates/java.md +173 -0
  35. package/dist/.claude-template/skills/init-project-guides/templates/schema-convention.md +11 -0
  36. package/dist/.claude-template/skills/init-project-guides/templates/typescript.md +156 -0
  37. package/dist/.claude-template/skills/knowledge-api/SKILL.md +143 -0
  38. package/dist/.claude-template/skills/knowledge-api/agent-prompt.md +51 -0
  39. package/dist/.claude-template/skills/knowledge-init/SKILL.md +761 -0
  40. package/dist/.claude-template/skills/knowledge-migrate/SKILL.md +173 -0
  41. package/dist/.claude-template/skills/knowledge-recall/SKILL.md +25 -0
  42. package/dist/.claude-template/skills/knowledge-write/SKILL.md +126 -0
  43. package/dist/.claude-template/skills/knowledge-write/template-concept.md +95 -0
  44. package/dist/.claude-template/skills/knowledge-write/template-flow.md +100 -0
  45. package/dist/.claude-template/skills/knowledge-write/template-guide.md +77 -0
  46. package/dist/.claude-template/skills/knowledge-write/template-memory.md +61 -0
  47. package/dist/.claude-template/skills/run-api-test/SKILL.md +6 -4
  48. package/dist/.claude-template/skills/run-api-test/assets/template-test-report.md +448 -55
  49. package/dist/.claude-template/skills/run-api-test/assets/template-test-verify.jsonl +5 -5
  50. package/dist/.claude-template/skills/run-api-test/references/report-format.md +54 -19
  51. package/dist/.claude-template/skills/subagent-implement/SKILL.md +60 -183
  52. package/dist/.claude-template/skills/subagent-implement/implementer-prompt.md +9 -4
  53. package/dist/.claude-template/skills/subagent-implement/quality-reviewer-prompt.md +1 -1
  54. package/dist/.claude-template/skills/subagent-implement/spec-reviewer-prompt.md +1 -0
  55. package/dist/.claude-template/skills/write-api/SKILL.md +7 -5
  56. package/dist/.claude-template/skills/write-api/assets/template-api-spec.md +2 -3
  57. package/dist/.claude-template/skills/write-api/assets/template-request.bru +21 -0
  58. package/dist/.claude-template/skills/write-api/references/ai-prompts.md +1 -2
  59. package/dist/.claude-template/skills/write-api/references/api-spec-format.md +0 -1
  60. package/dist/.claude-template/skills/write-api-doc/SKILL.md +8 -7
  61. package/dist/.claude-template/skills/write-design-doc/SKILL.md +86 -0
  62. package/dist/.claude-template/skills/write-design-doc/template-design-html.md +357 -0
  63. package/dist/.claude-template/skills/write-design-doc/template-design-md.md +164 -0
  64. package/dist/.claude-template/skills/write-plan/SKILL.md +94 -291
  65. package/dist/.claude-template/skills/write-plan/plan-document-reviewer-prompt.md +24 -6
  66. package/dist/.claude-template/skills/write-prd/SKILL.md +4 -2
  67. package/dist/.claude-template/skills/write-spec/SKILL.md +75 -282
  68. package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +221 -0
  69. package/dist/.claude-template/skills/write-unit-test-spec/SKILL.md +115 -0
  70. package/dist/.claude-template/skills/write-workload/SKILL.md +130 -0
  71. package/dist/cli/fatal-handler.d.ts +21 -0
  72. package/dist/cli/fatal-handler.d.ts.map +1 -0
  73. package/dist/cli/fatal-handler.js +109 -0
  74. package/dist/cli/fatal-handler.js.map +1 -0
  75. package/dist/cli/index.d.ts +27 -0
  76. package/dist/cli/index.d.ts.map +1 -0
  77. package/dist/cli/index.js +248 -0
  78. package/dist/cli/index.js.map +1 -0
  79. package/dist/cli/installer/claude-assets.d.ts +101 -0
  80. package/dist/cli/installer/claude-assets.d.ts.map +1 -0
  81. package/dist/cli/installer/claude-assets.js +321 -0
  82. package/dist/cli/installer/claude-assets.js.map +1 -0
  83. package/dist/cli/installer/index.d.ts +105 -0
  84. package/dist/cli/installer/index.d.ts.map +1 -0
  85. package/dist/cli/installer/index.js +548 -0
  86. package/dist/cli/installer/index.js.map +1 -0
  87. package/dist/cli/installer/targets/claude.d.ts +72 -0
  88. package/dist/cli/installer/targets/claude.d.ts.map +1 -0
  89. package/dist/cli/installer/targets/claude.js +580 -0
  90. package/dist/cli/installer/targets/claude.js.map +1 -0
  91. package/dist/cli/installer/targets/registry.d.ts +32 -0
  92. package/dist/cli/installer/targets/registry.d.ts.map +1 -0
  93. package/dist/cli/installer/targets/registry.js +72 -0
  94. package/dist/cli/installer/targets/registry.js.map +1 -0
  95. package/dist/cli/installer/targets/shared.d.ts +66 -0
  96. package/dist/cli/installer/targets/shared.d.ts.map +1 -0
  97. package/dist/cli/installer/targets/shared.js +228 -0
  98. package/dist/cli/installer/targets/shared.js.map +1 -0
  99. package/dist/cli/installer/targets/types.d.ts +97 -0
  100. package/dist/cli/installer/targets/types.d.ts.map +1 -0
  101. package/dist/cli/installer/targets/types.js +16 -0
  102. package/dist/cli/installer/targets/types.js.map +1 -0
  103. package/dist/cli/node-version-check.d.ts +32 -0
  104. package/dist/cli/node-version-check.d.ts.map +1 -0
  105. package/dist/cli/node-version-check.js +54 -0
  106. package/dist/cli/node-version-check.js.map +1 -0
  107. package/dist/cli/ui/glyphs.d.ts +43 -0
  108. package/dist/cli/ui/glyphs.d.ts.map +1 -0
  109. package/dist/cli/ui/glyphs.js +79 -0
  110. package/dist/cli/ui/glyphs.js.map +1 -0
  111. package/dist/cli/uninstall.d.ts +18 -0
  112. package/dist/cli/uninstall.d.ts.map +1 -0
  113. package/dist/cli/uninstall.js +19 -0
  114. package/dist/cli/uninstall.js.map +1 -0
  115. package/dist/cli/upgrade/index.d.ts +81 -0
  116. package/dist/cli/upgrade/index.d.ts.map +1 -0
  117. package/dist/cli/upgrade/index.js +257 -0
  118. package/dist/cli/upgrade/index.js.map +1 -0
  119. package/dist/core/db/index.d.ts +123 -0
  120. package/dist/core/db/index.d.ts.map +1 -0
  121. package/dist/core/db/index.js +260 -0
  122. package/dist/core/db/index.js.map +1 -0
  123. package/dist/core/db/migrate.d.ts +29 -0
  124. package/dist/core/db/migrate.d.ts.map +1 -0
  125. package/dist/core/db/migrate.js +100 -0
  126. package/dist/core/db/migrate.js.map +1 -0
  127. package/dist/core/db/sqlite-adapter.d.ts +51 -0
  128. package/dist/core/db/sqlite-adapter.d.ts.map +1 -0
  129. package/dist/core/db/sqlite-adapter.js +116 -0
  130. package/dist/core/db/sqlite-adapter.js.map +1 -0
  131. package/dist/core/dbquery/cli.d.ts +17 -0
  132. package/dist/core/dbquery/cli.d.ts.map +1 -0
  133. package/dist/core/dbquery/cli.js +246 -0
  134. package/dist/core/dbquery/cli.js.map +1 -0
  135. package/dist/core/dbquery/config.d.ts.map +1 -0
  136. package/dist/core/dbquery/config.js.map +1 -0
  137. package/dist/core/dbquery/constants.d.ts.map +1 -0
  138. package/dist/core/dbquery/constants.js.map +1 -0
  139. package/dist/core/dbquery/drivers/mysql.d.ts.map +1 -0
  140. package/dist/core/dbquery/drivers/mysql.js.map +1 -0
  141. package/dist/core/dbquery/drivers/postgres.d.ts.map +1 -0
  142. package/dist/core/dbquery/drivers/postgres.js.map +1 -0
  143. package/dist/core/dbquery/errors.d.ts +40 -0
  144. package/dist/core/dbquery/errors.d.ts.map +1 -0
  145. package/dist/core/dbquery/errors.js +85 -0
  146. package/dist/core/dbquery/errors.js.map +1 -0
  147. package/dist/core/dbquery/executor.d.ts.map +1 -0
  148. package/dist/core/dbquery/executor.js.map +1 -0
  149. package/dist/core/dbquery/format.d.ts.map +1 -0
  150. package/dist/core/dbquery/format.js.map +1 -0
  151. package/dist/core/dbquery/identifiers.d.ts.map +1 -0
  152. package/dist/core/dbquery/identifiers.js.map +1 -0
  153. package/dist/core/dbquery/index.d.ts.map +1 -0
  154. package/dist/core/dbquery/index.js.map +1 -0
  155. package/dist/core/dbquery/init.d.ts +33 -0
  156. package/dist/core/dbquery/init.d.ts.map +1 -0
  157. package/dist/core/dbquery/init.js +125 -0
  158. package/dist/core/dbquery/init.js.map +1 -0
  159. package/dist/core/dbquery/logging.d.ts.map +1 -0
  160. package/dist/core/dbquery/logging.js.map +1 -0
  161. package/dist/core/dbquery/queries.d.ts.map +1 -0
  162. package/dist/core/dbquery/queries.js.map +1 -0
  163. package/dist/core/dbquery/safety.d.ts.map +1 -0
  164. package/dist/core/dbquery/safety.js.map +1 -0
  165. package/dist/core/dbquery/types.d.ts +139 -0
  166. package/dist/core/dbquery/types.d.ts.map +1 -0
  167. package/dist/core/dbquery/types.js +10 -0
  168. package/dist/core/dbquery/types.js.map +1 -0
  169. package/dist/core/directory.d.ts +60 -0
  170. package/dist/core/directory.d.ts.map +1 -0
  171. package/dist/core/directory.js +243 -0
  172. package/dist/core/directory.js.map +1 -0
  173. package/dist/core/errors.d.ts +79 -0
  174. package/dist/core/errors.d.ts.map +1 -0
  175. package/dist/core/errors.js +133 -0
  176. package/dist/core/errors.js.map +1 -0
  177. package/dist/core/features/cli.d.ts +12 -0
  178. package/dist/core/features/cli.d.ts.map +1 -0
  179. package/dist/core/features/cli.js +154 -0
  180. package/dist/core/features/cli.js.map +1 -0
  181. package/dist/core/features/index.d.ts +15 -0
  182. package/dist/core/features/index.d.ts.map +1 -0
  183. package/dist/core/features/index.js +39 -0
  184. package/dist/core/features/index.js.map +1 -0
  185. package/dist/core/features/scanner.d.ts +26 -0
  186. package/dist/core/features/scanner.d.ts.map +1 -0
  187. package/dist/core/features/scanner.js +198 -0
  188. package/dist/core/features/scanner.js.map +1 -0
  189. package/dist/core/features/sync.d.ts +26 -0
  190. package/dist/core/features/sync.d.ts.map +1 -0
  191. package/dist/core/features/sync.js +108 -0
  192. package/dist/core/features/sync.js.map +1 -0
  193. package/dist/core/features/types.d.ts +35 -0
  194. package/dist/core/features/types.d.ts.map +1 -0
  195. package/dist/core/features/types.js +12 -0
  196. package/dist/core/features/types.js.map +1 -0
  197. package/dist/core/markdown/cli.d.ts +16 -0
  198. package/dist/core/markdown/cli.d.ts.map +1 -0
  199. package/dist/core/markdown/cli.js +575 -0
  200. package/dist/core/markdown/cli.js.map +1 -0
  201. package/dist/core/markdown/constants.d.ts +22 -0
  202. package/dist/core/markdown/constants.d.ts.map +1 -0
  203. package/dist/core/markdown/constants.js +61 -0
  204. package/dist/core/markdown/constants.js.map +1 -0
  205. package/dist/core/markdown/dedup.d.ts.map +1 -0
  206. package/dist/core/markdown/dedup.js.map +1 -0
  207. package/dist/core/markdown/errors.d.ts +22 -0
  208. package/dist/core/markdown/errors.d.ts.map +1 -0
  209. package/dist/core/markdown/errors.js +45 -0
  210. package/dist/core/markdown/errors.js.map +1 -0
  211. package/dist/core/markdown/extractor.d.ts.map +1 -0
  212. package/dist/core/markdown/extractor.js.map +1 -0
  213. package/dist/core/markdown/frontmatter-parser.d.ts +54 -0
  214. package/dist/core/markdown/frontmatter-parser.d.ts.map +1 -0
  215. package/dist/core/markdown/frontmatter-parser.js +229 -0
  216. package/dist/core/markdown/frontmatter-parser.js.map +1 -0
  217. package/dist/core/markdown/index.d.ts +21 -0
  218. package/dist/core/markdown/index.d.ts.map +1 -0
  219. package/dist/core/markdown/index.js +36 -0
  220. package/dist/core/markdown/index.js.map +1 -0
  221. package/dist/core/markdown/indexer.d.ts +34 -0
  222. package/dist/core/markdown/indexer.d.ts.map +1 -0
  223. package/dist/core/markdown/indexer.js +256 -0
  224. package/dist/core/markdown/indexer.js.map +1 -0
  225. package/dist/core/markdown/query-dedup.d.ts +23 -0
  226. package/dist/core/markdown/query-dedup.d.ts.map +1 -0
  227. package/dist/core/markdown/query-dedup.js +141 -0
  228. package/dist/core/markdown/query-dedup.js.map +1 -0
  229. package/dist/core/markdown/query-helpers.d.ts +66 -0
  230. package/dist/core/markdown/query-helpers.d.ts.map +1 -0
  231. package/dist/core/markdown/query-helpers.js +334 -0
  232. package/dist/core/markdown/query-helpers.js.map +1 -0
  233. package/dist/core/markdown/query.d.ts +125 -0
  234. package/dist/core/markdown/query.d.ts.map +1 -0
  235. package/dist/core/markdown/query.js +367 -0
  236. package/dist/core/markdown/query.js.map +1 -0
  237. package/dist/core/markdown/schema-bootstrap.d.ts +40 -0
  238. package/dist/core/markdown/schema-bootstrap.d.ts.map +1 -0
  239. package/dist/core/markdown/schema-bootstrap.js +85 -0
  240. package/dist/core/markdown/schema-bootstrap.js.map +1 -0
  241. package/dist/core/markdown/schema.sql +124 -0
  242. package/dist/core/markdown/store.d.ts.map +1 -0
  243. package/dist/core/markdown/store.js.map +1 -0
  244. package/dist/core/markdown/summary-extractor.d.ts.map +1 -0
  245. package/dist/core/markdown/summary-extractor.js.map +1 -0
  246. package/dist/core/markdown/types.d.ts +186 -0
  247. package/dist/core/markdown/types.d.ts.map +1 -0
  248. package/dist/core/markdown/types.js.map +1 -0
  249. package/dist/core/markdown/validator.d.ts +44 -0
  250. package/dist/core/markdown/validator.d.ts.map +1 -0
  251. package/dist/core/markdown/validator.js +95 -0
  252. package/dist/core/markdown/validator.js.map +1 -0
  253. package/dist/core/timeline/bash-semantics.d.ts.map +1 -0
  254. package/dist/core/timeline/bash-semantics.js.map +1 -0
  255. package/dist/core/timeline/cli.d.ts.map +1 -0
  256. package/dist/core/timeline/cli.js.map +1 -0
  257. package/dist/core/timeline/constants.d.ts +62 -0
  258. package/dist/core/timeline/constants.d.ts.map +1 -0
  259. package/dist/core/timeline/constants.js +73 -0
  260. package/dist/core/timeline/constants.js.map +1 -0
  261. package/dist/core/timeline/errors.d.ts.map +1 -0
  262. package/dist/core/timeline/errors.js.map +1 -0
  263. package/dist/core/timeline/hook-runner.d.ts.map +1 -0
  264. package/dist/core/timeline/hook-runner.js.map +1 -0
  265. package/dist/core/timeline/hooks.d.ts.map +1 -0
  266. package/dist/core/timeline/hooks.js.map +1 -0
  267. package/dist/core/timeline/index.d.ts.map +1 -0
  268. package/dist/core/timeline/index.js.map +1 -0
  269. package/dist/core/timeline/indexer.d.ts.map +1 -0
  270. package/dist/core/timeline/indexer.js.map +1 -0
  271. package/dist/core/timeline/installer.d.ts.map +1 -0
  272. package/dist/core/timeline/installer.js.map +1 -0
  273. package/dist/core/timeline/payload.d.ts.map +1 -0
  274. package/dist/core/timeline/payload.js.map +1 -0
  275. package/dist/core/timeline/post-tool-summary.d.ts.map +1 -0
  276. package/dist/core/timeline/post-tool-summary.js.map +1 -0
  277. package/dist/core/timeline/recorder.d.ts.map +1 -0
  278. package/dist/core/timeline/recorder.js.map +1 -0
  279. package/dist/core/timeline/schema-bootstrap.d.ts +42 -0
  280. package/dist/core/timeline/schema-bootstrap.d.ts.map +1 -0
  281. package/dist/core/timeline/schema-bootstrap.js +81 -0
  282. package/dist/core/timeline/schema-bootstrap.js.map +1 -0
  283. package/dist/core/timeline/store.d.ts.map +1 -0
  284. package/dist/core/timeline/store.js.map +1 -0
  285. package/dist/core/timeline/types.d.ts.map +1 -0
  286. package/dist/core/timeline/types.js.map +1 -0
  287. package/dist/core/types.d.ts +25 -0
  288. package/dist/core/types.d.ts.map +1 -0
  289. package/dist/core/types.js +12 -0
  290. package/dist/core/types.js.map +1 -0
  291. package/dist/web/bootstrap.d.ts +26 -0
  292. package/dist/web/bootstrap.d.ts.map +1 -0
  293. package/dist/web/bootstrap.js +98 -0
  294. package/dist/web/bootstrap.js.map +1 -0
  295. package/dist/web/constants.d.ts +27 -0
  296. package/dist/web/constants.d.ts.map +1 -0
  297. package/dist/web/constants.js +41 -0
  298. package/dist/web/constants.js.map +1 -0
  299. package/dist/web/errors.d.ts +46 -0
  300. package/dist/web/errors.d.ts.map +1 -0
  301. package/dist/web/errors.js +56 -0
  302. package/dist/web/errors.js.map +1 -0
  303. package/dist/web/index.d.ts +13 -0
  304. package/dist/web/index.d.ts.map +1 -0
  305. package/dist/web/index.js +20 -0
  306. package/dist/web/index.js.map +1 -0
  307. package/dist/web/layout.d.ts +31 -0
  308. package/dist/web/layout.d.ts.map +1 -0
  309. package/dist/web/layout.js +77 -0
  310. package/dist/web/layout.js.map +1 -0
  311. package/dist/web/markdown.d.ts +23 -0
  312. package/dist/web/markdown.d.ts.map +1 -0
  313. package/dist/web/markdown.js +38 -0
  314. package/dist/web/markdown.js.map +1 -0
  315. package/dist/web/overview-templates.d.ts +123 -0
  316. package/dist/web/overview-templates.d.ts.map +1 -0
  317. package/dist/web/overview-templates.js +213 -0
  318. package/dist/web/overview-templates.js.map +1 -0
  319. package/dist/web/pages-detail.d.ts +32 -0
  320. package/dist/web/pages-detail.d.ts.map +1 -0
  321. package/dist/web/pages-detail.js +275 -0
  322. package/dist/web/pages-detail.js.map +1 -0
  323. package/dist/web/pages-overview.d.ts +60 -0
  324. package/dist/web/pages-overview.d.ts.map +1 -0
  325. package/dist/web/pages-overview.js +304 -0
  326. package/dist/web/pages-overview.js.map +1 -0
  327. package/dist/web/public/app.css +1772 -0
  328. package/dist/web/public/app.js +41 -0
  329. package/dist/web/register.d.ts +12 -0
  330. package/dist/web/register.d.ts.map +1 -0
  331. package/dist/web/register.js +88 -0
  332. package/dist/web/register.js.map +1 -0
  333. package/dist/web/render-utils.d.ts +28 -0
  334. package/dist/web/render-utils.d.ts.map +1 -0
  335. package/dist/web/render-utils.js +54 -0
  336. package/dist/web/render-utils.js.map +1 -0
  337. package/dist/web/server.d.ts +42 -0
  338. package/dist/web/server.d.ts.map +1 -0
  339. package/dist/web/server.js +292 -0
  340. package/dist/web/server.js.map +1 -0
  341. package/package.json +14 -27
  342. package/scripts/copy-assets.cjs +89 -0
  343. package/dist/.claude-template/commands/my-commit.md +0 -9
  344. package/dist/.claude-template/skills/cgraphx/SKILL.md +0 -143
  345. package/dist/.claude-template/skills/cgraphx/agent-prompt.md +0 -56
  346. package/dist/.claude-template/skills/code-impact-api/SKILL.md +0 -143
  347. package/dist/.claude-template/skills/code-impact-api/agent-prompt.md +0 -51
  348. package/dist/.claude-template/skills/code-impact-docgen/SKILL.md +0 -376
  349. package/dist/.claude-template/skills/code-impact-docgen/template-design-html.md +0 -357
  350. package/dist/.claude-template/skills/code-impact-docgen/template-design-md.md +0 -164
  351. package/dist/.claude-template/skills/code-impact-init/SKILL.md +0 -803
  352. package/dist/.claude-template/skills/code-impact-markdown/SKILL.md +0 -353
  353. package/dist/.claude-template/skills/code-impact-markdown/template-guide.md +0 -68
  354. package/dist/.claude-template/skills/code-impact-markdown/template-memory.md +0 -82
  355. package/dist/.claude-template/skills/code-impact-markdown/template-runbook.md +0 -58
  356. package/dist/.claude-template/skills/precommit-review/SKILL.md +0 -50
  357. package/dist/api-test/ai-fields.d.ts +0 -37
  358. package/dist/api-test/ai-fields.d.ts.map +0 -1
  359. package/dist/api-test/ai-fields.js +0 -114
  360. package/dist/api-test/ai-fields.js.map +0 -1
  361. package/dist/api-test/assemble.d.ts +0 -76
  362. package/dist/api-test/assemble.d.ts.map +0 -1
  363. package/dist/api-test/assemble.js +0 -185
  364. package/dist/api-test/assemble.js.map +0 -1
  365. package/dist/api-test/bru-cli-invoker.d.ts +0 -72
  366. package/dist/api-test/bru-cli-invoker.d.ts.map +0 -1
  367. package/dist/api-test/bru-cli-invoker.js +0 -169
  368. package/dist/api-test/bru-cli-invoker.js.map +0 -1
  369. package/dist/api-test/bru-report-parser.d.ts +0 -24
  370. package/dist/api-test/bru-report-parser.d.ts.map +0 -1
  371. package/dist/api-test/bru-report-parser.js +0 -110
  372. package/dist/api-test/bru-report-parser.js.map +0 -1
  373. package/dist/api-test/bru-runner.d.ts +0 -101
  374. package/dist/api-test/bru-runner.d.ts.map +0 -1
  375. package/dist/api-test/bru-runner.js +0 -316
  376. package/dist/api-test/bru-runner.js.map +0 -1
  377. package/dist/api-test/bru-writer.d.ts +0 -52
  378. package/dist/api-test/bru-writer.d.ts.map +0 -1
  379. package/dist/api-test/bru-writer.js +0 -159
  380. package/dist/api-test/bru-writer.js.map +0 -1
  381. package/dist/api-test/call-chain-extractor.d.ts +0 -80
  382. package/dist/api-test/call-chain-extractor.d.ts.map +0 -1
  383. package/dist/api-test/call-chain-extractor.js +0 -179
  384. package/dist/api-test/call-chain-extractor.js.map +0 -1
  385. package/dist/api-test/cli.d.ts +0 -133
  386. package/dist/api-test/cli.d.ts.map +0 -1
  387. package/dist/api-test/cli.js +0 -1009
  388. package/dist/api-test/cli.js.map +0 -1
  389. package/dist/api-test/config.d.ts +0 -75
  390. package/dist/api-test/config.d.ts.map +0 -1
  391. package/dist/api-test/config.js +0 -406
  392. package/dist/api-test/config.js.map +0 -1
  393. package/dist/api-test/db-query-cli.d.ts +0 -51
  394. package/dist/api-test/db-query-cli.d.ts.map +0 -1
  395. package/dist/api-test/db-query-cli.js +0 -119
  396. package/dist/api-test/db-query-cli.js.map +0 -1
  397. package/dist/api-test/enhance-prepare.d.ts +0 -111
  398. package/dist/api-test/enhance-prepare.d.ts.map +0 -1
  399. package/dist/api-test/enhance-prepare.js +0 -425
  400. package/dist/api-test/enhance-prepare.js.map +0 -1
  401. package/dist/api-test/enhance-write.d.ts +0 -28
  402. package/dist/api-test/enhance-write.d.ts.map +0 -1
  403. package/dist/api-test/enhance-write.js +0 -145
  404. package/dist/api-test/enhance-write.js.map +0 -1
  405. package/dist/api-test/errors.d.ts +0 -48
  406. package/dist/api-test/errors.d.ts.map +0 -1
  407. package/dist/api-test/errors.js +0 -76
  408. package/dist/api-test/errors.js.map +0 -1
  409. package/dist/api-test/field-extractor.d.ts +0 -98
  410. package/dist/api-test/field-extractor.d.ts.map +0 -1
  411. package/dist/api-test/field-extractor.js +0 -327
  412. package/dist/api-test/field-extractor.js.map +0 -1
  413. package/dist/api-test/impl-finder.d.ts +0 -37
  414. package/dist/api-test/impl-finder.d.ts.map +0 -1
  415. package/dist/api-test/impl-finder.js +0 -54
  416. package/dist/api-test/impl-finder.js.map +0 -1
  417. package/dist/api-test/index.d.ts +0 -41
  418. package/dist/api-test/index.d.ts.map +0 -1
  419. package/dist/api-test/index.js +0 -124
  420. package/dist/api-test/index.js.map +0 -1
  421. package/dist/api-test/java-parser.d.ts +0 -89
  422. package/dist/api-test/java-parser.d.ts.map +0 -1
  423. package/dist/api-test/java-parser.js +0 -508
  424. package/dist/api-test/java-parser.js.map +0 -1
  425. package/dist/api-test/md-writer.d.ts +0 -49
  426. package/dist/api-test/md-writer.d.ts.map +0 -1
  427. package/dist/api-test/md-writer.js +0 -202
  428. package/dist/api-test/md-writer.js.map +0 -1
  429. package/dist/api-test/parser-httpservice.d.ts +0 -91
  430. package/dist/api-test/parser-httpservice.d.ts.map +0 -1
  431. package/dist/api-test/parser-httpservice.js +0 -271
  432. package/dist/api-test/parser-httpservice.js.map +0 -1
  433. package/dist/api-test/report.d.ts +0 -188
  434. package/dist/api-test/report.d.ts.map +0 -1
  435. package/dist/api-test/report.js +0 -522
  436. package/dist/api-test/report.js.map +0 -1
  437. package/dist/api-test/snapshot.d.ts +0 -26
  438. package/dist/api-test/snapshot.d.ts.map +0 -1
  439. package/dist/api-test/snapshot.js +0 -150
  440. package/dist/api-test/snapshot.js.map +0 -1
  441. package/dist/api-test/test-history.d.ts +0 -48
  442. package/dist/api-test/test-history.d.ts.map +0 -1
  443. package/dist/api-test/test-history.js +0 -122
  444. package/dist/api-test/test-history.js.map +0 -1
  445. package/dist/api-test/types.d.ts +0 -174
  446. package/dist/api-test/types.d.ts.map +0 -1
  447. package/dist/api-test/types.js +0 -13
  448. package/dist/api-test/types.js.map +0 -1
  449. package/dist/api-test/verify-prepare.d.ts +0 -30
  450. package/dist/api-test/verify-prepare.d.ts.map +0 -1
  451. package/dist/api-test/verify-prepare.js +0 -150
  452. package/dist/api-test/verify-prepare.js.map +0 -1
  453. package/dist/api-test/verify-write.d.ts +0 -31
  454. package/dist/api-test/verify-write.d.ts.map +0 -1
  455. package/dist/api-test/verify-write.js +0 -159
  456. package/dist/api-test/verify-write.js.map +0 -1
  457. package/dist/bin/codegraph.d.ts +0 -26
  458. package/dist/bin/codegraph.d.ts.map +0 -1
  459. package/dist/bin/codegraph.js +0 -1914
  460. package/dist/bin/codegraph.js.map +0 -1
  461. package/dist/bin/fatal-handler.d.ts +0 -20
  462. package/dist/bin/fatal-handler.d.ts.map +0 -1
  463. package/dist/bin/fatal-handler.js +0 -118
  464. package/dist/bin/fatal-handler.js.map +0 -1
  465. package/dist/bin/node-version-check.d.ts +0 -51
  466. package/dist/bin/node-version-check.d.ts.map +0 -1
  467. package/dist/bin/node-version-check.js +0 -114
  468. package/dist/bin/node-version-check.js.map +0 -1
  469. package/dist/bin/uninstall.d.ts +0 -14
  470. package/dist/bin/uninstall.d.ts.map +0 -1
  471. package/dist/bin/uninstall.js +0 -36
  472. package/dist/bin/uninstall.js.map +0 -1
  473. package/dist/context/formatter.d.ts +0 -30
  474. package/dist/context/formatter.d.ts.map +0 -1
  475. package/dist/context/formatter.js +0 -263
  476. package/dist/context/formatter.js.map +0 -1
  477. package/dist/context/index.d.ts +0 -119
  478. package/dist/context/index.d.ts.map +0 -1
  479. package/dist/context/index.js +0 -1296
  480. package/dist/context/index.js.map +0 -1
  481. package/dist/context/markers.d.ts +0 -19
  482. package/dist/context/markers.d.ts.map +0 -1
  483. package/dist/context/markers.js +0 -22
  484. package/dist/context/markers.js.map +0 -1
  485. package/dist/db/index.d.ts +0 -122
  486. package/dist/db/index.d.ts.map +0 -1
  487. package/dist/db/index.js +0 -296
  488. package/dist/db/index.js.map +0 -1
  489. package/dist/db/migrations.d.ts +0 -44
  490. package/dist/db/migrations.d.ts.map +0 -1
  491. package/dist/db/migrations.js +0 -140
  492. package/dist/db/migrations.js.map +0 -1
  493. package/dist/db/queries.d.ts +0 -401
  494. package/dist/db/queries.d.ts.map +0 -1
  495. package/dist/db/queries.js +0 -1591
  496. package/dist/db/queries.js.map +0 -1
  497. package/dist/db/schema.sql +0 -152
  498. package/dist/db/sqlite-adapter.d.ts +0 -53
  499. package/dist/db/sqlite-adapter.d.ts.map +0 -1
  500. package/dist/db/sqlite-adapter.js +0 -117
  501. package/dist/db/sqlite-adapter.js.map +0 -1
  502. package/dist/dbquery/cli.d.ts +0 -17
  503. package/dist/dbquery/cli.d.ts.map +0 -1
  504. package/dist/dbquery/cli.js +0 -246
  505. package/dist/dbquery/cli.js.map +0 -1
  506. package/dist/dbquery/config.d.ts.map +0 -1
  507. package/dist/dbquery/config.js.map +0 -1
  508. package/dist/dbquery/constants.d.ts.map +0 -1
  509. package/dist/dbquery/constants.js.map +0 -1
  510. package/dist/dbquery/drivers/mysql.d.ts.map +0 -1
  511. package/dist/dbquery/drivers/mysql.js.map +0 -1
  512. package/dist/dbquery/drivers/postgres.d.ts.map +0 -1
  513. package/dist/dbquery/drivers/postgres.js.map +0 -1
  514. package/dist/dbquery/dump-schema.d.ts +0 -46
  515. package/dist/dbquery/dump-schema.d.ts.map +0 -1
  516. package/dist/dbquery/dump-schema.js +0 -379
  517. package/dist/dbquery/dump-schema.js.map +0 -1
  518. package/dist/dbquery/errors.d.ts +0 -40
  519. package/dist/dbquery/errors.d.ts.map +0 -1
  520. package/dist/dbquery/errors.js +0 -85
  521. package/dist/dbquery/errors.js.map +0 -1
  522. package/dist/dbquery/executor.d.ts.map +0 -1
  523. package/dist/dbquery/executor.js.map +0 -1
  524. package/dist/dbquery/format.d.ts.map +0 -1
  525. package/dist/dbquery/format.js.map +0 -1
  526. package/dist/dbquery/identifiers.d.ts.map +0 -1
  527. package/dist/dbquery/identifiers.js.map +0 -1
  528. package/dist/dbquery/index.d.ts.map +0 -1
  529. package/dist/dbquery/index.js.map +0 -1
  530. package/dist/dbquery/init.d.ts +0 -33
  531. package/dist/dbquery/init.d.ts.map +0 -1
  532. package/dist/dbquery/init.js +0 -125
  533. package/dist/dbquery/init.js.map +0 -1
  534. package/dist/dbquery/logging.d.ts.map +0 -1
  535. package/dist/dbquery/logging.js.map +0 -1
  536. package/dist/dbquery/mcp-tools.d.ts +0 -29
  537. package/dist/dbquery/mcp-tools.d.ts.map +0 -1
  538. package/dist/dbquery/mcp-tools.js +0 -206
  539. package/dist/dbquery/mcp-tools.js.map +0 -1
  540. package/dist/dbquery/queries.d.ts.map +0 -1
  541. package/dist/dbquery/queries.js.map +0 -1
  542. package/dist/dbquery/safety.d.ts.map +0 -1
  543. package/dist/dbquery/safety.js.map +0 -1
  544. package/dist/dbquery/types.d.ts +0 -139
  545. package/dist/dbquery/types.d.ts.map +0 -1
  546. package/dist/dbquery/types.js +0 -10
  547. package/dist/dbquery/types.js.map +0 -1
  548. package/dist/directory.d.ts +0 -147
  549. package/dist/directory.d.ts.map +0 -1
  550. package/dist/directory.js +0 -523
  551. package/dist/directory.js.map +0 -1
  552. package/dist/errors.d.ts +0 -136
  553. package/dist/errors.d.ts.map +0 -1
  554. package/dist/errors.js +0 -219
  555. package/dist/errors.js.map +0 -1
  556. package/dist/extraction/astro-extractor.d.ts +0 -79
  557. package/dist/extraction/astro-extractor.d.ts.map +0 -1
  558. package/dist/extraction/astro-extractor.js +0 -320
  559. package/dist/extraction/astro-extractor.js.map +0 -1
  560. package/dist/extraction/dfm-extractor.d.ts +0 -31
  561. package/dist/extraction/dfm-extractor.d.ts.map +0 -1
  562. package/dist/extraction/dfm-extractor.js +0 -151
  563. package/dist/extraction/dfm-extractor.js.map +0 -1
  564. package/dist/extraction/extraction-version.d.ts +0 -25
  565. package/dist/extraction/extraction-version.d.ts.map +0 -1
  566. package/dist/extraction/extraction-version.js +0 -28
  567. package/dist/extraction/extraction-version.js.map +0 -1
  568. package/dist/extraction/function-ref.d.ts +0 -118
  569. package/dist/extraction/function-ref.d.ts.map +0 -1
  570. package/dist/extraction/function-ref.js +0 -727
  571. package/dist/extraction/function-ref.js.map +0 -1
  572. package/dist/extraction/generated-detection.d.ts +0 -30
  573. package/dist/extraction/generated-detection.d.ts.map +0 -1
  574. package/dist/extraction/generated-detection.js +0 -83
  575. package/dist/extraction/generated-detection.js.map +0 -1
  576. package/dist/extraction/grammars.d.ts +0 -114
  577. package/dist/extraction/grammars.d.ts.map +0 -1
  578. package/dist/extraction/grammars.js +0 -477
  579. package/dist/extraction/grammars.js.map +0 -1
  580. package/dist/extraction/index.d.ts +0 -175
  581. package/dist/extraction/index.d.ts.map +0 -1
  582. package/dist/extraction/index.js +0 -1887
  583. package/dist/extraction/index.js.map +0 -1
  584. package/dist/extraction/languages/c-cpp.d.ts +0 -12
  585. package/dist/extraction/languages/c-cpp.d.ts.map +0 -1
  586. package/dist/extraction/languages/c-cpp.js +0 -275
  587. package/dist/extraction/languages/c-cpp.js.map +0 -1
  588. package/dist/extraction/languages/csharp.d.ts +0 -25
  589. package/dist/extraction/languages/csharp.d.ts.map +0 -1
  590. package/dist/extraction/languages/csharp.js +0 -175
  591. package/dist/extraction/languages/csharp.js.map +0 -1
  592. package/dist/extraction/languages/dart.d.ts +0 -3
  593. package/dist/extraction/languages/dart.d.ts.map +0 -1
  594. package/dist/extraction/languages/dart.js +0 -374
  595. package/dist/extraction/languages/dart.js.map +0 -1
  596. package/dist/extraction/languages/go.d.ts +0 -3
  597. package/dist/extraction/languages/go.d.ts.map +0 -1
  598. package/dist/extraction/languages/go.js +0 -111
  599. package/dist/extraction/languages/go.js.map +0 -1
  600. package/dist/extraction/languages/index.d.ts +0 -10
  601. package/dist/extraction/languages/index.d.ts.map +0 -1
  602. package/dist/extraction/languages/index.js +0 -53
  603. package/dist/extraction/languages/index.js.map +0 -1
  604. package/dist/extraction/languages/java.d.ts +0 -3
  605. package/dist/extraction/languages/java.d.ts.map +0 -1
  606. package/dist/extraction/languages/java.js +0 -315
  607. package/dist/extraction/languages/java.js.map +0 -1
  608. package/dist/extraction/languages/javascript.d.ts +0 -3
  609. package/dist/extraction/languages/javascript.d.ts.map +0 -1
  610. package/dist/extraction/languages/javascript.js +0 -106
  611. package/dist/extraction/languages/javascript.js.map +0 -1
  612. package/dist/extraction/languages/kotlin.d.ts +0 -3
  613. package/dist/extraction/languages/kotlin.d.ts.map +0 -1
  614. package/dist/extraction/languages/kotlin.js +0 -379
  615. package/dist/extraction/languages/kotlin.js.map +0 -1
  616. package/dist/extraction/languages/lua.d.ts +0 -3
  617. package/dist/extraction/languages/lua.d.ts.map +0 -1
  618. package/dist/extraction/languages/lua.js +0 -150
  619. package/dist/extraction/languages/lua.js.map +0 -1
  620. package/dist/extraction/languages/luau.d.ts +0 -3
  621. package/dist/extraction/languages/luau.d.ts.map +0 -1
  622. package/dist/extraction/languages/luau.js +0 -37
  623. package/dist/extraction/languages/luau.js.map +0 -1
  624. package/dist/extraction/languages/objc.d.ts +0 -3
  625. package/dist/extraction/languages/objc.d.ts.map +0 -1
  626. package/dist/extraction/languages/objc.js +0 -175
  627. package/dist/extraction/languages/objc.js.map +0 -1
  628. package/dist/extraction/languages/pascal.d.ts +0 -3
  629. package/dist/extraction/languages/pascal.d.ts.map +0 -1
  630. package/dist/extraction/languages/pascal.js +0 -77
  631. package/dist/extraction/languages/pascal.js.map +0 -1
  632. package/dist/extraction/languages/php.d.ts +0 -3
  633. package/dist/extraction/languages/php.d.ts.map +0 -1
  634. package/dist/extraction/languages/php.js +0 -196
  635. package/dist/extraction/languages/php.js.map +0 -1
  636. package/dist/extraction/languages/python.d.ts +0 -3
  637. package/dist/extraction/languages/python.d.ts.map +0 -1
  638. package/dist/extraction/languages/python.js +0 -56
  639. package/dist/extraction/languages/python.js.map +0 -1
  640. package/dist/extraction/languages/r.d.ts +0 -3
  641. package/dist/extraction/languages/r.d.ts.map +0 -1
  642. package/dist/extraction/languages/r.js +0 -314
  643. package/dist/extraction/languages/r.js.map +0 -1
  644. package/dist/extraction/languages/ruby.d.ts +0 -3
  645. package/dist/extraction/languages/ruby.d.ts.map +0 -1
  646. package/dist/extraction/languages/ruby.js +0 -149
  647. package/dist/extraction/languages/ruby.js.map +0 -1
  648. package/dist/extraction/languages/rust.d.ts +0 -3
  649. package/dist/extraction/languages/rust.d.ts.map +0 -1
  650. package/dist/extraction/languages/rust.js +0 -142
  651. package/dist/extraction/languages/rust.js.map +0 -1
  652. package/dist/extraction/languages/scala.d.ts +0 -3
  653. package/dist/extraction/languages/scala.d.ts.map +0 -1
  654. package/dist/extraction/languages/scala.js +0 -209
  655. package/dist/extraction/languages/scala.js.map +0 -1
  656. package/dist/extraction/languages/swift.d.ts +0 -3
  657. package/dist/extraction/languages/swift.d.ts.map +0 -1
  658. package/dist/extraction/languages/swift.js +0 -152
  659. package/dist/extraction/languages/swift.js.map +0 -1
  660. package/dist/extraction/languages/typescript.d.ts +0 -16
  661. package/dist/extraction/languages/typescript.d.ts.map +0 -1
  662. package/dist/extraction/languages/typescript.js +0 -167
  663. package/dist/extraction/languages/typescript.js.map +0 -1
  664. package/dist/extraction/liquid-extractor.d.ts +0 -59
  665. package/dist/extraction/liquid-extractor.d.ts.map +0 -1
  666. package/dist/extraction/liquid-extractor.js +0 -357
  667. package/dist/extraction/liquid-extractor.js.map +0 -1
  668. package/dist/extraction/mybatis-extractor.d.ts +0 -48
  669. package/dist/extraction/mybatis-extractor.d.ts.map +0 -1
  670. package/dist/extraction/mybatis-extractor.js +0 -198
  671. package/dist/extraction/mybatis-extractor.js.map +0 -1
  672. package/dist/extraction/parse-worker.d.ts +0 -8
  673. package/dist/extraction/parse-worker.d.ts.map +0 -1
  674. package/dist/extraction/parse-worker.js +0 -97
  675. package/dist/extraction/parse-worker.js.map +0 -1
  676. package/dist/extraction/razor-extractor.d.ts +0 -42
  677. package/dist/extraction/razor-extractor.d.ts.map +0 -1
  678. package/dist/extraction/razor-extractor.js +0 -285
  679. package/dist/extraction/razor-extractor.js.map +0 -1
  680. package/dist/extraction/svelte-extractor.d.ts +0 -56
  681. package/dist/extraction/svelte-extractor.d.ts.map +0 -1
  682. package/dist/extraction/svelte-extractor.js +0 -275
  683. package/dist/extraction/svelte-extractor.js.map +0 -1
  684. package/dist/extraction/tree-sitter-helpers.d.ts +0 -28
  685. package/dist/extraction/tree-sitter-helpers.d.ts.map +0 -1
  686. package/dist/extraction/tree-sitter-helpers.js +0 -152
  687. package/dist/extraction/tree-sitter-helpers.js.map +0 -1
  688. package/dist/extraction/tree-sitter-types.d.ts +0 -239
  689. package/dist/extraction/tree-sitter-types.d.ts.map +0 -1
  690. package/dist/extraction/tree-sitter-types.js +0 -10
  691. package/dist/extraction/tree-sitter-types.js.map +0 -1
  692. package/dist/extraction/tree-sitter.d.ts +0 -647
  693. package/dist/extraction/tree-sitter.d.ts.map +0 -1
  694. package/dist/extraction/tree-sitter.js +0 -5592
  695. package/dist/extraction/tree-sitter.js.map +0 -1
  696. package/dist/extraction/vue-extractor.d.ts +0 -51
  697. package/dist/extraction/vue-extractor.d.ts.map +0 -1
  698. package/dist/extraction/vue-extractor.js +0 -254
  699. package/dist/extraction/vue-extractor.js.map +0 -1
  700. package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  701. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  702. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  703. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  704. package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  705. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  706. package/dist/extraction/wasm-runtime-flags.d.ts +0 -38
  707. package/dist/extraction/wasm-runtime-flags.d.ts.map +0 -1
  708. package/dist/extraction/wasm-runtime-flags.js +0 -106
  709. package/dist/extraction/wasm-runtime-flags.js.map +0 -1
  710. package/dist/graph/index.d.ts +0 -8
  711. package/dist/graph/index.d.ts.map +0 -1
  712. package/dist/graph/index.js +0 -13
  713. package/dist/graph/index.js.map +0 -1
  714. package/dist/graph/queries.d.ts +0 -106
  715. package/dist/graph/queries.d.ts.map +0 -1
  716. package/dist/graph/queries.js +0 -339
  717. package/dist/graph/queries.js.map +0 -1
  718. package/dist/graph/traversal.d.ts +0 -127
  719. package/dist/graph/traversal.d.ts.map +0 -1
  720. package/dist/graph/traversal.js +0 -540
  721. package/dist/graph/traversal.js.map +0 -1
  722. package/dist/index.d.ts +0 -563
  723. package/dist/index.d.ts.map +0 -1
  724. package/dist/index.js +0 -1041
  725. package/dist/index.js.map +0 -1
  726. package/dist/installer/claude-assets.d.ts +0 -45
  727. package/dist/installer/claude-assets.d.ts.map +0 -1
  728. package/dist/installer/claude-assets.js +0 -144
  729. package/dist/installer/claude-assets.js.map +0 -1
  730. package/dist/installer/config-writer.d.ts +0 -28
  731. package/dist/installer/config-writer.d.ts.map +0 -1
  732. package/dist/installer/config-writer.js +0 -91
  733. package/dist/installer/config-writer.js.map +0 -1
  734. package/dist/installer/index.d.ts +0 -101
  735. package/dist/installer/index.d.ts.map +0 -1
  736. package/dist/installer/index.js +0 -692
  737. package/dist/installer/index.js.map +0 -1
  738. package/dist/installer/instructions-template.d.ts +0 -41
  739. package/dist/installer/instructions-template.d.ts.map +0 -1
  740. package/dist/installer/instructions-template.js +0 -53
  741. package/dist/installer/instructions-template.js.map +0 -1
  742. package/dist/installer/targets/antigravity.d.ts +0 -57
  743. package/dist/installer/targets/antigravity.d.ts.map +0 -1
  744. package/dist/installer/targets/antigravity.js +0 -308
  745. package/dist/installer/targets/antigravity.js.map +0 -1
  746. package/dist/installer/targets/claude.d.ts +0 -81
  747. package/dist/installer/targets/claude.d.ts.map +0 -1
  748. package/dist/installer/targets/claude.js +0 -617
  749. package/dist/installer/targets/claude.js.map +0 -1
  750. package/dist/installer/targets/codex.d.ts +0 -18
  751. package/dist/installer/targets/codex.d.ts.map +0 -1
  752. package/dist/installer/targets/codex.js +0 -185
  753. package/dist/installer/targets/codex.js.map +0 -1
  754. package/dist/installer/targets/cursor.d.ts +0 -35
  755. package/dist/installer/targets/cursor.d.ts.map +0 -1
  756. package/dist/installer/targets/cursor.js +0 -254
  757. package/dist/installer/targets/cursor.js.map +0 -1
  758. package/dist/installer/targets/gemini.d.ts +0 -26
  759. package/dist/installer/targets/gemini.d.ts.map +0 -1
  760. package/dist/installer/targets/gemini.js +0 -165
  761. package/dist/installer/targets/gemini.js.map +0 -1
  762. package/dist/installer/targets/hermes.d.ts +0 -18
  763. package/dist/installer/targets/hermes.d.ts.map +0 -1
  764. package/dist/installer/targets/hermes.js +0 -359
  765. package/dist/installer/targets/hermes.js.map +0 -1
  766. package/dist/installer/targets/kiro.d.ts +0 -27
  767. package/dist/installer/targets/kiro.d.ts.map +0 -1
  768. package/dist/installer/targets/kiro.js +0 -178
  769. package/dist/installer/targets/kiro.js.map +0 -1
  770. package/dist/installer/targets/opencode.d.ts +0 -38
  771. package/dist/installer/targets/opencode.d.ts.map +0 -1
  772. package/dist/installer/targets/opencode.js +0 -288
  773. package/dist/installer/targets/opencode.js.map +0 -1
  774. package/dist/installer/targets/registry.d.ts +0 -35
  775. package/dist/installer/targets/registry.d.ts.map +0 -1
  776. package/dist/installer/targets/registry.js +0 -91
  777. package/dist/installer/targets/registry.js.map +0 -1
  778. package/dist/installer/targets/shared.d.ts +0 -101
  779. package/dist/installer/targets/shared.d.ts.map +0 -1
  780. package/dist/installer/targets/shared.js +0 -264
  781. package/dist/installer/targets/shared.js.map +0 -1
  782. package/dist/installer/targets/toml.d.ts +0 -52
  783. package/dist/installer/targets/toml.d.ts.map +0 -1
  784. package/dist/installer/targets/toml.js +0 -147
  785. package/dist/installer/targets/toml.js.map +0 -1
  786. package/dist/installer/targets/types.d.ts +0 -108
  787. package/dist/installer/targets/types.d.ts.map +0 -1
  788. package/dist/installer/targets/types.js +0 -16
  789. package/dist/installer/targets/types.js.map +0 -1
  790. package/dist/markdown/cli.d.ts +0 -16
  791. package/dist/markdown/cli.d.ts.map +0 -1
  792. package/dist/markdown/cli.js +0 -575
  793. package/dist/markdown/cli.js.map +0 -1
  794. package/dist/markdown/constants.d.ts +0 -22
  795. package/dist/markdown/constants.d.ts.map +0 -1
  796. package/dist/markdown/constants.js +0 -71
  797. package/dist/markdown/constants.js.map +0 -1
  798. package/dist/markdown/dedup.d.ts.map +0 -1
  799. package/dist/markdown/dedup.js.map +0 -1
  800. package/dist/markdown/errors.d.ts +0 -22
  801. package/dist/markdown/errors.d.ts.map +0 -1
  802. package/dist/markdown/errors.js +0 -45
  803. package/dist/markdown/errors.js.map +0 -1
  804. package/dist/markdown/extractor.d.ts.map +0 -1
  805. package/dist/markdown/extractor.js.map +0 -1
  806. package/dist/markdown/frontmatter-parser.d.ts +0 -47
  807. package/dist/markdown/frontmatter-parser.d.ts.map +0 -1
  808. package/dist/markdown/frontmatter-parser.js +0 -199
  809. package/dist/markdown/frontmatter-parser.js.map +0 -1
  810. package/dist/markdown/indexer.d.ts +0 -34
  811. package/dist/markdown/indexer.d.ts.map +0 -1
  812. package/dist/markdown/indexer.js +0 -256
  813. package/dist/markdown/indexer.js.map +0 -1
  814. package/dist/markdown/mcp-tools.d.ts +0 -33
  815. package/dist/markdown/mcp-tools.d.ts.map +0 -1
  816. package/dist/markdown/mcp-tools.js +0 -300
  817. package/dist/markdown/mcp-tools.js.map +0 -1
  818. package/dist/markdown/query.d.ts +0 -108
  819. package/dist/markdown/query.d.ts.map +0 -1
  820. package/dist/markdown/query.js +0 -570
  821. package/dist/markdown/query.js.map +0 -1
  822. package/dist/markdown/schema-bootstrap.d.ts +0 -40
  823. package/dist/markdown/schema-bootstrap.d.ts.map +0 -1
  824. package/dist/markdown/schema-bootstrap.js +0 -85
  825. package/dist/markdown/schema-bootstrap.js.map +0 -1
  826. package/dist/markdown/schema.sql +0 -124
  827. package/dist/markdown/store.d.ts.map +0 -1
  828. package/dist/markdown/store.js.map +0 -1
  829. package/dist/markdown/summary-extractor.d.ts.map +0 -1
  830. package/dist/markdown/summary-extractor.js.map +0 -1
  831. package/dist/markdown/types.d.ts +0 -159
  832. package/dist/markdown/types.d.ts.map +0 -1
  833. package/dist/markdown/types.js.map +0 -1
  834. package/dist/markdown/validator.d.ts +0 -44
  835. package/dist/markdown/validator.d.ts.map +0 -1
  836. package/dist/markdown/validator.js +0 -95
  837. package/dist/markdown/validator.js.map +0 -1
  838. package/dist/mcp/daemon-manager.d.ts +0 -42
  839. package/dist/mcp/daemon-manager.d.ts.map +0 -1
  840. package/dist/mcp/daemon-manager.js +0 -129
  841. package/dist/mcp/daemon-manager.js.map +0 -1
  842. package/dist/mcp/daemon-paths.d.ts +0 -46
  843. package/dist/mcp/daemon-paths.d.ts.map +0 -1
  844. package/dist/mcp/daemon-paths.js +0 -125
  845. package/dist/mcp/daemon-paths.js.map +0 -1
  846. package/dist/mcp/daemon-registry.d.ts +0 -47
  847. package/dist/mcp/daemon-registry.d.ts.map +0 -1
  848. package/dist/mcp/daemon-registry.js +0 -229
  849. package/dist/mcp/daemon-registry.js.map +0 -1
  850. package/dist/mcp/daemon.d.ts +0 -220
  851. package/dist/mcp/daemon.d.ts.map +0 -1
  852. package/dist/mcp/daemon.js +0 -637
  853. package/dist/mcp/daemon.js.map +0 -1
  854. package/dist/mcp/dynamic-boundaries.d.ts +0 -41
  855. package/dist/mcp/dynamic-boundaries.d.ts.map +0 -1
  856. package/dist/mcp/dynamic-boundaries.js +0 -359
  857. package/dist/mcp/dynamic-boundaries.js.map +0 -1
  858. package/dist/mcp/engine.d.ts +0 -105
  859. package/dist/mcp/engine.d.ts.map +0 -1
  860. package/dist/mcp/engine.js +0 -278
  861. package/dist/mcp/engine.js.map +0 -1
  862. package/dist/mcp/index.d.ts +0 -113
  863. package/dist/mcp/index.d.ts.map +0 -1
  864. package/dist/mcp/index.js +0 -499
  865. package/dist/mcp/index.js.map +0 -1
  866. package/dist/mcp/liveness-watchdog.d.ts +0 -18
  867. package/dist/mcp/liveness-watchdog.d.ts.map +0 -1
  868. package/dist/mcp/liveness-watchdog.js +0 -207
  869. package/dist/mcp/liveness-watchdog.js.map +0 -1
  870. package/dist/mcp/ppid-watchdog.d.ts +0 -44
  871. package/dist/mcp/ppid-watchdog.d.ts.map +0 -1
  872. package/dist/mcp/ppid-watchdog.js +0 -27
  873. package/dist/mcp/ppid-watchdog.js.map +0 -1
  874. package/dist/mcp/proxy.d.ts +0 -87
  875. package/dist/mcp/proxy.d.ts.map +0 -1
  876. package/dist/mcp/proxy.js +0 -641
  877. package/dist/mcp/proxy.js.map +0 -1
  878. package/dist/mcp/server-instructions.d.ts +0 -34
  879. package/dist/mcp/server-instructions.d.ts.map +0 -1
  880. package/dist/mcp/server-instructions.js +0 -106
  881. package/dist/mcp/server-instructions.js.map +0 -1
  882. package/dist/mcp/session.d.ts +0 -79
  883. package/dist/mcp/session.d.ts.map +0 -1
  884. package/dist/mcp/session.js +0 -330
  885. package/dist/mcp/session.js.map +0 -1
  886. package/dist/mcp/stdin-teardown.d.ts +0 -27
  887. package/dist/mcp/stdin-teardown.d.ts.map +0 -1
  888. package/dist/mcp/stdin-teardown.js +0 -49
  889. package/dist/mcp/stdin-teardown.js.map +0 -1
  890. package/dist/mcp/tools.d.ts +0 -547
  891. package/dist/mcp/tools.d.ts.map +0 -1
  892. package/dist/mcp/tools.js +0 -4122
  893. package/dist/mcp/tools.js.map +0 -1
  894. package/dist/mcp/transport.d.ts +0 -188
  895. package/dist/mcp/transport.d.ts.map +0 -1
  896. package/dist/mcp/transport.js +0 -359
  897. package/dist/mcp/transport.js.map +0 -1
  898. package/dist/mcp/version.d.ts +0 -19
  899. package/dist/mcp/version.d.ts.map +0 -1
  900. package/dist/mcp/version.js +0 -71
  901. package/dist/mcp/version.js.map +0 -1
  902. package/dist/project-config.d.ts +0 -36
  903. package/dist/project-config.d.ts.map +0 -1
  904. package/dist/project-config.js +0 -235
  905. package/dist/project-config.js.map +0 -1
  906. package/dist/reasoning/config.d.ts +0 -45
  907. package/dist/reasoning/config.d.ts.map +0 -1
  908. package/dist/reasoning/config.js +0 -171
  909. package/dist/reasoning/config.js.map +0 -1
  910. package/dist/reasoning/credentials.d.ts +0 -5
  911. package/dist/reasoning/credentials.d.ts.map +0 -1
  912. package/dist/reasoning/credentials.js +0 -83
  913. package/dist/reasoning/credentials.js.map +0 -1
  914. package/dist/reasoning/login.d.ts +0 -21
  915. package/dist/reasoning/login.d.ts.map +0 -1
  916. package/dist/reasoning/login.js +0 -85
  917. package/dist/reasoning/login.js.map +0 -1
  918. package/dist/reasoning/reasoner.d.ts +0 -43
  919. package/dist/reasoning/reasoner.d.ts.map +0 -1
  920. package/dist/reasoning/reasoner.js +0 -308
  921. package/dist/reasoning/reasoner.js.map +0 -1
  922. package/dist/resolution/c-fnptr-synthesizer.d.ts +0 -33
  923. package/dist/resolution/c-fnptr-synthesizer.d.ts.map +0 -1
  924. package/dist/resolution/c-fnptr-synthesizer.js +0 -352
  925. package/dist/resolution/c-fnptr-synthesizer.js.map +0 -1
  926. package/dist/resolution/callback-synthesizer.d.ts +0 -15
  927. package/dist/resolution/callback-synthesizer.d.ts.map +0 -1
  928. package/dist/resolution/callback-synthesizer.js +0 -2926
  929. package/dist/resolution/callback-synthesizer.js.map +0 -1
  930. package/dist/resolution/frameworks/astro.d.ts +0 -9
  931. package/dist/resolution/frameworks/astro.d.ts.map +0 -1
  932. package/dist/resolution/frameworks/astro.js +0 -169
  933. package/dist/resolution/frameworks/astro.js.map +0 -1
  934. package/dist/resolution/frameworks/cargo-workspace.d.ts +0 -18
  935. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +0 -1
  936. package/dist/resolution/frameworks/cargo-workspace.js +0 -225
  937. package/dist/resolution/frameworks/cargo-workspace.js.map +0 -1
  938. package/dist/resolution/frameworks/csharp.d.ts +0 -8
  939. package/dist/resolution/frameworks/csharp.d.ts.map +0 -1
  940. package/dist/resolution/frameworks/csharp.js +0 -241
  941. package/dist/resolution/frameworks/csharp.js.map +0 -1
  942. package/dist/resolution/frameworks/drupal.d.ts +0 -51
  943. package/dist/resolution/frameworks/drupal.d.ts.map +0 -1
  944. package/dist/resolution/frameworks/drupal.js +0 -367
  945. package/dist/resolution/frameworks/drupal.js.map +0 -1
  946. package/dist/resolution/frameworks/expo-modules.d.ts +0 -3
  947. package/dist/resolution/frameworks/expo-modules.d.ts.map +0 -1
  948. package/dist/resolution/frameworks/expo-modules.js +0 -148
  949. package/dist/resolution/frameworks/expo-modules.js.map +0 -1
  950. package/dist/resolution/frameworks/express.d.ts +0 -8
  951. package/dist/resolution/frameworks/express.d.ts.map +0 -1
  952. package/dist/resolution/frameworks/express.js +0 -308
  953. package/dist/resolution/frameworks/express.js.map +0 -1
  954. package/dist/resolution/frameworks/fabric.d.ts +0 -3
  955. package/dist/resolution/frameworks/fabric.d.ts.map +0 -1
  956. package/dist/resolution/frameworks/fabric.js +0 -354
  957. package/dist/resolution/frameworks/fabric.js.map +0 -1
  958. package/dist/resolution/frameworks/go.d.ts +0 -8
  959. package/dist/resolution/frameworks/go.d.ts.map +0 -1
  960. package/dist/resolution/frameworks/go.js +0 -161
  961. package/dist/resolution/frameworks/go.js.map +0 -1
  962. package/dist/resolution/frameworks/goframe.d.ts +0 -41
  963. package/dist/resolution/frameworks/goframe.d.ts.map +0 -1
  964. package/dist/resolution/frameworks/goframe.js +0 -112
  965. package/dist/resolution/frameworks/goframe.js.map +0 -1
  966. package/dist/resolution/frameworks/index.d.ts +0 -50
  967. package/dist/resolution/frameworks/index.d.ts.map +0 -1
  968. package/dist/resolution/frameworks/index.js +0 -169
  969. package/dist/resolution/frameworks/index.js.map +0 -1
  970. package/dist/resolution/frameworks/java.d.ts +0 -8
  971. package/dist/resolution/frameworks/java.d.ts.map +0 -1
  972. package/dist/resolution/frameworks/java.js +0 -509
  973. package/dist/resolution/frameworks/java.js.map +0 -1
  974. package/dist/resolution/frameworks/laravel.d.ts +0 -13
  975. package/dist/resolution/frameworks/laravel.d.ts.map +0 -1
  976. package/dist/resolution/frameworks/laravel.js +0 -257
  977. package/dist/resolution/frameworks/laravel.js.map +0 -1
  978. package/dist/resolution/frameworks/nestjs.d.ts +0 -26
  979. package/dist/resolution/frameworks/nestjs.d.ts.map +0 -1
  980. package/dist/resolution/frameworks/nestjs.js +0 -698
  981. package/dist/resolution/frameworks/nestjs.js.map +0 -1
  982. package/dist/resolution/frameworks/play.d.ts +0 -19
  983. package/dist/resolution/frameworks/play.d.ts.map +0 -1
  984. package/dist/resolution/frameworks/play.js +0 -111
  985. package/dist/resolution/frameworks/play.js.map +0 -1
  986. package/dist/resolution/frameworks/python.d.ts +0 -10
  987. package/dist/resolution/frameworks/python.d.ts.map +0 -1
  988. package/dist/resolution/frameworks/python.js +0 -400
  989. package/dist/resolution/frameworks/python.js.map +0 -1
  990. package/dist/resolution/frameworks/react-native.d.ts +0 -3
  991. package/dist/resolution/frameworks/react-native.d.ts.map +0 -1
  992. package/dist/resolution/frameworks/react-native.js +0 -410
  993. package/dist/resolution/frameworks/react-native.js.map +0 -1
  994. package/dist/resolution/frameworks/react.d.ts +0 -8
  995. package/dist/resolution/frameworks/react.d.ts.map +0 -1
  996. package/dist/resolution/frameworks/react.js +0 -334
  997. package/dist/resolution/frameworks/react.js.map +0 -1
  998. package/dist/resolution/frameworks/ruby.d.ts +0 -8
  999. package/dist/resolution/frameworks/ruby.d.ts.map +0 -1
  1000. package/dist/resolution/frameworks/ruby.js +0 -302
  1001. package/dist/resolution/frameworks/ruby.js.map +0 -1
  1002. package/dist/resolution/frameworks/rust.d.ts +0 -8
  1003. package/dist/resolution/frameworks/rust.d.ts.map +0 -1
  1004. package/dist/resolution/frameworks/rust.js +0 -304
  1005. package/dist/resolution/frameworks/rust.js.map +0 -1
  1006. package/dist/resolution/frameworks/svelte.d.ts +0 -9
  1007. package/dist/resolution/frameworks/svelte.d.ts.map +0 -1
  1008. package/dist/resolution/frameworks/svelte.js +0 -253
  1009. package/dist/resolution/frameworks/svelte.js.map +0 -1
  1010. package/dist/resolution/frameworks/swift-objc.d.ts +0 -37
  1011. package/dist/resolution/frameworks/swift-objc.d.ts.map +0 -1
  1012. package/dist/resolution/frameworks/swift-objc.js +0 -252
  1013. package/dist/resolution/frameworks/swift-objc.js.map +0 -1
  1014. package/dist/resolution/frameworks/swift.d.ts +0 -10
  1015. package/dist/resolution/frameworks/swift.d.ts.map +0 -1
  1016. package/dist/resolution/frameworks/swift.js +0 -400
  1017. package/dist/resolution/frameworks/swift.js.map +0 -1
  1018. package/dist/resolution/frameworks/vue.d.ts +0 -9
  1019. package/dist/resolution/frameworks/vue.d.ts.map +0 -1
  1020. package/dist/resolution/frameworks/vue.js +0 -303
  1021. package/dist/resolution/frameworks/vue.js.map +0 -1
  1022. package/dist/resolution/go-module.d.ts +0 -26
  1023. package/dist/resolution/go-module.d.ts.map +0 -1
  1024. package/dist/resolution/go-module.js +0 -78
  1025. package/dist/resolution/go-module.js.map +0 -1
  1026. package/dist/resolution/goframe-synthesizer.d.ts +0 -28
  1027. package/dist/resolution/goframe-synthesizer.d.ts.map +0 -1
  1028. package/dist/resolution/goframe-synthesizer.js +0 -158
  1029. package/dist/resolution/goframe-synthesizer.js.map +0 -1
  1030. package/dist/resolution/import-resolver.d.ts +0 -78
  1031. package/dist/resolution/import-resolver.d.ts.map +0 -1
  1032. package/dist/resolution/import-resolver.js +0 -1849
  1033. package/dist/resolution/import-resolver.js.map +0 -1
  1034. package/dist/resolution/index.d.ts +0 -196
  1035. package/dist/resolution/index.d.ts.map +0 -1
  1036. package/dist/resolution/index.js +0 -1341
  1037. package/dist/resolution/index.js.map +0 -1
  1038. package/dist/resolution/lru-cache.d.ts +0 -24
  1039. package/dist/resolution/lru-cache.d.ts.map +0 -1
  1040. package/dist/resolution/lru-cache.js +0 -62
  1041. package/dist/resolution/lru-cache.js.map +0 -1
  1042. package/dist/resolution/name-matcher.d.ts +0 -93
  1043. package/dist/resolution/name-matcher.d.ts.map +0 -1
  1044. package/dist/resolution/name-matcher.js +0 -1212
  1045. package/dist/resolution/name-matcher.js.map +0 -1
  1046. package/dist/resolution/path-aliases.d.ts +0 -68
  1047. package/dist/resolution/path-aliases.d.ts.map +0 -1
  1048. package/dist/resolution/path-aliases.js +0 -238
  1049. package/dist/resolution/path-aliases.js.map +0 -1
  1050. package/dist/resolution/scope-index.d.ts +0 -86
  1051. package/dist/resolution/scope-index.d.ts.map +0 -1
  1052. package/dist/resolution/scope-index.js +0 -143
  1053. package/dist/resolution/scope-index.js.map +0 -1
  1054. package/dist/resolution/stdlib-blocklist.d.ts +0 -53
  1055. package/dist/resolution/stdlib-blocklist.d.ts.map +0 -1
  1056. package/dist/resolution/stdlib-blocklist.js +0 -143
  1057. package/dist/resolution/stdlib-blocklist.js.map +0 -1
  1058. package/dist/resolution/strip-comments.d.ts +0 -27
  1059. package/dist/resolution/strip-comments.d.ts.map +0 -1
  1060. package/dist/resolution/strip-comments.js +0 -443
  1061. package/dist/resolution/strip-comments.js.map +0 -1
  1062. package/dist/resolution/swift-objc-bridge.d.ts +0 -134
  1063. package/dist/resolution/swift-objc-bridge.d.ts.map +0 -1
  1064. package/dist/resolution/swift-objc-bridge.js +0 -256
  1065. package/dist/resolution/swift-objc-bridge.js.map +0 -1
  1066. package/dist/resolution/types.d.ts +0 -233
  1067. package/dist/resolution/types.d.ts.map +0 -1
  1068. package/dist/resolution/types.js +0 -8
  1069. package/dist/resolution/types.js.map +0 -1
  1070. package/dist/resolution/workspace-packages.d.ts +0 -48
  1071. package/dist/resolution/workspace-packages.d.ts.map +0 -1
  1072. package/dist/resolution/workspace-packages.js +0 -208
  1073. package/dist/resolution/workspace-packages.js.map +0 -1
  1074. package/dist/search/ast-helpers.d.ts +0 -42
  1075. package/dist/search/ast-helpers.d.ts.map +0 -1
  1076. package/dist/search/ast-helpers.js +0 -106
  1077. package/dist/search/ast-helpers.js.map +0 -1
  1078. package/dist/search/call-sites.d.ts +0 -398
  1079. package/dist/search/call-sites.d.ts.map +0 -1
  1080. package/dist/search/call-sites.js +0 -1433
  1081. package/dist/search/call-sites.js.map +0 -1
  1082. package/dist/search/context.d.ts +0 -134
  1083. package/dist/search/context.d.ts.map +0 -1
  1084. package/dist/search/context.js +0 -575
  1085. package/dist/search/context.js.map +0 -1
  1086. package/dist/search/impact.d.ts +0 -139
  1087. package/dist/search/impact.d.ts.map +0 -1
  1088. package/dist/search/impact.js +0 -646
  1089. package/dist/search/impact.js.map +0 -1
  1090. package/dist/search/query-parser.d.ts +0 -57
  1091. package/dist/search/query-parser.d.ts.map +0 -1
  1092. package/dist/search/query-parser.js +0 -177
  1093. package/dist/search/query-parser.js.map +0 -1
  1094. package/dist/search/query-utils.d.ts +0 -87
  1095. package/dist/search/query-utils.d.ts.map +0 -1
  1096. package/dist/search/query-utils.js +0 -449
  1097. package/dist/search/query-utils.js.map +0 -1
  1098. package/dist/search/related.d.ts +0 -178
  1099. package/dist/search/related.d.ts.map +0 -1
  1100. package/dist/search/related.js +0 -667
  1101. package/dist/search/related.js.map +0 -1
  1102. package/dist/search/slice.d.ts +0 -148
  1103. package/dist/search/slice.d.ts.map +0 -1
  1104. package/dist/search/slice.js +0 -460
  1105. package/dist/search/slice.js.map +0 -1
  1106. package/dist/search/snr-constants.d.ts +0 -41
  1107. package/dist/search/snr-constants.d.ts.map +0 -1
  1108. package/dist/search/snr-constants.js +0 -44
  1109. package/dist/search/snr-constants.js.map +0 -1
  1110. package/dist/search/types.d.ts +0 -28
  1111. package/dist/search/types.d.ts.map +0 -1
  1112. package/dist/search/types.js +0 -12
  1113. package/dist/search/types.js.map +0 -1
  1114. package/dist/sync/git-hooks.d.ts +0 -45
  1115. package/dist/sync/git-hooks.d.ts.map +0 -1
  1116. package/dist/sync/git-hooks.js +0 -225
  1117. package/dist/sync/git-hooks.js.map +0 -1
  1118. package/dist/sync/index.d.ts +0 -19
  1119. package/dist/sync/index.d.ts.map +0 -1
  1120. package/dist/sync/index.js +0 -35
  1121. package/dist/sync/index.js.map +0 -1
  1122. package/dist/sync/watch-policy.d.ts +0 -48
  1123. package/dist/sync/watch-policy.d.ts.map +0 -1
  1124. package/dist/sync/watch-policy.js +0 -124
  1125. package/dist/sync/watch-policy.js.map +0 -1
  1126. package/dist/sync/watcher.d.ts +0 -350
  1127. package/dist/sync/watcher.d.ts.map +0 -1
  1128. package/dist/sync/watcher.js +0 -811
  1129. package/dist/sync/watcher.js.map +0 -1
  1130. package/dist/sync/worktree.d.ts +0 -54
  1131. package/dist/sync/worktree.d.ts.map +0 -1
  1132. package/dist/sync/worktree.js +0 -137
  1133. package/dist/sync/worktree.js.map +0 -1
  1134. package/dist/telemetry/index.d.ts +0 -143
  1135. package/dist/telemetry/index.d.ts.map +0 -1
  1136. package/dist/telemetry/index.js +0 -541
  1137. package/dist/telemetry/index.js.map +0 -1
  1138. package/dist/timeline/bash-semantics.d.ts.map +0 -1
  1139. package/dist/timeline/bash-semantics.js.map +0 -1
  1140. package/dist/timeline/cli.d.ts.map +0 -1
  1141. package/dist/timeline/cli.js.map +0 -1
  1142. package/dist/timeline/constants.d.ts +0 -62
  1143. package/dist/timeline/constants.d.ts.map +0 -1
  1144. package/dist/timeline/constants.js +0 -73
  1145. package/dist/timeline/constants.js.map +0 -1
  1146. package/dist/timeline/errors.d.ts.map +0 -1
  1147. package/dist/timeline/errors.js.map +0 -1
  1148. package/dist/timeline/hook-runner.d.ts.map +0 -1
  1149. package/dist/timeline/hook-runner.js.map +0 -1
  1150. package/dist/timeline/hooks.d.ts.map +0 -1
  1151. package/dist/timeline/hooks.js.map +0 -1
  1152. package/dist/timeline/index.d.ts.map +0 -1
  1153. package/dist/timeline/index.js.map +0 -1
  1154. package/dist/timeline/indexer.d.ts.map +0 -1
  1155. package/dist/timeline/indexer.js.map +0 -1
  1156. package/dist/timeline/installer.d.ts.map +0 -1
  1157. package/dist/timeline/installer.js.map +0 -1
  1158. package/dist/timeline/payload.d.ts.map +0 -1
  1159. package/dist/timeline/payload.js.map +0 -1
  1160. package/dist/timeline/post-tool-summary.d.ts.map +0 -1
  1161. package/dist/timeline/post-tool-summary.js.map +0 -1
  1162. package/dist/timeline/recorder.d.ts.map +0 -1
  1163. package/dist/timeline/recorder.js.map +0 -1
  1164. package/dist/timeline/schema-bootstrap.d.ts +0 -42
  1165. package/dist/timeline/schema-bootstrap.d.ts.map +0 -1
  1166. package/dist/timeline/schema-bootstrap.js +0 -81
  1167. package/dist/timeline/schema-bootstrap.js.map +0 -1
  1168. package/dist/timeline/store.d.ts.map +0 -1
  1169. package/dist/timeline/store.js.map +0 -1
  1170. package/dist/timeline/types.d.ts.map +0 -1
  1171. package/dist/timeline/types.js.map +0 -1
  1172. package/dist/types.d.ts +0 -392
  1173. package/dist/types.d.ts.map +0 -1
  1174. package/dist/types.js +0 -81
  1175. package/dist/types.js.map +0 -1
  1176. package/dist/ui/glyphs.d.ts +0 -42
  1177. package/dist/ui/glyphs.d.ts.map +0 -1
  1178. package/dist/ui/glyphs.js +0 -78
  1179. package/dist/ui/glyphs.js.map +0 -1
  1180. package/dist/ui/shimmer-progress.d.ts +0 -11
  1181. package/dist/ui/shimmer-progress.d.ts.map +0 -1
  1182. package/dist/ui/shimmer-progress.js +0 -90
  1183. package/dist/ui/shimmer-progress.js.map +0 -1
  1184. package/dist/ui/shimmer-worker.d.ts +0 -2
  1185. package/dist/ui/shimmer-worker.d.ts.map +0 -1
  1186. package/dist/ui/shimmer-worker.js +0 -118
  1187. package/dist/ui/shimmer-worker.js.map +0 -1
  1188. package/dist/ui/types.d.ts +0 -17
  1189. package/dist/ui/types.d.ts.map +0 -1
  1190. package/dist/ui/types.js +0 -3
  1191. package/dist/ui/types.js.map +0 -1
  1192. package/dist/upgrade/index.d.ts +0 -132
  1193. package/dist/upgrade/index.d.ts.map +0 -1
  1194. package/dist/upgrade/index.js +0 -498
  1195. package/dist/upgrade/index.js.map +0 -1
  1196. package/dist/utils.d.ts +0 -224
  1197. package/dist/utils.d.ts.map +0 -1
  1198. package/dist/utils.js +0 -583
  1199. package/dist/utils.js.map +0 -1
  1200. package/scripts/add-lang/bench.sh +0 -60
  1201. package/scripts/add-lang/check-grammar.mjs +0 -75
  1202. package/scripts/add-lang/dump-ast.mjs +0 -103
  1203. package/scripts/add-lang/verify-extraction.mjs +0 -70
  1204. package/scripts/agent-eval/ab-adoption.sh +0 -91
  1205. package/scripts/agent-eval/ab-hook.sh +0 -86
  1206. package/scripts/agent-eval/ab-impl.sh +0 -78
  1207. package/scripts/agent-eval/ab-new-vs-baseline.sh +0 -102
  1208. package/scripts/agent-eval/ab-sufficiency.sh +0 -78
  1209. package/scripts/agent-eval/arms-F.sh +0 -21
  1210. package/scripts/agent-eval/arms-matrix.sh +0 -37
  1211. package/scripts/agent-eval/audit.sh +0 -68
  1212. package/scripts/agent-eval/bench-readme.sh +0 -28
  1213. package/scripts/agent-eval/bench-why-repo.sh +0 -22
  1214. package/scripts/agent-eval/block-read-hook.sh +0 -19
  1215. package/scripts/agent-eval/hook-settings.json +0 -15
  1216. package/scripts/agent-eval/itrun.sh +0 -120
  1217. package/scripts/agent-eval/offload-eval-3arm.sh +0 -72
  1218. package/scripts/agent-eval/offload-eval-cost.mjs +0 -133
  1219. package/scripts/agent-eval/offload-eval-effort.mjs +0 -108
  1220. package/scripts/agent-eval/offload-eval-frontload-matrix.sh +0 -25
  1221. package/scripts/agent-eval/offload-eval-frontload.sh +0 -47
  1222. package/scripts/agent-eval/offload-eval-ground-truth.json +0 -18
  1223. package/scripts/agent-eval/offload-eval-hook.mjs +0 -84
  1224. package/scripts/agent-eval/offload-eval-judge.mjs +0 -103
  1225. package/scripts/agent-eval/offload-eval-matrix.sh +0 -20
  1226. package/scripts/agent-eval/offload-eval-metrics.mjs +0 -94
  1227. package/scripts/agent-eval/offload-eval-refs1.sh +0 -50
  1228. package/scripts/agent-eval/offload-eval-setup.sh +0 -24
  1229. package/scripts/agent-eval/offload-eval-styles.sh +0 -72
  1230. package/scripts/agent-eval/offload-eval-summarize.mjs +0 -68
  1231. package/scripts/agent-eval/offload-eval.md +0 -76
  1232. package/scripts/agent-eval/parse-arms.mjs +0 -116
  1233. package/scripts/agent-eval/parse-bench-readme.mjs +0 -84
  1234. package/scripts/agent-eval/parse-run.mjs +0 -45
  1235. package/scripts/agent-eval/parse-session.mjs +0 -93
  1236. package/scripts/agent-eval/probe-context.mjs +0 -21
  1237. package/scripts/agent-eval/probe-explore.mjs +0 -40
  1238. package/scripts/agent-eval/probe-node.mjs +0 -20
  1239. package/scripts/agent-eval/probe-sweep.mjs +0 -119
  1240. package/scripts/agent-eval/probe-trace.mjs +0 -20
  1241. package/scripts/agent-eval/redirect-read-hook.sh +0 -38
  1242. package/scripts/agent-eval/run-agent.sh +0 -34
  1243. package/scripts/agent-eval/run-all.sh +0 -69
  1244. package/scripts/agent-eval/run-arms.sh +0 -56
  1245. package/scripts/agent-eval/seq-matrix.mjs +0 -137
  1246. package/scripts/agent-eval/subagent-token-cost.py +0 -188
  1247. package/scripts/build-bundle.sh +0 -118
  1248. package/scripts/extract-release-notes.mjs +0 -130
  1249. package/scripts/local-install.sh +0 -41
  1250. package/scripts/npm-sdk.js +0 -75
  1251. package/scripts/npm-shim.js +0 -246
  1252. package/scripts/pack-npm.sh +0 -118
  1253. package/scripts/prepare-release.mjs +0 -270
  1254. /package/dist/{dbquery → core/dbquery}/config.d.ts +0 -0
  1255. /package/dist/{dbquery → core/dbquery}/config.js +0 -0
  1256. /package/dist/{dbquery → core/dbquery}/constants.d.ts +0 -0
  1257. /package/dist/{dbquery → core/dbquery}/constants.js +0 -0
  1258. /package/dist/{dbquery → core/dbquery}/drivers/mysql.d.ts +0 -0
  1259. /package/dist/{dbquery → core/dbquery}/drivers/mysql.js +0 -0
  1260. /package/dist/{dbquery → core/dbquery}/drivers/postgres.d.ts +0 -0
  1261. /package/dist/{dbquery → core/dbquery}/drivers/postgres.js +0 -0
  1262. /package/dist/{dbquery → core/dbquery}/executor.d.ts +0 -0
  1263. /package/dist/{dbquery → core/dbquery}/executor.js +0 -0
  1264. /package/dist/{dbquery → core/dbquery}/format.d.ts +0 -0
  1265. /package/dist/{dbquery → core/dbquery}/format.js +0 -0
  1266. /package/dist/{dbquery → core/dbquery}/identifiers.d.ts +0 -0
  1267. /package/dist/{dbquery → core/dbquery}/identifiers.js +0 -0
  1268. /package/dist/{dbquery → core/dbquery}/index.d.ts +0 -0
  1269. /package/dist/{dbquery → core/dbquery}/index.js +0 -0
  1270. /package/dist/{dbquery → core/dbquery}/logging.d.ts +0 -0
  1271. /package/dist/{dbquery → core/dbquery}/logging.js +0 -0
  1272. /package/dist/{dbquery → core/dbquery}/queries.d.ts +0 -0
  1273. /package/dist/{dbquery → core/dbquery}/queries.js +0 -0
  1274. /package/dist/{dbquery → core/dbquery}/safety.d.ts +0 -0
  1275. /package/dist/{dbquery → core/dbquery}/safety.js +0 -0
  1276. /package/dist/{markdown → core/markdown}/dedup.d.ts +0 -0
  1277. /package/dist/{markdown → core/markdown}/dedup.js +0 -0
  1278. /package/dist/{markdown → core/markdown}/extractor.d.ts +0 -0
  1279. /package/dist/{markdown → core/markdown}/extractor.js +0 -0
  1280. /package/dist/{markdown → core/markdown}/store.d.ts +0 -0
  1281. /package/dist/{markdown → core/markdown}/store.js +0 -0
  1282. /package/dist/{markdown → core/markdown}/summary-extractor.d.ts +0 -0
  1283. /package/dist/{markdown → core/markdown}/summary-extractor.js +0 -0
  1284. /package/dist/{markdown → core/markdown}/types.js +0 -0
  1285. /package/dist/{timeline → core/timeline}/bash-semantics.d.ts +0 -0
  1286. /package/dist/{timeline → core/timeline}/bash-semantics.js +0 -0
  1287. /package/dist/{timeline → core/timeline}/cli.d.ts +0 -0
  1288. /package/dist/{timeline → core/timeline}/cli.js +0 -0
  1289. /package/dist/{timeline → core/timeline}/errors.d.ts +0 -0
  1290. /package/dist/{timeline → core/timeline}/errors.js +0 -0
  1291. /package/dist/{timeline → core/timeline}/hook-runner.d.ts +0 -0
  1292. /package/dist/{timeline → core/timeline}/hook-runner.js +0 -0
  1293. /package/dist/{timeline → core/timeline}/hooks.d.ts +0 -0
  1294. /package/dist/{timeline → core/timeline}/hooks.js +0 -0
  1295. /package/dist/{timeline → core/timeline}/index.d.ts +0 -0
  1296. /package/dist/{timeline → core/timeline}/index.js +0 -0
  1297. /package/dist/{timeline → core/timeline}/indexer.d.ts +0 -0
  1298. /package/dist/{timeline → core/timeline}/indexer.js +0 -0
  1299. /package/dist/{timeline → core/timeline}/installer.d.ts +0 -0
  1300. /package/dist/{timeline → core/timeline}/installer.js +0 -0
  1301. /package/dist/{timeline → core/timeline}/payload.d.ts +0 -0
  1302. /package/dist/{timeline → core/timeline}/payload.js +0 -0
  1303. /package/dist/{timeline → core/timeline}/post-tool-summary.d.ts +0 -0
  1304. /package/dist/{timeline → core/timeline}/post-tool-summary.js +0 -0
  1305. /package/dist/{timeline → core/timeline}/recorder.d.ts +0 -0
  1306. /package/dist/{timeline → core/timeline}/recorder.js +0 -0
  1307. /package/dist/{timeline → core/timeline}/schema.sql +0 -0
  1308. /package/dist/{timeline → core/timeline}/store.d.ts +0 -0
  1309. /package/dist/{timeline → core/timeline}/store.js +0 -0
  1310. /package/dist/{timeline → core/timeline}/types.d.ts +0 -0
  1311. /package/dist/{timeline → core/timeline}/types.js +0 -0
@@ -1,1296 +0,0 @@
1
- "use strict";
2
- /**
3
- * Context Builder
4
- *
5
- * Builds rich context for tasks by combining FTS search with graph traversal.
6
- * Outputs structured context ready to inject into Claude.
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.formatContextAsJson = exports.formatContextAsMarkdown = exports.ContextBuilder = exports.LOW_CONFIDENCE_MARKER = void 0;
43
- exports.createContextBuilder = createContextBuilder;
44
- const fs = __importStar(require("fs"));
45
- const path = __importStar(require("path"));
46
- const formatter_1 = require("./formatter");
47
- const errors_1 = require("../errors");
48
- const utils_1 = require("../utils");
49
- const query_utils_1 = require("../search/query-utils");
50
- const markers_1 = require("./markers");
51
- /**
52
- * Extract likely symbol names from a natural language query
53
- *
54
- * Identifies potential code symbols using patterns:
55
- * - CamelCase: UserService, signInWithGoogle
56
- * - snake_case: user_service, sign_in
57
- * - SCREAMING_SNAKE: MAX_RETRIES
58
- * - dot.notation: app.isPackaged (extracts both sides)
59
- * - Single words that look like identifiers (no spaces, not common English words)
60
- *
61
- * @param query - Natural language query
62
- * @returns Array of potential symbol names
63
- */
64
- function extractSymbolsFromQuery(query) {
65
- const symbols = new Set();
66
- // Extract CamelCase identifiers (2+ chars, starts with letter)
67
- const camelCasePattern = /\b([A-Z][a-z]+(?:[A-Z][a-z]*)*|[a-z]+(?:[A-Z][a-z]*)+)\b/g;
68
- let match;
69
- while ((match = camelCasePattern.exec(query)) !== null) {
70
- if (match[1] && match[1].length >= 2) {
71
- symbols.add(match[1]);
72
- }
73
- }
74
- // Extract snake_case identifiers
75
- const snakeCasePattern = /\b([a-z][a-z0-9]*(?:_[a-z0-9]+)+)\b/gi;
76
- while ((match = snakeCasePattern.exec(query)) !== null) {
77
- if (match[1] && match[1].length >= 3) {
78
- symbols.add(match[1]);
79
- }
80
- }
81
- // Extract SCREAMING_SNAKE_CASE
82
- const screamingPattern = /\b([A-Z][A-Z0-9]*(?:_[A-Z0-9]+)+)\b/g;
83
- while ((match = screamingPattern.exec(query)) !== null) {
84
- if (match[1]) {
85
- symbols.add(match[1]);
86
- }
87
- }
88
- // Extract ALL_CAPS acronyms (2+ chars, e.g., REST, HTTP, LRU, API)
89
- const acronymPattern = /\b([A-Z]{2,})\b/g;
90
- while ((match = acronymPattern.exec(query)) !== null) {
91
- if (match[1]) {
92
- symbols.add(match[1]);
93
- }
94
- }
95
- // Extract dot.notation and split into parts (e.g., "app.isPackaged" -> ["app", "isPackaged"])
96
- const dotPattern = /\b([a-zA-Z][a-zA-Z0-9]*(?:\.[a-zA-Z][a-zA-Z0-9]*)+)\b/g;
97
- while ((match = dotPattern.exec(query)) !== null) {
98
- if (match[1]) {
99
- // Add both the full path and individual parts
100
- symbols.add(match[1]);
101
- const parts = match[1].split('.');
102
- for (const part of parts) {
103
- if (part.length >= 2) {
104
- symbols.add(part);
105
- }
106
- }
107
- }
108
- }
109
- // Extract plain lowercase identifiers (3+ chars, not already matched)
110
- // Catches symbol names like "undo", "redo", "history", "render", "parse"
111
- const lowercasePattern = /\b([a-z][a-z0-9]{2,})\b/g;
112
- while ((match = lowercasePattern.exec(query)) !== null) {
113
- if (match[1]) {
114
- symbols.add(match[1]);
115
- }
116
- }
117
- // Filter out common English words that aren't likely symbol names
118
- const commonWords = new Set([
119
- 'the', 'and', 'for', 'with', 'from', 'this', 'that', 'have', 'been',
120
- 'will', 'would', 'could', 'should', 'does', 'done', 'make', 'made',
121
- 'use', 'used', 'using', 'work', 'works', 'find', 'found', 'show',
122
- 'call', 'called', 'calling', 'get', 'set', 'add', 'all', 'any',
123
- 'how', 'what', 'when', 'where', 'which', 'who', 'why',
124
- 'not', 'but', 'are', 'was', 'were', 'has', 'had', 'its',
125
- 'can', 'did', 'may', 'also', 'into', 'than', 'then', 'them',
126
- 'each', 'other', 'some', 'such', 'only', 'same', 'about',
127
- 'after', 'before', 'between', 'through', 'during', 'without',
128
- 'again', 'further', 'once', 'here', 'there', 'both', 'just',
129
- 'more', 'most', 'very', 'being', 'having', 'doing',
130
- 'system', 'need', 'needs', 'want', 'wants', 'like', 'look',
131
- 'change', 'changes', 'changed', 'changing',
132
- // Common English nouns/verbs that match thousands of unrelated code symbols
133
- 'layer', 'handle', 'handles', 'handling', 'incoming', 'outgoing',
134
- 'data', 'flow', 'flows', 'level', 'levels', 'request', 'requests',
135
- 'response', 'responses', 'implement', 'implements', 'implementation',
136
- 'interface', 'interfaces', 'class', 'classes', 'method', 'methods',
137
- 'trigger', 'triggers', 'affected', 'affect', 'affects',
138
- 'else', 'code', 'failing', 'failed', 'silently', 'decide', 'decides',
139
- 'return', 'returns', 'returned', 'take', 'takes', 'taken',
140
- 'check', 'checks', 'checked', 'create', 'creates', 'created',
141
- 'read', 'reads', 'write', 'writes', 'written',
142
- 'start', 'starts', 'stop', 'stops', 'run', 'runs', 'running',
143
- ]);
144
- return Array.from(symbols).filter(s => !commonWords.has(s.toLowerCase()));
145
- }
146
- /**
147
- * Default options for context building
148
- *
149
- * Tuned for minimal context usage while still providing useful results:
150
- * - Fewer nodes and code blocks by default
151
- * - Smaller code block size limit
152
- * - Shallower traversal
153
- */
154
- const DEFAULT_BUILD_OPTIONS = {
155
- maxNodes: 20, // Reduced from 50 - most tasks don't need 50 symbols
156
- maxCodeBlocks: 5, // Reduced from 10 - only show most relevant code
157
- maxCodeBlockSize: 1500, // Reduced from 2000
158
- includeCode: true,
159
- format: 'markdown',
160
- searchLimit: 3, // Reduced from 5 - fewer entry points
161
- traversalDepth: 1, // Reduced from 2 - shallower graph expansion
162
- minScore: 0.3,
163
- };
164
- /**
165
- * Node kinds that provide high information value in context results.
166
- * Imports/exports are excluded because they have near-zero information density -
167
- * they tell you something exists, not how it works.
168
- */
169
- const HIGH_VALUE_NODE_KINDS = [
170
- 'function', 'method', 'class', 'interface', 'type_alias', 'struct', 'trait',
171
- 'component', 'route', 'variable', 'constant', 'enum', 'module', 'namespace',
172
- ];
173
- /**
174
- * Default options for finding relevant context
175
- */
176
- const DEFAULT_FIND_OPTIONS = {
177
- searchLimit: 3, // Reduced from 5
178
- traversalDepth: 1, // Reduced from 2
179
- maxNodes: 20, // Reduced from 50
180
- minScore: 0.3,
181
- edgeKinds: [],
182
- nodeKinds: HIGH_VALUE_NODE_KINDS, // Filter out imports/exports by default
183
- };
184
- // Re-export the low-confidence sentinel (defined in a dependency-free leaf so
185
- // the MCP layer can import it without pulling this module's deps onto the
186
- // cold-start path). Builder code below uses the imported binding directly.
187
- var markers_2 = require("./markers");
188
- Object.defineProperty(exports, "LOW_CONFIDENCE_MARKER", { enumerable: true, get: function () { return markers_2.LOW_CONFIDENCE_MARKER; } });
189
- /**
190
- * Context Builder
191
- *
192
- * Coordinates semantic search and graph traversal to build
193
- * comprehensive context for tasks.
194
- */
195
- class ContextBuilder {
196
- projectRoot;
197
- queries;
198
- traverser;
199
- constructor(projectRoot, queries, traverser) {
200
- this.projectRoot = projectRoot;
201
- this.queries = queries;
202
- this.traverser = traverser;
203
- }
204
- /**
205
- * Build context for a task
206
- *
207
- * Pipeline:
208
- * 1. Parse task input (string or {title, description})
209
- * 2. Run semantic search to find entry points
210
- * 3. Expand graph around entry points
211
- * 4. Extract code blocks for key nodes
212
- * 5. Format output for Claude
213
- *
214
- * @param input - Task description or object with title/description
215
- * @param options - Build options
216
- * @returns TaskContext (structured) or formatted string
217
- */
218
- async buildContext(input, options = {}) {
219
- const opts = { ...DEFAULT_BUILD_OPTIONS, ...options };
220
- // Parse input
221
- const query = typeof input === 'string' ? input : `${input.title}${input.description ? `: ${input.description}` : ''}`;
222
- // Find relevant context (semantic search + graph expansion)
223
- const subgraph = await this.findRelevantContext(query, {
224
- searchLimit: opts.searchLimit,
225
- traversalDepth: opts.traversalDepth,
226
- maxNodes: opts.maxNodes,
227
- minScore: opts.minScore,
228
- });
229
- // Get entry points (nodes from semantic search)
230
- const entryPoints = this.getEntryPoints(subgraph);
231
- // Extract code blocks for key nodes
232
- const codeBlocks = opts.includeCode
233
- ? await this.extractCodeBlocks(subgraph, opts.maxCodeBlocks, opts.maxCodeBlockSize)
234
- : [];
235
- // Get related files
236
- const relatedFiles = this.getRelatedFiles(subgraph);
237
- // Generate summary
238
- const summary = this.generateSummary(query, subgraph, entryPoints);
239
- // Calculate stats
240
- const stats = {
241
- nodeCount: subgraph.nodes.size,
242
- edgeCount: subgraph.edges.length,
243
- fileCount: relatedFiles.length,
244
- codeBlockCount: codeBlocks.length,
245
- totalCodeSize: codeBlocks.reduce((sum, block) => sum + block.content.length, 0),
246
- };
247
- const context = {
248
- query,
249
- subgraph,
250
- entryPoints,
251
- codeBlocks,
252
- relatedFiles,
253
- summary,
254
- stats,
255
- };
256
- // Return formatted output or raw context
257
- if (opts.format === 'markdown') {
258
- return (0, formatter_1.formatContextAsMarkdown)(context)
259
- + this.buildCallPathsSection(subgraph)
260
- + (subgraph.confidence === 'low' ? this.buildLowConfidenceNote(entryPoints) : '');
261
- }
262
- else if (opts.format === 'json') {
263
- return (0, formatter_1.formatContextAsJson)(context);
264
- }
265
- return context;
266
- }
267
- /**
268
- * Honest handoff appended when retrieval confidence is low (the query matched
269
- * mostly common words). Instead of the usual "this covers the surface" framing
270
- * — which, when wrong, sends the agent off to Read/Grep — it admits the
271
- * uncertainty and routes the agent to the precise tools (explore with real
272
- * symbol names, search, or files to browse the closest areas we *did* surface).
273
- */
274
- buildLowConfidenceNote(entryPoints) {
275
- const dirs = [];
276
- const seen = new Set();
277
- for (const n of entryPoints) {
278
- const slash = n.filePath.lastIndexOf('/');
279
- const dir = slash > 0 ? n.filePath.slice(0, slash) : n.filePath;
280
- if (!seen.has(dir)) {
281
- seen.add(dir);
282
- dirs.push(dir);
283
- }
284
- if (dirs.length >= 4)
285
- break;
286
- }
287
- const dirLine = dirs.length
288
- ? `\n- \`codegraph_files\` a likely area: ${dirs.map(d => `\`${d}\``).join(', ')}`
289
- : '';
290
- return `\n\n${markers_1.LOW_CONFIDENCE_MARKER}\n\n`
291
- + 'This query matched mostly on common words, so the entry points above may '
292
- + 'be off-target — treat them as a starting point, not a complete answer. '
293
- + 'For a reliable result:\n'
294
- + '- `codegraph_explore` with the **exact symbol names** you are after '
295
- + '(class / function / method names), or\n'
296
- + '- `codegraph_search <name>` for one specific symbol'
297
- + dirLine
298
- + '\n\nDo not assume the list above is comprehensive.';
299
- }
300
- /**
301
- * Surface short call-paths among the symbols this context already found,
302
- * derived in-memory from the subgraph's `calls` edges (no extra queries).
303
- *
304
- * This bakes the value of path-finding INTO the always-loaded `context` tool.
305
- * Agents reliably read context's output but do NOT discover/adopt a standalone
306
- * trace tool (in deferred-MCP harnesses they only ToolSearch-select tools they
307
- * already know). Delivering the flow here means "how does X reach Y" is
308
- * answered without the agent needing to find, load, or choose a new tool.
309
- * Chains stop where the static call graph ends (e.g. dynamic dispatch) — that
310
- * truncation is honest, and the agent can codegraph_node the last hop to bridge.
311
- */
312
- buildCallPathsSection(subgraph) {
313
- const adj = new Map();
314
- for (const e of subgraph.edges) {
315
- if (e.kind !== 'calls')
316
- continue;
317
- if (!subgraph.nodes.has(e.source) || !subgraph.nodes.has(e.target))
318
- continue;
319
- const list = adj.get(e.source);
320
- if (list)
321
- list.push(e.target);
322
- else
323
- adj.set(e.source, [e.target]);
324
- }
325
- if (adj.size === 0)
326
- return '';
327
- const MAX_HOPS = 6;
328
- const chains = [];
329
- let budget = 2000; // bound DFS work on dense subgraphs
330
- const dfs = (id, path, seen) => {
331
- if (budget-- <= 0)
332
- return;
333
- const next = (adj.get(id) ?? []).filter((t) => !seen.has(t));
334
- if (next.length === 0 || path.length >= MAX_HOPS) {
335
- if (path.length >= 3)
336
- chains.push([...path]); // >=3 nodes = a real flow, not a single call
337
- return;
338
- }
339
- for (const t of next) {
340
- seen.add(t);
341
- dfs(t, [...path, t], seen);
342
- seen.delete(t);
343
- }
344
- };
345
- const starts = (subgraph.roots.length > 0
346
- ? subgraph.roots.filter((id) => adj.has(id))
347
- : [...adj.keys()]).slice(0, 5);
348
- for (const s of starts)
349
- dfs(s, [s], new Set([s]));
350
- if (chains.length === 0)
351
- return '';
352
- // Keep only chains that connect TWO OR MORE query-relevant symbols (roots).
353
- // A chain from a root into an arbitrary callee (render → onMagicFrameGenerate)
354
- // is structurally valid but tangential to the question; requiring ≥2 roots
355
- // keeps the chain anchored to what the user actually asked about. Rank by
356
- // #roots then length, and drop any that are a sub-path of a longer kept chain.
357
- const rootSet = new Set(subgraph.roots);
358
- const rootCount = (c) => c.reduce((n, id) => n + (rootSet.has(id) ? 1 : 0), 0);
359
- const relevant = chains.filter((c) => rootCount(c) >= 2);
360
- relevant.sort((a, b) => rootCount(b) - rootCount(a) || b.length - a.length);
361
- const kept = [];
362
- for (const c of relevant) {
363
- const key = c.join('>');
364
- if (kept.some((k) => k.join('>').includes(key)))
365
- continue;
366
- kept.push(c);
367
- if (kept.length >= 3)
368
- break;
369
- }
370
- if (kept.length === 0)
371
- return '';
372
- const name = (id) => subgraph.nodes.get(id)?.name ?? id;
373
- // Synthesized (dynamic-dispatch) hops are real `calls` edges but invisible to
374
- // static parsing — mark them inline so the agent sees WHERE the callback was
375
- // wired up (`registered @file:line`) instead of grepping for it. Keyed by
376
- // "source>target".
377
- const synthByPair = new Map();
378
- for (const e of subgraph.edges) {
379
- if (e.kind !== 'calls' || e.provenance !== 'heuristic')
380
- continue;
381
- const m = e.metadata;
382
- if (!m?.synthesizedBy)
383
- continue;
384
- const at = typeof m.registeredAt === 'string' ? ` @${m.registeredAt}` : '';
385
- const label = m.synthesizedBy === 'callback'
386
- ? `callback via ${m.via ? `\`${String(m.via)}\`` : 'registrar'}${at}`
387
- : m.synthesizedBy === 'react-render'
388
- ? `React re-render via setState${at}`
389
- : m.synthesizedBy === 'jsx-render'
390
- ? `renders <${String(m.via || 'child')}>`
391
- : m.synthesizedBy === 'vue-handler'
392
- ? `Vue @${String(m.event || 'event')} handler`
393
- : `event ${m.event ? `\`${String(m.event)}\`` : ''}${at}`;
394
- synthByPair.set(`${e.source}>${e.target}`, label);
395
- }
396
- const renderChain = (c) => {
397
- let s = name(c[0]);
398
- for (let i = 1; i < c.length; i++) {
399
- const synth = synthByPair.get(`${c[i - 1]}>${c[i]}`);
400
- s += synth ? ` →[${synth}] ${name(c[i])}` : ` → ${name(c[i])}`;
401
- }
402
- return s;
403
- };
404
- const hasSynth = kept.some((c) => c.some((_, i) => i > 0 && synthByPair.has(`${c[i - 1]}>${c[i]}`)));
405
- const lines = [
406
- '',
407
- '## Call paths',
408
- '',
409
- 'Execution flow among the key symbols (traced through the call graph):',
410
- '',
411
- ...kept.map((c) => `- ${renderChain(c)}`),
412
- '',
413
- hasSynth
414
- ? '_Hops marked `[callback/event …]` are dynamic dispatch bridged by codegraph (with the registration site); the rest are direct calls. codegraph_node any symbol for its body._'
415
- : '_codegraph_node any symbol above for its source + its own callers/callees._',
416
- ];
417
- return '\n' + lines.join('\n') + '\n';
418
- }
419
- /**
420
- * Find relevant subgraph for a query
421
- *
422
- * Uses hybrid search combining exact symbol lookup with semantic search:
423
- * 1. Extract potential symbol names from query
424
- * 2. Look up exact matches for those symbols (high confidence)
425
- * 3. Use semantic search for concept matching
426
- * 4. Merge results, prioritizing exact matches
427
- * 5. Traverse graph from entry points
428
- *
429
- * @param query - Natural language query
430
- * @param options - Search and traversal options
431
- * @returns Subgraph of relevant nodes and edges
432
- */
433
- async findRelevantContext(query, options = {}) {
434
- const opts = { ...DEFAULT_FIND_OPTIONS, ...options };
435
- // Start with empty subgraph
436
- const nodes = new Map();
437
- const edges = [];
438
- const roots = [];
439
- // Handle empty query - return empty subgraph
440
- if (!query || query.trim().length === 0) {
441
- return { nodes, edges, roots };
442
- }
443
- // === HYBRID SEARCH ===
444
- // Step 1: Extract potential symbol names from query
445
- const symbolsFromQuery = extractSymbolsFromQuery(query);
446
- (0, errors_1.logDebug)('Extracted symbols from query', { query, symbols: symbolsFromQuery });
447
- // Step 2: Look up exact matches for extracted symbols
448
- let exactMatches = [];
449
- if (symbolsFromQuery.length > 0) {
450
- try {
451
- // Get more results so we can apply co-location boosting before trimming
452
- exactMatches = this.queries.findNodesByExactName(symbolsFromQuery, {
453
- limit: Math.ceil(opts.searchLimit * 5),
454
- kinds: opts.nodeKinds && opts.nodeKinds.length > 0 ? opts.nodeKinds : undefined,
455
- });
456
- // Co-location boost: when multiple extracted symbols appear in the same file,
457
- // those results are much more likely to be what the user is looking for.
458
- // E.g., "scrapeLoop" + "run" both in scrape/scrape.go → boost both.
459
- if (exactMatches.length > 1) {
460
- // Build a map of files → how many distinct symbol names matched in that file
461
- const fileSymbolCounts = new Map();
462
- for (const r of exactMatches) {
463
- const names = fileSymbolCounts.get(r.node.filePath) || new Set();
464
- names.add(r.node.name.toLowerCase());
465
- fileSymbolCounts.set(r.node.filePath, names);
466
- }
467
- // Boost results in files where multiple query symbols co-occur
468
- exactMatches = exactMatches.map(r => {
469
- const symbolCount = fileSymbolCounts.get(r.node.filePath)?.size || 1;
470
- return {
471
- ...r,
472
- score: symbolCount > 1 ? r.score + (symbolCount - 1) * 20 : r.score,
473
- };
474
- });
475
- exactMatches.sort((a, b) => b.score - a.score);
476
- }
477
- // Trim back to reasonable size
478
- exactMatches = exactMatches.slice(0, Math.ceil(opts.searchLimit * 2));
479
- (0, errors_1.logDebug)('Exact symbol matches', { count: exactMatches.length });
480
- }
481
- catch (error) {
482
- (0, errors_1.logDebug)('Exact symbol lookup failed', { error: String(error) });
483
- }
484
- }
485
- // Step 2b: Search for extracted symbols as definition (class/interface) prefixes.
486
- // When the user writes "REST", "bulk", or "allocation", they usually mean classes
487
- // like RestController, BulkRequest, AllocationService — not nodes named exactly that.
488
- // Also tries stem variants: "caching" → "cache" finds Cache, CacheBuilder.
489
- if (symbolsFromQuery.length > 0) {
490
- const definitionKinds = ['class', 'interface', 'struct', 'trait',
491
- 'protocol', 'enum', 'type_alias'];
492
- // Expand symbols with stem variants for broader definition matching
493
- const expandedSymbols = new Set(symbolsFromQuery);
494
- for (const sym of symbolsFromQuery) {
495
- for (const variant of (0, query_utils_1.getStemVariants)(sym)) {
496
- expandedSymbols.add(variant);
497
- }
498
- }
499
- for (const sym of expandedSymbols) {
500
- // Title-case the symbol: "REST" → "Rest", "bulk" → "Bulk", "allocation" → "Allocation"
501
- const titleCased = sym.charAt(0).toUpperCase() + sym.slice(1).toLowerCase();
502
- if (titleCased === sym)
503
- continue; // already title-case (e.g., "Engine") — handled by exact match
504
- // Fetch more results since popular prefixes have many matches
505
- const prefixResults = this.queries.searchNodes(titleCased, {
506
- limit: 30,
507
- kinds: definitionKinds,
508
- });
509
- const matched = [];
510
- for (const r of prefixResults) {
511
- if (r.node.name.toLowerCase().startsWith(titleCased.toLowerCase())) {
512
- // Favor shorter names: "AllocationService" (18 chars) over
513
- // "AllocationBalancingRoundMetrics" (31 chars). Core classes tend
514
- // to have concise names; test/helper classes are verbose.
515
- const brevityBonus = Math.max(0, 10 - (r.node.name.length - titleCased.length) / 3);
516
- matched.push({ ...r, score: r.score + 15 + brevityBonus });
517
- }
518
- }
519
- matched.sort((a, b) => b.score - a.score);
520
- for (const r of matched.slice(0, Math.ceil(opts.searchLimit))) {
521
- const existing = exactMatches.find(e => e.node.id === r.node.id);
522
- if (!existing) {
523
- exactMatches.push(r);
524
- }
525
- }
526
- }
527
- exactMatches.sort((a, b) => b.score - a.score);
528
- exactMatches = exactMatches.slice(0, Math.ceil(opts.searchLimit * 3));
529
- }
530
- // Step 3: Run text search for natural language term matching
531
- // This catches file-name and node-name matches that semantic search may miss,
532
- // which is critical for template-heavy codebases (e.g., Liquid/Shopify themes)
533
- // where file names are the primary identifiers.
534
- let textResults = [];
535
- try {
536
- const searchTerms = (0, query_utils_1.extractSearchTerms)(query);
537
- if (searchTerms.length > 0) {
538
- // Search each term individually to get broader coverage,
539
- // then boost results that match multiple terms
540
- const termResultsMap = new Map();
541
- // When no explicit kind filter is set, exclude imports — they flood FTS
542
- // results with qualified name matches (e.g., "REST" matches 445K import paths)
543
- // but are almost never what exploration queries want.
544
- const searchKinds = opts.nodeKinds && opts.nodeKinds.length > 0
545
- ? opts.nodeKinds
546
- : ['file', 'module', 'class', 'struct', 'interface', 'trait', 'protocol',
547
- 'function', 'method', 'property', 'field', 'variable', 'constant',
548
- 'enum', 'enum_member', 'type_alias', 'namespace', 'export',
549
- 'route', 'component'];
550
- for (const term of searchTerms) {
551
- const termResults = this.queries.searchNodes(term, {
552
- limit: opts.searchLimit * 2,
553
- kinds: searchKinds,
554
- });
555
- for (const r of termResults) {
556
- const existing = termResultsMap.get(r.node.id);
557
- if (existing) {
558
- existing.termHits++;
559
- existing.result.score = Math.max(existing.result.score, r.score);
560
- }
561
- else {
562
- termResultsMap.set(r.node.id, { result: r, termHits: 1 });
563
- }
564
- }
565
- }
566
- // Boost results matching multiple terms and sort
567
- textResults = Array.from(termResultsMap.values())
568
- .map(({ result, termHits }) => ({
569
- ...result,
570
- score: result.score + (termHits - 1) * 5,
571
- }))
572
- .sort((a, b) => b.score - a.score)
573
- .slice(0, opts.searchLimit * 2);
574
- }
575
- (0, errors_1.logDebug)('Text search results', { count: textResults.length });
576
- }
577
- catch (error) {
578
- (0, errors_1.logDebug)('Text search failed', { query, error: String(error) });
579
- }
580
- // Step 4: Merge results, taking the max score when duplicates appear
581
- // across search channels. Exact matches may have lower scores than FTS
582
- // results for the same node — use the best score from any channel.
583
- const resultById = new Map();
584
- let searchResults = [];
585
- // Add exact matches first
586
- for (const result of exactMatches) {
587
- const existing = resultById.get(result.node.id);
588
- if (existing) {
589
- existing.score = Math.max(existing.score, result.score);
590
- }
591
- else {
592
- resultById.set(result.node.id, result);
593
- searchResults.push(result);
594
- }
595
- }
596
- // Add text search results, upgrading scores for duplicates
597
- for (const result of textResults) {
598
- const existing = resultById.get(result.node.id);
599
- if (existing) {
600
- existing.score = Math.max(existing.score, result.score);
601
- }
602
- else {
603
- resultById.set(result.node.id, result);
604
- searchResults.push(result);
605
- }
606
- }
607
- const queryLower = query.toLowerCase();
608
- const isTestQuery = queryLower.includes('test') || queryLower.includes('spec');
609
- // Deprioritize test files early so they don't take multi-term boost slots
610
- if (!isTestQuery) {
611
- for (const result of searchResults) {
612
- if ((0, query_utils_1.isTestFile)(result.node.filePath)) {
613
- result.score *= 0.3;
614
- }
615
- }
616
- }
617
- // Iter7 — Core-directory boost. On projects with one file that holds
618
- // the dense majority of internal call edges (e.g. sinatra's
619
- // `lib/sinatra/base.rb` at 85% of all in-file edges), the agent's
620
- // task usually asks about the framework's core. Without this boost,
621
- // ranking favors small focused extension files (e.g. text search
622
- // picks `sinatra-contrib/lib/sinatra/multi_route.rb`'s 10-line
623
- // `route` method over `base.rb`'s `route!` because the extension
624
- // file's `route` matches the query verbatim AND the file is small,
625
- // dwarfing the longer name `route!` in a 1500-line file). Boost
626
- // results that share a directory prefix with the dominant file's
627
- // directory so the core file's siblings outrank sibling-package
628
- // extensions.
629
- try {
630
- const dominant = this.queries.getDominantFile?.();
631
- if (dominant && dominant.edgeCount >= 3 * dominant.nextEdgeCount) {
632
- // Take the directory of the dominant file (everything up to the
633
- // last slash). For `lib/sinatra/base.rb` → `lib/sinatra/`.
634
- const slash = dominant.filePath.lastIndexOf('/');
635
- if (slash > 0) {
636
- const coreDir = dominant.filePath.slice(0, slash + 1);
637
- for (const result of searchResults) {
638
- if (result.node.filePath.startsWith(coreDir)) {
639
- result.score += 25;
640
- }
641
- }
642
- }
643
- }
644
- }
645
- catch {
646
- // SQL failure — fall through, scoring works without the boost
647
- }
648
- // Step 5a: Multi-term co-occurrence re-ranking (applied BEFORE truncation).
649
- // For multi-word queries like "search execution from request to shard",
650
- // nodes matching 2+ query terms in their name or path are far more relevant
651
- // than nodes matching just one generic term. Without this, "ExecutionUtils"
652
- // (matches only "execution") fills budget slots meant for "ShardSearchRequest"
653
- // (matches "shard" + "search" + "request").
654
- const queryTermsForBoost = (0, query_utils_1.extractSearchTerms)(query);
655
- if (queryTermsForBoost.length >= 2) {
656
- // Group terms that are substrings of each other (stem variants of the same
657
- // root word). "indexed", "indexe", "index" should count as ONE concept match,
658
- // not three. Without this, stem variants inflate matchCount and give false
659
- // multi-term boosts to symbols matching one root word multiple times.
660
- const termGroups = [];
661
- const sorted = [...queryTermsForBoost].sort((a, b) => b.length - a.length);
662
- const assigned = new Set();
663
- for (const term of sorted) {
664
- if (assigned.has(term))
665
- continue;
666
- const group = [term];
667
- assigned.add(term);
668
- for (const other of sorted) {
669
- if (assigned.has(other))
670
- continue;
671
- if (term.includes(other) || other.includes(term)) {
672
- group.push(other);
673
- assigned.add(other);
674
- }
675
- }
676
- termGroups.push(group);
677
- }
678
- // Build a set of exact-match node IDs so we can exempt them from dampening.
679
- // When the query is "LiveEditMode DevServerPreview", these are specific
680
- // symbols the user asked for — dampening them because they only match 1
681
- // term group is counter-productive.
682
- const exactMatchIds = new Set(exactMatches.map(r => r.node.id));
683
- // ...but only exempt exact matches the user *named as an identifier*
684
- // (camelCase/snake_case/acronym). A plain dictionary word that happens to
685
- // exact-match an unrelated symbol — query "flat object" → a constant named
686
- // FLAT — must NOT be exempt, or the +exact-name bonus floats it to the top
687
- // of a prose query with zero corroboration from any other term. Classify by
688
- // the QUERY token (what the user typed), not the matched symbol's name.
689
- const distinctiveTokens = new Set(symbolsFromQuery.filter(query_utils_1.isDistinctiveIdentifier).map(s => s.toLowerCase()));
690
- const distinctiveExactMatchIds = new Set(exactMatches
691
- .filter(r => distinctiveTokens.has(r.node.name.toLowerCase()))
692
- .map(r => r.node.id));
693
- for (const result of searchResults) {
694
- // Check term matches in name (substring) and path DIRECTORIES (exact).
695
- // Directory segments must match exactly — "search" matches directory
696
- // "search/" but NOT "elasticsearch/". The class name is checked
697
- // separately via substring match on the node name.
698
- const nameLower = result.node.name.toLowerCase();
699
- const dirSegments = path.dirname(result.node.filePath).toLowerCase().split('/');
700
- let matchCount = 0;
701
- for (const group of termGroups) {
702
- const groupMatches = group.some(term => {
703
- const inName = nameLower.includes(term);
704
- const inDir = dirSegments.some(seg => seg === term);
705
- return inName || inDir;
706
- });
707
- if (groupMatches)
708
- matchCount++;
709
- }
710
- if (matchCount >= 2) {
711
- // Multiplicative boost — 2 terms → 2x, 3 terms → 2.5x
712
- result.score *= 1 + matchCount * 0.5;
713
- }
714
- else if (distinctiveExactMatchIds.has(result.node.id)) {
715
- // Exact match on a distinctive identifier the user explicitly named —
716
- // keep full score (e.g. "LiveEditMode DevServerPreview").
717
- }
718
- else if (exactMatchIds.has(result.node.id)) {
719
- // Exact match on a COMMON word (e.g. "flat" → FLAT): high-scoring noise
720
- // inflated by the +exact-name bonus, corroborated by no other query
721
- // term. Demote hard so corroborated matches win.
722
- result.score *= 0.3;
723
- }
724
- else {
725
- // Mild dampen for generic single-term matches — they might be generic
726
- // but could also be the right result (e.g., "Protocol" class for an IPC query).
727
- result.score *= 0.6;
728
- }
729
- }
730
- searchResults.sort((a, b) => b.score - a.score);
731
- }
732
- // Step 5b: CamelCase-boundary matching via LIKE query.
733
- // FTS can't find "Search" inside "TransportSearchAction" (one FTS token).
734
- // LIKE reliably finds these substring matches. Results are appended with
735
- // guaranteed slots so they don't compete with higher-scoring prefix matches.
736
- if (symbolsFromQuery.length > 0) {
737
- const camelDefinitionKinds = ['class', 'interface', 'struct', 'trait',
738
- 'protocol', 'enum', 'type_alias'];
739
- const camelSearchedTerms = new Set();
740
- const searchIdSet = new Set(searchResults.map(r => r.node.id));
741
- // Track per-node term hits for multi-term boosting
742
- const camelNodeTerms = new Map();
743
- const maxCamelPerTerm = Math.ceil(opts.searchLimit / 2);
744
- for (const sym of symbolsFromQuery) {
745
- const titleCased = sym.charAt(0).toUpperCase() + sym.slice(1).toLowerCase();
746
- if (titleCased.length < 3)
747
- continue;
748
- const termKey = titleCased.toLowerCase();
749
- if (camelSearchedTerms.has(termKey))
750
- continue;
751
- camelSearchedTerms.add(termKey);
752
- // Fetch a large batch — popular terms like "Search" in Elasticsearch
753
- // have hundreds of substring matches. The LIKE scan cost is the same
754
- // regardless of LIMIT (SQLite scans all matches to sort), so we fetch
755
- // generously and let path-relevance scoring pick the best ones.
756
- const likeResults = this.queries.findNodesByNameSubstring(titleCased, {
757
- limit: 200,
758
- kinds: camelDefinitionKinds,
759
- excludePrefix: true,
760
- });
761
- // Filter to CamelCase boundaries, score by path relevance, and take top N
762
- const termCandidates = [];
763
- for (const r of likeResults) {
764
- const name = r.node.name;
765
- const idx = name.indexOf(titleCased);
766
- if (idx <= 0)
767
- continue;
768
- // Accept CamelCase boundary (lowercase before match) OR
769
- // acronym boundary (uppercase before match, e.g., RPCProtocol)
770
- if (!/[a-zA-Z]/.test(name.charAt(idx - 1)))
771
- continue;
772
- if (searchIdSet.has(r.node.id))
773
- continue;
774
- if ((0, query_utils_1.isTestFile)(r.node.filePath) && !isTestQuery)
775
- continue;
776
- const pathScore = (0, query_utils_1.scorePathRelevance)(r.node.filePath, query);
777
- const brevityBonus = Math.max(0, 6 - (name.length - titleCased.length) / 4);
778
- termCandidates.push({ node: r.node, score: 8 + brevityBonus + pathScore });
779
- }
780
- termCandidates.sort((a, b) => b.score - a.score);
781
- // Widen the per-term pool for accumulation so multi-term co-occurrences
782
- // can be discovered. A class matching 3 query terms at CamelCase boundaries
783
- // is far more relevant than one matching just 1, but it needs to survive
784
- // the per-term cut for EACH term to accumulate its count.
785
- const accumPerTerm = maxCamelPerTerm * 4;
786
- for (const r of termCandidates.slice(0, accumPerTerm)) {
787
- const existing = camelNodeTerms.get(r.node.id);
788
- if (existing) {
789
- existing.termCount++;
790
- }
791
- else {
792
- camelNodeTerms.set(r.node.id, {
793
- result: r,
794
- termCount: 1,
795
- });
796
- }
797
- }
798
- }
799
- // Append CamelCase matches with multi-term boost.
800
- // These are structurally important (class names containing query terms at
801
- // CamelCase boundaries) but score much lower than FTS results. Scale their
802
- // scores up so multi-term CamelCase matches can compete with FTS results.
803
- const camelResults = [];
804
- for (const [, info] of camelNodeTerms) {
805
- // Multi-term CamelCase matches are extremely relevant — a class matching
806
- // 3+ query terms in its name (e.g., ExtensionHostProcess) is almost
807
- // certainly what the user wants. Scale aggressively.
808
- info.result.score = info.result.score * (1 + info.termCount) + (info.termCount - 1) * 30;
809
- camelResults.push(info.result);
810
- }
811
- camelResults.sort((a, b) => b.score - a.score);
812
- const maxCamelTotal = opts.searchLimit;
813
- for (const r of camelResults.slice(0, maxCamelTotal)) {
814
- searchResults.push(r);
815
- searchIdSet.add(r.node.id);
816
- }
817
- // Step 5c: Compound term matching — find classes whose name contains 2+
818
- // query terms at ANY position (not just CamelCase boundaries).
819
- // The CamelCase step above requires idx > 0, which misses classes that
820
- // START with a query term (e.g., "SearchShardsRequest" starts with "Search").
821
- // For multi-word queries, a class matching multiple query terms in its name
822
- // is almost certainly relevant regardless of position.
823
- if (symbolsFromQuery.length >= 2) {
824
- // Collect ALL LIKE results per term (reusing findNodesByNameSubstring)
825
- // but without the CamelCase boundary or prefix exclusion filters.
826
- const compoundTermMap = new Map();
827
- for (const sym of symbolsFromQuery) {
828
- const titleCased = sym.charAt(0).toUpperCase() + sym.slice(1).toLowerCase();
829
- if (titleCased.length < 3)
830
- continue;
831
- const likeResults = this.queries.findNodesByNameSubstring(titleCased, {
832
- limit: 200,
833
- kinds: camelDefinitionKinds,
834
- excludePrefix: false,
835
- });
836
- for (const r of likeResults) {
837
- if (searchIdSet.has(r.node.id))
838
- continue;
839
- if ((0, query_utils_1.isTestFile)(r.node.filePath) && !isTestQuery)
840
- continue;
841
- const entry = compoundTermMap.get(r.node.id);
842
- if (entry) {
843
- entry.terms.add(titleCased);
844
- }
845
- else {
846
- compoundTermMap.set(r.node.id, { node: r.node, terms: new Set([titleCased]) });
847
- }
848
- }
849
- }
850
- // Keep only nodes matching 2+ distinct terms
851
- const compoundResults = [];
852
- for (const [, entry] of compoundTermMap) {
853
- if (entry.terms.size >= 2) {
854
- const pathScore = (0, query_utils_1.scorePathRelevance)(entry.node.filePath, query);
855
- const brevityBonus = Math.max(0, 6 - entry.node.name.length / 8);
856
- compoundResults.push({
857
- node: entry.node,
858
- score: 10 + (entry.terms.size - 1) * 20 + pathScore + brevityBonus,
859
- });
860
- }
861
- }
862
- compoundResults.sort((a, b) => b.score - a.score);
863
- const maxCompound = Math.ceil(opts.searchLimit / 2);
864
- for (const r of compoundResults.slice(0, maxCompound)) {
865
- searchResults.push(r);
866
- searchIdSet.add(r.node.id);
867
- }
868
- }
869
- }
870
- // Final sort and truncation — all search channels (exact, text, CamelCase,
871
- // compound) have now contributed. Sort by score so multi-term matches from
872
- // later steps can outrank dampened single-term matches from earlier steps.
873
- searchResults.sort((a, b) => b.score - a.score);
874
- searchResults = searchResults.slice(0, opts.searchLimit * 3);
875
- // Filter by minimum score
876
- let filteredResults = searchResults.filter((r) => r.score >= opts.minScore);
877
- // Resolve imports/exports to their actual definitions
878
- // If someone searches "terminal" and finds `import { TerminalPanel }`,
879
- // they want the TerminalPanel class, not the import statement
880
- filteredResults = this.resolveImportsToDefinitions(filteredResults);
881
- // Cap entry points so traversal budget isn't spread too thin.
882
- // With 36 entry points and maxNodes=120, each gets only 3 nodes — useless.
883
- // Cap to searchLimit so each entry point gets a meaningful traversal budget.
884
- if (filteredResults.length > opts.searchLimit) {
885
- filteredResults = filteredResults.slice(0, opts.searchLimit);
886
- }
887
- // Confidence signal for the honest-handoff footer (consumed in buildContext).
888
- // A multi-term prose query that resolves only to isolated common-word matches
889
- // — no entry point corroborated by 2+ distinct query terms, and none a
890
- // distinctive identifier the user explicitly named — is LOW confidence: the
891
- // results are best-effort, not a located answer, so the agent should be told
892
- // to drill in with explore/trace rather than trust the list as comprehensive.
893
- // Single-keyword and symbol-name queries are exempt (their single match IS the
894
- // answer), so the handoff never fires on them.
895
- let confidence = 'high';
896
- const confTerms = (0, query_utils_1.extractSearchTerms)(query, { stems: false }).filter(t => t.length >= 3);
897
- if (confTerms.length >= 2 && filteredResults.length > 0) {
898
- const distinctive = new Set(symbolsFromQuery.filter(query_utils_1.isDistinctiveIdentifier).map(s => s.toLowerCase()));
899
- const anyStrong = filteredResults.some(r => {
900
- if (distinctive.has(r.node.name.toLowerCase()))
901
- return true;
902
- const nameLower = r.node.name.toLowerCase();
903
- const dirSegs = path.dirname(r.node.filePath).toLowerCase().split('/');
904
- let hits = 0;
905
- for (const t of confTerms) {
906
- if (nameLower.includes(t) || dirSegs.includes(t)) {
907
- if (++hits >= 2)
908
- return true;
909
- }
910
- }
911
- return false;
912
- });
913
- if (!anyStrong)
914
- confidence = 'low';
915
- }
916
- // Add entry points to subgraph
917
- for (const result of filteredResults) {
918
- nodes.set(result.node.id, result.node);
919
- roots.push(result.node.id);
920
- }
921
- // Expand type hierarchy for class/interface entry points.
922
- // BFS often exhausts its per-entry-point budget on contained methods
923
- // before reaching extends/implements neighbors. This dedicated step
924
- // ensures subclasses and superclasses always appear in results.
925
- // Budget: up to maxNodes/4 hierarchy nodes to avoid flooding.
926
- const typeHierarchyKinds = new Set(['class', 'interface', 'struct', 'trait', 'protocol']);
927
- const maxHierarchyNodes = Math.ceil(opts.maxNodes / 4);
928
- let hierarchyNodesAdded = 0;
929
- for (const result of filteredResults) {
930
- if (hierarchyNodesAdded >= maxHierarchyNodes)
931
- break;
932
- if (typeHierarchyKinds.has(result.node.kind)) {
933
- const hierarchy = this.traverser.getTypeHierarchy(result.node.id);
934
- for (const [id, node] of hierarchy.nodes) {
935
- if (!nodes.has(id)) {
936
- nodes.set(id, node);
937
- hierarchyNodesAdded++;
938
- }
939
- }
940
- for (const edge of hierarchy.edges) {
941
- const exists = edges.some((e) => e.source === edge.source && e.target === edge.target && e.kind === edge.kind);
942
- if (!exists) {
943
- edges.push(edge);
944
- }
945
- }
946
- }
947
- }
948
- // Pass 2: expand hierarchy of newly-discovered parent types to find siblings.
949
- // E.g., InternalEngine → Engine (parent, from pass 1) → ReadOnlyEngine (sibling).
950
- if (hierarchyNodesAdded > 0) {
951
- const pass2Candidates = [...nodes.values()].filter(n => typeHierarchyKinds.has(n.kind) && !roots.includes(n.id));
952
- for (const candidate of pass2Candidates) {
953
- if (hierarchyNodesAdded >= maxHierarchyNodes)
954
- break;
955
- const siblingHierarchy = this.traverser.getTypeHierarchy(candidate.id);
956
- for (const [id, node] of siblingHierarchy.nodes) {
957
- if (!nodes.has(id) && hierarchyNodesAdded < maxHierarchyNodes) {
958
- nodes.set(id, node);
959
- hierarchyNodesAdded++;
960
- }
961
- }
962
- for (const edge of siblingHierarchy.edges) {
963
- if (nodes.has(edge.source) && nodes.has(edge.target)) {
964
- const exists = edges.some((e) => e.source === edge.source && e.target === edge.target && e.kind === edge.kind);
965
- if (!exists) {
966
- edges.push(edge);
967
- }
968
- }
969
- }
970
- }
971
- }
972
- // Traverse from each entry point
973
- for (const result of filteredResults) {
974
- const traversalResult = this.traverser.traverseBFS(result.node.id, {
975
- maxDepth: opts.traversalDepth,
976
- edgeKinds: opts.edgeKinds && opts.edgeKinds.length > 0 ? opts.edgeKinds : undefined,
977
- nodeKinds: opts.nodeKinds && opts.nodeKinds.length > 0 ? opts.nodeKinds : undefined,
978
- direction: 'both',
979
- limit: Math.ceil(opts.maxNodes / Math.max(1, filteredResults.length)),
980
- });
981
- // Merge nodes
982
- for (const [id, node] of traversalResult.nodes) {
983
- if (!nodes.has(id)) {
984
- nodes.set(id, node);
985
- }
986
- }
987
- // Merge edges (avoid duplicates)
988
- for (const edge of traversalResult.edges) {
989
- const exists = edges.some((e) => e.source === edge.source && e.target === edge.target && e.kind === edge.kind);
990
- if (!exists) {
991
- edges.push(edge);
992
- }
993
- }
994
- }
995
- // Trim to max nodes if needed
996
- let finalNodes = nodes;
997
- let finalEdges = edges;
998
- if (nodes.size > opts.maxNodes) {
999
- // Prioritize entry points and their direct neighbors
1000
- const priorityIds = new Set(roots);
1001
- for (const edge of edges) {
1002
- if (priorityIds.has(edge.source)) {
1003
- priorityIds.add(edge.target);
1004
- }
1005
- if (priorityIds.has(edge.target)) {
1006
- priorityIds.add(edge.source);
1007
- }
1008
- }
1009
- // Keep priority nodes, then fill remaining slots
1010
- finalNodes = new Map();
1011
- for (const id of priorityIds) {
1012
- const node = nodes.get(id);
1013
- if (node && finalNodes.size < opts.maxNodes) {
1014
- finalNodes.set(id, node);
1015
- }
1016
- }
1017
- // Fill remaining from other nodes
1018
- for (const [id, node] of nodes) {
1019
- if (finalNodes.size >= opts.maxNodes)
1020
- break;
1021
- if (!finalNodes.has(id)) {
1022
- finalNodes.set(id, node);
1023
- }
1024
- }
1025
- // Filter edges to only include kept nodes
1026
- finalEdges = edges.filter((e) => finalNodes.has(e.source) && finalNodes.has(e.target));
1027
- }
1028
- // Per-file diversity cap: prevent any single file from monopolizing the
1029
- // node budget. When BFS traverses from a method, it follows `contains`
1030
- // to the parent class, then back down to all sibling methods. With
1031
- // multiple entry points in the same class, one file can consume 30-40%
1032
- // of maxNodes. Cap each file to ~20% to ensure cross-file diversity.
1033
- const maxPerFile = Math.max(5, Math.ceil(opts.maxNodes * 0.2));
1034
- const fileCounts = new Map();
1035
- for (const [id, node] of finalNodes) {
1036
- const ids = fileCounts.get(node.filePath) || [];
1037
- ids.push(id);
1038
- fileCounts.set(node.filePath, ids);
1039
- }
1040
- const rootSet = new Set(roots);
1041
- for (const [, nodeIds] of fileCounts) {
1042
- if (nodeIds.length <= maxPerFile)
1043
- continue;
1044
- // Sort: entry points first, then classes/interfaces, then others
1045
- const kindPriority = {
1046
- class: 3, interface: 3, struct: 3, trait: 3, protocol: 3, enum: 3,
1047
- method: 1, function: 1, property: 0, field: 0, variable: 0,
1048
- };
1049
- nodeIds.sort((a, b) => {
1050
- const aRoot = rootSet.has(a) ? 10 : 0;
1051
- const bRoot = rootSet.has(b) ? 10 : 0;
1052
- const aKind = kindPriority[finalNodes.get(a).kind] ?? 0;
1053
- const bKind = kindPriority[finalNodes.get(b).kind] ?? 0;
1054
- return (bRoot + bKind) - (aRoot + aKind);
1055
- });
1056
- // Remove excess nodes (keep the highest-priority ones)
1057
- for (const id of nodeIds.slice(maxPerFile)) {
1058
- finalNodes.delete(id);
1059
- }
1060
- }
1061
- // Non-production node cap: limit test/sample/integration/example files to
1062
- // at most 15% of the budget. Many codebases have dozens of near-identical
1063
- // test implementations (e.g., 6 Guard classes in integration tests) that
1064
- // individually survive score dampening but collectively flood the result.
1065
- // Test entry points are NOT exempt — they should be evicted too.
1066
- if (!isTestQuery) {
1067
- const maxNonProd = Math.max(3, Math.ceil(opts.maxNodes * 0.15));
1068
- const nonProdIds = [];
1069
- for (const [id, node] of finalNodes) {
1070
- if ((0, query_utils_1.isTestFile)(node.filePath)) {
1071
- nonProdIds.push(id);
1072
- }
1073
- }
1074
- if (nonProdIds.length > maxNonProd) {
1075
- for (const id of nonProdIds.slice(maxNonProd)) {
1076
- finalNodes.delete(id);
1077
- // Also remove from roots — test file entry points shouldn't anchor results
1078
- const rootIdx = roots.indexOf(id);
1079
- if (rootIdx !== -1)
1080
- roots.splice(rootIdx, 1);
1081
- }
1082
- }
1083
- }
1084
- // Re-filter edges after per-file and non-production caps
1085
- finalEdges = finalEdges.filter((e) => finalNodes.has(e.source) && finalNodes.has(e.target));
1086
- // Edge recovery: BFS with many entry points leaves most nodes disconnected.
1087
- // Discover edges between already-selected nodes to recover connectivity.
1088
- const recoveryKinds = ['calls', 'extends', 'implements', 'references', 'overrides'];
1089
- const recoveredEdges = this.queries.findEdgesBetweenNodes([...finalNodes.keys()], recoveryKinds);
1090
- const existingEdgeKeys = new Set(finalEdges.map((e) => `${e.source}:${e.target}:${e.kind}`));
1091
- for (const edge of recoveredEdges) {
1092
- const key = `${edge.source}:${edge.target}:${edge.kind}`;
1093
- if (!existingEdgeKeys.has(key)) {
1094
- finalEdges.push(edge);
1095
- existingEdgeKeys.add(key);
1096
- }
1097
- }
1098
- return { nodes: finalNodes, edges: finalEdges, roots, confidence };
1099
- }
1100
- /**
1101
- * Get the source code for a node
1102
- *
1103
- * Reads the file and extracts the code between startLine and endLine.
1104
- *
1105
- * @param nodeId - ID of the node
1106
- * @returns Code string or null if not found
1107
- */
1108
- async getCode(nodeId) {
1109
- const node = this.queries.getNodeById(nodeId);
1110
- if (!node) {
1111
- return null;
1112
- }
1113
- return this.extractNodeCode(node);
1114
- }
1115
- /**
1116
- * Extract code from a node's source file
1117
- */
1118
- async extractNodeCode(node) {
1119
- // SECURITY (#383): a config-leaf node's on-disk line is `key = <secret>`.
1120
- // Return the KEY only — never read the value off disk. This closes the
1121
- // includeCode / buildContext code-block path, mirroring the explore source
1122
- // renderer; an agent that genuinely needs a value can read the file itself.
1123
- if ((0, utils_1.isConfigLeafNode)(node)) {
1124
- return node.signature || node.qualifiedName || node.name;
1125
- }
1126
- const filePath = (0, utils_1.validatePathWithinRoot)(this.projectRoot, node.filePath);
1127
- if (!filePath || !fs.existsSync(filePath)) {
1128
- return null;
1129
- }
1130
- try {
1131
- const content = fs.readFileSync(filePath, 'utf-8');
1132
- const lines = content.split('\n');
1133
- // Extract lines (1-indexed to 0-indexed)
1134
- const startIdx = Math.max(0, node.startLine - 1);
1135
- const endIdx = Math.min(lines.length, node.endLine);
1136
- return lines.slice(startIdx, endIdx).join('\n');
1137
- }
1138
- catch (error) {
1139
- (0, errors_1.logDebug)('Failed to extract code from node', { nodeId: node.id, filePath: node.filePath, error: String(error) });
1140
- return null;
1141
- }
1142
- }
1143
- /**
1144
- * Get entry points from a subgraph (the root nodes)
1145
- */
1146
- getEntryPoints(subgraph) {
1147
- return subgraph.roots
1148
- .map((id) => subgraph.nodes.get(id))
1149
- .filter((n) => n !== undefined);
1150
- }
1151
- /**
1152
- * Extract code blocks for key nodes in the subgraph
1153
- */
1154
- async extractCodeBlocks(subgraph, maxBlocks, maxBlockSize) {
1155
- const blocks = [];
1156
- // Prioritize entry points, then functions/methods
1157
- const priorityNodes = [];
1158
- // First: entry points
1159
- for (const id of subgraph.roots) {
1160
- const node = subgraph.nodes.get(id);
1161
- if (node) {
1162
- priorityNodes.push(node);
1163
- }
1164
- }
1165
- // Then: functions and methods
1166
- for (const node of subgraph.nodes.values()) {
1167
- if (!subgraph.roots.includes(node.id)) {
1168
- if (node.kind === 'function' || node.kind === 'method') {
1169
- priorityNodes.push(node);
1170
- }
1171
- }
1172
- }
1173
- // Then: classes
1174
- for (const node of subgraph.nodes.values()) {
1175
- if (!subgraph.roots.includes(node.id)) {
1176
- if (node.kind === 'class') {
1177
- priorityNodes.push(node);
1178
- }
1179
- }
1180
- }
1181
- // Extract code for priority nodes
1182
- for (const node of priorityNodes) {
1183
- if (blocks.length >= maxBlocks)
1184
- break;
1185
- const code = await this.extractNodeCode(node);
1186
- if (code) {
1187
- // Truncate if too long. Language-neutral marker (no `//` — not a
1188
- // comment in Python, Ruby, etc.); this renders inside a fenced
1189
- // source block whose language varies.
1190
- const truncated = code.length > maxBlockSize
1191
- ? code.slice(0, maxBlockSize) + '\n... (truncated) ...'
1192
- : code;
1193
- blocks.push({
1194
- content: truncated,
1195
- filePath: node.filePath,
1196
- startLine: node.startLine,
1197
- endLine: node.endLine,
1198
- language: node.language,
1199
- node,
1200
- });
1201
- }
1202
- }
1203
- return blocks;
1204
- }
1205
- /**
1206
- * Get unique files from a subgraph
1207
- */
1208
- getRelatedFiles(subgraph) {
1209
- const files = new Set();
1210
- for (const node of subgraph.nodes.values()) {
1211
- files.add(node.filePath);
1212
- }
1213
- return Array.from(files).sort();
1214
- }
1215
- /**
1216
- * Generate a summary of the context
1217
- */
1218
- generateSummary(_query, subgraph, entryPoints) {
1219
- const nodeCount = subgraph.nodes.size;
1220
- const edgeCount = subgraph.edges.length;
1221
- const files = this.getRelatedFiles(subgraph);
1222
- const entryPointNames = entryPoints
1223
- .slice(0, 3)
1224
- .map((n) => n.name)
1225
- .join(', ');
1226
- const remaining = entryPoints.length > 3 ? ` and ${entryPoints.length - 3} more` : '';
1227
- return `Found ${nodeCount} relevant code symbols across ${files.length} files. ` +
1228
- `Key entry points: ${entryPointNames}${remaining}. ` +
1229
- `${edgeCount} relationships identified.`;
1230
- }
1231
- /**
1232
- * Resolve import/export nodes to their actual definitions
1233
- *
1234
- * When search returns `import { TerminalPanel }`, users want the TerminalPanel
1235
- * class definition, not the import statement. This follows the `imports` edge
1236
- * to find and return the actual definition instead.
1237
- *
1238
- * @param results - Search results that may include import/export nodes
1239
- * @returns Results with imports resolved to definitions where possible
1240
- */
1241
- resolveImportsToDefinitions(results) {
1242
- const resolved = [];
1243
- const seenIds = new Set();
1244
- for (const result of results) {
1245
- const { node, score } = result;
1246
- // If it's not an import/export, keep it as-is
1247
- if (node.kind !== 'import' && node.kind !== 'export') {
1248
- if (!seenIds.has(node.id)) {
1249
- seenIds.add(node.id);
1250
- resolved.push(result);
1251
- }
1252
- continue;
1253
- }
1254
- // For imports/exports, try to find what they reference
1255
- // Imports have outgoing 'imports' edges to the definition
1256
- // Exports have outgoing 'exports' edges to the definition
1257
- const edgeKind = node.kind === 'import' ? 'imports' : 'exports';
1258
- const outgoingEdges = this.queries.getOutgoingEdges(node.id, [edgeKind]);
1259
- let foundDefinition = false;
1260
- for (const edge of outgoingEdges) {
1261
- const targetNode = this.queries.getNodeById(edge.target);
1262
- if (targetNode && !seenIds.has(targetNode.id)) {
1263
- // Found the definition - use it instead of the import
1264
- seenIds.add(targetNode.id);
1265
- resolved.push({
1266
- node: targetNode,
1267
- score: score, // Preserve the original score
1268
- });
1269
- foundDefinition = true;
1270
- (0, errors_1.logDebug)('Resolved import to definition', {
1271
- import: node.name,
1272
- definition: targetNode.name,
1273
- kind: targetNode.kind,
1274
- });
1275
- }
1276
- }
1277
- // If we couldn't resolve the import, skip it (it's low-value on its own)
1278
- if (!foundDefinition) {
1279
- (0, errors_1.logDebug)('Skipping unresolved import', { name: node.name, file: node.filePath });
1280
- }
1281
- }
1282
- return resolved;
1283
- }
1284
- }
1285
- exports.ContextBuilder = ContextBuilder;
1286
- /**
1287
- * Create a context builder
1288
- */
1289
- function createContextBuilder(projectRoot, queries, traverser) {
1290
- return new ContextBuilder(projectRoot, queries, traverser);
1291
- }
1292
- // Re-export formatter
1293
- var formatter_2 = require("./formatter");
1294
- Object.defineProperty(exports, "formatContextAsMarkdown", { enumerable: true, get: function () { return formatter_2.formatContextAsMarkdown; } });
1295
- Object.defineProperty(exports, "formatContextAsJson", { enumerable: true, get: function () { return formatter_2.formatContextAsJson; } });
1296
- //# sourceMappingURL=index.js.map