causantic 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (706) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +332 -0
  3. package/config.schema.json +254 -0
  4. package/dist/cli/commands/archive.d.ts +4 -0
  5. package/dist/cli/commands/archive.d.ts.map +1 -0
  6. package/dist/cli/commands/archive.js +76 -0
  7. package/dist/cli/commands/archive.js.map +1 -0
  8. package/dist/cli/commands/benchmark-collection.d.ts +8 -0
  9. package/dist/cli/commands/benchmark-collection.d.ts.map +1 -0
  10. package/dist/cli/commands/benchmark-collection.js +146 -0
  11. package/dist/cli/commands/benchmark-collection.js.map +1 -0
  12. package/dist/cli/commands/config.d.ts +3 -0
  13. package/dist/cli/commands/config.d.ts.map +1 -0
  14. package/dist/cli/commands/config.js +69 -0
  15. package/dist/cli/commands/config.js.map +1 -0
  16. package/dist/cli/commands/dashboard.d.ts +3 -0
  17. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  18. package/dist/cli/commands/dashboard.js +12 -0
  19. package/dist/cli/commands/dashboard.js.map +1 -0
  20. package/dist/cli/commands/encryption.d.ts +3 -0
  21. package/dist/cli/commands/encryption.d.ts.map +1 -0
  22. package/dist/cli/commands/encryption.js +207 -0
  23. package/dist/cli/commands/encryption.js.map +1 -0
  24. package/dist/cli/commands/hook.d.ts +3 -0
  25. package/dist/cli/commands/hook.d.ts.map +1 -0
  26. package/dist/cli/commands/hook.js +35 -0
  27. package/dist/cli/commands/hook.js.map +1 -0
  28. package/dist/cli/commands/ingest.d.ts +4 -0
  29. package/dist/cli/commands/ingest.d.ts.map +1 -0
  30. package/dist/cli/commands/ingest.js +31 -0
  31. package/dist/cli/commands/ingest.js.map +1 -0
  32. package/dist/cli/commands/init.d.ts +3 -0
  33. package/dist/cli/commands/init.d.ts.map +1 -0
  34. package/dist/cli/commands/init.js +680 -0
  35. package/dist/cli/commands/init.js.map +1 -0
  36. package/dist/cli/commands/maintenance.d.ts +3 -0
  37. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  38. package/dist/cli/commands/maintenance.js +67 -0
  39. package/dist/cli/commands/maintenance.js.map +1 -0
  40. package/dist/cli/commands/search.d.ts +3 -0
  41. package/dist/cli/commands/search.d.ts.map +1 -0
  42. package/dist/cli/commands/search.js +16 -0
  43. package/dist/cli/commands/search.js.map +1 -0
  44. package/dist/cli/commands/serve.d.ts +3 -0
  45. package/dist/cli/commands/serve.d.ts.map +1 -0
  46. package/dist/cli/commands/serve.js +19 -0
  47. package/dist/cli/commands/serve.js.map +1 -0
  48. package/dist/cli/commands/stats.d.ts +4 -0
  49. package/dist/cli/commands/stats.d.ts.map +1 -0
  50. package/dist/cli/commands/stats.js +49 -0
  51. package/dist/cli/commands/stats.js.map +1 -0
  52. package/dist/cli/commands/uninstall.d.ts +3 -0
  53. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  54. package/dist/cli/commands/uninstall.js +10 -0
  55. package/dist/cli/commands/uninstall.js.map +1 -0
  56. package/dist/cli/index.d.ts +8 -0
  57. package/dist/cli/index.d.ts.map +1 -0
  58. package/dist/cli/index.js +86 -0
  59. package/dist/cli/index.js.map +1 -0
  60. package/dist/cli/skill-templates.d.ts +19 -0
  61. package/dist/cli/skill-templates.d.ts.map +1 -0
  62. package/dist/cli/skill-templates.js +1128 -0
  63. package/dist/cli/skill-templates.js.map +1 -0
  64. package/dist/cli/types.d.ts +10 -0
  65. package/dist/cli/types.d.ts.map +1 -0
  66. package/dist/cli/types.js +5 -0
  67. package/dist/cli/types.js.map +1 -0
  68. package/dist/cli/uninstall.d.ts +66 -0
  69. package/dist/cli/uninstall.d.ts.map +1 -0
  70. package/dist/cli/uninstall.js +490 -0
  71. package/dist/cli/uninstall.js.map +1 -0
  72. package/dist/cli/utils.d.ts +26 -0
  73. package/dist/cli/utils.d.ts.map +1 -0
  74. package/dist/cli/utils.js +105 -0
  75. package/dist/cli/utils.js.map +1 -0
  76. package/dist/clusters/cluster-manager.d.ts +96 -0
  77. package/dist/clusters/cluster-manager.d.ts.map +1 -0
  78. package/dist/clusters/cluster-manager.js +321 -0
  79. package/dist/clusters/cluster-manager.js.map +1 -0
  80. package/dist/clusters/cluster-refresh.d.ts +56 -0
  81. package/dist/clusters/cluster-refresh.d.ts.map +1 -0
  82. package/dist/clusters/cluster-refresh.js +187 -0
  83. package/dist/clusters/cluster-refresh.js.map +1 -0
  84. package/dist/clusters/hdbscan/cluster-extraction.d.ts +26 -0
  85. package/dist/clusters/hdbscan/cluster-extraction.d.ts.map +1 -0
  86. package/dist/clusters/hdbscan/cluster-extraction.js +232 -0
  87. package/dist/clusters/hdbscan/cluster-extraction.js.map +1 -0
  88. package/dist/clusters/hdbscan/core-distance-worker.d.ts +6 -0
  89. package/dist/clusters/hdbscan/core-distance-worker.d.ts.map +1 -0
  90. package/dist/clusters/hdbscan/core-distance-worker.js +54 -0
  91. package/dist/clusters/hdbscan/core-distance-worker.js.map +1 -0
  92. package/dist/clusters/hdbscan/core-distance.d.ts +26 -0
  93. package/dist/clusters/hdbscan/core-distance.d.ts.map +1 -0
  94. package/dist/clusters/hdbscan/core-distance.js +94 -0
  95. package/dist/clusters/hdbscan/core-distance.js.map +1 -0
  96. package/dist/clusters/hdbscan/distance-cache.d.ts +46 -0
  97. package/dist/clusters/hdbscan/distance-cache.d.ts.map +1 -0
  98. package/dist/clusters/hdbscan/distance-cache.js +84 -0
  99. package/dist/clusters/hdbscan/distance-cache.js.map +1 -0
  100. package/dist/clusters/hdbscan/hierarchy.d.ts +34 -0
  101. package/dist/clusters/hdbscan/hierarchy.d.ts.map +1 -0
  102. package/dist/clusters/hdbscan/hierarchy.js +442 -0
  103. package/dist/clusters/hdbscan/hierarchy.js.map +1 -0
  104. package/dist/clusters/hdbscan/incremental.d.ts +30 -0
  105. package/dist/clusters/hdbscan/incremental.d.ts.map +1 -0
  106. package/dist/clusters/hdbscan/incremental.js +130 -0
  107. package/dist/clusters/hdbscan/incremental.js.map +1 -0
  108. package/dist/clusters/hdbscan/kd-tree.d.ts +51 -0
  109. package/dist/clusters/hdbscan/kd-tree.d.ts.map +1 -0
  110. package/dist/clusters/hdbscan/kd-tree.js +130 -0
  111. package/dist/clusters/hdbscan/kd-tree.js.map +1 -0
  112. package/dist/clusters/hdbscan/min-heap.d.ts +62 -0
  113. package/dist/clusters/hdbscan/min-heap.d.ts.map +1 -0
  114. package/dist/clusters/hdbscan/min-heap.js +139 -0
  115. package/dist/clusters/hdbscan/min-heap.js.map +1 -0
  116. package/dist/clusters/hdbscan/mst.d.ts +20 -0
  117. package/dist/clusters/hdbscan/mst.d.ts.map +1 -0
  118. package/dist/clusters/hdbscan/mst.js +77 -0
  119. package/dist/clusters/hdbscan/mst.js.map +1 -0
  120. package/dist/clusters/hdbscan/probabilities.d.ts +37 -0
  121. package/dist/clusters/hdbscan/probabilities.d.ts.map +1 -0
  122. package/dist/clusters/hdbscan/probabilities.js +149 -0
  123. package/dist/clusters/hdbscan/probabilities.js.map +1 -0
  124. package/dist/clusters/hdbscan/types.d.ts +123 -0
  125. package/dist/clusters/hdbscan/types.d.ts.map +1 -0
  126. package/dist/clusters/hdbscan/types.js +5 -0
  127. package/dist/clusters/hdbscan/types.js.map +1 -0
  128. package/dist/clusters/hdbscan/union-find.d.ts +51 -0
  129. package/dist/clusters/hdbscan/union-find.d.ts.map +1 -0
  130. package/dist/clusters/hdbscan/union-find.js +115 -0
  131. package/dist/clusters/hdbscan/union-find.js.map +1 -0
  132. package/dist/clusters/hdbscan.d.ts +71 -0
  133. package/dist/clusters/hdbscan.d.ts.map +1 -0
  134. package/dist/clusters/hdbscan.js +283 -0
  135. package/dist/clusters/hdbscan.js.map +1 -0
  136. package/dist/clusters/index.d.ts +8 -0
  137. package/dist/clusters/index.d.ts.map +1 -0
  138. package/dist/clusters/index.js +8 -0
  139. package/dist/clusters/index.js.map +1 -0
  140. package/dist/config/index.d.ts +6 -0
  141. package/dist/config/index.d.ts.map +1 -0
  142. package/dist/config/index.js +6 -0
  143. package/dist/config/index.js.map +1 -0
  144. package/dist/config/loader.d.ts +105 -0
  145. package/dist/config/loader.d.ts.map +1 -0
  146. package/dist/config/loader.js +339 -0
  147. package/dist/config/loader.js.map +1 -0
  148. package/dist/config/memory-config.d.ts +109 -0
  149. package/dist/config/memory-config.d.ts.map +1 -0
  150. package/dist/config/memory-config.js +182 -0
  151. package/dist/config/memory-config.js.map +1 -0
  152. package/dist/core/benchmark-types.d.ts +62 -0
  153. package/dist/core/benchmark-types.d.ts.map +1 -0
  154. package/dist/core/benchmark-types.js +11 -0
  155. package/dist/core/benchmark-types.js.map +1 -0
  156. package/dist/core/decay-types.d.ts +111 -0
  157. package/dist/core/decay-types.d.ts.map +1 -0
  158. package/dist/core/decay-types.js +30 -0
  159. package/dist/core/decay-types.js.map +1 -0
  160. package/dist/core/index.d.ts +11 -0
  161. package/dist/core/index.d.ts.map +1 -0
  162. package/dist/core/index.js +9 -0
  163. package/dist/core/index.js.map +1 -0
  164. package/dist/core/lexical-features.d.ts +34 -0
  165. package/dist/core/lexical-features.d.ts.map +1 -0
  166. package/dist/core/lexical-features.js +155 -0
  167. package/dist/core/lexical-features.js.map +1 -0
  168. package/dist/dashboard/client/assets/index-CMUKy4f9.css +1 -0
  169. package/dist/dashboard/client/assets/index-esv8TpCN.js +168 -0
  170. package/dist/dashboard/client/index.html +14 -0
  171. package/dist/dashboard/middleware/async-handler.d.ts +11 -0
  172. package/dist/dashboard/middleware/async-handler.d.ts.map +1 -0
  173. package/dist/dashboard/middleware/async-handler.js +12 -0
  174. package/dist/dashboard/middleware/async-handler.js.map +1 -0
  175. package/dist/dashboard/middleware/error-handler.d.ts +9 -0
  176. package/dist/dashboard/middleware/error-handler.d.ts.map +1 -0
  177. package/dist/dashboard/middleware/error-handler.js +14 -0
  178. package/dist/dashboard/middleware/error-handler.js.map +1 -0
  179. package/dist/dashboard/routes/benchmark-collection.d.ts +11 -0
  180. package/dist/dashboard/routes/benchmark-collection.d.ts.map +1 -0
  181. package/dist/dashboard/routes/benchmark-collection.js +49 -0
  182. package/dist/dashboard/routes/benchmark-collection.js.map +1 -0
  183. package/dist/dashboard/routes/chunks.d.ts +3 -0
  184. package/dist/dashboard/routes/chunks.d.ts.map +1 -0
  185. package/dist/dashboard/routes/chunks.js +25 -0
  186. package/dist/dashboard/routes/chunks.js.map +1 -0
  187. package/dist/dashboard/routes/clusters.d.ts +3 -0
  188. package/dist/dashboard/routes/clusters.d.ts.map +1 -0
  189. package/dist/dashboard/routes/clusters.js +28 -0
  190. package/dist/dashboard/routes/clusters.js.map +1 -0
  191. package/dist/dashboard/routes/edges.d.ts +3 -0
  192. package/dist/dashboard/routes/edges.d.ts.map +1 -0
  193. package/dist/dashboard/routes/edges.js +32 -0
  194. package/dist/dashboard/routes/edges.js.map +1 -0
  195. package/dist/dashboard/routes/graph.d.ts +3 -0
  196. package/dist/dashboard/routes/graph.d.ts.map +1 -0
  197. package/dist/dashboard/routes/graph.js +158 -0
  198. package/dist/dashboard/routes/graph.js.map +1 -0
  199. package/dist/dashboard/routes/projects.d.ts +3 -0
  200. package/dist/dashboard/routes/projects.d.ts.map +1 -0
  201. package/dist/dashboard/routes/projects.js +9 -0
  202. package/dist/dashboard/routes/projects.js.map +1 -0
  203. package/dist/dashboard/routes/search.d.ts +3 -0
  204. package/dist/dashboard/routes/search.d.ts.map +1 -0
  205. package/dist/dashboard/routes/search.js +105 -0
  206. package/dist/dashboard/routes/search.js.map +1 -0
  207. package/dist/dashboard/routes/sessions.d.ts +3 -0
  208. package/dist/dashboard/routes/sessions.d.ts.map +1 -0
  209. package/dist/dashboard/routes/sessions.js +16 -0
  210. package/dist/dashboard/routes/sessions.js.map +1 -0
  211. package/dist/dashboard/routes/stats.d.ts +3 -0
  212. package/dist/dashboard/routes/stats.d.ts.map +1 -0
  213. package/dist/dashboard/routes/stats.js +38 -0
  214. package/dist/dashboard/routes/stats.js.map +1 -0
  215. package/dist/dashboard/server.d.ts +3 -0
  216. package/dist/dashboard/server.d.ts.map +1 -0
  217. package/dist/dashboard/server.js +85 -0
  218. package/dist/dashboard/server.js.map +1 -0
  219. package/dist/eval/annotation-schema.d.ts +41 -0
  220. package/dist/eval/annotation-schema.d.ts.map +1 -0
  221. package/dist/eval/annotation-schema.js +171 -0
  222. package/dist/eval/annotation-schema.js.map +1 -0
  223. package/dist/eval/benchmark-runner.d.ts +15 -0
  224. package/dist/eval/benchmark-runner.d.ts.map +1 -0
  225. package/dist/eval/benchmark-runner.js +93 -0
  226. package/dist/eval/benchmark-runner.js.map +1 -0
  227. package/dist/eval/cluster-evaluator.d.ts +39 -0
  228. package/dist/eval/cluster-evaluator.d.ts.map +1 -0
  229. package/dist/eval/cluster-evaluator.js +51 -0
  230. package/dist/eval/cluster-evaluator.js.map +1 -0
  231. package/dist/eval/code-nl-alignment.d.ts +25 -0
  232. package/dist/eval/code-nl-alignment.d.ts.map +1 -0
  233. package/dist/eval/code-nl-alignment.js +49 -0
  234. package/dist/eval/code-nl-alignment.js.map +1 -0
  235. package/dist/eval/collection-benchmark/graph-value.d.ts +16 -0
  236. package/dist/eval/collection-benchmark/graph-value.d.ts.map +1 -0
  237. package/dist/eval/collection-benchmark/graph-value.js +162 -0
  238. package/dist/eval/collection-benchmark/graph-value.js.map +1 -0
  239. package/dist/eval/collection-benchmark/health.d.ts +12 -0
  240. package/dist/eval/collection-benchmark/health.d.ts.map +1 -0
  241. package/dist/eval/collection-benchmark/health.js +246 -0
  242. package/dist/eval/collection-benchmark/health.js.map +1 -0
  243. package/dist/eval/collection-benchmark/history.d.ts +27 -0
  244. package/dist/eval/collection-benchmark/history.d.ts.map +1 -0
  245. package/dist/eval/collection-benchmark/history.js +134 -0
  246. package/dist/eval/collection-benchmark/history.js.map +1 -0
  247. package/dist/eval/collection-benchmark/latency.d.ts +16 -0
  248. package/dist/eval/collection-benchmark/latency.d.ts.map +1 -0
  249. package/dist/eval/collection-benchmark/latency.js +115 -0
  250. package/dist/eval/collection-benchmark/latency.js.map +1 -0
  251. package/dist/eval/collection-benchmark/reporter.d.ts +18 -0
  252. package/dist/eval/collection-benchmark/reporter.d.ts.map +1 -0
  253. package/dist/eval/collection-benchmark/reporter.js +244 -0
  254. package/dist/eval/collection-benchmark/reporter.js.map +1 -0
  255. package/dist/eval/collection-benchmark/retrieval.d.ts +15 -0
  256. package/dist/eval/collection-benchmark/retrieval.d.ts.map +1 -0
  257. package/dist/eval/collection-benchmark/retrieval.js +203 -0
  258. package/dist/eval/collection-benchmark/retrieval.js.map +1 -0
  259. package/dist/eval/collection-benchmark/runner.d.ts +20 -0
  260. package/dist/eval/collection-benchmark/runner.d.ts.map +1 -0
  261. package/dist/eval/collection-benchmark/runner.js +189 -0
  262. package/dist/eval/collection-benchmark/runner.js.map +1 -0
  263. package/dist/eval/collection-benchmark/sampler.d.ts +18 -0
  264. package/dist/eval/collection-benchmark/sampler.d.ts.map +1 -0
  265. package/dist/eval/collection-benchmark/sampler.js +186 -0
  266. package/dist/eval/collection-benchmark/sampler.js.map +1 -0
  267. package/dist/eval/collection-benchmark/tuning.d.ts +12 -0
  268. package/dist/eval/collection-benchmark/tuning.d.ts.map +1 -0
  269. package/dist/eval/collection-benchmark/tuning.js +222 -0
  270. package/dist/eval/collection-benchmark/tuning.js.map +1 -0
  271. package/dist/eval/collection-benchmark/types.d.ts +183 -0
  272. package/dist/eval/collection-benchmark/types.d.ts.map +1 -0
  273. package/dist/eval/collection-benchmark/types.js +7 -0
  274. package/dist/eval/collection-benchmark/types.js.map +1 -0
  275. package/dist/eval/context-window-test.d.ts +34 -0
  276. package/dist/eval/context-window-test.d.ts.map +1 -0
  277. package/dist/eval/context-window-test.js +59 -0
  278. package/dist/eval/context-window-test.js.map +1 -0
  279. package/dist/eval/corpus-builder.d.ts +33 -0
  280. package/dist/eval/corpus-builder.d.ts.map +1 -0
  281. package/dist/eval/corpus-builder.js +88 -0
  282. package/dist/eval/corpus-builder.js.map +1 -0
  283. package/dist/eval/experiments/boilerplate-filter.d.ts +26 -0
  284. package/dist/eval/experiments/boilerplate-filter.d.ts.map +1 -0
  285. package/dist/eval/experiments/boilerplate-filter.js +95 -0
  286. package/dist/eval/experiments/boilerplate-filter.js.map +1 -0
  287. package/dist/eval/experiments/cluster-threshold/index.d.ts +6 -0
  288. package/dist/eval/experiments/cluster-threshold/index.d.ts.map +1 -0
  289. package/dist/eval/experiments/cluster-threshold/index.js +5 -0
  290. package/dist/eval/experiments/cluster-threshold/index.js.map +1 -0
  291. package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.d.ts +58 -0
  292. package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.d.ts.map +1 -0
  293. package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.js +246 -0
  294. package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.js.map +1 -0
  295. package/dist/eval/experiments/code-focused-mode.d.ts +20 -0
  296. package/dist/eval/experiments/code-focused-mode.d.ts.map +1 -0
  297. package/dist/eval/experiments/code-focused-mode.js +66 -0
  298. package/dist/eval/experiments/code-focused-mode.js.map +1 -0
  299. package/dist/eval/experiments/edge-decay/decay-curves.d.ts +59 -0
  300. package/dist/eval/experiments/edge-decay/decay-curves.d.ts.map +1 -0
  301. package/dist/eval/experiments/edge-decay/decay-curves.js +124 -0
  302. package/dist/eval/experiments/edge-decay/decay-curves.js.map +1 -0
  303. package/dist/eval/experiments/edge-decay/index.d.ts +13 -0
  304. package/dist/eval/experiments/edge-decay/index.d.ts.map +1 -0
  305. package/dist/eval/experiments/edge-decay/index.js +16 -0
  306. package/dist/eval/experiments/edge-decay/index.js.map +1 -0
  307. package/dist/eval/experiments/edge-decay/presets.d.ts +52 -0
  308. package/dist/eval/experiments/edge-decay/presets.d.ts.map +1 -0
  309. package/dist/eval/experiments/edge-decay/presets.js +234 -0
  310. package/dist/eval/experiments/edge-decay/presets.js.map +1 -0
  311. package/dist/eval/experiments/edge-decay/reference-extractor.d.ts +34 -0
  312. package/dist/eval/experiments/edge-decay/reference-extractor.d.ts.map +1 -0
  313. package/dist/eval/experiments/edge-decay/reference-extractor.js +353 -0
  314. package/dist/eval/experiments/edge-decay/reference-extractor.js.map +1 -0
  315. package/dist/eval/experiments/edge-decay/reference-types.d.ts +131 -0
  316. package/dist/eval/experiments/edge-decay/reference-types.d.ts.map +1 -0
  317. package/dist/eval/experiments/edge-decay/reference-types.js +5 -0
  318. package/dist/eval/experiments/edge-decay/reference-types.js.map +1 -0
  319. package/dist/eval/experiments/edge-decay/retrieval-ranking.d.ts +64 -0
  320. package/dist/eval/experiments/edge-decay/retrieval-ranking.d.ts.map +1 -0
  321. package/dist/eval/experiments/edge-decay/retrieval-ranking.js +565 -0
  322. package/dist/eval/experiments/edge-decay/retrieval-ranking.js.map +1 -0
  323. package/dist/eval/experiments/edge-decay/run-experiments.d.ts +25 -0
  324. package/dist/eval/experiments/edge-decay/run-experiments.d.ts.map +1 -0
  325. package/dist/eval/experiments/edge-decay/run-experiments.js +229 -0
  326. package/dist/eval/experiments/edge-decay/run-experiments.js.map +1 -0
  327. package/dist/eval/experiments/edge-decay/simulate.d.ts +42 -0
  328. package/dist/eval/experiments/edge-decay/simulate.d.ts.map +1 -0
  329. package/dist/eval/experiments/edge-decay/simulate.js +232 -0
  330. package/dist/eval/experiments/edge-decay/simulate.js.map +1 -0
  331. package/dist/eval/experiments/edge-decay/types.d.ts +10 -0
  332. package/dist/eval/experiments/edge-decay/types.d.ts.map +1 -0
  333. package/dist/eval/experiments/edge-decay/types.js +9 -0
  334. package/dist/eval/experiments/edge-decay/types.js.map +1 -0
  335. package/dist/eval/experiments/hdbscan-sweep.d.ts +19 -0
  336. package/dist/eval/experiments/hdbscan-sweep.d.ts.map +1 -0
  337. package/dist/eval/experiments/hdbscan-sweep.js +71 -0
  338. package/dist/eval/experiments/hdbscan-sweep.js.map +1 -0
  339. package/dist/eval/experiments/single-model-run.d.ts +54 -0
  340. package/dist/eval/experiments/single-model-run.d.ts.map +1 -0
  341. package/dist/eval/experiments/single-model-run.js +120 -0
  342. package/dist/eval/experiments/single-model-run.js.map +1 -0
  343. package/dist/eval/experiments/thinking-ablation.d.ts +21 -0
  344. package/dist/eval/experiments/thinking-ablation.d.ts.map +1 -0
  345. package/dist/eval/experiments/thinking-ablation.js +68 -0
  346. package/dist/eval/experiments/thinking-ablation.js.map +1 -0
  347. package/dist/eval/experiments/topic-continuity/embedding-classifier.d.ts +55 -0
  348. package/dist/eval/experiments/topic-continuity/embedding-classifier.d.ts.map +1 -0
  349. package/dist/eval/experiments/topic-continuity/embedding-classifier.js +126 -0
  350. package/dist/eval/experiments/topic-continuity/embedding-classifier.js.map +1 -0
  351. package/dist/eval/experiments/topic-continuity/hybrid-classifier.d.ts +68 -0
  352. package/dist/eval/experiments/topic-continuity/hybrid-classifier.d.ts.map +1 -0
  353. package/dist/eval/experiments/topic-continuity/hybrid-classifier.js +175 -0
  354. package/dist/eval/experiments/topic-continuity/hybrid-classifier.js.map +1 -0
  355. package/dist/eval/experiments/topic-continuity/index.d.ts +13 -0
  356. package/dist/eval/experiments/topic-continuity/index.d.ts.map +1 -0
  357. package/dist/eval/experiments/topic-continuity/index.js +17 -0
  358. package/dist/eval/experiments/topic-continuity/index.js.map +1 -0
  359. package/dist/eval/experiments/topic-continuity/labeler.d.ts +42 -0
  360. package/dist/eval/experiments/topic-continuity/labeler.d.ts.map +1 -0
  361. package/dist/eval/experiments/topic-continuity/labeler.js +253 -0
  362. package/dist/eval/experiments/topic-continuity/labeler.js.map +1 -0
  363. package/dist/eval/experiments/topic-continuity/lexical-features.d.ts +26 -0
  364. package/dist/eval/experiments/topic-continuity/lexical-features.d.ts.map +1 -0
  365. package/dist/eval/experiments/topic-continuity/lexical-features.js +58 -0
  366. package/dist/eval/experiments/topic-continuity/lexical-features.js.map +1 -0
  367. package/dist/eval/experiments/topic-continuity/run-experiment.d.ts +40 -0
  368. package/dist/eval/experiments/topic-continuity/run-experiment.d.ts.map +1 -0
  369. package/dist/eval/experiments/topic-continuity/run-experiment.js +379 -0
  370. package/dist/eval/experiments/topic-continuity/run-experiment.js.map +1 -0
  371. package/dist/eval/experiments/topic-continuity/types.d.ts +146 -0
  372. package/dist/eval/experiments/topic-continuity/types.d.ts.map +1 -0
  373. package/dist/eval/experiments/topic-continuity/types.js +9 -0
  374. package/dist/eval/experiments/topic-continuity/types.js.map +1 -0
  375. package/dist/eval/experiments/truncation.d.ts +21 -0
  376. package/dist/eval/experiments/truncation.d.ts.map +1 -0
  377. package/dist/eval/experiments/truncation.js +59 -0
  378. package/dist/eval/experiments/truncation.js.map +1 -0
  379. package/dist/eval/experiments/types.d.ts +37 -0
  380. package/dist/eval/experiments/types.d.ts.map +1 -0
  381. package/dist/eval/experiments/types.js +13 -0
  382. package/dist/eval/experiments/types.js.map +1 -0
  383. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.d.ts +10 -0
  384. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.d.ts.map +1 -0
  385. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.js +229 -0
  386. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.js.map +1 -0
  387. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.d.ts +12 -0
  388. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.d.ts.map +1 -0
  389. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.js +316 -0
  390. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.js.map +1 -0
  391. package/dist/eval/experiments/vector-decay-shapes/hop-decay.d.ts +19 -0
  392. package/dist/eval/experiments/vector-decay-shapes/hop-decay.d.ts.map +1 -0
  393. package/dist/eval/experiments/vector-decay-shapes/hop-decay.js +127 -0
  394. package/dist/eval/experiments/vector-decay-shapes/hop-decay.js.map +1 -0
  395. package/dist/eval/experiments/vector-decay-shapes/index.d.ts +11 -0
  396. package/dist/eval/experiments/vector-decay-shapes/index.d.ts.map +1 -0
  397. package/dist/eval/experiments/vector-decay-shapes/index.js +11 -0
  398. package/dist/eval/experiments/vector-decay-shapes/index.js.map +1 -0
  399. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.d.ts +14 -0
  400. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.d.ts.map +1 -0
  401. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.js +274 -0
  402. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.js.map +1 -0
  403. package/dist/eval/experiments/vector-decay-shapes/presets.d.ts +36 -0
  404. package/dist/eval/experiments/vector-decay-shapes/presets.d.ts.map +1 -0
  405. package/dist/eval/experiments/vector-decay-shapes/presets.js +157 -0
  406. package/dist/eval/experiments/vector-decay-shapes/presets.js.map +1 -0
  407. package/dist/eval/experiments/vector-decay-shapes/run-experiment.d.ts +20 -0
  408. package/dist/eval/experiments/vector-decay-shapes/run-experiment.d.ts.map +1 -0
  409. package/dist/eval/experiments/vector-decay-shapes/run-experiment.js +504 -0
  410. package/dist/eval/experiments/vector-decay-shapes/run-experiment.js.map +1 -0
  411. package/dist/eval/experiments/vector-decay-shapes/types.d.ts +111 -0
  412. package/dist/eval/experiments/vector-decay-shapes/types.d.ts.map +1 -0
  413. package/dist/eval/experiments/vector-decay-shapes/types.js +15 -0
  414. package/dist/eval/experiments/vector-decay-shapes/types.js.map +1 -0
  415. package/dist/eval/experiments/vector-decay-sweep/index.d.ts +7 -0
  416. package/dist/eval/experiments/vector-decay-sweep/index.d.ts.map +1 -0
  417. package/dist/eval/experiments/vector-decay-sweep/index.js +7 -0
  418. package/dist/eval/experiments/vector-decay-sweep/index.js.map +1 -0
  419. package/dist/eval/experiments/vector-decay-sweep/run-sweep.d.ts +30 -0
  420. package/dist/eval/experiments/vector-decay-sweep/run-sweep.d.ts.map +1 -0
  421. package/dist/eval/experiments/vector-decay-sweep/run-sweep.js +378 -0
  422. package/dist/eval/experiments/vector-decay-sweep/run-sweep.js.map +1 -0
  423. package/dist/eval/experiments/vector-decay-sweep/types.d.ts +109 -0
  424. package/dist/eval/experiments/vector-decay-sweep/types.d.ts.map +1 -0
  425. package/dist/eval/experiments/vector-decay-sweep/types.js +16 -0
  426. package/dist/eval/experiments/vector-decay-sweep/types.js.map +1 -0
  427. package/dist/eval/metrics.d.ts +45 -0
  428. package/dist/eval/metrics.d.ts.map +1 -0
  429. package/dist/eval/metrics.js +134 -0
  430. package/dist/eval/metrics.js.map +1 -0
  431. package/dist/hooks/claudemd-generator.d.ts +62 -0
  432. package/dist/hooks/claudemd-generator.d.ts.map +1 -0
  433. package/dist/hooks/claudemd-generator.js +220 -0
  434. package/dist/hooks/claudemd-generator.js.map +1 -0
  435. package/dist/hooks/hook-utils.d.ts +84 -0
  436. package/dist/hooks/hook-utils.d.ts.map +1 -0
  437. package/dist/hooks/hook-utils.js +187 -0
  438. package/dist/hooks/hook-utils.js.map +1 -0
  439. package/dist/hooks/index.d.ts +12 -0
  440. package/dist/hooks/index.d.ts.map +1 -0
  441. package/dist/hooks/index.js +12 -0
  442. package/dist/hooks/index.js.map +1 -0
  443. package/dist/hooks/pre-compact.d.ts +58 -0
  444. package/dist/hooks/pre-compact.d.ts.map +1 -0
  445. package/dist/hooks/pre-compact.js +127 -0
  446. package/dist/hooks/pre-compact.js.map +1 -0
  447. package/dist/hooks/session-start.d.ts +62 -0
  448. package/dist/hooks/session-start.d.ts.map +1 -0
  449. package/dist/hooks/session-start.js +249 -0
  450. package/dist/hooks/session-start.js.map +1 -0
  451. package/dist/index.d.ts +22 -0
  452. package/dist/index.d.ts.map +1 -0
  453. package/dist/index.js +29 -0
  454. package/dist/index.js.map +1 -0
  455. package/dist/ingest/batch-ingest.d.ts +94 -0
  456. package/dist/ingest/batch-ingest.d.ts.map +1 -0
  457. package/dist/ingest/batch-ingest.js +167 -0
  458. package/dist/ingest/batch-ingest.js.map +1 -0
  459. package/dist/ingest/brief-debrief-detector.d.ts +74 -0
  460. package/dist/ingest/brief-debrief-detector.d.ts.map +1 -0
  461. package/dist/ingest/brief-debrief-detector.js +253 -0
  462. package/dist/ingest/brief-debrief-detector.js.map +1 -0
  463. package/dist/ingest/cross-session-linker.d.ts +39 -0
  464. package/dist/ingest/cross-session-linker.d.ts.map +1 -0
  465. package/dist/ingest/cross-session-linker.js +103 -0
  466. package/dist/ingest/cross-session-linker.js.map +1 -0
  467. package/dist/ingest/edge-creator.d.ts +62 -0
  468. package/dist/ingest/edge-creator.d.ts.map +1 -0
  469. package/dist/ingest/edge-creator.js +186 -0
  470. package/dist/ingest/edge-creator.js.map +1 -0
  471. package/dist/ingest/edge-detector.d.ts +37 -0
  472. package/dist/ingest/edge-detector.d.ts.map +1 -0
  473. package/dist/ingest/edge-detector.js +234 -0
  474. package/dist/ingest/edge-detector.js.map +1 -0
  475. package/dist/ingest/index.d.ts +14 -0
  476. package/dist/ingest/index.d.ts.map +1 -0
  477. package/dist/ingest/index.js +14 -0
  478. package/dist/ingest/index.js.map +1 -0
  479. package/dist/ingest/ingest-session.d.ts +83 -0
  480. package/dist/ingest/ingest-session.d.ts.map +1 -0
  481. package/dist/ingest/ingest-session.js +415 -0
  482. package/dist/ingest/ingest-session.js.map +1 -0
  483. package/dist/maintenance/index.d.ts +5 -0
  484. package/dist/maintenance/index.d.ts.map +1 -0
  485. package/dist/maintenance/index.js +5 -0
  486. package/dist/maintenance/index.js.map +1 -0
  487. package/dist/maintenance/scheduler.d.ts +79 -0
  488. package/dist/maintenance/scheduler.d.ts.map +1 -0
  489. package/dist/maintenance/scheduler.js +362 -0
  490. package/dist/maintenance/scheduler.js.map +1 -0
  491. package/dist/maintenance/tasks/cleanup-vectors.d.ts +10 -0
  492. package/dist/maintenance/tasks/cleanup-vectors.d.ts.map +1 -0
  493. package/dist/maintenance/tasks/cleanup-vectors.js +23 -0
  494. package/dist/maintenance/tasks/cleanup-vectors.js.map +1 -0
  495. package/dist/maintenance/tasks/index.d.ts +9 -0
  496. package/dist/maintenance/tasks/index.d.ts.map +1 -0
  497. package/dist/maintenance/tasks/index.js +9 -0
  498. package/dist/maintenance/tasks/index.js.map +1 -0
  499. package/dist/maintenance/tasks/prune-graph.d.ts +12 -0
  500. package/dist/maintenance/tasks/prune-graph.d.ts.map +1 -0
  501. package/dist/maintenance/tasks/prune-graph.js +23 -0
  502. package/dist/maintenance/tasks/prune-graph.js.map +1 -0
  503. package/dist/maintenance/tasks/scan-projects.d.ts +12 -0
  504. package/dist/maintenance/tasks/scan-projects.d.ts.map +1 -0
  505. package/dist/maintenance/tasks/scan-projects.js +31 -0
  506. package/dist/maintenance/tasks/scan-projects.js.map +1 -0
  507. package/dist/maintenance/tasks/update-clusters.d.ts +12 -0
  508. package/dist/maintenance/tasks/update-clusters.d.ts.map +1 -0
  509. package/dist/maintenance/tasks/update-clusters.js +41 -0
  510. package/dist/maintenance/tasks/update-clusters.js.map +1 -0
  511. package/dist/maintenance/tasks/vacuum.d.ts +10 -0
  512. package/dist/maintenance/tasks/vacuum.d.ts.map +1 -0
  513. package/dist/maintenance/tasks/vacuum.js +23 -0
  514. package/dist/maintenance/tasks/vacuum.js.map +1 -0
  515. package/dist/mcp/index.d.ts +7 -0
  516. package/dist/mcp/index.d.ts.map +1 -0
  517. package/dist/mcp/index.js +8 -0
  518. package/dist/mcp/index.js.map +1 -0
  519. package/dist/mcp/server.d.ts +90 -0
  520. package/dist/mcp/server.d.ts.map +1 -0
  521. package/dist/mcp/server.js +395 -0
  522. package/dist/mcp/server.js.map +1 -0
  523. package/dist/mcp/tools.d.ts +52 -0
  524. package/dist/mcp/tools.d.ts.map +1 -0
  525. package/dist/mcp/tools.js +292 -0
  526. package/dist/mcp/tools.js.map +1 -0
  527. package/dist/models/device-detector.d.ts +32 -0
  528. package/dist/models/device-detector.d.ts.map +1 -0
  529. package/dist/models/device-detector.js +123 -0
  530. package/dist/models/device-detector.js.map +1 -0
  531. package/dist/models/embedder.d.ts +60 -0
  532. package/dist/models/embedder.d.ts.map +1 -0
  533. package/dist/models/embedder.js +171 -0
  534. package/dist/models/embedder.js.map +1 -0
  535. package/dist/models/model-registry.d.ts +25 -0
  536. package/dist/models/model-registry.d.ts.map +1 -0
  537. package/dist/models/model-registry.js +56 -0
  538. package/dist/models/model-registry.js.map +1 -0
  539. package/dist/parser/chunker.d.ts +74 -0
  540. package/dist/parser/chunker.d.ts.map +1 -0
  541. package/dist/parser/chunker.js +330 -0
  542. package/dist/parser/chunker.js.map +1 -0
  543. package/dist/parser/session-reader.d.ts +75 -0
  544. package/dist/parser/session-reader.d.ts.map +1 -0
  545. package/dist/parser/session-reader.js +198 -0
  546. package/dist/parser/session-reader.js.map +1 -0
  547. package/dist/parser/turn-assembler.d.ts +18 -0
  548. package/dist/parser/turn-assembler.d.ts.map +1 -0
  549. package/dist/parser/turn-assembler.js +150 -0
  550. package/dist/parser/turn-assembler.js.map +1 -0
  551. package/dist/parser/types.d.ts +124 -0
  552. package/dist/parser/types.d.ts.map +1 -0
  553. package/dist/parser/types.js +8 -0
  554. package/dist/parser/types.js.map +1 -0
  555. package/dist/report/reporter.d.ts +18 -0
  556. package/dist/report/reporter.d.ts.map +1 -0
  557. package/dist/report/reporter.js +121 -0
  558. package/dist/report/reporter.js.map +1 -0
  559. package/dist/retrieval/cluster-expander.d.ts +30 -0
  560. package/dist/retrieval/cluster-expander.d.ts.map +1 -0
  561. package/dist/retrieval/cluster-expander.js +87 -0
  562. package/dist/retrieval/cluster-expander.js.map +1 -0
  563. package/dist/retrieval/context-assembler.d.ts +89 -0
  564. package/dist/retrieval/context-assembler.d.ts.map +1 -0
  565. package/dist/retrieval/context-assembler.js +313 -0
  566. package/dist/retrieval/context-assembler.js.map +1 -0
  567. package/dist/retrieval/index.d.ts +12 -0
  568. package/dist/retrieval/index.d.ts.map +1 -0
  569. package/dist/retrieval/index.js +12 -0
  570. package/dist/retrieval/index.js.map +1 -0
  571. package/dist/retrieval/rrf.d.ts +25 -0
  572. package/dist/retrieval/rrf.d.ts.map +1 -0
  573. package/dist/retrieval/rrf.js +56 -0
  574. package/dist/retrieval/rrf.js.map +1 -0
  575. package/dist/retrieval/session-reconstructor.d.ts +79 -0
  576. package/dist/retrieval/session-reconstructor.d.ts.map +1 -0
  577. package/dist/retrieval/session-reconstructor.js +173 -0
  578. package/dist/retrieval/session-reconstructor.js.map +1 -0
  579. package/dist/retrieval/traverser.d.ts +66 -0
  580. package/dist/retrieval/traverser.d.ts.map +1 -0
  581. package/dist/retrieval/traverser.js +160 -0
  582. package/dist/retrieval/traverser.js.map +1 -0
  583. package/dist/storage/archive.d.ts +81 -0
  584. package/dist/storage/archive.d.ts.map +1 -0
  585. package/dist/storage/archive.js +204 -0
  586. package/dist/storage/archive.js.map +1 -0
  587. package/dist/storage/audit-log.d.ts +29 -0
  588. package/dist/storage/audit-log.d.ts.map +1 -0
  589. package/dist/storage/audit-log.js +69 -0
  590. package/dist/storage/audit-log.js.map +1 -0
  591. package/dist/storage/checkpoint-store.d.ts +38 -0
  592. package/dist/storage/checkpoint-store.d.ts.map +1 -0
  593. package/dist/storage/checkpoint-store.js +76 -0
  594. package/dist/storage/checkpoint-store.js.map +1 -0
  595. package/dist/storage/chunk-store.d.ts +111 -0
  596. package/dist/storage/chunk-store.d.ts.map +1 -0
  597. package/dist/storage/chunk-store.js +298 -0
  598. package/dist/storage/chunk-store.js.map +1 -0
  599. package/dist/storage/clock-store.d.ts +80 -0
  600. package/dist/storage/clock-store.d.ts.map +1 -0
  601. package/dist/storage/clock-store.js +155 -0
  602. package/dist/storage/clock-store.js.map +1 -0
  603. package/dist/storage/cluster-store.d.ts +63 -0
  604. package/dist/storage/cluster-store.d.ts.map +1 -0
  605. package/dist/storage/cluster-store.js +219 -0
  606. package/dist/storage/cluster-store.js.map +1 -0
  607. package/dist/storage/db.d.ts +57 -0
  608. package/dist/storage/db.d.ts.map +1 -0
  609. package/dist/storage/db.js +249 -0
  610. package/dist/storage/db.js.map +1 -0
  611. package/dist/storage/decay.d.ts +125 -0
  612. package/dist/storage/decay.d.ts.map +1 -0
  613. package/dist/storage/decay.js +276 -0
  614. package/dist/storage/decay.js.map +1 -0
  615. package/dist/storage/edge-store.d.ts +75 -0
  616. package/dist/storage/edge-store.d.ts.map +1 -0
  617. package/dist/storage/edge-store.js +259 -0
  618. package/dist/storage/edge-store.js.map +1 -0
  619. package/dist/storage/embedding-cache.d.ts +51 -0
  620. package/dist/storage/embedding-cache.d.ts.map +1 -0
  621. package/dist/storage/embedding-cache.js +155 -0
  622. package/dist/storage/embedding-cache.js.map +1 -0
  623. package/dist/storage/encryption.d.ts +55 -0
  624. package/dist/storage/encryption.d.ts.map +1 -0
  625. package/dist/storage/encryption.js +130 -0
  626. package/dist/storage/encryption.js.map +1 -0
  627. package/dist/storage/index.d.ts +15 -0
  628. package/dist/storage/index.d.ts.map +1 -0
  629. package/dist/storage/index.js +20 -0
  630. package/dist/storage/index.js.map +1 -0
  631. package/dist/storage/keyword-store.d.ts +25 -0
  632. package/dist/storage/keyword-store.d.ts.map +1 -0
  633. package/dist/storage/keyword-store.js +104 -0
  634. package/dist/storage/keyword-store.js.map +1 -0
  635. package/dist/storage/migrations.d.ts +12 -0
  636. package/dist/storage/migrations.d.ts.map +1 -0
  637. package/dist/storage/migrations.js +345 -0
  638. package/dist/storage/migrations.js.map +1 -0
  639. package/dist/storage/pruner.d.ts +111 -0
  640. package/dist/storage/pruner.d.ts.map +1 -0
  641. package/dist/storage/pruner.js +280 -0
  642. package/dist/storage/pruner.js.map +1 -0
  643. package/dist/storage/schema-loader.d.ts +18 -0
  644. package/dist/storage/schema-loader.d.ts.map +1 -0
  645. package/dist/storage/schema-loader.js +62 -0
  646. package/dist/storage/schema-loader.js.map +1 -0
  647. package/dist/storage/schema.sql +133 -0
  648. package/dist/storage/types.d.ts +278 -0
  649. package/dist/storage/types.d.ts.map +1 -0
  650. package/dist/storage/types.js +14 -0
  651. package/dist/storage/types.js.map +1 -0
  652. package/dist/storage/vector-store.d.ts +213 -0
  653. package/dist/storage/vector-store.d.ts.map +1 -0
  654. package/dist/storage/vector-store.js +440 -0
  655. package/dist/storage/vector-store.js.map +1 -0
  656. package/dist/temporal/clock-compactor.d.ts +65 -0
  657. package/dist/temporal/clock-compactor.d.ts.map +1 -0
  658. package/dist/temporal/clock-compactor.js +157 -0
  659. package/dist/temporal/clock-compactor.js.map +1 -0
  660. package/dist/temporal/index.d.ts +6 -0
  661. package/dist/temporal/index.d.ts.map +1 -0
  662. package/dist/temporal/index.js +6 -0
  663. package/dist/temporal/index.js.map +1 -0
  664. package/dist/temporal/vector-clock.d.ts +143 -0
  665. package/dist/temporal/vector-clock.d.ts.map +1 -0
  666. package/dist/temporal/vector-clock.js +231 -0
  667. package/dist/temporal/vector-clock.js.map +1 -0
  668. package/dist/utils/angular-distance.d.ts +31 -0
  669. package/dist/utils/angular-distance.d.ts.map +1 -0
  670. package/dist/utils/angular-distance.js +61 -0
  671. package/dist/utils/angular-distance.js.map +1 -0
  672. package/dist/utils/array-utils.d.ts +28 -0
  673. package/dist/utils/array-utils.d.ts.map +1 -0
  674. package/dist/utils/array-utils.js +67 -0
  675. package/dist/utils/array-utils.js.map +1 -0
  676. package/dist/utils/embedding-utils.d.ts +25 -0
  677. package/dist/utils/embedding-utils.d.ts.map +1 -0
  678. package/dist/utils/embedding-utils.js +30 -0
  679. package/dist/utils/embedding-utils.js.map +1 -0
  680. package/dist/utils/errors.d.ts +143 -0
  681. package/dist/utils/errors.d.ts.map +1 -0
  682. package/dist/utils/errors.js +220 -0
  683. package/dist/utils/errors.js.map +1 -0
  684. package/dist/utils/keychain.d.ts +43 -0
  685. package/dist/utils/keychain.d.ts.map +1 -0
  686. package/dist/utils/keychain.js +82 -0
  687. package/dist/utils/keychain.js.map +1 -0
  688. package/dist/utils/logger.d.ts +50 -0
  689. package/dist/utils/logger.d.ts.map +1 -0
  690. package/dist/utils/logger.js +104 -0
  691. package/dist/utils/logger.js.map +1 -0
  692. package/dist/utils/secret-store.d.ts +110 -0
  693. package/dist/utils/secret-store.d.ts.map +1 -0
  694. package/dist/utils/secret-store.js +340 -0
  695. package/dist/utils/secret-store.js.map +1 -0
  696. package/dist/utils/secure-buffer.d.ts +66 -0
  697. package/dist/utils/secure-buffer.d.ts.map +1 -0
  698. package/dist/utils/secure-buffer.js +104 -0
  699. package/dist/utils/secure-buffer.js.map +1 -0
  700. package/dist/utils/token-counter.d.ts +13 -0
  701. package/dist/utils/token-counter.d.ts.map +1 -0
  702. package/dist/utils/token-counter.js +18 -0
  703. package/dist/utils/token-counter.js.map +1 -0
  704. package/package.json +110 -0
  705. package/src/dashboard/client/package-lock.json +3045 -0
  706. package/src/dashboard/client/package.json +30 -0
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Embedding pipeline wrapper around @huggingface/transformers.
3
+ *
4
+ * Loads models sequentially and provides a simple embed() interface.
5
+ * Handles task prefixes for models that need them (nomic).
6
+ * Tracks memory usage for benchmark reporting.
7
+ * Supports true batch embedding for performance.
8
+ */
9
+ import { pipeline } from '@huggingface/transformers';
10
+ import { detectDevice } from './device-detector.js';
11
+ import { createLogger } from '../utils/logger.js';
12
+ const log = createLogger('embedder');
13
+ /** Default batch size for true batch embedding to avoid OOM.
14
+ * Keep small: attention memory scales O(batch * seq_len²). */
15
+ const DEFAULT_BATCH_SIZE = 4;
16
+ export class Embedder {
17
+ pipe = null;
18
+ config = null;
19
+ _device = null;
20
+ /**
21
+ * Load a model. Disposes any previously loaded model first.
22
+ */
23
+ async load(config, options = {}) {
24
+ await this.dispose();
25
+ const detection = detectDevice(options.device);
26
+ this._device = detection;
27
+ const heapBefore = process.memoryUsage().heapUsed;
28
+ const start = performance.now();
29
+ // Build pipeline options. All accelerated backends use onnxruntime-node
30
+ // (device: 'cpu' in transformers.js) with execution providers overridden.
31
+ // WASM uses device: undefined to let transformers.js pick its WASM backend.
32
+ const isWasm = detection.device === 'wasm';
33
+ const pipelineOptions = {
34
+ dtype: 'fp32',
35
+ ...(isWasm ? {} : { device: 'cpu' }),
36
+ };
37
+ // Inject execution providers for hardware acceleration
38
+ if (detection.executionProviders.length > 0) {
39
+ pipelineOptions.session_options = {
40
+ executionProviders: detection.executionProviders,
41
+ };
42
+ }
43
+ try {
44
+ this.pipe = await pipeline('feature-extraction', config.hfId, pipelineOptions);
45
+ }
46
+ catch (epError) {
47
+ // If accelerated EP fails, retry with plain CPU (no execution providers)
48
+ if (detection.device !== 'cpu' && detection.device !== 'wasm') {
49
+ log.warn(`${detection.label} failed, falling back to CPU`, {
50
+ error: epError.message,
51
+ });
52
+ this._device = {
53
+ device: 'cpu',
54
+ executionProviders: ['cpu'],
55
+ label: 'CPU (native, fallback)',
56
+ source: detection.source,
57
+ notes: `${detection.label} failed: ${epError.message}`,
58
+ };
59
+ this.pipe = await pipeline('feature-extraction', config.hfId, { dtype: 'fp32', device: 'cpu' });
60
+ }
61
+ else {
62
+ throw epError;
63
+ }
64
+ }
65
+ this.config = config;
66
+ const loadTimeMs = performance.now() - start;
67
+ const heapAfter = process.memoryUsage().heapUsed;
68
+ const heapUsedMB = (heapAfter - heapBefore) / (1024 * 1024);
69
+ log.info(`Loaded ${config.id} on ${this._device.label} in ${loadTimeMs.toFixed(0)}ms`);
70
+ return {
71
+ modelId: config.id,
72
+ loadTimeMs,
73
+ heapUsedMB: Math.max(0, heapUsedMB),
74
+ };
75
+ }
76
+ /**
77
+ * Embed a single text. Applies document prefix if the model needs it.
78
+ */
79
+ async embed(text, isQuery = false) {
80
+ if (!this.pipe || !this.config) {
81
+ throw new Error('No model loaded. Call load() first.');
82
+ }
83
+ const prefixed = this.config.usesPrefix
84
+ ? (isQuery ? this.config.queryPrefix : this.config.documentPrefix) + text
85
+ : text;
86
+ const start = performance.now();
87
+ const output = await this.pipe(prefixed, {
88
+ pooling: 'mean',
89
+ normalize: true,
90
+ });
91
+ const inferenceMs = performance.now() - start;
92
+ // Output is a Tensor — convert to number[]
93
+ const embedding = Array.from(output.data).slice(0, this.config.dims);
94
+ return { embedding, inferenceMs };
95
+ }
96
+ /**
97
+ * Embed multiple texts. Returns embeddings in the same order.
98
+ * @deprecated Use embedBatchTrue() for better performance.
99
+ */
100
+ async embedBatch(texts, isQuery = false) {
101
+ const results = [];
102
+ for (const text of texts) {
103
+ results.push(await this.embed(text, isQuery));
104
+ }
105
+ return results;
106
+ }
107
+ /**
108
+ * Embed multiple texts using true batch processing.
109
+ * Passes arrays directly to the HuggingFace pipeline for better performance.
110
+ * Processes in configurable batch sizes to avoid OOM on large batches.
111
+ *
112
+ * @param texts - Array of texts to embed
113
+ * @param isQuery - Whether these are query texts (affects prefix for some models)
114
+ * @param batchSize - Maximum texts per batch (default 32)
115
+ */
116
+ async embedBatchTrue(texts, isQuery = false, batchSize = DEFAULT_BATCH_SIZE) {
117
+ if (!this.pipe || !this.config) {
118
+ throw new Error('No model loaded. Call load() first.');
119
+ }
120
+ if (texts.length === 0) {
121
+ return [];
122
+ }
123
+ const results = [];
124
+ const dims = this.config.dims;
125
+ // Process in batches to avoid OOM
126
+ for (let i = 0; i < texts.length; i += batchSize) {
127
+ const batch = texts.slice(i, i + batchSize);
128
+ const prefixed = batch.map((t) => this.config.usesPrefix
129
+ ? (isQuery ? this.config.queryPrefix : this.config.documentPrefix) + t
130
+ : t);
131
+ const start = performance.now();
132
+ const output = await this.pipe(prefixed, {
133
+ pooling: 'mean',
134
+ normalize: true,
135
+ });
136
+ const inferenceMs = performance.now() - start;
137
+ // Extract embeddings from flattened tensor
138
+ const data = output.data;
139
+ for (let j = 0; j < batch.length; j++) {
140
+ const embedding = Array.from(data.slice(j * dims, (j + 1) * dims));
141
+ results.push({ embedding, inferenceMs: inferenceMs / batch.length });
142
+ }
143
+ // Free WASM tensor memory (not GC'd automatically)
144
+ if (typeof output.dispose === 'function') {
145
+ output.dispose();
146
+ }
147
+ }
148
+ return results;
149
+ }
150
+ /**
151
+ * Dispose the current model to free memory.
152
+ */
153
+ async dispose() {
154
+ if (this.pipe) {
155
+ await this.pipe.dispose();
156
+ this.pipe = null;
157
+ this.config = null;
158
+ this._device = null;
159
+ // Hint to GC
160
+ if (global.gc)
161
+ global.gc();
162
+ }
163
+ }
164
+ get currentModel() {
165
+ return this.config;
166
+ }
167
+ get currentDevice() {
168
+ return this._device;
169
+ }
170
+ }
171
+ //# sourceMappingURL=embedder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/models/embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAkC,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAE,YAAY,EAA8B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAErC;+DAC+D;AAC/D,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAoB7B,MAAM,OAAO,QAAQ;IACX,IAAI,GAAqC,IAAI,CAAC;IAC9C,MAAM,GAAuB,IAAI,CAAC;IAClC,OAAO,GAAiC,IAAI,CAAC;IAErD;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAmB,EAAE,UAA+B,EAAE;QAC/D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAEzB,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEhC,wEAAwE;QACxE,0EAA0E;QAC1E,4EAA4E;QAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC;QAC3C,MAAM,eAAe,GAA4B;YAC/C,KAAK,EAAE,MAAM;YACb,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACrC,CAAC;QAEF,uDAAuD;QACvD,IAAI,SAAS,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,eAAe,CAAC,eAAe,GAAG;gBAChC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;aACjD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YAEH,IAAI,CAAC,IAAI,GAAG,MAAO,QAAgB,CACjC,oBAAoB,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,CACtB,CAAC;QACjC,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,yEAAyE;YACzE,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9D,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,8BAA8B,EAAE;oBACzD,KAAK,EAAG,OAAiB,CAAC,OAAO;iBAClC,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,GAAG;oBACb,MAAM,EAAE,KAAK;oBACb,kBAAkB,EAAE,CAAC,KAAK,CAAC;oBAC3B,KAAK,EAAE,wBAAwB;oBAC/B,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,YAAa,OAAiB,CAAC,OAAO,EAAE;iBAClE,CAAC;gBAEF,IAAI,CAAC,IAAI,GAAG,MAAO,QAAgB,CACjC,oBAAoB,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CACvC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;QACjD,MAAM,UAAU,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAE5D,GAAG,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEvF,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,EAAE;YAClB,UAAU;YACV,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,UAAmB,KAAK;QAChD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;YACrC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI;YACzE,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvC,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAE9C,2CAA2C;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAoB,CAAC,CAAC,KAAK,CAC7D,CAAC,EACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACjB,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CACd,KAAe,EACf,UAAmB,KAAK;QAExB,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc,CAClB,KAAe,EACf,UAAmB,KAAK,EACxB,YAAoB,kBAAkB;QAEtC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAE9B,kCAAkC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,IAAI,CAAC,MAAO,CAAC,UAAU;gBACrB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,cAAc,CAAC,GAAG,CAAC;gBACxE,CAAC,CAAC,CAAC,CACN,CAAC;YAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACvC,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAE9C,2CAA2C;YAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAoB,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,mDAAmD;YACnD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,aAAa;YACb,IAAI,MAAM,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Model configurations for embedding model candidates.
3
+ */
4
+ export interface ModelConfig {
5
+ /** Short identifier. */
6
+ id: string;
7
+ /** HuggingFace model ID. */
8
+ hfId: string;
9
+ /** Embedding dimensions. */
10
+ dims: number;
11
+ /** Context window in tokens. */
12
+ contextTokens: number;
13
+ /** Whether the model uses task prefixes (e.g. nomic). */
14
+ usesPrefix: boolean;
15
+ /** Prefix for document embedding (if usesPrefix). */
16
+ documentPrefix: string;
17
+ /** Prefix for query embedding (if usesPrefix). */
18
+ queryPrefix: string;
19
+ /** Notes about the model. */
20
+ notes: string;
21
+ }
22
+ export declare const MODEL_REGISTRY: Record<string, ModelConfig>;
23
+ export declare function getModel(id: string): ModelConfig;
24
+ export declare function getAllModelIds(): string[];
25
+ //# sourceMappingURL=model-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/models/model-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAyCtD,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAQhD;AAED,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Model configurations for embedding model candidates.
3
+ */
4
+ export const MODEL_REGISTRY = {
5
+ 'nomic-v1.5': {
6
+ id: 'nomic-v1.5',
7
+ hfId: 'nomic-ai/nomic-embed-text-v1.5',
8
+ dims: 768,
9
+ contextTokens: 8192,
10
+ usesPrefix: true,
11
+ documentPrefix: 'search_document: ',
12
+ queryPrefix: 'search_query: ',
13
+ notes: 'Matryoshka dimensions (768/512/384/256/128). Needs task prefixes.',
14
+ },
15
+ 'jina-code': {
16
+ id: 'jina-code',
17
+ hfId: 'jinaai/jina-embeddings-v2-base-code',
18
+ dims: 768,
19
+ contextTokens: 8192,
20
+ usesPrefix: false,
21
+ documentPrefix: '',
22
+ queryPrefix: '',
23
+ notes: 'Code-specialized. ONNX availability needs validation.',
24
+ },
25
+ 'jina-small': {
26
+ id: 'jina-small',
27
+ hfId: 'Xenova/jina-embeddings-v2-small-en',
28
+ dims: 512,
29
+ contextTokens: 8192,
30
+ usesPrefix: false,
31
+ documentPrefix: '',
32
+ queryPrefix: '',
33
+ notes: 'Confirmed ONNX via Xenova.',
34
+ },
35
+ 'bge-small': {
36
+ id: 'bge-small',
37
+ hfId: 'Xenova/bge-small-en-v1.5',
38
+ dims: 384,
39
+ contextTokens: 512,
40
+ usesPrefix: false,
41
+ documentPrefix: '',
42
+ queryPrefix: '',
43
+ notes: 'Baseline, smallest model. 512 token context limit.',
44
+ },
45
+ };
46
+ export function getModel(id) {
47
+ const config = MODEL_REGISTRY[id];
48
+ if (!config) {
49
+ throw new Error(`Unknown model: ${id}. Available: ${Object.keys(MODEL_REGISTRY).join(', ')}`);
50
+ }
51
+ return config;
52
+ }
53
+ export function getAllModelIds() {
54
+ return Object.keys(MODEL_REGISTRY);
55
+ }
56
+ //# sourceMappingURL=model-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/models/model-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,MAAM,CAAC,MAAM,cAAc,GAAgC;IACzD,YAAY,EAAE;QACZ,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,GAAG;QACT,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,mBAAmB;QACnC,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,mEAAmE;KAC3E;IACD,WAAW,EAAE;QACX,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,qCAAqC;QAC3C,IAAI,EAAE,GAAG;QACT,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,uDAAuD;KAC/D;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,GAAG;QACT,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,4BAA4B;KACpC;IACD,WAAW,EAAE;QACX,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,GAAG;QACT,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,oDAAoD;KAC5D;CACF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,kBAAkB,EAAE,gBAAgB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Turn-based, code-block-aware chunking.
3
+ *
4
+ * Strategy:
5
+ * 1. Primary boundary: turns (each turn = one user prompt + response cycle)
6
+ * 2. Oversized turns split between tool exchanges or code blocks (never mid-code-block)
7
+ * 3. Trivially small turns merged with neighbors
8
+ * 4. Text rendering with structure markers for embedding
9
+ */
10
+ import type { Chunk, ChunkMetadata, RenderMode, Turn } from './types.js';
11
+ import type { VectorClock } from '../temporal/vector-clock.js';
12
+ export interface ChunkerOptions {
13
+ /** Target max tokens per chunk. Default: 4096. */
14
+ maxTokens?: number;
15
+ /** Minimum tokens before a turn gets merged. Default: 64. */
16
+ minTokens?: number;
17
+ /** Include thinking blocks in rendered text. Default: true. */
18
+ includeThinking?: boolean;
19
+ /** Render mode. Default: 'full'. */
20
+ renderMode?: RenderMode;
21
+ /** Session ID for chunk metadata. */
22
+ sessionId: string;
23
+ /** Session slug for chunk metadata. */
24
+ sessionSlug: string;
25
+ }
26
+ /**
27
+ * Extended options for clock-aware chunking.
28
+ */
29
+ export interface ChunkerOptionsWithClock extends ChunkerOptions {
30
+ /** Agent ID for this session (default: MAIN_AGENT_ID). */
31
+ agentId?: string;
32
+ /** Initial vector clock state. */
33
+ initialClock?: VectorClock;
34
+ /** Callback invoked when clock ticks (each turn = one tick). */
35
+ onTick?: (clock: VectorClock) => void;
36
+ /** Spawn depth for sub-agent chunks. Default: 0. */
37
+ spawnDepth?: number;
38
+ }
39
+ /**
40
+ * Extended chunk metadata with vector clock info.
41
+ */
42
+ export interface ChunkMetadataWithClock extends ChunkMetadata {
43
+ /** Agent that created this chunk. */
44
+ agentId?: string;
45
+ /** Vector clock at chunk creation time. */
46
+ vectorClock?: VectorClock;
47
+ /** Spawn depth: 0 = main, 1 = sub-agent, etc. */
48
+ spawnDepth?: number;
49
+ }
50
+ /**
51
+ * Extended chunk with clock metadata.
52
+ */
53
+ export interface ChunkWithClock extends Chunk {
54
+ metadata: ChunkMetadataWithClock;
55
+ }
56
+ /**
57
+ * Render a turn to flat text with structure markers.
58
+ */
59
+ export declare function renderTurn(turn: Turn, mode?: RenderMode, includeThinking?: boolean): string;
60
+ /**
61
+ * Chunk turns into embeddable text chunks.
62
+ */
63
+ export declare function chunkTurns(turns: Turn[], options: ChunkerOptions): Chunk[];
64
+ /** Reset chunk counter (for testing). */
65
+ export declare function resetChunkCounter(): void;
66
+ /**
67
+ * Chunk turns with vector clock tracking.
68
+ * Each turn = one D-T-D cycle = one tick on the agent's clock.
69
+ *
70
+ * The human also contributes to the clock - each user message
71
+ * ticks the HUMAN_AGENT_ID before the main agent ticks.
72
+ */
73
+ export declare function chunkTurnsWithClock(turns: Turn[], options: ChunkerOptionsWithClock): ChunkWithClock[];
74
+ //# sourceMappingURL=chunker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/parser/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAEb,UAAU,EAKV,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG/D,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,gEAAgE;IAChE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK;IAC3C,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,IAAI,GAAE,UAAmB,EACzB,eAAe,GAAE,OAAc,GAC9B,MAAM,CAsCR;AAuFD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,KAAK,EAAE,CAoF1E;AAsBD,yCAAyC;AACzC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,cAAc,EAAE,CAyHrG"}
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Turn-based, code-block-aware chunking.
3
+ *
4
+ * Strategy:
5
+ * 1. Primary boundary: turns (each turn = one user prompt + response cycle)
6
+ * 2. Oversized turns split between tool exchanges or code blocks (never mid-code-block)
7
+ * 3. Trivially small turns merged with neighbors
8
+ * 4. Text rendering with structure markers for embedding
9
+ */
10
+ import { approximateTokens } from '../utils/token-counter.js';
11
+ import { tick, MAIN_AGENT_ID, HUMAN_AGENT_ID } from '../temporal/vector-clock.js';
12
+ /**
13
+ * Render a turn to flat text with structure markers.
14
+ */
15
+ export function renderTurn(turn, mode = 'full', includeThinking = true) {
16
+ const parts = [];
17
+ // User message
18
+ if (turn.userText) {
19
+ parts.push(`[User]\n${turn.userText}`);
20
+ }
21
+ // Assistant content
22
+ for (const block of turn.assistantBlocks) {
23
+ switch (block.type) {
24
+ case 'thinking':
25
+ if (includeThinking) {
26
+ parts.push(`[Thinking]\n${block.thinking}`);
27
+ }
28
+ break;
29
+ case 'text':
30
+ parts.push(`[Assistant]\n${block.text}`);
31
+ break;
32
+ case 'tool_use':
33
+ if (mode === 'full') {
34
+ const tu = block;
35
+ parts.push(`[Tool:${tu.name}]\n${summarizeToolInput(tu)}`);
36
+ }
37
+ break;
38
+ }
39
+ }
40
+ // Tool results
41
+ if (mode === 'full' || mode === 'code-focused') {
42
+ for (const ex of turn.toolExchanges) {
43
+ if (mode === 'code-focused' && !isCodeTool(ex.toolName))
44
+ continue;
45
+ const resultPreview = truncateResult(ex.result, 500);
46
+ parts.push(`[Result:${ex.toolName}]\n${resultPreview}`);
47
+ }
48
+ }
49
+ return parts.join('\n\n');
50
+ }
51
+ function summarizeToolInput(tu) {
52
+ const input = tu.input;
53
+ // Common patterns
54
+ if ('command' in input)
55
+ return String(input.command);
56
+ if ('pattern' in input)
57
+ return String(input.pattern);
58
+ if ('file_path' in input)
59
+ return String(input.file_path);
60
+ if ('query' in input)
61
+ return String(input.query);
62
+ if ('url' in input)
63
+ return String(input.url);
64
+ return JSON.stringify(input).slice(0, 200);
65
+ }
66
+ function isCodeTool(name) {
67
+ return ['Bash', 'Read', 'Write', 'Edit', 'Grep', 'Glob'].includes(name);
68
+ }
69
+ function truncateResult(text, maxChars) {
70
+ if (text.length <= maxChars)
71
+ return text;
72
+ return text.slice(0, maxChars) + '\n...[truncated]';
73
+ }
74
+ /**
75
+ * Count code blocks in a turn's text content.
76
+ */
77
+ function countCodeBlocks(turn) {
78
+ let count = 0;
79
+ for (const block of turn.assistantBlocks) {
80
+ if (block.type === 'text') {
81
+ const matches = block.text.match(/```/g);
82
+ count += matches ? Math.floor(matches.length / 2) : 0;
83
+ }
84
+ }
85
+ return count;
86
+ }
87
+ /**
88
+ * Split an oversized turn's rendered text at natural boundaries.
89
+ * Splits between tool exchanges or between paragraphs, never mid-code-block.
90
+ */
91
+ function splitRenderedText(text, maxTokens) {
92
+ const tokens = approximateTokens(text);
93
+ if (tokens <= maxTokens)
94
+ return [text];
95
+ // Try splitting at section markers first
96
+ const sections = text.split(/\n\n(?=\[(?:User|Assistant|Tool|Result|Thinking)\])/);
97
+ if (sections.length <= 1) {
98
+ // Can't split at markers, split at paragraph boundaries
99
+ return splitAtParagraphs(text, maxTokens);
100
+ }
101
+ const chunks = [];
102
+ let current = '';
103
+ for (const section of sections) {
104
+ const combined = current ? current + '\n\n' + section : section;
105
+ if (approximateTokens(combined) > maxTokens && current) {
106
+ chunks.push(current);
107
+ current = section;
108
+ }
109
+ else {
110
+ current = combined;
111
+ }
112
+ }
113
+ if (current)
114
+ chunks.push(current);
115
+ return chunks;
116
+ }
117
+ function splitAtParagraphs(text, maxTokens) {
118
+ const paragraphs = text.split('\n\n');
119
+ const chunks = [];
120
+ let current = '';
121
+ for (const para of paragraphs) {
122
+ const combined = current ? current + '\n\n' + para : para;
123
+ if (approximateTokens(combined) > maxTokens && current) {
124
+ chunks.push(current);
125
+ current = para;
126
+ }
127
+ else {
128
+ current = combined;
129
+ }
130
+ }
131
+ if (current)
132
+ chunks.push(current);
133
+ return chunks;
134
+ }
135
+ /**
136
+ * Chunk turns into embeddable text chunks.
137
+ */
138
+ export function chunkTurns(turns, options) {
139
+ const { maxTokens = 4096, minTokens = 64, includeThinking = true, renderMode = 'full', sessionId, sessionSlug, } = options;
140
+ // First pass: render each turn
141
+ const rendered = turns.map((turn) => ({
142
+ turn,
143
+ text: renderTurn(turn, renderMode, includeThinking),
144
+ }));
145
+ // Second pass: merge small turns, split large turns
146
+ const chunks = [];
147
+ let mergeBuffer = { turns: [], text: '' };
148
+ function flushBuffer() {
149
+ if (!mergeBuffer.text)
150
+ return;
151
+ const texts = splitRenderedText(mergeBuffer.text, maxTokens);
152
+ for (const text of texts) {
153
+ const turnIndices = mergeBuffer.turns.map((t) => t.index);
154
+ const firstTurn = mergeBuffer.turns[0];
155
+ const lastTurn = mergeBuffer.turns[mergeBuffer.turns.length - 1];
156
+ chunks.push(makeChunk(text, {
157
+ sessionId,
158
+ sessionSlug,
159
+ turnIndices,
160
+ startTime: firstTurn.startTime,
161
+ endTime: lastTurn.startTime,
162
+ codeBlockCount: mergeBuffer.turns.reduce((n, t) => n + countCodeBlocks(t), 0),
163
+ toolUseCount: mergeBuffer.turns.reduce((n, t) => n + t.toolExchanges.length, 0),
164
+ hasThinking: mergeBuffer.turns.some((t) => t.hasThinking),
165
+ renderMode,
166
+ approxTokens: approximateTokens(text),
167
+ }));
168
+ }
169
+ mergeBuffer = { turns: [], text: '' };
170
+ }
171
+ for (const { turn, text } of rendered) {
172
+ const tokens = approximateTokens(text);
173
+ if (tokens < minTokens) {
174
+ // Merge with buffer
175
+ const combined = mergeBuffer.text
176
+ ? mergeBuffer.text + '\n\n' + text
177
+ : text;
178
+ if (approximateTokens(combined) > maxTokens) {
179
+ flushBuffer();
180
+ mergeBuffer = { turns: [turn], text };
181
+ }
182
+ else {
183
+ mergeBuffer.turns.push(turn);
184
+ mergeBuffer.text = combined;
185
+ }
186
+ }
187
+ else if (tokens > maxTokens) {
188
+ // Flush buffer first, then split this turn
189
+ flushBuffer();
190
+ mergeBuffer = { turns: [turn], text };
191
+ flushBuffer();
192
+ }
193
+ else {
194
+ // Normal sized turn
195
+ if (mergeBuffer.text) {
196
+ const combined = mergeBuffer.text + '\n\n' + text;
197
+ if (approximateTokens(combined) <= maxTokens) {
198
+ mergeBuffer.turns.push(turn);
199
+ mergeBuffer.text = combined;
200
+ continue;
201
+ }
202
+ flushBuffer();
203
+ }
204
+ mergeBuffer = { turns: [turn], text };
205
+ }
206
+ }
207
+ flushBuffer();
208
+ return chunks;
209
+ }
210
+ let chunkCounter = 0;
211
+ function makeChunk(text, metadata) {
212
+ chunkCounter++;
213
+ return {
214
+ id: `${metadata.sessionId}-chunk-${chunkCounter}`,
215
+ text,
216
+ metadata,
217
+ };
218
+ }
219
+ function makeChunkWithClock(text, metadata) {
220
+ chunkCounter++;
221
+ return {
222
+ id: `${metadata.sessionId}-chunk-${chunkCounter}`,
223
+ text,
224
+ metadata,
225
+ };
226
+ }
227
+ /** Reset chunk counter (for testing). */
228
+ export function resetChunkCounter() {
229
+ chunkCounter = 0;
230
+ }
231
+ /**
232
+ * Chunk turns with vector clock tracking.
233
+ * Each turn = one D-T-D cycle = one tick on the agent's clock.
234
+ *
235
+ * The human also contributes to the clock - each user message
236
+ * ticks the HUMAN_AGENT_ID before the main agent ticks.
237
+ */
238
+ export function chunkTurnsWithClock(turns, options) {
239
+ const { maxTokens = 4096, minTokens = 64, includeThinking = true, renderMode = 'full', sessionId, sessionSlug, agentId = MAIN_AGENT_ID, initialClock = {}, onTick, spawnDepth = 0, } = options;
240
+ let clock = { ...initialClock };
241
+ // First pass: render each turn with clock tracking
242
+ const rendered = [];
243
+ for (const turn of turns) {
244
+ // Human contributed a message - tick their clock
245
+ if (turn.userText) {
246
+ clock = tick(clock, HUMAN_AGENT_ID);
247
+ }
248
+ // Agent processed this turn - tick their clock
249
+ clock = tick(clock, agentId);
250
+ // Notify callback of clock update
251
+ if (onTick) {
252
+ onTick(clock);
253
+ }
254
+ rendered.push({
255
+ turn,
256
+ text: renderTurn(turn, renderMode, includeThinking),
257
+ clock: { ...clock }, // Snapshot the clock at this turn
258
+ });
259
+ }
260
+ // Second pass: merge small turns, split large turns
261
+ const chunks = [];
262
+ let mergeBuffer = { turns: [], text: '', clock: {} };
263
+ function flushBuffer() {
264
+ if (!mergeBuffer.text)
265
+ return;
266
+ const texts = splitRenderedText(mergeBuffer.text, maxTokens);
267
+ for (const text of texts) {
268
+ const turnIndices = mergeBuffer.turns.map((t) => t.index);
269
+ const firstTurn = mergeBuffer.turns[0];
270
+ const lastTurn = mergeBuffer.turns[mergeBuffer.turns.length - 1];
271
+ chunks.push(makeChunkWithClock(text, {
272
+ sessionId,
273
+ sessionSlug,
274
+ turnIndices,
275
+ startTime: firstTurn.startTime,
276
+ endTime: lastTurn.startTime,
277
+ codeBlockCount: mergeBuffer.turns.reduce((n, t) => n + countCodeBlocks(t), 0),
278
+ toolUseCount: mergeBuffer.turns.reduce((n, t) => n + t.toolExchanges.length, 0),
279
+ hasThinking: mergeBuffer.turns.some((t) => t.hasThinking),
280
+ renderMode,
281
+ approxTokens: approximateTokens(text),
282
+ agentId,
283
+ vectorClock: mergeBuffer.clock,
284
+ spawnDepth,
285
+ }));
286
+ }
287
+ mergeBuffer = { turns: [], text: '', clock: {} };
288
+ }
289
+ for (const { turn, text, clock: turnClock } of rendered) {
290
+ const tokens = approximateTokens(text);
291
+ if (tokens < minTokens) {
292
+ // Merge with buffer
293
+ const combined = mergeBuffer.text
294
+ ? mergeBuffer.text + '\n\n' + text
295
+ : text;
296
+ if (approximateTokens(combined) > maxTokens) {
297
+ flushBuffer();
298
+ mergeBuffer = { turns: [turn], text, clock: turnClock };
299
+ }
300
+ else {
301
+ mergeBuffer.turns.push(turn);
302
+ mergeBuffer.text = combined;
303
+ mergeBuffer.clock = turnClock; // Use latest clock
304
+ }
305
+ }
306
+ else if (tokens > maxTokens) {
307
+ // Flush buffer first, then split this turn
308
+ flushBuffer();
309
+ mergeBuffer = { turns: [turn], text, clock: turnClock };
310
+ flushBuffer();
311
+ }
312
+ else {
313
+ // Normal sized turn
314
+ if (mergeBuffer.text) {
315
+ const combined = mergeBuffer.text + '\n\n' + text;
316
+ if (approximateTokens(combined) <= maxTokens) {
317
+ mergeBuffer.turns.push(turn);
318
+ mergeBuffer.text = combined;
319
+ mergeBuffer.clock = turnClock;
320
+ continue;
321
+ }
322
+ flushBuffer();
323
+ }
324
+ mergeBuffer = { turns: [turn], text, clock: turnClock };
325
+ }
326
+ }
327
+ flushBuffer();
328
+ return chunks;
329
+ }
330
+ //# sourceMappingURL=chunker.js.map