maestro-flow 0.5.42 → 0.5.43

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 (323) hide show
  1. package/.agents/skills/domain-add/SKILL.md +3 -0
  2. package/.agents/skills/learn-decompose/SKILL.md +7 -4
  3. package/.agents/skills/learn-follow/SKILL.md +4 -2
  4. package/.agents/skills/learn-investigate/SKILL.md +8 -6
  5. package/.agents/skills/learn-second-opinion/SKILL.md +6 -3
  6. package/.agents/skills/maestro/SKILL.md +1 -1
  7. package/.agents/skills/maestro-amend/SKILL.md +1 -1
  8. package/.agents/skills/maestro-analyze/SKILL.md +1 -1
  9. package/.agents/skills/maestro-blueprint/SKILL.md +1 -1
  10. package/.agents/skills/maestro-brainstorm/SKILL.md +4 -1
  11. package/.agents/skills/maestro-collab/SKILL.md +6 -2
  12. package/.agents/skills/maestro-companion/SKILL.md +4 -1
  13. package/.agents/skills/maestro-composer/SKILL.md +4 -2
  14. package/.agents/skills/maestro-execute/SKILL.md +26 -8
  15. package/.agents/skills/maestro-fork/SKILL.md +4 -3
  16. package/.agents/skills/maestro-grill/SKILL.md +1 -1
  17. package/.agents/skills/maestro-guard/SKILL.md +2 -2
  18. package/.agents/skills/maestro-impeccable/SKILL.md +2 -1
  19. package/.agents/skills/maestro-init/SKILL.md +1 -1
  20. package/.agents/skills/maestro-merge/SKILL.md +12 -1
  21. package/.agents/skills/maestro-milestone-audit/SKILL.md +1 -0
  22. package/.agents/skills/maestro-milestone-complete/SKILL.md +8 -3
  23. package/.agents/skills/maestro-milestone-release/SKILL.md +8 -4
  24. package/.agents/skills/maestro-overlay/SKILL.md +9 -0
  25. package/.agents/skills/maestro-plan/SKILL.md +1 -0
  26. package/.agents/skills/maestro-player/SKILL.md +2 -2
  27. package/.agents/skills/maestro-quick/SKILL.md +5 -3
  28. package/.agents/skills/maestro-ralph/SKILL.md +8 -8
  29. package/.agents/skills/maestro-ralph-cli/SKILL.md +665 -0
  30. package/.agents/skills/maestro-ralph-cli-execute/SKILL.md +239 -0
  31. package/.agents/skills/maestro-ralph-execute/SKILL.md +127 -11
  32. package/.agents/skills/maestro-roadmap/SKILL.md +1 -1
  33. package/.agents/skills/maestro-swarm-workflow/SKILL.md +16 -14
  34. package/.agents/skills/maestro-tools-register/SKILL.md +16 -1
  35. package/.agents/skills/maestro-ui-codify/SKILL.md +11 -1
  36. package/.agents/skills/maestro-universal-workflow/SKILL.md +28 -5
  37. package/.agents/skills/maestro-update/SKILL.md +10 -7
  38. package/.agents/skills/manage-codebase-rebuild/SKILL.md +5 -1
  39. package/.agents/skills/manage-drift-realign/SKILL.md +6 -2
  40. package/.agents/skills/manage-harvest/SKILL.md +4 -1
  41. package/.agents/skills/manage-issue-discover/SKILL.md +1 -0
  42. package/.agents/skills/manage-kg-extractors/SKILL.md +5 -1
  43. package/.agents/skills/manage-knowhow-capture/SKILL.md +1 -0
  44. package/.agents/skills/manage-knowledge-audit/SKILL.md +3 -0
  45. package/.agents/skills/manage-wiki/SKILL.md +1 -0
  46. package/.agents/skills/odyssey-debug/SKILL.md +2 -1
  47. package/.agents/skills/odyssey-improve/SKILL.md +2 -2
  48. package/.agents/skills/odyssey-planex/SKILL.md +8 -7
  49. package/.agents/skills/odyssey-review-test-fix/SKILL.md +4 -1
  50. package/.agents/skills/odyssey-ui/SKILL.md +4 -4
  51. package/.agents/skills/quality-auto-test/SKILL.md +11 -1
  52. package/.agents/skills/quality-debug/SKILL.md +16 -2
  53. package/.agents/skills/quality-retrospective/SKILL.md +9 -1
  54. package/.agents/skills/quality-review/SKILL.md +8 -0
  55. package/.agents/skills/quality-sync/SKILL.md +2 -2
  56. package/.agents/skills/quality-test/SKILL.md +9 -1
  57. package/.agents/skills/security-audit/SKILL.md +14 -4
  58. package/.agents/skills/spec-add/SKILL.md +5 -2
  59. package/.agents/skills/spec-load/SKILL.md +1 -1
  60. package/.agents/skills/spec-remove/SKILL.md +1 -1
  61. package/.agents/skills/spec-setup/SKILL.md +3 -0
  62. package/.agy/skills/domain-add/SKILL.md +3 -0
  63. package/.agy/skills/learn-decompose/SKILL.md +7 -4
  64. package/.agy/skills/learn-follow/SKILL.md +4 -2
  65. package/.agy/skills/learn-investigate/SKILL.md +8 -6
  66. package/.agy/skills/learn-second-opinion/SKILL.md +6 -3
  67. package/.agy/skills/maestro/SKILL.md +1 -1
  68. package/.agy/skills/maestro-amend/SKILL.md +1 -1
  69. package/.agy/skills/maestro-analyze/SKILL.md +1 -1
  70. package/.agy/skills/maestro-blueprint/SKILL.md +1 -1
  71. package/.agy/skills/maestro-brainstorm/SKILL.md +4 -1
  72. package/.agy/skills/maestro-collab/SKILL.md +6 -2
  73. package/.agy/skills/maestro-companion/SKILL.md +4 -1
  74. package/.agy/skills/maestro-composer/SKILL.md +4 -2
  75. package/.agy/skills/maestro-execute/SKILL.md +26 -8
  76. package/.agy/skills/maestro-fork/SKILL.md +4 -3
  77. package/.agy/skills/maestro-grill/SKILL.md +1 -1
  78. package/.agy/skills/maestro-guard/SKILL.md +2 -2
  79. package/.agy/skills/maestro-impeccable/SKILL.md +2 -1
  80. package/.agy/skills/maestro-init/SKILL.md +1 -1
  81. package/.agy/skills/maestro-merge/SKILL.md +12 -1
  82. package/.agy/skills/maestro-milestone-audit/SKILL.md +1 -0
  83. package/.agy/skills/maestro-milestone-complete/SKILL.md +8 -3
  84. package/.agy/skills/maestro-milestone-release/SKILL.md +8 -4
  85. package/.agy/skills/maestro-overlay/SKILL.md +9 -0
  86. package/.agy/skills/maestro-plan/SKILL.md +1 -0
  87. package/.agy/skills/maestro-player/SKILL.md +2 -2
  88. package/.agy/skills/maestro-quick/SKILL.md +5 -3
  89. package/.agy/skills/maestro-ralph/SKILL.md +8 -8
  90. package/.agy/skills/maestro-ralph-cli/SKILL.md +661 -0
  91. package/.agy/skills/maestro-ralph-cli-execute/SKILL.md +235 -0
  92. package/.agy/skills/maestro-ralph-execute/SKILL.md +127 -11
  93. package/.agy/skills/maestro-roadmap/SKILL.md +1 -1
  94. package/.agy/skills/maestro-swarm-workflow/SKILL.md +16 -14
  95. package/.agy/skills/maestro-tools-register/SKILL.md +16 -1
  96. package/.agy/skills/maestro-ui-codify/SKILL.md +11 -1
  97. package/.agy/skills/maestro-universal-workflow/SKILL.md +28 -5
  98. package/.agy/skills/maestro-update/SKILL.md +10 -7
  99. package/.agy/skills/manage-codebase-rebuild/SKILL.md +5 -1
  100. package/.agy/skills/manage-drift-realign/SKILL.md +6 -2
  101. package/.agy/skills/manage-harvest/SKILL.md +4 -1
  102. package/.agy/skills/manage-issue-discover/SKILL.md +1 -0
  103. package/.agy/skills/manage-kg-extractors/SKILL.md +5 -1
  104. package/.agy/skills/manage-knowhow-capture/SKILL.md +1 -0
  105. package/.agy/skills/manage-knowledge-audit/SKILL.md +3 -0
  106. package/.agy/skills/manage-wiki/SKILL.md +1 -0
  107. package/.agy/skills/odyssey-debug/SKILL.md +2 -1
  108. package/.agy/skills/odyssey-improve/SKILL.md +2 -2
  109. package/.agy/skills/odyssey-planex/SKILL.md +8 -7
  110. package/.agy/skills/odyssey-review-test-fix/SKILL.md +4 -1
  111. package/.agy/skills/odyssey-ui/SKILL.md +4 -4
  112. package/.agy/skills/quality-auto-test/SKILL.md +11 -1
  113. package/.agy/skills/quality-debug/SKILL.md +16 -2
  114. package/.agy/skills/quality-retrospective/SKILL.md +9 -1
  115. package/.agy/skills/quality-review/SKILL.md +8 -0
  116. package/.agy/skills/quality-sync/SKILL.md +2 -2
  117. package/.agy/skills/quality-test/SKILL.md +9 -1
  118. package/.agy/skills/security-audit/SKILL.md +14 -4
  119. package/.agy/skills/spec-add/SKILL.md +5 -2
  120. package/.agy/skills/spec-load/SKILL.md +1 -1
  121. package/.agy/skills/spec-remove/SKILL.md +1 -1
  122. package/.agy/skills/spec-setup/SKILL.md +3 -0
  123. package/.claude/commands/domain-add.md +3 -0
  124. package/.claude/commands/learn-decompose.md +7 -4
  125. package/.claude/commands/learn-follow.md +4 -2
  126. package/.claude/commands/learn-investigate.md +8 -6
  127. package/.claude/commands/learn-second-opinion.md +6 -3
  128. package/.claude/commands/maestro-amend.md +1 -1
  129. package/.claude/commands/maestro-analyze.md +1 -1
  130. package/.claude/commands/maestro-blueprint.md +1 -1
  131. package/.claude/commands/maestro-brainstorm.md +4 -1
  132. package/.claude/commands/maestro-collab.md +6 -2
  133. package/.claude/commands/maestro-companion.md +4 -1
  134. package/.claude/commands/maestro-composer.md +4 -2
  135. package/.claude/commands/maestro-execute.md +26 -8
  136. package/.claude/commands/maestro-fork.md +4 -3
  137. package/.claude/commands/maestro-grill.md +1 -1
  138. package/.claude/commands/maestro-guard.md +2 -2
  139. package/.claude/commands/maestro-impeccable.md +2 -1
  140. package/.claude/commands/maestro-init.md +1 -1
  141. package/.claude/commands/maestro-merge.md +12 -1
  142. package/.claude/commands/maestro-milestone-audit.md +1 -0
  143. package/.claude/commands/maestro-milestone-complete.md +8 -3
  144. package/.claude/commands/maestro-milestone-release.md +8 -4
  145. package/.claude/commands/maestro-overlay.md +9 -0
  146. package/.claude/commands/maestro-plan.md +1 -0
  147. package/.claude/commands/maestro-player.md +2 -2
  148. package/.claude/commands/maestro-quick.md +5 -3
  149. package/.claude/commands/maestro-ralph-cli-execute.md +237 -0
  150. package/.claude/commands/maestro-ralph-cli.md +663 -0
  151. package/.claude/commands/maestro-ralph-execute.md +127 -11
  152. package/.claude/commands/maestro-ralph.md +8 -8
  153. package/.claude/commands/maestro-roadmap.md +1 -1
  154. package/.claude/commands/maestro-swarm-workflow.md +16 -14
  155. package/.claude/commands/maestro-tools-register.md +16 -1
  156. package/.claude/commands/maestro-ui-codify.md +11 -1
  157. package/.claude/commands/maestro-universal-workflow.md +28 -5
  158. package/.claude/commands/maestro-update.md +10 -7
  159. package/.claude/commands/maestro.md +1 -1
  160. package/.claude/commands/manage-codebase-rebuild.md +5 -1
  161. package/.claude/commands/manage-drift-realign.md +6 -2
  162. package/.claude/commands/manage-harvest.md +4 -1
  163. package/.claude/commands/manage-issue-discover.md +1 -0
  164. package/.claude/commands/manage-kg-extractors.md +5 -1
  165. package/.claude/commands/manage-knowhow-capture.md +1 -0
  166. package/.claude/commands/manage-knowledge-audit.md +3 -0
  167. package/.claude/commands/manage-wiki.md +1 -0
  168. package/.claude/commands/odyssey-debug.md +2 -1
  169. package/.claude/commands/odyssey-improve.md +2 -2
  170. package/.claude/commands/odyssey-planex.md +8 -7
  171. package/.claude/commands/odyssey-review-test-fix.md +4 -1
  172. package/.claude/commands/odyssey-ui.md +4 -4
  173. package/.claude/commands/quality-auto-test.md +11 -1
  174. package/.claude/commands/quality-debug.md +16 -2
  175. package/.claude/commands/quality-retrospective.md +9 -1
  176. package/.claude/commands/quality-review.md +8 -0
  177. package/.claude/commands/quality-sync.md +2 -2
  178. package/.claude/commands/quality-test.md +9 -1
  179. package/.claude/commands/security-audit.md +14 -4
  180. package/.claude/commands/spec-add.md +5 -2
  181. package/.claude/commands/spec-load.md +1 -1
  182. package/.claude/commands/spec-remove.md +1 -1
  183. package/.claude/commands/spec-setup.md +3 -0
  184. package/.codex/skills/codify-to-knowhow/SKILL.md +27 -15
  185. package/.codex/skills/domain-add/SKILL.md +5 -3
  186. package/.codex/skills/learn-decompose/SKILL.md +22 -4
  187. package/.codex/skills/learn-follow/SKILL.md +12 -6
  188. package/.codex/skills/learn-investigate/SKILL.md +11 -6
  189. package/.codex/skills/learn-retro/SKILL.md +12 -6
  190. package/.codex/skills/learn-second-opinion/SKILL.md +11 -3
  191. package/.codex/skills/maestro/SKILL.md +19 -13
  192. package/.codex/skills/maestro-amend/SKILL.md +10 -2
  193. package/.codex/skills/maestro-analyze/SKILL.md +7 -1
  194. package/.codex/skills/maestro-blueprint/SKILL.md +1 -1
  195. package/.codex/skills/maestro-brainstorm/SKILL.md +11 -8
  196. package/.codex/skills/maestro-collab/SKILL.md +5 -5
  197. package/.codex/skills/maestro-companion/SKILL.md +4 -1
  198. package/.codex/skills/maestro-composer/SKILL.md +6 -3
  199. package/.codex/skills/maestro-execute/SKILL.md +11 -8
  200. package/.codex/skills/maestro-fork/SKILL.md +4 -3
  201. package/.codex/skills/maestro-grill/SKILL.md +1 -1
  202. package/.codex/skills/maestro-guard/SKILL.md +1 -1
  203. package/.codex/skills/maestro-impeccable/SKILL.md +5 -5
  204. package/.codex/skills/maestro-init/SKILL.md +3 -2
  205. package/.codex/skills/maestro-milestone-audit/SKILL.md +21 -9
  206. package/.codex/skills/maestro-milestone-complete/SKILL.md +3 -3
  207. package/.codex/skills/maestro-milestone-release/SKILL.md +18 -1
  208. package/.codex/skills/maestro-next/SKILL.md +11 -10
  209. package/.codex/skills/maestro-overlay/SKILL.md +16 -6
  210. package/.codex/skills/maestro-player/SKILL.md +11 -5
  211. package/.codex/skills/maestro-quick/SKILL.md +2 -2
  212. package/.codex/skills/maestro-ralph/SKILL.md +44 -31
  213. package/.codex/skills/maestro-ralph-cli/SKILL.md +394 -0
  214. package/.codex/skills/maestro-ralph-cli-execute/SKILL.md +146 -0
  215. package/.codex/skills/maestro-ralph-execute/SKILL.md +105 -24
  216. package/.codex/skills/maestro-roadmap/SKILL.md +8 -2
  217. package/.codex/skills/maestro-tools-execute/SKILL.md +8 -4
  218. package/.codex/skills/maestro-tools-register/SKILL.md +10 -6
  219. package/.codex/skills/maestro-ui-codify/SKILL.md +14 -9
  220. package/.codex/skills/manage-codebase-rebuild/SKILL.md +36 -14
  221. package/.codex/skills/manage-codebase-refresh/SKILL.md +1 -1
  222. package/.codex/skills/manage-drift-realign/SKILL.md +15 -12
  223. package/.codex/skills/manage-harvest/SKILL.md +1 -1
  224. package/.codex/skills/manage-issue/SKILL.md +8 -4
  225. package/.codex/skills/manage-issue-discover/SKILL.md +15 -14
  226. package/.codex/skills/manage-knowhow/SKILL.md +3 -2
  227. package/.codex/skills/manage-knowhow-capture/SKILL.md +4 -3
  228. package/.codex/skills/manage-learn/SKILL.md +2 -2
  229. package/.codex/skills/odyssey-debug/SKILL.md +12 -7
  230. package/.codex/skills/odyssey-improve/SKILL.md +11 -6
  231. package/.codex/skills/odyssey-planex/SKILL.md +14 -8
  232. package/.codex/skills/odyssey-review-test-fix/SKILL.md +12 -7
  233. package/.codex/skills/odyssey-ui/SKILL.md +10 -5
  234. package/.codex/skills/quality-auto-test/SKILL.md +13 -5
  235. package/.codex/skills/quality-debug/SKILL.md +18 -11
  236. package/.codex/skills/quality-refactor/SKILL.md +4 -4
  237. package/.codex/skills/quality-retrospective/SKILL.md +5 -6
  238. package/.codex/skills/quality-review/SKILL.md +18 -11
  239. package/.codex/skills/quality-sync/SKILL.md +2 -2
  240. package/.codex/skills/quality-test/SKILL.md +7 -5
  241. package/.codex/skills/security-audit/SKILL.md +7 -5
  242. package/.codex/skills/spec-add/SKILL.md +9 -7
  243. package/.codex/skills/spec-load/SKILL.md +3 -2
  244. package/.codex/skills/spec-map/SKILL.md +10 -1
  245. package/.codex/skills/spec-remove/SKILL.md +3 -2
  246. package/.codex/skills/team-coordinate/SKILL.md +10 -4
  247. package/.codex/skills/team-lifecycle-v4/SKILL.md +33 -26
  248. package/.codex/skills/team-quality-assurance/SKILL.md +43 -0
  249. package/.codex/skills/team-review/SKILL.md +50 -6
  250. package/.codex/skills/team-tech-debt/SKILL.md +53 -7
  251. package/.codex/skills/team-testing/SKILL.md +50 -2
  252. package/.codex/skills/wiki-connect/SKILL.md +3 -1
  253. package/.codex/skills/wiki-digest/SKILL.md +6 -4
  254. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.d.ts +16 -0
  255. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js +419 -44
  256. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js.map +1 -1
  257. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +43 -5
  258. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  259. package/dashboard/dist-server/src/graph/kg/db/types.d.ts +3 -0
  260. package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.d.ts +46 -0
  261. package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.js +329 -0
  262. package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.js.map +1 -0
  263. package/dashboard/dist-server/src/graph/kg/embedding/index.d.ts +2 -0
  264. package/dashboard/dist-server/src/graph/kg/embedding/index.js +3 -0
  265. package/dashboard/dist-server/src/graph/kg/embedding/index.js.map +1 -0
  266. package/dashboard/dist-server/src/graph/kg/engine.d.ts +19 -1
  267. package/dashboard/dist-server/src/graph/kg/engine.js +71 -1
  268. package/dashboard/dist-server/src/graph/kg/engine.js.map +1 -1
  269. package/dashboard/dist-server/src/graph/kg/query/scoring.d.ts +5 -0
  270. package/dashboard/dist-server/src/graph/kg/query/scoring.js +85 -1
  271. package/dashboard/dist-server/src/graph/kg/query/scoring.js.map +1 -1
  272. package/dashboard/dist-server/src/graph/kg/query/search.d.ts +7 -0
  273. package/dashboard/dist-server/src/graph/kg/query/search.js +117 -1
  274. package/dashboard/dist-server/src/graph/kg/query/search.js.map +1 -1
  275. package/dashboard/dist-server/src/graph/kg/surface/mcp-tools.js +49 -0
  276. package/dashboard/dist-server/src/graph/kg/surface/mcp-tools.js.map +1 -1
  277. package/dashboard/dist-server/src/hooks/kg-sync-hook.js +3 -0
  278. package/dashboard/dist-server/src/hooks/kg-sync-hook.js.map +1 -1
  279. package/dist/src/core/plugin-bridge.d.ts.map +1 -1
  280. package/dist/src/core/plugin-bridge.js +17 -0
  281. package/dist/src/core/plugin-bridge.js.map +1 -1
  282. package/dist/src/graph/kg/db/types.d.ts +3 -0
  283. package/dist/src/graph/kg/db/types.d.ts.map +1 -1
  284. package/dist/src/graph/kg/embedding/code-embedding.d.ts +47 -0
  285. package/dist/src/graph/kg/embedding/code-embedding.d.ts.map +1 -0
  286. package/dist/src/graph/kg/embedding/code-embedding.js +329 -0
  287. package/dist/src/graph/kg/embedding/code-embedding.js.map +1 -0
  288. package/dist/src/graph/kg/embedding/index.d.ts +3 -0
  289. package/dist/src/graph/kg/embedding/index.d.ts.map +1 -0
  290. package/dist/src/graph/kg/embedding/index.js +3 -0
  291. package/dist/src/graph/kg/embedding/index.js.map +1 -0
  292. package/dist/src/graph/kg/engine.d.ts +19 -1
  293. package/dist/src/graph/kg/engine.d.ts.map +1 -1
  294. package/dist/src/graph/kg/engine.js +71 -1
  295. package/dist/src/graph/kg/engine.js.map +1 -1
  296. package/dist/src/graph/kg/query/scoring.d.ts +5 -0
  297. package/dist/src/graph/kg/query/scoring.d.ts.map +1 -1
  298. package/dist/src/graph/kg/query/scoring.js +85 -1
  299. package/dist/src/graph/kg/query/scoring.js.map +1 -1
  300. package/dist/src/graph/kg/query/search.d.ts +7 -0
  301. package/dist/src/graph/kg/query/search.d.ts.map +1 -1
  302. package/dist/src/graph/kg/query/search.js +117 -1
  303. package/dist/src/graph/kg/query/search.js.map +1 -1
  304. package/dist/src/graph/kg/surface/mcp-tools.d.ts.map +1 -1
  305. package/dist/src/graph/kg/surface/mcp-tools.js +49 -0
  306. package/dist/src/graph/kg/surface/mcp-tools.js.map +1 -1
  307. package/dist/src/hooks/kg-sync-hook.d.ts.map +1 -1
  308. package/dist/src/hooks/kg-sync-hook.js +3 -0
  309. package/dist/src/hooks/kg-sync-hook.js.map +1 -1
  310. package/dist/src/tools/code-semantic-search.d.ts +10 -0
  311. package/dist/src/tools/code-semantic-search.d.ts.map +1 -0
  312. package/dist/src/tools/code-semantic-search.js +81 -0
  313. package/dist/src/tools/code-semantic-search.js.map +1 -0
  314. package/dist/src/tools/index.d.ts.map +1 -1
  315. package/dist/src/tools/index.js +4 -0
  316. package/dist/src/tools/index.js.map +1 -1
  317. package/dist/src/tools/wiki-search.d.ts +13 -0
  318. package/dist/src/tools/wiki-search.d.ts.map +1 -0
  319. package/dist/src/tools/wiki-search.js +114 -0
  320. package/dist/src/tools/wiki-search.js.map +1 -0
  321. package/dist/src/utils/update-notices.js +12 -0
  322. package/dist/src/utils/update-notices.js.map +1 -1
  323. package/package.json +4 -1
@@ -0,0 +1,329 @@
1
+ // src/graph/kg/embedding/code-embedding.ts — Code embedding: structured text + vector index + search
2
+ // 参考: dashboard/src/server/wiki/embedding.ts (embedTexts, cosineSimilarity, binary persistence)
3
+ import { createHash } from 'node:crypto';
4
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, renameSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ // ---------------------------------------------------------------------------
7
+ // Embeddable kinds — node kinds worth embedding
8
+ // ---------------------------------------------------------------------------
9
+ export const EMBEDDABLE_KINDS = new Set([
10
+ 'function', 'method', 'class', 'interface', 'component', 'route',
11
+ 'struct', 'trait', 'protocol', 'type_alias',
12
+ ]);
13
+ // ---------------------------------------------------------------------------
14
+ // Lazy import of wiki embedding module
15
+ // ---------------------------------------------------------------------------
16
+ async function getEmbedding() {
17
+ return import('#maestro-dashboard/wiki/embedding.js');
18
+ }
19
+ // ---------------------------------------------------------------------------
20
+ // Node → structured text
21
+ // ---------------------------------------------------------------------------
22
+ /**
23
+ * Convert a UnifiedNode into structured text suitable for embedding.
24
+ * Fields are separated by newlines with labeled prefixes for better retrieval.
25
+ * Adds 'passage: ' prefix when using local model (non-API mode).
26
+ */
27
+ export function nodeToEmbeddingText(node, apiMode) {
28
+ const parts = [
29
+ `path: ${node.filePath}`,
30
+ `kind: ${node.kind}`,
31
+ `language: ${node.language}`,
32
+ `symbol: ${node.qualifiedName || node.name}`,
33
+ `exported: ${node.isExported}`,
34
+ ];
35
+ if (node.decorators.length > 0)
36
+ parts.push(`decorators: ${node.decorators.join(', ')}`);
37
+ if (node.keywords.length > 0)
38
+ parts.push(`keywords: ${node.keywords.join(', ')}`);
39
+ parts.push(`docstring: ${node.docstring || ''}`, `signature: ${node.signature || ''}`, `code: ${node.definition.slice(0, 500)}`);
40
+ const text = parts.join('\n');
41
+ if (apiMode === undefined) {
42
+ return text;
43
+ }
44
+ return apiMode ? text : 'passage: ' + text;
45
+ }
46
+ // ---------------------------------------------------------------------------
47
+ // Filter
48
+ // ---------------------------------------------------------------------------
49
+ /**
50
+ * Returns true if the node kind is worth embedding and it originates from codegraph.
51
+ */
52
+ export function isEmbeddable(node) {
53
+ return EMBEDDABLE_KINDS.has(node.kind) && node.sourceType === 'codegraph';
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // Content hashing (for incremental rebuild)
57
+ // ---------------------------------------------------------------------------
58
+ function hashNodeContent(text) {
59
+ return createHash('md5').update(text).digest('hex');
60
+ }
61
+ // ---------------------------------------------------------------------------
62
+ // Vector math helpers
63
+ // ---------------------------------------------------------------------------
64
+ function normalizeVector(v) {
65
+ let norm = 0;
66
+ for (let i = 0; i < v.length; i++)
67
+ norm += v[i] * v[i];
68
+ norm = Math.sqrt(norm);
69
+ if (norm === 0)
70
+ return v;
71
+ const out = new Float32Array(v.length);
72
+ for (let i = 0; i < v.length; i++)
73
+ out[i] = v[i] / norm;
74
+ return out;
75
+ }
76
+ function dotProduct(a, b) {
77
+ let sum = 0;
78
+ for (let i = 0; i < a.length; i++)
79
+ sum += a[i] * b[i];
80
+ return sum;
81
+ }
82
+ function buildFlatMatrix(vectors, dim) {
83
+ const flat = new Float32Array(vectors.length * dim);
84
+ for (let i = 0; i < vectors.length; i++)
85
+ flat.set(vectors[i], i * dim);
86
+ return flat;
87
+ }
88
+ // ---------------------------------------------------------------------------
89
+ // Parallel embedding constants
90
+ // ---------------------------------------------------------------------------
91
+ const PARALLEL_CHUNK_SIZE = 200;
92
+ const MAX_CONCURRENCY = 4;
93
+ // ---------------------------------------------------------------------------
94
+ // Build embedding index
95
+ // ---------------------------------------------------------------------------
96
+ /**
97
+ * Embed texts in parallel chunks with bounded concurrency.
98
+ */
99
+ async function embedTextsParallel(texts, embedFn) {
100
+ if (texts.length <= PARALLEL_CHUNK_SIZE)
101
+ return embedFn(texts);
102
+ const chunks = [];
103
+ for (let i = 0; i < texts.length; i += PARALLEL_CHUNK_SIZE) {
104
+ chunks.push(texts.slice(i, i + PARALLEL_CHUNK_SIZE));
105
+ }
106
+ const results = new Array(chunks.length);
107
+ for (let start = 0; start < chunks.length; start += MAX_CONCURRENCY) {
108
+ const batch = chunks.slice(start, start + MAX_CONCURRENCY);
109
+ const batchResults = await Promise.all(batch.map(c => embedFn(c)));
110
+ for (let j = 0; j < batchResults.length; j++) {
111
+ results[start + j] = batchResults[j];
112
+ }
113
+ }
114
+ const flat = [];
115
+ for (const r of results)
116
+ flat.push(...r);
117
+ return flat;
118
+ }
119
+ /**
120
+ * Build a code embedding index from UnifiedNode[].
121
+ * Supports incremental rebuild: if `existing` is provided, only re-embeds
122
+ * nodes whose content hash has changed.
123
+ */
124
+ export async function buildCodeEmbeddingIndex(nodes, existing) {
125
+ const t0 = Date.now();
126
+ const { embedTexts, isApiMode, getModelId } = await getEmbedding();
127
+ const apiMode = isApiMode();
128
+ const activeModel = getModelId();
129
+ const embeddable = nodes.filter(isEmbeddable);
130
+ const texts = embeddable.map(n => nodeToEmbeddingText(n, apiMode));
131
+ const hashes = texts.map(hashNodeContent);
132
+ const nodeIds = embeddable.map(n => n.id);
133
+ let vectors;
134
+ const canIncremental = existing && existing.modelId === activeModel
135
+ && existing.nodeIds.length > 0 && existing.contentHashes;
136
+ if (canIncremental) {
137
+ const ex = existing;
138
+ const exHashes = ex.contentHashes;
139
+ const existingHashMap = new Map();
140
+ for (let i = 0; i < ex.nodeIds.length; i++) {
141
+ if (exHashes[i]) {
142
+ existingHashMap.set(ex.nodeIds[i], {
143
+ hash: exHashes[i],
144
+ vector: ex.vectors[i],
145
+ });
146
+ }
147
+ }
148
+ vectors = new Array(nodeIds.length);
149
+ const toEmbed = [];
150
+ for (let i = 0; i < nodeIds.length; i++) {
151
+ const cached = existingHashMap.get(nodeIds[i]);
152
+ if (cached && cached.hash === hashes[i]) {
153
+ vectors[i] = cached.vector;
154
+ }
155
+ else {
156
+ toEmbed.push({ slot: i, text: texts[i] });
157
+ }
158
+ }
159
+ if (toEmbed.length > 0) {
160
+ const newVectors = await embedTextsParallel(toEmbed.map(e => e.text), embedTexts);
161
+ for (let j = 0; j < toEmbed.length; j++) {
162
+ vectors[toEmbed[j].slot] = newVectors[j];
163
+ }
164
+ }
165
+ }
166
+ else {
167
+ vectors = texts.length > 0 ? await embedTextsParallel(texts, embedTexts) : [];
168
+ }
169
+ // Pre-normalize all vectors for fast dot-product search
170
+ for (let i = 0; i < vectors.length; i++)
171
+ vectors[i] = normalizeVector(vectors[i]);
172
+ const dim = vectors[0]?.length ?? 384;
173
+ return {
174
+ modelId: activeModel,
175
+ dimension: dim,
176
+ nodeIds,
177
+ vectors,
178
+ contentHashes: hashes,
179
+ builtAt: Date.now(),
180
+ buildTimeMs: Date.now() - t0,
181
+ normalized: true,
182
+ flatMatrixBuffer: vectors.length > 0 ? buildFlatMatrix(vectors, dim) : undefined,
183
+ };
184
+ }
185
+ // ---------------------------------------------------------------------------
186
+ // Cosine similarity (flat scan)
187
+ // ---------------------------------------------------------------------------
188
+ function cosineSimilarity(a, b) {
189
+ let dot = 0, normA = 0, normB = 0;
190
+ for (let i = 0; i < a.length; i++) {
191
+ dot += a[i] * b[i];
192
+ normA += a[i] * a[i];
193
+ normB += b[i] * b[i];
194
+ }
195
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
196
+ return denom === 0 ? 0 : dot / denom;
197
+ }
198
+ // ---------------------------------------------------------------------------
199
+ // Vector search
200
+ // ---------------------------------------------------------------------------
201
+ /**
202
+ * Vector search over the code embedding index.
203
+ * Uses dot product on pre-normalized vectors when available, falls back to cosine.
204
+ */
205
+ export function searchCodeVectors(queryVec, index, limit) {
206
+ const n = index.nodeIds.length;
207
+ const scored = [];
208
+ if (index.normalized && index.flatMatrixBuffer) {
209
+ const q = normalizeVector(queryVec);
210
+ const dim = index.dimension;
211
+ const flat = index.flatMatrixBuffer;
212
+ for (let i = 0; i < n; i++) {
213
+ const off = i * dim;
214
+ let dot = 0;
215
+ for (let j = 0; j < dim; j++)
216
+ dot += q[j] * flat[off + j];
217
+ if (dot > 0)
218
+ scored.push({ nodeId: index.nodeIds[i], score: dot });
219
+ }
220
+ }
221
+ else if (index.normalized) {
222
+ const q = normalizeVector(queryVec);
223
+ for (let i = 0; i < n; i++) {
224
+ const sim = dotProduct(q, index.vectors[i]);
225
+ if (sim > 0)
226
+ scored.push({ nodeId: index.nodeIds[i], score: sim });
227
+ }
228
+ }
229
+ else {
230
+ for (let i = 0; i < n; i++) {
231
+ const sim = cosineSimilarity(queryVec, index.vectors[i]);
232
+ if (sim > 0)
233
+ scored.push({ nodeId: index.nodeIds[i], score: sim });
234
+ }
235
+ }
236
+ scored.sort((a, b) => b.score - a.score);
237
+ return scored.slice(0, limit);
238
+ }
239
+ // ---------------------------------------------------------------------------
240
+ // Persistence — binary format
241
+ // Format: [metaLen:4][metaJSON][packedVectors: n*dim*4]
242
+ // metaJSON contains: modelId, dimension, nodeIds, contentHashes, builtAt, buildTimeMs
243
+ // ---------------------------------------------------------------------------
244
+ const BINARY_FILE = 'code-embedding-index.bin';
245
+ /**
246
+ * Save a CodeEmbeddingIndex to disk in binary format.
247
+ */
248
+ export function saveCodeEmbeddingIndex(index, dir) {
249
+ mkdirSync(dir, { recursive: true });
250
+ const dim = index.dimension;
251
+ const n = index.nodeIds.length;
252
+ const metaJson = JSON.stringify({
253
+ modelId: index.modelId,
254
+ dimension: dim,
255
+ nodeIds: index.nodeIds,
256
+ contentHashes: index.contentHashes,
257
+ builtAt: index.builtAt,
258
+ buildTimeMs: index.buildTimeMs,
259
+ normalized: index.normalized ?? false,
260
+ });
261
+ const metaBytes = Buffer.from(metaJson, 'utf-8');
262
+ // Format: [metaLen:4][meta][packedVectors: n*dim*4]
263
+ const vectorBytes = n * dim * 4;
264
+ const totalSize = 4 + metaBytes.length + vectorBytes;
265
+ const buf = Buffer.alloc(totalSize);
266
+ let offset = 0;
267
+ buf.writeUInt32LE(metaBytes.length, offset);
268
+ offset += 4;
269
+ metaBytes.copy(buf, offset);
270
+ offset += metaBytes.length;
271
+ for (let i = 0; i < n; i++) {
272
+ const v = index.vectors[i];
273
+ const vBuf = Buffer.from(v.buffer, v.byteOffset, v.byteLength);
274
+ vBuf.copy(buf, offset);
275
+ offset += dim * 4;
276
+ }
277
+ const tmpPath = join(dir, BINARY_FILE + '.tmp');
278
+ writeFileSync(tmpPath, buf);
279
+ renameSync(tmpPath, join(dir, BINARY_FILE));
280
+ }
281
+ /**
282
+ * Load a CodeEmbeddingIndex from disk. Returns null if file doesn't exist.
283
+ */
284
+ export function loadCodeEmbeddingIndex(dir) {
285
+ const filePath = join(dir, BINARY_FILE);
286
+ if (!existsSync(filePath))
287
+ return null;
288
+ try {
289
+ const raw = readFileSync(filePath);
290
+ let offset = 0;
291
+ const metaLen = raw.readUInt32LE(offset);
292
+ offset += 4;
293
+ const meta = JSON.parse(raw.subarray(offset, offset + metaLen).toString('utf-8'));
294
+ offset += metaLen;
295
+ const dim = meta.dimension;
296
+ const n = meta.nodeIds.length;
297
+ const vecBytes = n * dim * 4;
298
+ const vecStart = raw.byteOffset + offset;
299
+ const vectors = new Array(n);
300
+ if (vecStart % 4 === 0) {
301
+ const allFloats = new Float32Array(raw.buffer, vecStart, n * dim);
302
+ for (let i = 0; i < n; i++)
303
+ vectors[i] = allFloats.subarray(i * dim, (i + 1) * dim);
304
+ }
305
+ else {
306
+ const aligned = new ArrayBuffer(vecBytes);
307
+ new Uint8Array(aligned).set(raw.subarray(offset, offset + vecBytes));
308
+ const allFloats = new Float32Array(aligned);
309
+ for (let i = 0; i < n; i++)
310
+ vectors[i] = allFloats.subarray(i * dim, (i + 1) * dim);
311
+ }
312
+ const isNormalized = meta.normalized ?? false;
313
+ return {
314
+ modelId: meta.modelId,
315
+ dimension: dim,
316
+ nodeIds: meta.nodeIds,
317
+ vectors,
318
+ contentHashes: meta.contentHashes,
319
+ builtAt: meta.builtAt,
320
+ buildTimeMs: meta.buildTimeMs,
321
+ normalized: isNormalized,
322
+ flatMatrixBuffer: isNormalized && n > 0 ? buildFlatMatrix(vectors, dim) : undefined,
323
+ };
324
+ }
325
+ catch {
326
+ return null;
327
+ }
328
+ }
329
+ //# sourceMappingURL=code-embedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-embedding.js","sourceRoot":"","sources":["../../../../../../src/graph/kg/embedding/code-embedding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { nodeToEmbeddingText, isEmbeddable, buildCodeEmbeddingIndex, searchCodeVectors, saveCodeEmbeddingIndex, loadCodeEmbeddingIndex, EMBEDDABLE_KINDS, } from './code-embedding.js';
2
+ export type { CodeEmbeddingIndex, VectorSearchResult, } from './code-embedding.js';
@@ -0,0 +1,3 @@
1
+ // src/graph/kg/embedding/index.ts — Code embedding 层导出
2
+ export { nodeToEmbeddingText, isEmbeddable, buildCodeEmbeddingIndex, searchCodeVectors, saveCodeEmbeddingIndex, loadCodeEmbeddingIndex, EMBEDDABLE_KINDS, } from './code-embedding.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/graph/kg/embedding/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC"}
@@ -1,13 +1,15 @@
1
1
  import { KgDatabaseConnection, KgQueryBuilder } from './db/index.js';
2
- import type { UnifiedNode, UnifiedEdge, UnifiedGraphStats, SyncResult, ResolutionResult, ExtractionResult, SourceType } from './db/types.js';
2
+ import type { UnifiedNode, UnifiedEdge, UnifiedGraphStats, UnifiedSearchResult, SyncResult, ResolutionResult, ExtractionResult, SourceType } from './db/types.js';
3
3
  import type { KnowledgeResolutionResult } from './resolution/knowledge-resolver.js';
4
4
  import type { TraversalResult, NodeContext, NodeMetrics, PathStep } from './query/traversal.js';
5
5
  import type { UnifiedSearchOutput } from './query/search.js';
6
+ import type { CodeEmbeddingIndex } from './embedding/code-embedding.js';
6
7
  import type { BuiltContext } from './query/context-builder.js';
7
8
  export declare class MaestroGraph {
8
9
  private conn;
9
10
  private queries;
10
11
  private projectRoot;
12
+ private _codeEmbeddingCache;
11
13
  constructor(projectRoot: string);
12
14
  static init(projectRoot: string): Promise<MaestroGraph>;
13
15
  static open(projectRoot: string): Promise<MaestroGraph>;
@@ -38,6 +40,22 @@ export declare class MaestroGraph {
38
40
  sourceTypes?: SourceType[];
39
41
  limit?: number;
40
42
  }): UnifiedNode[];
43
+ private _getCodeEmbeddingDir;
44
+ /**
45
+ * Build (or incrementally rebuild) the code embedding index from all codegraph nodes.
46
+ * Persists the index to .workflow/kg/code-embedding-index.bin and caches in memory.
47
+ */
48
+ buildCodeEmbeddings(): Promise<CodeEmbeddingIndex>;
49
+ /**
50
+ * Load the code embedding index from disk or return the in-memory cache.
51
+ * Returns null if no persisted index exists.
52
+ */
53
+ getCodeEmbeddingIndex(): Promise<CodeEmbeddingIndex | null>;
54
+ searchHybrid(query: string, options?: {
55
+ limit?: number;
56
+ sourceTypes?: SourceType[];
57
+ }): Promise<UnifiedSearchResult[]>;
58
+ private _getVectorResults;
41
59
  getNode(id: string): UnifiedNode | null;
42
60
  getStats(): UnifiedGraphStats;
43
61
  getDetectedFrameworks(): string[];
@@ -5,12 +5,13 @@ import { resolve } from 'node:path';
5
5
  import { KgDatabaseConnection, KgQueryBuilder, getKgDatabasePath, applyMigrations } from './db/index.js';
6
6
  import { resolveKnowledgeEdges as resolveKnowledgeEdgesImpl } from './resolution/knowledge-resolver.js';
7
7
  import { bfs, dfs as dfsImpl, getCallers as getCallersImpl, getCallees as getCalleesImpl, getImpactRadius, getCallGraph as getCallGraphImpl, getTypeHierarchy as getTypeHierarchyImpl, findUsages as findUsagesImpl, getAncestors as getAncestorsImpl, getChildren as getChildrenImpl, getNodeContext as getNodeContextImpl, getFileDependencies as getFileDependenciesImpl, getFileDependents as getFileDependentsImpl, findDeadCode as findDeadCodeImpl, getNodeMetrics as getNodeMetricsImpl, findShortestPath as findShortestPathImpl, } from './query/traversal.js';
8
- import { searchUnified as searchUnifiedImpl } from './query/search.js';
8
+ import { searchUnified as searchUnifiedImpl, mergeCodeSearchResults } from './query/search.js';
9
9
  import { buildContext as buildContextImpl } from './query/context-builder.js';
10
10
  export class MaestroGraph {
11
11
  conn = null;
12
12
  queries = null;
13
13
  projectRoot;
14
+ _codeEmbeddingCache = null;
14
15
  constructor(projectRoot) {
15
16
  this.projectRoot = resolve(projectRoot);
16
17
  }
@@ -69,6 +70,7 @@ export class MaestroGraph {
69
70
  this.conn?.close();
70
71
  this.conn = null;
71
72
  this.queries = null;
73
+ this._codeEmbeddingCache = null;
72
74
  }
73
75
  // ── Indexing ──────────────────────────────────────────────────────
74
76
  async indexAll(options) {
@@ -122,6 +124,74 @@ export class MaestroGraph {
122
124
  limit: options?.limit ?? 20,
123
125
  });
124
126
  }
127
+ // ── Code Embedding ────────────────────────────────────────────────
128
+ _getCodeEmbeddingDir() {
129
+ return resolve(this.projectRoot, '.workflow', 'kg');
130
+ }
131
+ /**
132
+ * Build (or incrementally rebuild) the code embedding index from all codegraph nodes.
133
+ * Persists the index to .workflow/kg/code-embedding-index.bin and caches in memory.
134
+ */
135
+ async buildCodeEmbeddings() {
136
+ if (!this.queries)
137
+ throw new Error('MaestroGraph not open');
138
+ const { buildCodeEmbeddingIndex, saveCodeEmbeddingIndex } = await import('./embedding/index.js');
139
+ // Get all code nodes from the DB (only codegraph nodes are embeddable)
140
+ const allCodeNodes = this.queries.getNodesBySourceType('codegraph');
141
+ // Build index (incremental if cache exists)
142
+ const index = await buildCodeEmbeddingIndex(allCodeNodes, this._codeEmbeddingCache);
143
+ // Persist to disk
144
+ const dir = this._getCodeEmbeddingDir();
145
+ saveCodeEmbeddingIndex(index, dir);
146
+ // Cache in memory
147
+ this._codeEmbeddingCache = index;
148
+ return index;
149
+ }
150
+ /**
151
+ * Load the code embedding index from disk or return the in-memory cache.
152
+ * Returns null if no persisted index exists.
153
+ */
154
+ async getCodeEmbeddingIndex() {
155
+ if (this._codeEmbeddingCache)
156
+ return this._codeEmbeddingCache;
157
+ try {
158
+ const { loadCodeEmbeddingIndex } = await import('./embedding/index.js');
159
+ const dir = this._getCodeEmbeddingDir();
160
+ const index = loadCodeEmbeddingIndex(dir);
161
+ if (index)
162
+ this._codeEmbeddingCache = index;
163
+ return index;
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ }
169
+ async searchHybrid(query, options) {
170
+ if (!this.queries)
171
+ throw new Error('MaestroGraph not open');
172
+ const limit = options?.limit ?? 20;
173
+ const vecPromise = this._getVectorResults(query, limit * 2);
174
+ const ftsOutput = searchUnifiedImpl(this.queries, query, {
175
+ limit: limit * 2,
176
+ sourceTypes: options?.sourceTypes,
177
+ });
178
+ const vecResults = await vecPromise;
179
+ if (!vecResults || vecResults.length === 0) {
180
+ return ftsOutput.directMatches.slice(0, limit);
181
+ }
182
+ return mergeCodeSearchResults(ftsOutput.directMatches, vecResults, this.queries, limit);
183
+ }
184
+ async _getVectorResults(query, limit) {
185
+ const embIdx = await this.getCodeEmbeddingIndex();
186
+ if (!embIdx || embIdx.nodeIds.length === 0)
187
+ return null;
188
+ const { embedQuery } = await import('#maestro-dashboard/wiki/embedding.js');
189
+ const queryVec = await embedQuery(query);
190
+ if (!queryVec)
191
+ return null;
192
+ const { searchCodeVectors } = await import('./embedding/index.js');
193
+ return searchCodeVectors(queryVec, embIdx, limit);
194
+ }
125
195
  getNode(id) {
126
196
  if (!this.queries)
127
197
  throw new Error('MaestroGraph not open');
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../../src/graph/kg/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../../src/graph/kg/engine.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,11 @@ import type { UnifiedNodeKind } from '../db/types.js';
2
2
  export declare function removeStopWords(tokens: string[]): string[];
3
3
  export declare function getStemVariants(term: string): string[];
4
4
  export declare function extractSearchTerms(query: string): string[];
5
+ /**
6
+ * 代码查询扩展 — 基于 extractSearchTerms 分词 + 缩写同义词 + 词干变体
7
+ * 返回包含原始 term、同义词和词干变体的扩展查询字符串
8
+ */
9
+ export declare function expandCodeQuery(query: string): string;
5
10
  export declare function kindBonus(kind: UnifiedNodeKind): number;
6
11
  export declare function scorePathRelevance(filePath: string, query: string): number;
7
12
  export declare function nameMatchBonus(name: string, query: string): number;
@@ -60,7 +60,91 @@ export function extractSearchTerms(query) {
60
60
  return [...new Set(terms)];
61
61
  }
62
62
  // ---------------------------------------------------------------------------
63
- // 4. 多信号评分
63
+ // 4. 代码查询扩展 (缩写 ↔ 全称同义词)
64
+ // ---------------------------------------------------------------------------
65
+ const CODE_SYNONYMS = new Map([
66
+ ['auth', ['authentication', 'authorization']],
67
+ ['authentication', ['auth']],
68
+ ['authorization', ['auth']],
69
+ ['db', ['database']],
70
+ ['database', ['db']],
71
+ ['config', ['configuration', 'settings']],
72
+ ['configuration', ['config']],
73
+ ['settings', ['config', 'options']],
74
+ ['btn', ['button']],
75
+ ['button', ['btn']],
76
+ ['msg', ['message']],
77
+ ['message', ['msg']],
78
+ ['req', ['request']],
79
+ ['request', ['req']],
80
+ ['res', ['response']],
81
+ ['response', ['res']],
82
+ ['err', ['error', 'exception']],
83
+ ['error', ['err', 'exception']],
84
+ ['exception', ['err', 'error']],
85
+ ['fn', ['function']],
86
+ ['cb', ['callback']],
87
+ ['callback', ['cb']],
88
+ ['ctx', ['context']],
89
+ ['context', ['ctx']],
90
+ ['env', ['environment']],
91
+ ['environment', ['env']],
92
+ ['param', ['parameter', 'arg', 'argument']],
93
+ ['parameter', ['param']],
94
+ ['arg', ['argument', 'param']],
95
+ ['argument', ['arg', 'param']],
96
+ ['init', ['initialize', 'initialization', 'setup']],
97
+ ['initialize', ['init']],
98
+ ['setup', ['init', 'configure']],
99
+ ['util', ['utility', 'helper']],
100
+ ['utility', ['util', 'helper']],
101
+ ['helper', ['util', 'utility']],
102
+ ['repo', ['repository']],
103
+ ['repository', ['repo']],
104
+ ['info', ['information']],
105
+ ['information', ['info']],
106
+ ['mgr', ['manager']],
107
+ ['manager', ['mgr']],
108
+ ['svc', ['service']],
109
+ ['service', ['svc']],
110
+ ['cmd', ['command']],
111
+ ['command', ['cmd']],
112
+ ['nav', ['navigation']],
113
+ ['navigation', ['nav']],
114
+ ['idx', ['index']],
115
+ ['val', ['validate', 'validation']],
116
+ ['validate', ['val', 'validation']],
117
+ ['validation', ['val', 'validate']],
118
+ ['sync', ['synchronize']],
119
+ ['synchronize', ['sync']],
120
+ ['async', ['asynchronous']],
121
+ ['middleware', ['mw']],
122
+ ['mw', ['middleware']],
123
+ ]);
124
+ /**
125
+ * 代码查询扩展 — 基于 extractSearchTerms 分词 + 缩写同义词 + 词干变体
126
+ * 返回包含原始 term、同义词和词干变体的扩展查询字符串
127
+ */
128
+ export function expandCodeQuery(query) {
129
+ const terms = extractSearchTerms(query);
130
+ const expanded = new Set(terms);
131
+ for (const term of terms) {
132
+ const lower = term.toLowerCase();
133
+ const synonyms = CODE_SYNONYMS.get(lower);
134
+ if (synonyms) {
135
+ for (const syn of synonyms)
136
+ expanded.add(syn);
137
+ }
138
+ const stems = getStemVariants(lower);
139
+ for (const stem of stems) {
140
+ if (stem.length >= 3)
141
+ expanded.add(stem);
142
+ }
143
+ }
144
+ return [...expanded].join(' ');
145
+ }
146
+ // ---------------------------------------------------------------------------
147
+ // 5. 多信号评分
64
148
  // ---------------------------------------------------------------------------
65
149
  export function kindBonus(kind) {
66
150
  switch (kind) {