@vinaes/succ 1.4.0 → 1.5.42

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 (687) hide show
  1. package/README.md +64 -10
  2. package/dist/cli.js +81 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/agents-md.d.ts.map +1 -1
  5. package/dist/commands/agents-md.js +3 -2
  6. package/dist/commands/agents-md.js.map +1 -1
  7. package/dist/commands/analyze-profile.d.ts.map +1 -1
  8. package/dist/commands/analyze-profile.js +32 -8
  9. package/dist/commands/analyze-profile.js.map +1 -1
  10. package/dist/commands/analyze-recursive.d.ts.map +1 -1
  11. package/dist/commands/analyze-recursive.js +6 -2
  12. package/dist/commands/analyze-recursive.js.map +1 -1
  13. package/dist/commands/analyze-utils.d.ts.map +1 -1
  14. package/dist/commands/analyze-utils.js +17 -4
  15. package/dist/commands/analyze-utils.js.map +1 -1
  16. package/dist/commands/benchmark-quality.d.ts.map +1 -1
  17. package/dist/commands/benchmark-quality.js +11 -4
  18. package/dist/commands/benchmark-quality.js.map +1 -1
  19. package/dist/commands/benchmark-sqlite-vec.d.ts.map +1 -1
  20. package/dist/commands/benchmark-sqlite-vec.js +4 -0
  21. package/dist/commands/benchmark-sqlite-vec.js.map +1 -1
  22. package/dist/commands/benchmark.d.ts.map +1 -1
  23. package/dist/commands/benchmark.js +5 -1
  24. package/dist/commands/benchmark.js.map +1 -1
  25. package/dist/commands/codex-chat.d.ts +8 -0
  26. package/dist/commands/codex-chat.d.ts.map +1 -0
  27. package/dist/commands/codex-chat.js +161 -0
  28. package/dist/commands/codex-chat.js.map +1 -0
  29. package/dist/commands/config.d.ts.map +1 -1
  30. package/dist/commands/config.js +32 -4
  31. package/dist/commands/config.js.map +1 -1
  32. package/dist/commands/daemon.d.ts.map +1 -1
  33. package/dist/commands/daemon.js +13 -4
  34. package/dist/commands/daemon.js.map +1 -1
  35. package/dist/commands/index-code.d.ts +4 -0
  36. package/dist/commands/index-code.d.ts.map +1 -1
  37. package/dist/commands/index-code.js +1 -1
  38. package/dist/commands/index-code.js.map +1 -1
  39. package/dist/commands/init.d.ts.map +1 -1
  40. package/dist/commands/init.js +305 -203
  41. package/dist/commands/init.js.map +1 -1
  42. package/dist/commands/memories.d.ts.map +1 -1
  43. package/dist/commands/memories.js +25 -14
  44. package/dist/commands/memories.js.map +1 -1
  45. package/dist/commands/progress.d.ts.map +1 -1
  46. package/dist/commands/progress.js +3 -2
  47. package/dist/commands/progress.js.map +1 -1
  48. package/dist/commands/reindex.d.ts.map +1 -1
  49. package/dist/commands/reindex.js +54 -36
  50. package/dist/commands/reindex.js.map +1 -1
  51. package/dist/commands/retention.d.ts.map +1 -1
  52. package/dist/commands/retention.js +7 -5
  53. package/dist/commands/retention.js.map +1 -1
  54. package/dist/commands/scan-code.d.ts +76 -0
  55. package/dist/commands/scan-code.d.ts.map +1 -0
  56. package/dist/commands/scan-code.js +385 -0
  57. package/dist/commands/scan-code.js.map +1 -0
  58. package/dist/commands/score.d.ts.map +1 -1
  59. package/dist/commands/score.js +3 -2
  60. package/dist/commands/score.js.map +1 -1
  61. package/dist/commands/session.d.ts +33 -0
  62. package/dist/commands/session.d.ts.map +1 -0
  63. package/dist/commands/session.js +163 -0
  64. package/dist/commands/session.js.map +1 -0
  65. package/dist/commands/setup.d.ts.map +1 -1
  66. package/dist/commands/setup.js +254 -15
  67. package/dist/commands/setup.js.map +1 -1
  68. package/dist/commands/soul.js +3 -2
  69. package/dist/commands/soul.js.map +1 -1
  70. package/dist/commands/status.d.ts.map +1 -1
  71. package/dist/commands/status.js +14 -5
  72. package/dist/commands/status.js.map +1 -1
  73. package/dist/commands/watch.d.ts.map +1 -1
  74. package/dist/commands/watch.js +13 -4
  75. package/dist/commands/watch.js.map +1 -1
  76. package/dist/daemon/analyzer.d.ts.map +1 -1
  77. package/dist/daemon/analyzer.js +21 -5
  78. package/dist/daemon/analyzer.js.map +1 -1
  79. package/dist/daemon/client.d.ts.map +1 -1
  80. package/dist/daemon/client.js +32 -8
  81. package/dist/daemon/client.js.map +1 -1
  82. package/dist/daemon/routes/analyzer.d.ts +3 -0
  83. package/dist/daemon/routes/analyzer.d.ts.map +1 -0
  84. package/dist/daemon/routes/analyzer.js +27 -0
  85. package/dist/daemon/routes/analyzer.js.map +1 -0
  86. package/dist/daemon/routes/hooks.d.ts +14 -0
  87. package/dist/daemon/routes/hooks.d.ts.map +1 -0
  88. package/dist/daemon/routes/hooks.js +1212 -0
  89. package/dist/daemon/routes/hooks.js.map +1 -0
  90. package/dist/daemon/routes/memory.d.ts +4 -0
  91. package/dist/daemon/routes/memory.d.ts.map +1 -0
  92. package/dist/daemon/routes/memory.js +71 -0
  93. package/dist/daemon/routes/memory.js.map +1 -0
  94. package/dist/daemon/routes/reflection.d.ts +10 -0
  95. package/dist/daemon/routes/reflection.d.ts.map +1 -0
  96. package/dist/daemon/routes/reflection.js +397 -0
  97. package/dist/daemon/routes/reflection.js.map +1 -0
  98. package/dist/daemon/routes/search.d.ts +5 -0
  99. package/dist/daemon/routes/search.d.ts.map +1 -0
  100. package/dist/daemon/routes/search.js +93 -0
  101. package/dist/daemon/routes/search.js.map +1 -0
  102. package/dist/daemon/routes/sessions.d.ts +3 -0
  103. package/dist/daemon/routes/sessions.d.ts.map +1 -0
  104. package/dist/daemon/routes/sessions.js +160 -0
  105. package/dist/daemon/routes/sessions.js.map +1 -0
  106. package/dist/daemon/routes/skills.d.ts +3 -0
  107. package/dist/daemon/routes/skills.d.ts.map +1 -0
  108. package/dist/daemon/routes/skills.js +36 -0
  109. package/dist/daemon/routes/skills.js.map +1 -0
  110. package/dist/daemon/routes/status.d.ts +3 -0
  111. package/dist/daemon/routes/status.d.ts.map +1 -0
  112. package/dist/daemon/routes/status.js +47 -0
  113. package/dist/daemon/routes/status.js.map +1 -0
  114. package/dist/daemon/routes/types.d.ts +240 -0
  115. package/dist/daemon/routes/types.d.ts.map +1 -0
  116. package/dist/daemon/routes/types.js +97 -0
  117. package/dist/daemon/routes/types.js.map +1 -0
  118. package/dist/daemon/routes/versioning.d.ts +27 -0
  119. package/dist/daemon/routes/versioning.d.ts.map +1 -0
  120. package/dist/daemon/routes/versioning.js +44 -0
  121. package/dist/daemon/routes/versioning.js.map +1 -0
  122. package/dist/daemon/routes/watcher.d.ts +3 -0
  123. package/dist/daemon/routes/watcher.d.ts.map +1 -0
  124. package/dist/daemon/routes/watcher.js +28 -0
  125. package/dist/daemon/routes/watcher.js.map +1 -0
  126. package/dist/daemon/service.d.ts +5 -23
  127. package/dist/daemon/service.d.ts.map +1 -1
  128. package/dist/daemon/service.js +201 -933
  129. package/dist/daemon/service.js.map +1 -1
  130. package/dist/daemon/session-processor.d.ts +4 -8
  131. package/dist/daemon/session-processor.d.ts.map +1 -1
  132. package/dist/daemon/session-processor.js +39 -38
  133. package/dist/daemon/session-processor.js.map +1 -1
  134. package/dist/lib/ai-readiness.d.ts.map +1 -1
  135. package/dist/lib/ai-readiness.js +33 -8
  136. package/dist/lib/ai-readiness.js.map +1 -1
  137. package/dist/lib/analyze-state.d.ts.map +1 -1
  138. package/dist/lib/analyze-state.js +25 -3
  139. package/dist/lib/analyze-state.js.map +1 -1
  140. package/dist/lib/auto-memory/consolidation.d.ts +41 -0
  141. package/dist/lib/auto-memory/consolidation.d.ts.map +1 -0
  142. package/dist/lib/auto-memory/consolidation.js +151 -0
  143. package/dist/lib/auto-memory/consolidation.js.map +1 -0
  144. package/dist/lib/bpe.d.ts.map +1 -1
  145. package/dist/lib/bpe.js +9 -10
  146. package/dist/lib/bpe.js.map +1 -1
  147. package/dist/lib/brain-export.d.ts +65 -0
  148. package/dist/lib/brain-export.d.ts.map +1 -0
  149. package/dist/lib/brain-export.js +413 -0
  150. package/dist/lib/brain-export.js.map +1 -0
  151. package/dist/lib/checkpoint.d.ts.map +1 -1
  152. package/dist/lib/checkpoint.js +22 -6
  153. package/dist/lib/checkpoint.js.map +1 -1
  154. package/dist/lib/chunker.d.ts.map +1 -1
  155. package/dist/lib/chunker.js +6 -1
  156. package/dist/lib/chunker.js.map +1 -1
  157. package/dist/lib/claude-ws-transport.d.ts.map +1 -1
  158. package/dist/lib/claude-ws-transport.js +12 -4
  159. package/dist/lib/claude-ws-transport.js.map +1 -1
  160. package/dist/lib/command-safety.d.ts +64 -0
  161. package/dist/lib/command-safety.d.ts.map +1 -0
  162. package/dist/lib/command-safety.js +625 -0
  163. package/dist/lib/command-safety.js.map +1 -0
  164. package/dist/lib/compact-briefing.d.ts.map +1 -1
  165. package/dist/lib/compact-briefing.js +10 -13
  166. package/dist/lib/compact-briefing.js.map +1 -1
  167. package/dist/lib/config-defaults.d.ts.map +1 -1
  168. package/dist/lib/config-defaults.js +3 -0
  169. package/dist/lib/config-defaults.js.map +1 -1
  170. package/dist/lib/config-display.d.ts +4 -0
  171. package/dist/lib/config-display.d.ts.map +1 -1
  172. package/dist/lib/config-display.js +6 -1
  173. package/dist/lib/config-display.js.map +1 -1
  174. package/dist/lib/config-types.d.ts +156 -0
  175. package/dist/lib/config-types.d.ts.map +1 -1
  176. package/dist/lib/config-validation.d.ts.map +1 -1
  177. package/dist/lib/config-validation.js +5 -0
  178. package/dist/lib/config-validation.js.map +1 -1
  179. package/dist/lib/config.d.ts.map +1 -1
  180. package/dist/lib/config.js +92 -9
  181. package/dist/lib/config.js.map +1 -1
  182. package/dist/lib/consolidate.d.ts.map +1 -1
  183. package/dist/lib/consolidate.js +66 -47
  184. package/dist/lib/consolidate.js.map +1 -1
  185. package/dist/lib/content-sanitizer.d.ts +29 -0
  186. package/dist/lib/content-sanitizer.d.ts.map +1 -0
  187. package/dist/lib/content-sanitizer.js +72 -0
  188. package/dist/lib/content-sanitizer.js.map +1 -0
  189. package/dist/lib/cross-repo.d.ts +44 -0
  190. package/dist/lib/cross-repo.d.ts.map +1 -0
  191. package/dist/lib/cross-repo.js +108 -0
  192. package/dist/lib/cross-repo.js.map +1 -0
  193. package/dist/lib/daemon-port.d.ts +12 -0
  194. package/dist/lib/daemon-port.d.ts.map +1 -0
  195. package/dist/lib/daemon-port.js +20 -0
  196. package/dist/lib/daemon-port.js.map +1 -0
  197. package/dist/lib/db/auto-memory.d.ts +40 -0
  198. package/dist/lib/db/auto-memory.d.ts.map +1 -0
  199. package/dist/lib/db/auto-memory.js +74 -0
  200. package/dist/lib/db/auto-memory.js.map +1 -0
  201. package/dist/lib/db/bm25-indexes.d.ts.map +1 -1
  202. package/dist/lib/db/bm25-indexes.js +16 -4
  203. package/dist/lib/db/bm25-indexes.js.map +1 -1
  204. package/dist/lib/db/documents.d.ts.map +1 -1
  205. package/dist/lib/db/documents.js +4 -1
  206. package/dist/lib/db/documents.js.map +1 -1
  207. package/dist/lib/db/global-memories.d.ts +2 -10
  208. package/dist/lib/db/global-memories.d.ts.map +1 -1
  209. package/dist/lib/db/global-memories.js +13 -6
  210. package/dist/lib/db/global-memories.js.map +1 -1
  211. package/dist/lib/db/graph.d.ts +5 -1
  212. package/dist/lib/db/graph.d.ts.map +1 -1
  213. package/dist/lib/db/graph.js +38 -8
  214. package/dist/lib/db/graph.js.map +1 -1
  215. package/dist/lib/db/hybrid-search.d.ts +4 -2
  216. package/dist/lib/db/hybrid-search.d.ts.map +1 -1
  217. package/dist/lib/db/hybrid-search.js +29 -11
  218. package/dist/lib/db/hybrid-search.js.map +1 -1
  219. package/dist/lib/db/index.d.ts +6 -1
  220. package/dist/lib/db/index.d.ts.map +1 -1
  221. package/dist/lib/db/index.js +5 -1
  222. package/dist/lib/db/index.js.map +1 -1
  223. package/dist/lib/db/memories.d.ts +19 -14
  224. package/dist/lib/db/memories.d.ts.map +1 -1
  225. package/dist/lib/db/memories.js +100 -37
  226. package/dist/lib/db/memories.js.map +1 -1
  227. package/dist/lib/db/parse-helpers.d.ts +14 -0
  228. package/dist/lib/db/parse-helpers.d.ts.map +1 -0
  229. package/dist/lib/db/parse-helpers.js +59 -0
  230. package/dist/lib/db/parse-helpers.js.map +1 -0
  231. package/dist/lib/db/recall-events.d.ts +49 -0
  232. package/dist/lib/db/recall-events.d.ts.map +1 -0
  233. package/dist/lib/db/recall-events.js +196 -0
  234. package/dist/lib/db/recall-events.js.map +1 -0
  235. package/dist/lib/db/retention.d.ts +4 -3
  236. package/dist/lib/db/retention.d.ts.map +1 -1
  237. package/dist/lib/db/retention.js +12 -1
  238. package/dist/lib/db/retention.js.map +1 -1
  239. package/dist/lib/db/schema.d.ts +2 -0
  240. package/dist/lib/db/schema.d.ts.map +1 -1
  241. package/dist/lib/db/schema.js +140 -80
  242. package/dist/lib/db/schema.js.map +1 -1
  243. package/dist/lib/db/skills.d.ts.map +1 -1
  244. package/dist/lib/db/skills.js +10 -6
  245. package/dist/lib/db/skills.js.map +1 -1
  246. package/dist/lib/diff-brain.d.ts +24 -0
  247. package/dist/lib/diff-brain.d.ts.map +1 -0
  248. package/dist/lib/diff-brain.js +114 -0
  249. package/dist/lib/diff-brain.js.map +1 -0
  250. package/dist/lib/diff-parser.d.ts +74 -0
  251. package/dist/lib/diff-parser.d.ts.map +1 -0
  252. package/dist/lib/diff-parser.js +200 -0
  253. package/dist/lib/diff-parser.js.map +1 -0
  254. package/dist/lib/embedding-pool.d.ts.map +1 -1
  255. package/dist/lib/embedding-pool.js +5 -1
  256. package/dist/lib/embedding-pool.js.map +1 -1
  257. package/dist/lib/embeddings.d.ts +12 -0
  258. package/dist/lib/embeddings.d.ts.map +1 -1
  259. package/dist/lib/embeddings.js +77 -19
  260. package/dist/lib/embeddings.js.map +1 -1
  261. package/dist/lib/errors.d.ts +2 -0
  262. package/dist/lib/errors.d.ts.map +1 -1
  263. package/dist/lib/errors.js +4 -0
  264. package/dist/lib/errors.js.map +1 -1
  265. package/dist/lib/fault-logger.d.ts.map +1 -1
  266. package/dist/lib/fault-logger.js +22 -7
  267. package/dist/lib/fault-logger.js.map +1 -1
  268. package/dist/lib/git/co-change.d.ts +39 -0
  269. package/dist/lib/git/co-change.d.ts.map +1 -0
  270. package/dist/lib/git/co-change.js +139 -0
  271. package/dist/lib/git/co-change.js.map +1 -0
  272. package/dist/lib/graph/bridge-edges.d.ts +93 -0
  273. package/dist/lib/graph/bridge-edges.d.ts.map +1 -0
  274. package/dist/lib/graph/bridge-edges.js +276 -0
  275. package/dist/lib/graph/bridge-edges.js.map +1 -0
  276. package/dist/lib/graph/centrality.d.ts +11 -0
  277. package/dist/lib/graph/centrality.d.ts.map +1 -1
  278. package/dist/lib/graph/centrality.js +51 -3
  279. package/dist/lib/graph/centrality.js.map +1 -1
  280. package/dist/lib/graph/cleanup.d.ts.map +1 -1
  281. package/dist/lib/graph/cleanup.js +2 -1
  282. package/dist/lib/graph/cleanup.js.map +1 -1
  283. package/dist/lib/graph/community-detection.d.ts +17 -2
  284. package/dist/lib/graph/community-detection.d.ts.map +1 -1
  285. package/dist/lib/graph/community-detection.js +147 -48
  286. package/dist/lib/graph/community-detection.js.map +1 -1
  287. package/dist/lib/graph/community-summaries.d.ts +26 -0
  288. package/dist/lib/graph/community-summaries.d.ts.map +1 -0
  289. package/dist/lib/graph/community-summaries.js +130 -0
  290. package/dist/lib/graph/community-summaries.js.map +1 -0
  291. package/dist/lib/graph/contextual-proximity.d.ts.map +1 -1
  292. package/dist/lib/graph/contextual-proximity.js +11 -4
  293. package/dist/lib/graph/contextual-proximity.js.map +1 -1
  294. package/dist/lib/graph/graphology-bridge.d.ts +101 -0
  295. package/dist/lib/graph/graphology-bridge.d.ts.map +1 -0
  296. package/dist/lib/graph/graphology-bridge.js +488 -0
  297. package/dist/lib/graph/graphology-bridge.js.map +1 -0
  298. package/dist/lib/graph/llm-relations.d.ts.map +1 -1
  299. package/dist/lib/graph/llm-relations.js +27 -5
  300. package/dist/lib/graph/llm-relations.js.map +1 -1
  301. package/dist/lib/graph-export.d.ts.map +1 -1
  302. package/dist/lib/graph-export.js +2 -2
  303. package/dist/lib/graph-export.js.map +1 -1
  304. package/dist/lib/graph-scheduler.d.ts +0 -5
  305. package/dist/lib/graph-scheduler.d.ts.map +1 -1
  306. package/dist/lib/graph-scheduler.js +5 -1
  307. package/dist/lib/graph-scheduler.js.map +1 -1
  308. package/dist/lib/guardrails.d.ts +50 -0
  309. package/dist/lib/guardrails.d.ts.map +1 -0
  310. package/dist/lib/guardrails.js +502 -0
  311. package/dist/lib/guardrails.js.map +1 -0
  312. package/dist/lib/hook-rules.d.ts +1 -1
  313. package/dist/lib/hook-rules.d.ts.map +1 -1
  314. package/dist/lib/hook-rules.js +8 -2
  315. package/dist/lib/hook-rules.js.map +1 -1
  316. package/dist/lib/ifc/file-labels.d.ts +35 -0
  317. package/dist/lib/ifc/file-labels.d.ts.map +1 -0
  318. package/dist/lib/ifc/file-labels.js +208 -0
  319. package/dist/lib/ifc/file-labels.js.map +1 -0
  320. package/dist/lib/ifc/label.d.ts +38 -0
  321. package/dist/lib/ifc/label.d.ts.map +1 -0
  322. package/dist/lib/ifc/label.js +80 -0
  323. package/dist/lib/ifc/label.js.map +1 -0
  324. package/dist/lib/ifc/session-ifc.d.ts +92 -0
  325. package/dist/lib/ifc/session-ifc.d.ts.map +1 -0
  326. package/dist/lib/ifc/session-ifc.js +222 -0
  327. package/dist/lib/ifc/session-ifc.js.map +1 -0
  328. package/dist/lib/indexer.js +2 -2
  329. package/dist/lib/indexer.js.map +1 -1
  330. package/dist/lib/injection-detector.d.ts +83 -0
  331. package/dist/lib/injection-detector.d.ts.map +1 -0
  332. package/dist/lib/injection-detector.js +586 -0
  333. package/dist/lib/injection-detector.js.map +1 -0
  334. package/dist/lib/injection-semantic.d.ts +31 -0
  335. package/dist/lib/injection-semantic.d.ts.map +1 -0
  336. package/dist/lib/injection-semantic.js +230 -0
  337. package/dist/lib/injection-semantic.js.map +1 -0
  338. package/dist/lib/llm.d.ts.map +1 -1
  339. package/dist/lib/llm.js +19 -4
  340. package/dist/lib/llm.js.map +1 -1
  341. package/dist/lib/lock.d.ts.map +1 -1
  342. package/dist/lib/lock.js +24 -3
  343. package/dist/lib/lock.js.map +1 -1
  344. package/dist/lib/md-fetch.d.ts.map +1 -1
  345. package/dist/lib/md-fetch.js +9 -2
  346. package/dist/lib/md-fetch.js.map +1 -1
  347. package/dist/lib/observability.d.ts +75 -0
  348. package/dist/lib/observability.d.ts.map +1 -0
  349. package/dist/lib/observability.js +201 -0
  350. package/dist/lib/observability.js.map +1 -0
  351. package/dist/lib/ort-session.d.ts +26 -0
  352. package/dist/lib/ort-session.d.ts.map +1 -1
  353. package/dist/lib/ort-session.js +107 -3
  354. package/dist/lib/ort-session.js.map +1 -1
  355. package/dist/lib/prd/codebase-context.d.ts.map +1 -1
  356. package/dist/lib/prd/codebase-context.js +9 -2
  357. package/dist/lib/prd/codebase-context.js.map +1 -1
  358. package/dist/lib/prd/context.d.ts.map +1 -1
  359. package/dist/lib/prd/context.js +11 -3
  360. package/dist/lib/prd/context.js.map +1 -1
  361. package/dist/lib/prd/export.js +1 -1
  362. package/dist/lib/prd/export.js.map +1 -1
  363. package/dist/lib/prd/generate.d.ts.map +1 -1
  364. package/dist/lib/prd/generate.js +17 -4
  365. package/dist/lib/prd/generate.js.map +1 -1
  366. package/dist/lib/prd/parse.d.ts.map +1 -1
  367. package/dist/lib/prd/parse.js +6 -1
  368. package/dist/lib/prd/parse.js.map +1 -1
  369. package/dist/lib/prd/runner.d.ts +1 -2
  370. package/dist/lib/prd/runner.d.ts.map +1 -1
  371. package/dist/lib/prd/runner.js +43 -32
  372. package/dist/lib/prd/runner.js.map +1 -1
  373. package/dist/lib/prd/worktree.d.ts +1 -2
  374. package/dist/lib/prd/worktree.d.ts.map +1 -1
  375. package/dist/lib/prd/worktree.js +62 -70
  376. package/dist/lib/prd/worktree.js.map +1 -1
  377. package/dist/lib/precompute-context.d.ts.map +1 -1
  378. package/dist/lib/precompute-context.js +15 -34
  379. package/dist/lib/precompute-context.js.map +1 -1
  380. package/dist/lib/pricing.d.ts.map +1 -1
  381. package/dist/lib/pricing.js +5 -1
  382. package/dist/lib/pricing.js.map +1 -1
  383. package/dist/lib/process-registry.js +3 -3
  384. package/dist/lib/process-registry.js.map +1 -1
  385. package/dist/lib/public-api.d.ts +41 -1
  386. package/dist/lib/public-api.d.ts.map +1 -1
  387. package/dist/lib/public-api.js +38 -0
  388. package/dist/lib/public-api.js.map +1 -1
  389. package/dist/lib/quality.d.ts.map +1 -1
  390. package/dist/lib/quality.js +15 -6
  391. package/dist/lib/quality.js.map +1 -1
  392. package/dist/lib/query-expansion.d.ts +32 -0
  393. package/dist/lib/query-expansion.d.ts.map +1 -1
  394. package/dist/lib/query-expansion.js +62 -1
  395. package/dist/lib/query-expansion.js.map +1 -1
  396. package/dist/lib/reference-embeddings.d.ts.map +1 -1
  397. package/dist/lib/reference-embeddings.js +17 -4
  398. package/dist/lib/reference-embeddings.js.map +1 -1
  399. package/dist/lib/reflection-synthesizer.d.ts.map +1 -1
  400. package/dist/lib/reflection-synthesizer.js +7 -1
  401. package/dist/lib/reflection-synthesizer.js.map +1 -1
  402. package/dist/lib/reranker.d.ts +41 -0
  403. package/dist/lib/reranker.d.ts.map +1 -0
  404. package/dist/lib/reranker.js +294 -0
  405. package/dist/lib/reranker.js.map +1 -0
  406. package/dist/lib/retrieval-feedback.d.ts +100 -0
  407. package/dist/lib/retrieval-feedback.d.ts.map +1 -0
  408. package/dist/lib/retrieval-feedback.js +174 -0
  409. package/dist/lib/retrieval-feedback.js.map +1 -0
  410. package/dist/lib/review/context-pack.d.ts +58 -0
  411. package/dist/lib/review/context-pack.d.ts.map +1 -0
  412. package/dist/lib/review/context-pack.js +300 -0
  413. package/dist/lib/review/context-pack.js.map +1 -0
  414. package/dist/lib/search/hierarchical-summaries.d.ts +65 -0
  415. package/dist/lib/search/hierarchical-summaries.d.ts.map +1 -0
  416. package/dist/lib/search/hierarchical-summaries.js +423 -0
  417. package/dist/lib/search/hierarchical-summaries.js.map +1 -0
  418. package/dist/lib/search/hyde.d.ts +27 -0
  419. package/dist/lib/search/hyde.d.ts.map +1 -0
  420. package/dist/lib/search/hyde.js +141 -0
  421. package/dist/lib/search/hyde.js.map +1 -0
  422. package/dist/lib/search/late-chunking.d.ts +53 -0
  423. package/dist/lib/search/late-chunking.d.ts.map +1 -0
  424. package/dist/lib/search/late-chunking.js +230 -0
  425. package/dist/lib/search/late-chunking.js.map +1 -0
  426. package/dist/lib/search/ppr-retrieval.d.ts +49 -0
  427. package/dist/lib/search/ppr-retrieval.d.ts.map +1 -0
  428. package/dist/lib/search/ppr-retrieval.js +135 -0
  429. package/dist/lib/search/ppr-retrieval.js.map +1 -0
  430. package/dist/lib/search/repo-map.d.ts +43 -0
  431. package/dist/lib/search/repo-map.d.ts.map +1 -0
  432. package/dist/lib/search/repo-map.js +165 -0
  433. package/dist/lib/search/repo-map.js.map +1 -0
  434. package/dist/lib/session-analyzer.d.ts +90 -0
  435. package/dist/lib/session-analyzer.d.ts.map +1 -0
  436. package/dist/lib/session-analyzer.js +467 -0
  437. package/dist/lib/session-analyzer.js.map +1 -0
  438. package/dist/lib/session-observations.d.ts.map +1 -1
  439. package/dist/lib/session-observations.js +13 -3
  440. package/dist/lib/session-observations.js.map +1 -1
  441. package/dist/lib/session-summary.d.ts.map +1 -1
  442. package/dist/lib/session-summary.js +57 -50
  443. package/dist/lib/session-summary.js.map +1 -1
  444. package/dist/lib/session-surgeon.d.ts +53 -0
  445. package/dist/lib/session-surgeon.d.ts.map +1 -0
  446. package/dist/lib/session-surgeon.js +501 -0
  447. package/dist/lib/session-surgeon.js.map +1 -0
  448. package/dist/lib/similarity-utils.d.ts +26 -0
  449. package/dist/lib/similarity-utils.d.ts.map +1 -0
  450. package/dist/lib/similarity-utils.js +66 -0
  451. package/dist/lib/similarity-utils.js.map +1 -0
  452. package/dist/lib/skills.d.ts.map +1 -1
  453. package/dist/lib/skills.js +11 -11
  454. package/dist/lib/skills.js.map +1 -1
  455. package/dist/lib/storage/backends/interface.d.ts +13 -3
  456. package/dist/lib/storage/backends/interface.d.ts.map +1 -1
  457. package/dist/lib/storage/backends/postgresql.d.ts +52 -3
  458. package/dist/lib/storage/backends/postgresql.d.ts.map +1 -1
  459. package/dist/lib/storage/backends/postgresql.js +694 -49
  460. package/dist/lib/storage/backends/postgresql.js.map +1 -1
  461. package/dist/lib/storage/benchmark.js +2 -2
  462. package/dist/lib/storage/benchmark.js.map +1 -1
  463. package/dist/lib/storage/dispatcher/base.d.ts +114 -0
  464. package/dist/lib/storage/dispatcher/base.d.ts.map +1 -0
  465. package/dist/lib/storage/dispatcher/base.js +160 -0
  466. package/dist/lib/storage/dispatcher/base.js.map +1 -0
  467. package/dist/lib/storage/dispatcher/documents.d.ts +25 -0
  468. package/dist/lib/storage/dispatcher/documents.d.ts.map +1 -0
  469. package/dist/lib/storage/dispatcher/documents.js +194 -0
  470. package/dist/lib/storage/dispatcher/documents.js.map +1 -0
  471. package/dist/lib/storage/dispatcher/embeddings.d.ts +34 -0
  472. package/dist/lib/storage/dispatcher/embeddings.d.ts.map +1 -0
  473. package/dist/lib/storage/dispatcher/embeddings.js +144 -0
  474. package/dist/lib/storage/dispatcher/embeddings.js.map +1 -0
  475. package/dist/lib/storage/dispatcher/export-import.d.ts +139 -0
  476. package/dist/lib/storage/dispatcher/export-import.d.ts.map +1 -0
  477. package/dist/lib/storage/dispatcher/export-import.js +191 -0
  478. package/dist/lib/storage/dispatcher/export-import.js.map +1 -0
  479. package/dist/lib/storage/dispatcher/file-hashes.d.ts +13 -0
  480. package/dist/lib/storage/dispatcher/file-hashes.d.ts.map +1 -0
  481. package/dist/lib/storage/dispatcher/file-hashes.js +36 -0
  482. package/dist/lib/storage/dispatcher/file-hashes.js.map +1 -0
  483. package/dist/lib/storage/dispatcher/global-memories.d.ts +28 -0
  484. package/dist/lib/storage/dispatcher/global-memories.d.ts.map +1 -0
  485. package/dist/lib/storage/dispatcher/global-memories.js +151 -0
  486. package/dist/lib/storage/dispatcher/global-memories.js.map +1 -0
  487. package/dist/lib/storage/dispatcher/graph.d.ts +32 -0
  488. package/dist/lib/storage/dispatcher/graph.d.ts.map +1 -0
  489. package/dist/lib/storage/dispatcher/graph.js +146 -0
  490. package/dist/lib/storage/dispatcher/graph.js.map +1 -0
  491. package/dist/lib/storage/dispatcher/index.d.ts +34 -0
  492. package/dist/lib/storage/dispatcher/index.d.ts.map +1 -0
  493. package/dist/lib/storage/dispatcher/index.js +139 -0
  494. package/dist/lib/storage/dispatcher/index.js.map +1 -0
  495. package/dist/lib/storage/dispatcher/memories.d.ts +65 -0
  496. package/dist/lib/storage/dispatcher/memories.d.ts.map +1 -0
  497. package/dist/lib/storage/dispatcher/memories.js +466 -0
  498. package/dist/lib/storage/dispatcher/memories.js.map +1 -0
  499. package/dist/lib/storage/dispatcher/mixin-helper.d.ts +6 -0
  500. package/dist/lib/storage/dispatcher/mixin-helper.d.ts.map +1 -0
  501. package/dist/lib/storage/dispatcher/mixin-helper.js +10 -0
  502. package/dist/lib/storage/dispatcher/mixin-helper.js.map +1 -0
  503. package/dist/lib/storage/dispatcher/retention.d.ts +20 -0
  504. package/dist/lib/storage/dispatcher/retention.d.ts.map +1 -0
  505. package/dist/lib/storage/dispatcher/retention.js +123 -0
  506. package/dist/lib/storage/dispatcher/retention.js.map +1 -0
  507. package/dist/lib/storage/dispatcher/search.d.ts +34 -0
  508. package/dist/lib/storage/dispatcher/search.d.ts.map +1 -0
  509. package/dist/lib/storage/dispatcher/search.js +222 -0
  510. package/dist/lib/storage/dispatcher/search.js.map +1 -0
  511. package/dist/lib/storage/dispatcher/skills.d.ts +53 -0
  512. package/dist/lib/storage/dispatcher/skills.d.ts.map +1 -0
  513. package/dist/lib/storage/dispatcher/skills.js +98 -0
  514. package/dist/lib/storage/dispatcher/skills.js.map +1 -0
  515. package/dist/lib/storage/dispatcher/token-stats.d.ts +23 -0
  516. package/dist/lib/storage/dispatcher/token-stats.d.ts.map +1 -0
  517. package/dist/lib/storage/dispatcher/token-stats.js +92 -0
  518. package/dist/lib/storage/dispatcher/token-stats.js.map +1 -0
  519. package/dist/lib/storage/dispatcher/web-search.d.ts +10 -0
  520. package/dist/lib/storage/dispatcher/web-search.d.ts.map +1 -0
  521. package/dist/lib/storage/dispatcher/web-search.js +39 -0
  522. package/dist/lib/storage/dispatcher/web-search.js.map +1 -0
  523. package/dist/lib/storage/dispatcher-export.d.ts.map +1 -1
  524. package/dist/lib/storage/dispatcher-export.js +48 -39
  525. package/dist/lib/storage/dispatcher-export.js.map +1 -1
  526. package/dist/lib/storage/dispatcher.d.ts +1 -468
  527. package/dist/lib/storage/dispatcher.d.ts.map +1 -1
  528. package/dist/lib/storage/dispatcher.js +1 -1931
  529. package/dist/lib/storage/dispatcher.js.map +1 -1
  530. package/dist/lib/storage/index.d.ts +20 -5
  531. package/dist/lib/storage/index.d.ts.map +1 -1
  532. package/dist/lib/storage/index.js +36 -7
  533. package/dist/lib/storage/index.js.map +1 -1
  534. package/dist/lib/storage/migration/export-import.d.ts.map +1 -1
  535. package/dist/lib/storage/migration/export-import.js +9 -2
  536. package/dist/lib/storage/migration/export-import.js.map +1 -1
  537. package/dist/lib/storage/types.d.ts +152 -10
  538. package/dist/lib/storage/types.d.ts.map +1 -1
  539. package/dist/lib/storage/types.js +13 -0
  540. package/dist/lib/storage/types.js.map +1 -1
  541. package/dist/lib/storage/vector/interface.d.ts +4 -0
  542. package/dist/lib/storage/vector/interface.d.ts.map +1 -1
  543. package/dist/lib/storage/vector/qdrant.d.ts +13 -2
  544. package/dist/lib/storage/vector/qdrant.d.ts.map +1 -1
  545. package/dist/lib/storage/vector/qdrant.js +147 -61
  546. package/dist/lib/storage/vector/qdrant.js.map +1 -1
  547. package/dist/lib/token-budget.d.ts.map +1 -1
  548. package/dist/lib/token-budget.js +9 -2
  549. package/dist/lib/token-budget.js.map +1 -1
  550. package/dist/lib/transcript-utils.d.ts +60 -0
  551. package/dist/lib/transcript-utils.d.ts.map +1 -0
  552. package/dist/lib/transcript-utils.js +69 -0
  553. package/dist/lib/transcript-utils.js.map +1 -0
  554. package/dist/lib/tree-sitter/extractor.d.ts +1 -1
  555. package/dist/lib/tree-sitter/extractor.d.ts.map +1 -1
  556. package/dist/lib/tree-sitter/extractor.js +34 -9
  557. package/dist/lib/tree-sitter/extractor.js.map +1 -1
  558. package/dist/lib/tree-sitter/parser.d.ts.map +1 -1
  559. package/dist/lib/tree-sitter/parser.js +45 -11
  560. package/dist/lib/tree-sitter/parser.js.map +1 -1
  561. package/dist/lib/tree-sitter/public.d.ts +12 -0
  562. package/dist/lib/tree-sitter/public.d.ts.map +1 -1
  563. package/dist/lib/tree-sitter/public.js +33 -1
  564. package/dist/lib/tree-sitter/public.js.map +1 -1
  565. package/dist/lib/tree-sitter/queries.d.ts.map +1 -1
  566. package/dist/lib/tree-sitter/queries.js +8 -0
  567. package/dist/lib/tree-sitter/queries.js.map +1 -1
  568. package/dist/lib/version-check.d.ts +29 -0
  569. package/dist/lib/version-check.d.ts.map +1 -0
  570. package/dist/lib/version-check.js +187 -0
  571. package/dist/lib/version-check.js.map +1 -0
  572. package/dist/lib/working-memory-pipeline.d.ts.map +1 -1
  573. package/dist/lib/working-memory-pipeline.js +12 -3
  574. package/dist/lib/working-memory-pipeline.js.map +1 -1
  575. package/dist/lib/worktree-detect.d.ts +43 -0
  576. package/dist/lib/worktree-detect.d.ts.map +1 -0
  577. package/dist/lib/worktree-detect.js +154 -0
  578. package/dist/lib/worktree-detect.js.map +1 -0
  579. package/dist/lsp/client.d.ts +96 -0
  580. package/dist/lsp/client.d.ts.map +1 -0
  581. package/dist/lsp/client.js +435 -0
  582. package/dist/lsp/client.js.map +1 -0
  583. package/dist/lsp/installer.d.ts +39 -0
  584. package/dist/lsp/installer.d.ts.map +1 -0
  585. package/dist/lsp/installer.js +275 -0
  586. package/dist/lsp/installer.js.map +1 -0
  587. package/dist/lsp/manager.d.ts +62 -0
  588. package/dist/lsp/manager.d.ts.map +1 -0
  589. package/dist/lsp/manager.js +234 -0
  590. package/dist/lsp/manager.js.map +1 -0
  591. package/dist/lsp/servers.d.ts +52 -0
  592. package/dist/lsp/servers.d.ts.map +1 -0
  593. package/dist/lsp/servers.js +162 -0
  594. package/dist/lsp/servers.js.map +1 -0
  595. package/dist/mcp/helpers.d.ts.map +1 -1
  596. package/dist/mcp/helpers.js +8 -2
  597. package/dist/mcp/helpers.js.map +1 -1
  598. package/dist/mcp/profile.js +1 -1
  599. package/dist/mcp/server.d.ts +3 -2
  600. package/dist/mcp/server.d.ts.map +1 -1
  601. package/dist/mcp/server.js +19 -7
  602. package/dist/mcp/server.js.map +1 -1
  603. package/dist/mcp/tools/config.d.ts.map +1 -1
  604. package/dist/mcp/tools/config.js +28 -118
  605. package/dist/mcp/tools/config.js.map +1 -1
  606. package/dist/mcp/tools/dead-end.d.ts.map +1 -1
  607. package/dist/mcp/tools/dead-end.js +4 -3
  608. package/dist/mcp/tools/dead-end.js.map +1 -1
  609. package/dist/mcp/tools/debug.d.ts.map +1 -1
  610. package/dist/mcp/tools/debug.js +27 -112
  611. package/dist/mcp/tools/debug.js.map +1 -1
  612. package/dist/mcp/tools/graph.d.ts.map +1 -1
  613. package/dist/mcp/tools/graph.js +164 -176
  614. package/dist/mcp/tools/graph.js.map +1 -1
  615. package/dist/mcp/tools/indexing.d.ts +1 -1
  616. package/dist/mcp/tools/indexing.d.ts.map +1 -1
  617. package/dist/mcp/tools/indexing.js +63 -164
  618. package/dist/mcp/tools/indexing.js.map +1 -1
  619. package/dist/mcp/tools/memory/forget.d.ts +3 -0
  620. package/dist/mcp/tools/memory/forget.d.ts.map +1 -0
  621. package/dist/mcp/tools/memory/forget.js +175 -0
  622. package/dist/mcp/tools/memory/forget.js.map +1 -0
  623. package/dist/mcp/tools/memory/memory-helpers.d.ts +45 -0
  624. package/dist/mcp/tools/memory/memory-helpers.d.ts.map +1 -0
  625. package/dist/mcp/tools/memory/memory-helpers.js +291 -0
  626. package/dist/mcp/tools/memory/memory-helpers.js.map +1 -0
  627. package/dist/mcp/tools/memory/recall.d.ts +3 -0
  628. package/dist/mcp/tools/memory/recall.d.ts.map +1 -0
  629. package/dist/mcp/tools/memory/recall.js +495 -0
  630. package/dist/mcp/tools/memory/recall.js.map +1 -0
  631. package/dist/mcp/tools/memory/remember.d.ts +3 -0
  632. package/dist/mcp/tools/memory/remember.d.ts.map +1 -0
  633. package/dist/mcp/tools/memory/remember.js +256 -0
  634. package/dist/mcp/tools/memory/remember.js.map +1 -0
  635. package/dist/mcp/tools/memory/temporal-query.d.ts +8 -0
  636. package/dist/mcp/tools/memory/temporal-query.d.ts.map +1 -0
  637. package/dist/mcp/tools/memory/temporal-query.js +68 -0
  638. package/dist/mcp/tools/memory/temporal-query.js.map +1 -0
  639. package/dist/mcp/tools/memory.d.ts +0 -11
  640. package/dist/mcp/tools/memory.d.ts.map +1 -1
  641. package/dist/mcp/tools/memory.js +6 -1228
  642. package/dist/mcp/tools/memory.js.map +1 -1
  643. package/dist/mcp/tools/prd.d.ts.map +1 -1
  644. package/dist/mcp/tools/prd.js +19 -70
  645. package/dist/mcp/tools/prd.js.map +1 -1
  646. package/dist/mcp/tools/review.d.ts +8 -0
  647. package/dist/mcp/tools/review.d.ts.map +1 -0
  648. package/dist/mcp/tools/review.js +133 -0
  649. package/dist/mcp/tools/review.js.map +1 -0
  650. package/dist/mcp/tools/search.d.ts.map +1 -1
  651. package/dist/mcp/tools/search.js +79 -8
  652. package/dist/mcp/tools/search.js.map +1 -1
  653. package/dist/mcp/tools/status.d.ts.map +1 -1
  654. package/dist/mcp/tools/status.js +50 -75
  655. package/dist/mcp/tools/status.js.map +1 -1
  656. package/dist/mcp/tools/web-fetch.d.ts.map +1 -1
  657. package/dist/mcp/tools/web-fetch.js +5 -1
  658. package/dist/mcp/tools/web-fetch.js.map +1 -1
  659. package/dist/mcp/tools/web-search.d.ts.map +1 -1
  660. package/dist/mcp/tools/web-search.js +25 -103
  661. package/dist/mcp/tools/web-search.js.map +1 -1
  662. package/dist/prompts/guardrails.d.ts +14 -0
  663. package/dist/prompts/guardrails.d.ts.map +1 -0
  664. package/dist/prompts/guardrails.js +115 -0
  665. package/dist/prompts/guardrails.js.map +1 -0
  666. package/dist/prompts/index.d.ts +2 -1
  667. package/dist/prompts/index.d.ts.map +1 -1
  668. package/dist/prompts/index.js +3 -1
  669. package/dist/prompts/index.js.map +1 -1
  670. package/dist/prompts/prd.d.ts +0 -2
  671. package/dist/prompts/prd.d.ts.map +1 -1
  672. package/dist/prompts/prd.js +0 -2
  673. package/dist/prompts/prd.js.map +1 -1
  674. package/hooks/core/__tests__/adapter.test.cjs +340 -0
  675. package/hooks/core/adapter.cjs +463 -0
  676. package/hooks/core/config.cjs +83 -0
  677. package/hooks/core/daemon-boot.cjs +140 -0
  678. package/hooks/core/log.cjs +41 -0
  679. package/hooks/core/worktree.cjs +119 -0
  680. package/hooks/succ-post-tool.cjs +198 -134
  681. package/hooks/succ-pre-compact.cjs +262 -0
  682. package/hooks/succ-pre-tool.cjs +526 -182
  683. package/hooks/succ-session-end.cjs +40 -64
  684. package/hooks/succ-session-start.cjs +528 -427
  685. package/hooks/succ-stop-reflection.cjs +36 -62
  686. package/hooks/succ-user-prompt.cjs +137 -180
  687. package/package.json +17 -6
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Late Chunking — embed full file context, pool per AST chunk boundaries.
3
+ *
4
+ * Traditional chunking: chunk first → embed each chunk independently.
5
+ * Late chunking: embed full file → get per-token hidden states → pool by AST boundaries.
6
+ *
7
+ * Each chunk embedding "knows about" the whole file context for free.
8
+ * No extra LLM calls. Requires a long-context embedding model (e.g., jina 8192 tokens).
9
+ *
10
+ * Reference: Jina AI "Late Chunking" (2024)
11
+ * https://jina.ai/news/late-chunking-in-long-context-embedding-models/
12
+ */
13
+ import { type Chunk } from '../chunker.js';
14
+ export interface LateChunkResult {
15
+ /** Original chunk metadata */
16
+ chunk: Chunk;
17
+ /** Embedding generated via late chunking (context-aware) */
18
+ embedding: number[];
19
+ }
20
+ export interface LateChunkingResult {
21
+ /** Per-chunk embeddings with file-level context baked in */
22
+ chunks: LateChunkResult[];
23
+ /** Whether late chunking was used (false = fell back to standard) */
24
+ usedLateChunking: boolean;
25
+ /** Reason for fallback if not used */
26
+ fallbackReason?: string;
27
+ }
28
+ /**
29
+ * Generate embeddings for code chunks using late chunking.
30
+ *
31
+ * Pipeline:
32
+ * 1. Parse file into AST chunks (tree-sitter)
33
+ * 2. Concatenate full file content
34
+ * 3. Run embedding model on full file → get per-token hidden states
35
+ * 4. Map AST chunk character boundaries to token positions
36
+ * 5. Mean-pool hidden states within each chunk's token range
37
+ * 6. L2-normalize each chunk embedding
38
+ *
39
+ * Falls back to standard chunking if:
40
+ * - Model max_length < 512 (short-context model won't benefit)
41
+ * - File exceeds model's max token length
42
+ * - Token offset mapping unavailable
43
+ *
44
+ * @param content - Full file content
45
+ * @param filePath - File path for AST parsing
46
+ * @returns Per-chunk embeddings with file-level context
47
+ */
48
+ export declare function lateChunkEmbed(content: string, filePath: string): Promise<LateChunkingResult>;
49
+ /**
50
+ * Check if the current embedding model supports late chunking.
51
+ */
52
+ export declare function isLateChunkingSupported(): boolean;
53
+ //# sourceMappingURL=late-chunking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"late-chunking.d.ts","sourceRoot":"","sources":["../../../src/lib/search/late-chunking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAkB,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAQ3D,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,4DAA4D;IAC5D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,qEAAqE;IACrE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AASD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CAkH7B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAKjD"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Late Chunking — embed full file context, pool per AST chunk boundaries.
3
+ *
4
+ * Traditional chunking: chunk first → embed each chunk independently.
5
+ * Late chunking: embed full file → get per-token hidden states → pool by AST boundaries.
6
+ *
7
+ * Each chunk embedding "knows about" the whole file context for free.
8
+ * No extra LLM calls. Requires a long-context embedding model (e.g., jina 8192 tokens).
9
+ *
10
+ * Reference: Jina AI "Late Chunking" (2024)
11
+ * https://jina.ai/news/late-chunking-in-long-context-embedding-models/
12
+ */
13
+ import { logInfo, logWarn } from '../fault-logger.js';
14
+ import { getNativeSession, getModelMaxLength } from '../embeddings.js';
15
+ import { chunkCodeAsync } from '../chunker.js';
16
+ import { getLLMTaskConfig } from '../config.js';
17
+ import { LOCAL_MODEL } from '../config-defaults.js';
18
+ // Minimum max_length to enable late chunking (short-context models can't benefit)
19
+ const MIN_CONTEXT_FOR_LATE_CHUNKING = 512;
20
+ // ============================================================================
21
+ // Core Implementation
22
+ // ============================================================================
23
+ /**
24
+ * Generate embeddings for code chunks using late chunking.
25
+ *
26
+ * Pipeline:
27
+ * 1. Parse file into AST chunks (tree-sitter)
28
+ * 2. Concatenate full file content
29
+ * 3. Run embedding model on full file → get per-token hidden states
30
+ * 4. Map AST chunk character boundaries to token positions
31
+ * 5. Mean-pool hidden states within each chunk's token range
32
+ * 6. L2-normalize each chunk embedding
33
+ *
34
+ * Falls back to standard chunking if:
35
+ * - Model max_length < 512 (short-context model won't benefit)
36
+ * - File exceeds model's max token length
37
+ * - Token offset mapping unavailable
38
+ *
39
+ * @param content - Full file content
40
+ * @param filePath - File path for AST parsing
41
+ * @returns Per-chunk embeddings with file-level context
42
+ */
43
+ export async function lateChunkEmbed(content, filePath) {
44
+ // Check if current model supports late chunking
45
+ const taskCfg = getLLMTaskConfig('embeddings');
46
+ const model = taskCfg.model || LOCAL_MODEL;
47
+ const maxLength = getModelMaxLength(model);
48
+ if (maxLength < MIN_CONTEXT_FOR_LATE_CHUNKING) {
49
+ return {
50
+ chunks: [],
51
+ usedLateChunking: false,
52
+ fallbackReason: `Model ${model} max_length=${maxLength} too short for late chunking (need ${MIN_CONTEXT_FOR_LATE_CHUNKING}+)`,
53
+ };
54
+ }
55
+ try {
56
+ // 1. Parse into AST chunks
57
+ const chunks = await chunkCodeAsync(content, filePath);
58
+ if (chunks.length === 0) {
59
+ return { chunks: [], usedLateChunking: true };
60
+ }
61
+ const session = await getNativeSession();
62
+ // 2. Get token offsets for the full file
63
+ const tokenOffsets = session.getTokenOffsets(content);
64
+ // Detect tokenizer truncation: if the model's max_length was exceeded the
65
+ // tokenizer silently truncates the input. We check by finding the last
66
+ // token whose offset covers real content (non-special tokens have non-zero
67
+ // offsets) and comparing its end to the content length. If the furthest
68
+ // character covered is substantially less than the full content length the
69
+ // file was truncated and late chunking would produce incorrect embeddings
70
+ // for the trailing chunks.
71
+ const lastCoveredChar = tokenOffsets.reduce((max, [, tEnd], i) => {
72
+ // Skip special tokens (offset [0,0] after position 0)
73
+ if (tEnd === 0 && i > 0)
74
+ return max;
75
+ return Math.max(max, tEnd);
76
+ }, 0);
77
+ // 0.95 threshold: allow up to 5% character loss from tokenizer rounding
78
+ // (subword boundaries rarely align exactly with content end). Beyond 5%
79
+ // the file was genuinely truncated and trailing chunks would be wrong.
80
+ if (lastCoveredChar > 0 && lastCoveredChar < content.length * 0.95) {
81
+ return {
82
+ chunks: [],
83
+ usedLateChunking: false,
84
+ fallbackReason: `File exceeds model max_length (covered ${lastCoveredChar}/${content.length} chars); falling back to standard chunking`,
85
+ };
86
+ }
87
+ // 3. Run model on full file → get per-token hidden states
88
+ const raw = await session.embedRaw(content);
89
+ // 4. Pre-compute line offsets for O(1) char position lookup
90
+ const lineOffsets = computeLineOffsets(content);
91
+ // Map each chunk's character range to token positions
92
+ const results = [];
93
+ for (const chunk of chunks) {
94
+ // Find character range for this chunk in the original content.
95
+ // chunk.startLine / chunk.endLine are 1-indexed.
96
+ //
97
+ // The end boundary is derived from lineOffsets rather than from
98
+ // chunk.content.length. chunk.content is assembled with join('\n'),
99
+ // which omits the trailing newline that exists in the original source.
100
+ // Using lineOffsets[endLine] (= start-of-next-line) gives the correct
101
+ // exclusive end that covers the trailing '\n'. For the very last chunk
102
+ // we fall back to content.length so we never read past the buffer.
103
+ const chunkCharStart = getCharOffsetForLine(lineOffsets, chunk.startLine);
104
+ // lineOffsets is 0-indexed by line (lineOffsets[0] = offset of line 1).
105
+ // The offset of the line after endLine is lineOffsets[endLine] when it
106
+ // exists, otherwise the total content length.
107
+ const chunkCharEnd = chunk.endLine < lineOffsets.length ? lineOffsets[chunk.endLine] : content.length;
108
+ // Map char range to token range
109
+ const tokenRange = charRangeToTokenRange(tokenOffsets, chunkCharStart, chunkCharEnd);
110
+ if (tokenRange.start >= tokenRange.end) {
111
+ // Chunk mapped to zero tokens — skip
112
+ continue;
113
+ }
114
+ // 5. Mean-pool hidden states within this token range
115
+ const embedding = poolTokenRange(raw.hiddenStates, raw.attentionMask, raw.hiddenDim, tokenRange.start, tokenRange.end);
116
+ // 6. L2-normalize
117
+ l2Normalize(embedding);
118
+ results.push({ chunk, embedding: Array.from(embedding) });
119
+ }
120
+ logInfo('late-chunking', `Generated ${results.length} context-aware embeddings for ${filePath} (${tokenOffsets.length} tokens)`);
121
+ return { chunks: results, usedLateChunking: true };
122
+ }
123
+ catch (error) {
124
+ logWarn('late-chunking', `Late chunking failed, use standard embedding`, {
125
+ error: error instanceof Error ? error.message : String(error),
126
+ });
127
+ return {
128
+ chunks: [],
129
+ usedLateChunking: false,
130
+ fallbackReason: error instanceof Error ? error.message : String(error),
131
+ };
132
+ }
133
+ }
134
+ /**
135
+ * Check if the current embedding model supports late chunking.
136
+ */
137
+ export function isLateChunkingSupported() {
138
+ const taskCfg = getLLMTaskConfig('embeddings');
139
+ const model = taskCfg.model || LOCAL_MODEL;
140
+ const maxLength = getModelMaxLength(model);
141
+ return maxLength >= MIN_CONTEXT_FOR_LATE_CHUNKING;
142
+ }
143
+ // ============================================================================
144
+ // Internal Helpers
145
+ // ============================================================================
146
+ /**
147
+ * Pre-compute character offset for each line (0-indexed).
148
+ * Returns array where lineOffsets[i] = char offset of line i+1 (1-indexed).
149
+ */
150
+ function computeLineOffsets(content) {
151
+ const offsets = [0]; // Line 1 starts at offset 0
152
+ for (let i = 0; i < content.length; i++) {
153
+ // Handle CRLF: skip \r before \n so offsets stay consistent
154
+ if (content[i] === '\r' && content[i + 1] === '\n') {
155
+ offsets.push(i + 2);
156
+ i++; // skip the \n
157
+ }
158
+ else if (content[i] === '\n') {
159
+ offsets.push(i + 1);
160
+ }
161
+ }
162
+ return offsets;
163
+ }
164
+ /**
165
+ * Get character offset for a 1-indexed line number.
166
+ */
167
+ function getCharOffsetForLine(lineOffsets, line) {
168
+ const idx = Math.max(0, Math.min(line - 1, lineOffsets.length - 1));
169
+ return lineOffsets[idx];
170
+ }
171
+ /**
172
+ * Map character range [charStart, charEnd) to token range [tokenStart, tokenEnd).
173
+ * Uses token offset mappings from the tokenizer.
174
+ */
175
+ function charRangeToTokenRange(tokenOffsets, charStart, charEnd) {
176
+ let tokenStart = tokenOffsets.length;
177
+ let tokenEnd = 0;
178
+ for (let i = 0; i < tokenOffsets.length; i++) {
179
+ const [tStart, tEnd] = tokenOffsets[i];
180
+ // Skip special tokens (offset [0,0])
181
+ if (tStart === 0 && tEnd === 0 && i > 0)
182
+ continue;
183
+ // Token overlaps with chunk range
184
+ if (tEnd > charStart && tStart < charEnd) {
185
+ tokenStart = Math.min(tokenStart, i);
186
+ tokenEnd = Math.max(tokenEnd, i + 1);
187
+ }
188
+ }
189
+ return { start: tokenStart, end: tokenEnd };
190
+ }
191
+ /**
192
+ * Mean-pool hidden states for a token range [start, end).
193
+ * Respects attention mask (skips padding tokens).
194
+ */
195
+ function poolTokenRange(hiddenStates, attentionMask, hiddenDim, tokenStart, tokenEnd) {
196
+ const embedding = new Float64Array(hiddenDim);
197
+ let maskSum = 0;
198
+ for (let t = tokenStart; t < tokenEnd; t++) {
199
+ const mask = Number(attentionMask[t]);
200
+ if (mask === 0)
201
+ continue;
202
+ maskSum += mask;
203
+ const offset = t * hiddenDim;
204
+ for (let d = 0; d < hiddenDim; d++) {
205
+ embedding[d] += hiddenStates[offset + d] * mask;
206
+ }
207
+ }
208
+ if (maskSum > 0) {
209
+ for (let d = 0; d < hiddenDim; d++) {
210
+ embedding[d] /= maskSum;
211
+ }
212
+ }
213
+ return embedding;
214
+ }
215
+ /**
216
+ * In-place L2 normalization.
217
+ */
218
+ function l2Normalize(embedding) {
219
+ let norm = 0;
220
+ for (let d = 0; d < embedding.length; d++) {
221
+ norm += embedding[d] * embedding[d];
222
+ }
223
+ norm = Math.sqrt(norm);
224
+ if (norm > 0) {
225
+ for (let d = 0; d < embedding.length; d++) {
226
+ embedding[d] /= norm;
227
+ }
228
+ }
229
+ }
230
+ //# sourceMappingURL=late-chunking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"late-chunking.js","sourceRoot":"","sources":["../../../src/lib/search/late-chunking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * PPR-Enhanced Retrieval — Graph-backed search using Personalized PageRank.
3
+ *
4
+ * Pipeline (HippoRAG2/ProPEX-RAG inspired):
5
+ * 1. Embed query → find top-k semantically similar nodes
6
+ * 2. Run PPR from those seed nodes across knowledge graph
7
+ * 3. Expand result set with high-PPR-score neighbors
8
+ * 4. Re-rank: (embedding_similarity * 0.5) + (ppr_score * 0.3) + (centrality * 0.2)
9
+ * 5. Return merged, re-ranked results with rank_explain metadata
10
+ */
11
+ export interface PPRSearchResult {
12
+ memoryId: number;
13
+ /** Combined score from all signals */
14
+ score: number;
15
+ /** Individual score components */
16
+ components: {
17
+ semantic: number;
18
+ ppr: number;
19
+ centrality: number;
20
+ feedback: number;
21
+ };
22
+ /** Human-readable explanation of ranking */
23
+ rankExplain: string;
24
+ }
25
+ export interface PPRSearchOptions {
26
+ /** Weight for semantic similarity (default: 0.5) */
27
+ semanticWeight?: number;
28
+ /** Weight for PPR score (default: 0.3) */
29
+ pprWeight?: number;
30
+ /** Weight for centrality (default: 0.1) */
31
+ centralityWeight?: number;
32
+ /** Weight for feedback boost (default: 0.1) */
33
+ feedbackWeight?: number;
34
+ /** PPR damping factor (default: 0.85) */
35
+ alpha?: number;
36
+ /** Max results (default: 20) */
37
+ limit?: number;
38
+ }
39
+ /**
40
+ * Re-rank search results using PPR, centrality, and feedback signals.
41
+ *
42
+ * @param semanticResults - Initial search results with memory IDs and similarity scores
43
+ * @param options - Tuning parameters
44
+ */
45
+ export declare function pprEnhancedRerank(semanticResults: Array<{
46
+ memoryId: number;
47
+ similarity: number;
48
+ }>, options?: PPRSearchOptions): Promise<PPRSearchResult[]>;
49
+ //# sourceMappingURL=ppr-retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ppr-retrieval.d.ts","sourceRoot":"","sources":["../../../src/lib/search/ppr-retrieval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAqH5B"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * PPR-Enhanced Retrieval — Graph-backed search using Personalized PageRank.
3
+ *
4
+ * Pipeline (HippoRAG2/ProPEX-RAG inspired):
5
+ * 1. Embed query → find top-k semantically similar nodes
6
+ * 2. Run PPR from those seed nodes across knowledge graph
7
+ * 3. Expand result set with high-PPR-score neighbors
8
+ * 4. Re-rank: (embedding_similarity * 0.5) + (ppr_score * 0.3) + (centrality * 0.2)
9
+ * 5. Return merged, re-ranked results with rank_explain metadata
10
+ */
11
+ import { personalizedPageRank, computePageRank } from '../graph/graphology-bridge.js';
12
+ import { getBoostFactors } from '../retrieval-feedback.js';
13
+ import { logWarn } from '../fault-logger.js';
14
+ // ============================================================================
15
+ // PPR-Enhanced Search
16
+ // ============================================================================
17
+ /**
18
+ * Re-rank search results using PPR, centrality, and feedback signals.
19
+ *
20
+ * @param semanticResults - Initial search results with memory IDs and similarity scores
21
+ * @param options - Tuning parameters
22
+ */
23
+ export async function pprEnhancedRerank(semanticResults, options) {
24
+ const raw = options ?? {};
25
+ // Validate and clamp numeric options — reject non-finite / negative values.
26
+ const clampWeight = (v, def) => {
27
+ const n = v ?? def;
28
+ return Number.isFinite(n) && n >= 0 ? n : def;
29
+ };
30
+ const clampAlpha = (v) => {
31
+ const n = v ?? 0.85;
32
+ return Number.isFinite(n) && n > 0 && n < 1 ? n : 0.85;
33
+ };
34
+ const clampLimit = (v) => {
35
+ const n = v ?? 20;
36
+ return Number.isFinite(n) && n > 0 ? Math.floor(n) : 20;
37
+ };
38
+ const semanticWeight = clampWeight(raw.semanticWeight, 0.5);
39
+ const pprWeight = clampWeight(raw.pprWeight, 0.3);
40
+ const centralityWeight = clampWeight(raw.centralityWeight, 0.1);
41
+ const feedbackWeight = clampWeight(raw.feedbackWeight, 0.1);
42
+ const alpha = clampAlpha(raw.alpha);
43
+ const limit = clampLimit(raw.limit);
44
+ if (semanticResults.length === 0)
45
+ return [];
46
+ // Step 1: Get PPR scores seeded from semantic results
47
+ const seedIds = semanticResults.map((r) => r.memoryId);
48
+ const pprScores = new Map();
49
+ try {
50
+ const pprResults = await personalizedPageRank(seedIds, limit * 2, alpha);
51
+ for (const { memoryId, score } of pprResults) {
52
+ pprScores.set(memoryId, score);
53
+ }
54
+ }
55
+ catch (error) {
56
+ logWarn('ppr-retrieval', 'PPR failed, using semantic-only ranking', {
57
+ error: error instanceof Error ? error.message : String(error),
58
+ });
59
+ }
60
+ // Step 2: Get global PageRank (centrality)
61
+ let centralityScores = new Map();
62
+ try {
63
+ centralityScores = await computePageRank();
64
+ }
65
+ catch (error) {
66
+ logWarn('ppr-retrieval', 'PageRank failed, skipping centrality', {
67
+ error: error instanceof Error ? error.message : String(error),
68
+ });
69
+ }
70
+ // Step 3: Get feedback boost factors
71
+ const allIds = new Set([...seedIds, ...pprScores.keys()]);
72
+ let feedbackFactors = new Map();
73
+ try {
74
+ feedbackFactors = getBoostFactors([...allIds]);
75
+ }
76
+ catch (error) {
77
+ logWarn('ppr-retrieval', 'Feedback boost failed, skipping', {
78
+ error: error instanceof Error ? error.message : String(error),
79
+ });
80
+ }
81
+ // Step 4: Normalize scores (avoid spread for large maps — stack overflow risk)
82
+ // Use 0 as initial max — if all values are 0, normalization yields 0 (no signal)
83
+ let maxSemantic = 0;
84
+ for (const r of semanticResults) {
85
+ if (r.similarity > maxSemantic)
86
+ maxSemantic = r.similarity;
87
+ }
88
+ let maxPPR = 0;
89
+ for (const v of pprScores.values()) {
90
+ if (v > maxPPR)
91
+ maxPPR = v;
92
+ }
93
+ let maxCentrality = 0;
94
+ for (const v of centralityScores.values()) {
95
+ if (v > maxCentrality)
96
+ maxCentrality = v;
97
+ }
98
+ // Step 5: Merge all candidates (semantic + PPR-discovered)
99
+ const semanticMap = new Map(semanticResults.map((r) => [r.memoryId, r.similarity]));
100
+ const candidates = new Set([...semanticMap.keys(), ...pprScores.keys()]);
101
+ const results = [];
102
+ for (const memoryId of candidates) {
103
+ const semantic = maxSemantic > 0 ? (semanticMap.get(memoryId) ?? 0) / maxSemantic : 0;
104
+ const ppr = maxPPR > 0 ? (pprScores.get(memoryId) ?? 0) / maxPPR : 0;
105
+ const centrality = maxCentrality > 0 ? (centralityScores.get(memoryId) ?? 0) / maxCentrality : 0;
106
+ const feedback = feedbackFactors.get(memoryId) ?? 1.0;
107
+ // Combine scores (weights: semantic + ppr + centrality = linear blend)
108
+ // feedbackWeight controls the strength of the multiplicative feedback modifier
109
+ const baseScore = semantic * semanticWeight + ppr * pprWeight + centrality * centralityWeight;
110
+ // Apply feedback as multiplicative modifier scaled by feedbackWeight
111
+ // feedback=1.3 with feedbackWeight=0.1 → 1.0 + 0.1*(1.3-1.0) = 1.03x boost
112
+ const feedbackModifier = feedbackWeight > 0 ? 1.0 + feedbackWeight * (feedback - 1.0) : 1.0;
113
+ const score = baseScore * feedbackModifier;
114
+ // Build explanation
115
+ const parts = [];
116
+ if (semantic > 0)
117
+ parts.push(`semantic:${(semantic * semanticWeight).toFixed(3)}`);
118
+ if (ppr > 0)
119
+ parts.push(`ppr:${(ppr * pprWeight).toFixed(3)}`);
120
+ if (centrality > 0)
121
+ parts.push(`centrality:${(centrality * centralityWeight).toFixed(3)}`);
122
+ if (feedback !== 1.0)
123
+ parts.push(`feedback:${feedback.toFixed(2)}x`);
124
+ results.push({
125
+ memoryId,
126
+ score,
127
+ components: { semantic, ppr, centrality, feedback },
128
+ rankExplain: parts.join(' + '),
129
+ });
130
+ }
131
+ // Sort by score descending
132
+ results.sort((a, b) => b.score - a.score);
133
+ return results.slice(0, limit);
134
+ }
135
+ //# sourceMappingURL=ppr-retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ppr-retrieval.js","sourceRoot":"","sources":["../../../src/lib/search/ppr-retrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Repo Map Generation — Aider-style compact repository overview.
3
+ *
4
+ * Generates a compact text map: file path + exported symbols, one line per file.
5
+ * Uses tree-sitter AST for accurate symbol extraction (13 languages).
6
+ *
7
+ * Output example:
8
+ * src/lib/auth.ts: hashPassword, verifyToken, createSession
9
+ * src/lib/config.ts: getConfig, setConfigOverride, SuccConfig
10
+ */
11
+ export interface RepoMapEntry {
12
+ filePath: string;
13
+ symbols: string[];
14
+ lineCount: number;
15
+ }
16
+ export interface RepoMapResult {
17
+ entries: RepoMapEntry[];
18
+ text: string;
19
+ totalFiles: number;
20
+ totalSymbols: number;
21
+ }
22
+ /**
23
+ * Generate a repo map using tree-sitter AST symbol extraction.
24
+ *
25
+ * @param rootPath - Project root (default: getProjectRoot())
26
+ * @param options - Filter options
27
+ */
28
+ export declare function generateRepoMap(rootPath?: string, options?: {
29
+ /** Include patterns (glob-like) */
30
+ include?: string[];
31
+ /** Exclude patterns */
32
+ exclude?: string[];
33
+ /** Max symbols per file (default: 10) */
34
+ maxSymbolsPerFile?: number;
35
+ /**
36
+ * Symbol types to include. Accepted values match tree-sitter SymbolType:
37
+ * 'function', 'method', 'class', 'interface', 'type_alias', 'enum',
38
+ * 'struct', 'trait', 'impl', 'module', 'variable', 'constant'.
39
+ * Plural aliases are also accepted: 'functions'→'function', etc.
40
+ */
41
+ symbolTypes?: string[];
42
+ }): Promise<RepoMapResult>;
43
+ //# sourceMappingURL=repo-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-map.d.ts","sourceRoot":"","sources":["../../../src/lib/search/repo-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAuBD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,GACA,OAAO,CAAC,aAAa,CAAC,CAkExB"}