@remnic/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (551) hide show
  1. package/dist/abstraction-nodes.d.ts +52 -0
  2. package/dist/abstraction-nodes.js +15 -0
  3. package/dist/abstraction-nodes.js.map +1 -0
  4. package/dist/access-cli.d.ts +5 -0
  5. package/dist/access-cli.js +308 -0
  6. package/dist/access-cli.js.map +1 -0
  7. package/dist/access-http.d.ts +158 -0
  8. package/dist/access-http.js +32 -0
  9. package/dist/access-http.js.map +1 -0
  10. package/dist/access-idempotency.d.ts +31 -0
  11. package/dist/access-idempotency.js +11 -0
  12. package/dist/access-idempotency.js.map +1 -0
  13. package/dist/access-mcp.d.ts +76 -0
  14. package/dist/access-mcp.js +8 -0
  15. package/dist/access-mcp.js.map +1 -0
  16. package/dist/access-schema.d.ts +266 -0
  17. package/dist/access-schema.js +29 -0
  18. package/dist/access-schema.js.map +1 -0
  19. package/dist/access-service.d.ts +614 -0
  20. package/dist/access-service.js +32 -0
  21. package/dist/access-service.js.map +1 -0
  22. package/dist/behavior-learner.d.ts +16 -0
  23. package/dist/behavior-learner.js +124 -0
  24. package/dist/behavior-learner.js.map +1 -0
  25. package/dist/behavior-signals.d.ts +15 -0
  26. package/dist/behavior-signals.js +11 -0
  27. package/dist/behavior-signals.js.map +1 -0
  28. package/dist/bootstrap.d.ts +46 -0
  29. package/dist/bootstrap.js +9 -0
  30. package/dist/bootstrap.js.map +1 -0
  31. package/dist/boxes.d.ts +93 -0
  32. package/dist/boxes.js +14 -0
  33. package/dist/boxes.js.map +1 -0
  34. package/dist/buffer.d.ts +22 -0
  35. package/dist/buffer.js +9 -0
  36. package/dist/buffer.js.map +1 -0
  37. package/dist/calibration.d.ts +81 -0
  38. package/dist/calibration.js +239 -0
  39. package/dist/calibration.js.map +1 -0
  40. package/dist/causal-behavior.d.ts +79 -0
  41. package/dist/causal-behavior.js +190 -0
  42. package/dist/causal-behavior.js.map +1 -0
  43. package/dist/causal-chain.d.ts +61 -0
  44. package/dist/causal-chain.js +24 -0
  45. package/dist/causal-chain.js.map +1 -0
  46. package/dist/causal-consolidation.d.ts +71 -0
  47. package/dist/causal-consolidation.js +211 -0
  48. package/dist/causal-consolidation.js.map +1 -0
  49. package/dist/causal-retrieval.d.ts +44 -0
  50. package/dist/causal-retrieval.js +184 -0
  51. package/dist/causal-retrieval.js.map +1 -0
  52. package/dist/causal-trajectory-graph.d.ts +13 -0
  53. package/dist/causal-trajectory-graph.js +59 -0
  54. package/dist/causal-trajectory-graph.js.map +1 -0
  55. package/dist/causal-trajectory.d.ts +68 -0
  56. package/dist/causal-trajectory.js +18 -0
  57. package/dist/causal-trajectory.js.map +1 -0
  58. package/dist/chunk-2CJCWDMR.js +87 -0
  59. package/dist/chunk-2CJCWDMR.js.map +1 -0
  60. package/dist/chunk-2NMMFZ5T.js +216 -0
  61. package/dist/chunk-2NMMFZ5T.js.map +1 -0
  62. package/dist/chunk-2PO5ZRKV.js +103 -0
  63. package/dist/chunk-2PO5ZRKV.js.map +1 -0
  64. package/dist/chunk-3QKK7QOS.js +154 -0
  65. package/dist/chunk-3QKK7QOS.js.map +1 -0
  66. package/dist/chunk-3SLRNYNG.js +26 -0
  67. package/dist/chunk-3SLRNYNG.js.map +1 -0
  68. package/dist/chunk-4A24LIM2.js +68 -0
  69. package/dist/chunk-4A24LIM2.js.map +1 -0
  70. package/dist/chunk-6HZ6AO2P.js +164 -0
  71. package/dist/chunk-6HZ6AO2P.js.map +1 -0
  72. package/dist/chunk-763GUIOU.js +302 -0
  73. package/dist/chunk-763GUIOU.js.map +1 -0
  74. package/dist/chunk-AAI7JARD.js +173 -0
  75. package/dist/chunk-AAI7JARD.js.map +1 -0
  76. package/dist/chunk-B7LOFDVE.js +112 -0
  77. package/dist/chunk-B7LOFDVE.js.map +1 -0
  78. package/dist/chunk-BDFZXRSO.js +318 -0
  79. package/dist/chunk-BDFZXRSO.js.map +1 -0
  80. package/dist/chunk-BOUYNNYD.js +707 -0
  81. package/dist/chunk-BOUYNNYD.js.map +1 -0
  82. package/dist/chunk-BRK4ODMI.js +60 -0
  83. package/dist/chunk-BRK4ODMI.js.map +1 -0
  84. package/dist/chunk-C6QPK5GG.js +111 -0
  85. package/dist/chunk-C6QPK5GG.js.map +1 -0
  86. package/dist/chunk-C7VW7C3F.js +117 -0
  87. package/dist/chunk-C7VW7C3F.js.map +1 -0
  88. package/dist/chunk-CDW777AI.js +621 -0
  89. package/dist/chunk-CDW777AI.js.map +1 -0
  90. package/dist/chunk-CULXMQJH.js +185 -0
  91. package/dist/chunk-CULXMQJH.js.map +1 -0
  92. package/dist/chunk-CXWFUJR2.js +1203 -0
  93. package/dist/chunk-CXWFUJR2.js.map +1 -0
  94. package/dist/chunk-DGXUHMOV.js +61 -0
  95. package/dist/chunk-DGXUHMOV.js.map +1 -0
  96. package/dist/chunk-DM2T26WE.js +61 -0
  97. package/dist/chunk-DM2T26WE.js.map +1 -0
  98. package/dist/chunk-DORBM6OB.js +81 -0
  99. package/dist/chunk-DORBM6OB.js.map +1 -0
  100. package/dist/chunk-DT5TVLJE.js +32 -0
  101. package/dist/chunk-DT5TVLJE.js.map +1 -0
  102. package/dist/chunk-EEQLFRUM.js +89 -0
  103. package/dist/chunk-EEQLFRUM.js.map +1 -0
  104. package/dist/chunk-EQINRHYR.js +672 -0
  105. package/dist/chunk-EQINRHYR.js.map +1 -0
  106. package/dist/chunk-ESSMF2FR.js +146 -0
  107. package/dist/chunk-ESSMF2FR.js.map +1 -0
  108. package/dist/chunk-ETOW6ACV.js +158 -0
  109. package/dist/chunk-ETOW6ACV.js.map +1 -0
  110. package/dist/chunk-FYIYMQ5N.js +221 -0
  111. package/dist/chunk-FYIYMQ5N.js.map +1 -0
  112. package/dist/chunk-G3AG3KZN.js +78 -0
  113. package/dist/chunk-G3AG3KZN.js.map +1 -0
  114. package/dist/chunk-GJR6D6KC.js +61 -0
  115. package/dist/chunk-GJR6D6KC.js.map +1 -0
  116. package/dist/chunk-GPGBSNKM.js +380 -0
  117. package/dist/chunk-GPGBSNKM.js.map +1 -0
  118. package/dist/chunk-H63EDPFJ.js +57 -0
  119. package/dist/chunk-H63EDPFJ.js.map +1 -0
  120. package/dist/chunk-HG2NKWR2.js +185 -0
  121. package/dist/chunk-HG2NKWR2.js.map +1 -0
  122. package/dist/chunk-HL4DB7TO.js +13 -0
  123. package/dist/chunk-HL4DB7TO.js.map +1 -0
  124. package/dist/chunk-HLBYLYRD.js +346 -0
  125. package/dist/chunk-HLBYLYRD.js.map +1 -0
  126. package/dist/chunk-HLXVTBF3.js +109 -0
  127. package/dist/chunk-HLXVTBF3.js.map +1 -0
  128. package/dist/chunk-IFFFR3MR.js +68 -0
  129. package/dist/chunk-IFFFR3MR.js.map +1 -0
  130. package/dist/chunk-ISY75RLM.js +1027 -0
  131. package/dist/chunk-ISY75RLM.js.map +1 -0
  132. package/dist/chunk-IZME7KW2.js +1886 -0
  133. package/dist/chunk-IZME7KW2.js.map +1 -0
  134. package/dist/chunk-J3BT33K7.js +720 -0
  135. package/dist/chunk-J3BT33K7.js.map +1 -0
  136. package/dist/chunk-J47FNDR7.js +113 -0
  137. package/dist/chunk-J47FNDR7.js.map +1 -0
  138. package/dist/chunk-JWPLJLDU.js +63 -0
  139. package/dist/chunk-JWPLJLDU.js.map +1 -0
  140. package/dist/chunk-K6WK37A6.js +865 -0
  141. package/dist/chunk-K6WK37A6.js.map +1 -0
  142. package/dist/chunk-KL4CP4SB.js +130 -0
  143. package/dist/chunk-KL4CP4SB.js.map +1 -0
  144. package/dist/chunk-KT4NEUNF.js +315 -0
  145. package/dist/chunk-KT4NEUNF.js.map +1 -0
  146. package/dist/chunk-KWBU5S5U.js +42 -0
  147. package/dist/chunk-KWBU5S5U.js.map +1 -0
  148. package/dist/chunk-L5RPWGFK.js +59 -0
  149. package/dist/chunk-L5RPWGFK.js.map +1 -0
  150. package/dist/chunk-L7WO3MZ4.js +128 -0
  151. package/dist/chunk-L7WO3MZ4.js.map +1 -0
  152. package/dist/chunk-LIRZNNUP.js +74 -0
  153. package/dist/chunk-LIRZNNUP.js.map +1 -0
  154. package/dist/chunk-LK6SGL53.js +22 -0
  155. package/dist/chunk-LK6SGL53.js.map +1 -0
  156. package/dist/chunk-LOBRX7VD.js +200 -0
  157. package/dist/chunk-LOBRX7VD.js.map +1 -0
  158. package/dist/chunk-LPSF4OQH.js +47 -0
  159. package/dist/chunk-LPSF4OQH.js.map +1 -0
  160. package/dist/chunk-LU3GQNDQ.js +152 -0
  161. package/dist/chunk-LU3GQNDQ.js.map +1 -0
  162. package/dist/chunk-M5KEYE5E.js +350 -0
  163. package/dist/chunk-M5KEYE5E.js.map +1 -0
  164. package/dist/chunk-M62O4P4T.js +41 -0
  165. package/dist/chunk-M62O4P4T.js.map +1 -0
  166. package/dist/chunk-MARWOCVP.js +48 -0
  167. package/dist/chunk-MARWOCVP.js.map +1 -0
  168. package/dist/chunk-MDDAA2AO.js +925 -0
  169. package/dist/chunk-MDDAA2AO.js.map +1 -0
  170. package/dist/chunk-MWGVGUIS.js +198 -0
  171. package/dist/chunk-MWGVGUIS.js.map +1 -0
  172. package/dist/chunk-N5AKDXAI.js +74 -0
  173. package/dist/chunk-N5AKDXAI.js.map +1 -0
  174. package/dist/chunk-NGAVDO7E.js +115 -0
  175. package/dist/chunk-NGAVDO7E.js.map +1 -0
  176. package/dist/chunk-NTTLPF7F.js +283 -0
  177. package/dist/chunk-NTTLPF7F.js.map +1 -0
  178. package/dist/chunk-ONRU4L2N.js +240 -0
  179. package/dist/chunk-ONRU4L2N.js.map +1 -0
  180. package/dist/chunk-ORZMT74A.js +209 -0
  181. package/dist/chunk-ORZMT74A.js.map +1 -0
  182. package/dist/chunk-OTAVQCSF.js +268 -0
  183. package/dist/chunk-OTAVQCSF.js.map +1 -0
  184. package/dist/chunk-PGK3VUHN.js +160 -0
  185. package/dist/chunk-PGK3VUHN.js.map +1 -0
  186. package/dist/chunk-Q6FETXJA.js +1362 -0
  187. package/dist/chunk-Q6FETXJA.js.map +1 -0
  188. package/dist/chunk-QANCTXQF.js +271 -0
  189. package/dist/chunk-QANCTXQF.js.map +1 -0
  190. package/dist/chunk-QCCCQT3O.js +189 -0
  191. package/dist/chunk-QCCCQT3O.js.map +1 -0
  192. package/dist/chunk-QDOSNLB4.js +1048 -0
  193. package/dist/chunk-QDOSNLB4.js.map +1 -0
  194. package/dist/chunk-QFQVZOGA.js +2168 -0
  195. package/dist/chunk-QFQVZOGA.js.map +1 -0
  196. package/dist/chunk-QPKFPHOO.js +178 -0
  197. package/dist/chunk-QPKFPHOO.js.map +1 -0
  198. package/dist/chunk-QSVPYQPG.js +268 -0
  199. package/dist/chunk-QSVPYQPG.js.map +1 -0
  200. package/dist/chunk-QWUUMMIK.js +3045 -0
  201. package/dist/chunk-QWUUMMIK.js.map +1 -0
  202. package/dist/chunk-QY2BHY5O.js +2378 -0
  203. package/dist/chunk-QY2BHY5O.js.map +1 -0
  204. package/dist/chunk-SCHEKPYH.js +349 -0
  205. package/dist/chunk-SCHEKPYH.js.map +1 -0
  206. package/dist/chunk-SCU65EZI.js +15 -0
  207. package/dist/chunk-SCU65EZI.js.map +1 -0
  208. package/dist/chunk-T4WRIV2C.js +170 -0
  209. package/dist/chunk-T4WRIV2C.js.map +1 -0
  210. package/dist/chunk-TKO4HZCK.js +1852 -0
  211. package/dist/chunk-TKO4HZCK.js.map +1 -0
  212. package/dist/chunk-TP4FZJIZ.js +93 -0
  213. package/dist/chunk-TP4FZJIZ.js.map +1 -0
  214. package/dist/chunk-TPB3I2AC.js +403 -0
  215. package/dist/chunk-TPB3I2AC.js.map +1 -0
  216. package/dist/chunk-TVVVQQAK.js +1431 -0
  217. package/dist/chunk-TVVVQQAK.js.map +1 -0
  218. package/dist/chunk-U4PV25RD.js +14 -0
  219. package/dist/chunk-U4PV25RD.js.map +1 -0
  220. package/dist/chunk-UCYSTFZR.js +284 -0
  221. package/dist/chunk-UCYSTFZR.js.map +1 -0
  222. package/dist/chunk-UHGBNIOS.js +205 -0
  223. package/dist/chunk-UHGBNIOS.js.map +1 -0
  224. package/dist/chunk-UIYZ5T3I.js +108 -0
  225. package/dist/chunk-UIYZ5T3I.js.map +1 -0
  226. package/dist/chunk-UV2FO7J4.js +747 -0
  227. package/dist/chunk-UV2FO7J4.js.map +1 -0
  228. package/dist/chunk-UZB5KHKX.js +63 -0
  229. package/dist/chunk-UZB5KHKX.js.map +1 -0
  230. package/dist/chunk-V3RXWQIE.js +626 -0
  231. package/dist/chunk-V3RXWQIE.js.map +1 -0
  232. package/dist/chunk-V4YC4LUK.js +444 -0
  233. package/dist/chunk-V4YC4LUK.js.map +1 -0
  234. package/dist/chunk-VEWZZM3H.js +133 -0
  235. package/dist/chunk-VEWZZM3H.js.map +1 -0
  236. package/dist/chunk-WWIQTB2Y.js +98 -0
  237. package/dist/chunk-WWIQTB2Y.js.map +1 -0
  238. package/dist/chunk-X7XN6YU4.js +24 -0
  239. package/dist/chunk-X7XN6YU4.js.map +1 -0
  240. package/dist/chunk-XKECPATV.js +202 -0
  241. package/dist/chunk-XKECPATV.js.map +1 -0
  242. package/dist/chunk-XYIK4LF6.js +75 -0
  243. package/dist/chunk-XYIK4LF6.js.map +1 -0
  244. package/dist/chunk-Y27UJK6V.js +39 -0
  245. package/dist/chunk-Y27UJK6V.js.map +1 -0
  246. package/dist/chunk-Y4Z4I6WK.js +9 -0
  247. package/dist/chunk-Y4Z4I6WK.js.map +1 -0
  248. package/dist/chunk-YAPUAHAY.js +10761 -0
  249. package/dist/chunk-YAPUAHAY.js.map +1 -0
  250. package/dist/chunk-YAZNBMNF.js +92 -0
  251. package/dist/chunk-YAZNBMNF.js.map +1 -0
  252. package/dist/chunk-YCN4BVDK.js +66 -0
  253. package/dist/chunk-YCN4BVDK.js.map +1 -0
  254. package/dist/chunk-YNCQ7E4M.js +388 -0
  255. package/dist/chunk-YNCQ7E4M.js.map +1 -0
  256. package/dist/chunk-YNI4S5WT.js +143 -0
  257. package/dist/chunk-YNI4S5WT.js.map +1 -0
  258. package/dist/chunk-YRMVARQP.js +406 -0
  259. package/dist/chunk-YRMVARQP.js.map +1 -0
  260. package/dist/chunk-Z5AAYHUC.js +79 -0
  261. package/dist/chunk-Z5AAYHUC.js.map +1 -0
  262. package/dist/chunk-Z5LAYHGJ.js +15 -0
  263. package/dist/chunk-Z5LAYHGJ.js.map +1 -0
  264. package/dist/chunk-ZJLY4QSU.js +823 -0
  265. package/dist/chunk-ZJLY4QSU.js.map +1 -0
  266. package/dist/chunk-ZKYI7UVO.js +276 -0
  267. package/dist/chunk-ZKYI7UVO.js.map +1 -0
  268. package/dist/chunk-ZPKBYX2F.js +297 -0
  269. package/dist/chunk-ZPKBYX2F.js.map +1 -0
  270. package/dist/chunking.d.ts +48 -0
  271. package/dist/chunking.js +11 -0
  272. package/dist/chunking.js.map +1 -0
  273. package/dist/cli.d.ts +1162 -0
  274. package/dist/cli.js +7187 -0
  275. package/dist/cli.js.map +1 -0
  276. package/dist/commitment-ledger.d.ts +83 -0
  277. package/dist/commitment-ledger.js +19 -0
  278. package/dist/commitment-ledger.js.map +1 -0
  279. package/dist/compression-optimizer.d.ts +37 -0
  280. package/dist/compression-optimizer.js +13 -0
  281. package/dist/compression-optimizer.js.map +1 -0
  282. package/dist/config.d.ts +6 -0
  283. package/dist/config.js +12 -0
  284. package/dist/config.js.map +1 -0
  285. package/dist/cue-anchors.d.ts +50 -0
  286. package/dist/cue-anchors.js +15 -0
  287. package/dist/cue-anchors.js.map +1 -0
  288. package/dist/dashboard-runtime.d.ts +46 -0
  289. package/dist/dashboard-runtime.js +10 -0
  290. package/dist/dashboard-runtime.js.map +1 -0
  291. package/dist/day-summary.d.ts +6 -0
  292. package/dist/day-summary.js +10 -0
  293. package/dist/day-summary.js.map +1 -0
  294. package/dist/delinearize.d.ts +34 -0
  295. package/dist/delinearize.js +11 -0
  296. package/dist/delinearize.js.map +1 -0
  297. package/dist/embedding-fallback.d.ts +22 -0
  298. package/dist/embedding-fallback.js +8 -0
  299. package/dist/embedding-fallback.js.map +1 -0
  300. package/dist/engine-P26JFSVY.js +19 -0
  301. package/dist/engine-P26JFSVY.js.map +1 -0
  302. package/dist/entity-retrieval.d.ts +23 -0
  303. package/dist/entity-retrieval.js +24 -0
  304. package/dist/entity-retrieval.js.map +1 -0
  305. package/dist/evals.d.ts +282 -0
  306. package/dist/evals.js +32 -0
  307. package/dist/evals.js.map +1 -0
  308. package/dist/explicit-capture.d.ts +60 -0
  309. package/dist/explicit-capture.js +23 -0
  310. package/dist/explicit-capture.js.map +1 -0
  311. package/dist/extraction.d.ts +141 -0
  312. package/dist/extraction.js +22 -0
  313. package/dist/extraction.js.map +1 -0
  314. package/dist/fallback-llm.d.ts +95 -0
  315. package/dist/fallback-llm.js +12 -0
  316. package/dist/fallback-llm.js.map +1 -0
  317. package/dist/graph-dashboard-diff.d.ts +12 -0
  318. package/dist/graph-dashboard-diff.js +8 -0
  319. package/dist/graph-dashboard-diff.js.map +1 -0
  320. package/dist/graph-dashboard-key.d.ts +5 -0
  321. package/dist/graph-dashboard-key.js +7 -0
  322. package/dist/graph-dashboard-key.js.map +1 -0
  323. package/dist/graph-dashboard-parser.d.ts +20 -0
  324. package/dist/graph-dashboard-parser.js +8 -0
  325. package/dist/graph-dashboard-parser.js.map +1 -0
  326. package/dist/graph.d.ts +157 -0
  327. package/dist/graph.js +27 -0
  328. package/dist/graph.js.map +1 -0
  329. package/dist/harmonic-retrieval.d.ts +27 -0
  330. package/dist/harmonic-retrieval.js +12 -0
  331. package/dist/harmonic-retrieval.js.map +1 -0
  332. package/dist/himem.d.ts +23 -0
  333. package/dist/himem.js +7 -0
  334. package/dist/himem.js.map +1 -0
  335. package/dist/hygiene.d.ts +24 -0
  336. package/dist/hygiene.js +9 -0
  337. package/dist/hygiene.js.map +1 -0
  338. package/dist/identity-continuity.d.ts +17 -0
  339. package/dist/identity-continuity.js +19 -0
  340. package/dist/identity-continuity.js.map +1 -0
  341. package/dist/importance.d.ts +25 -0
  342. package/dist/importance.js +11 -0
  343. package/dist/importance.js.map +1 -0
  344. package/dist/index.d.ts +923 -0
  345. package/dist/index.js +2512 -0
  346. package/dist/index.js.map +1 -0
  347. package/dist/intent.d.ts +8 -0
  348. package/dist/intent.js +13 -0
  349. package/dist/intent.js.map +1 -0
  350. package/dist/json-extract.d.ts +14 -0
  351. package/dist/json-extract.js +9 -0
  352. package/dist/json-extract.js.map +1 -0
  353. package/dist/json-store.d.ts +5 -0
  354. package/dist/json-store.js +11 -0
  355. package/dist/json-store.js.map +1 -0
  356. package/dist/legacy-hook-compat.d.ts +3 -0
  357. package/dist/legacy-hook-compat.js +35 -0
  358. package/dist/legacy-hook-compat.js.map +1 -0
  359. package/dist/lifecycle.d.ts +52 -0
  360. package/dist/lifecycle.js +21 -0
  361. package/dist/lifecycle.js.map +1 -0
  362. package/dist/local-llm.d.ts +154 -0
  363. package/dist/local-llm.js +10 -0
  364. package/dist/local-llm.js.map +1 -0
  365. package/dist/logger.d.ts +15 -0
  366. package/dist/logger.js +9 -0
  367. package/dist/logger.js.map +1 -0
  368. package/dist/memory-action-policy.d.ts +13 -0
  369. package/dist/memory-action-policy.js +7 -0
  370. package/dist/memory-action-policy.js.map +1 -0
  371. package/dist/memory-cache.d.ts +35 -0
  372. package/dist/memory-cache.js +37 -0
  373. package/dist/memory-cache.js.map +1 -0
  374. package/dist/memory-lifecycle-ledger-utils.d.ts +13 -0
  375. package/dist/memory-lifecycle-ledger-utils.js +23 -0
  376. package/dist/memory-lifecycle-ledger-utils.js.map +1 -0
  377. package/dist/memory-projection-format.d.ts +4 -0
  378. package/dist/memory-projection-format.js +9 -0
  379. package/dist/memory-projection-format.js.map +1 -0
  380. package/dist/memory-projection-store-NxMkbocT.d.ts +221 -0
  381. package/dist/memory-projection-store.d.ts +3 -0
  382. package/dist/memory-projection-store.js +31 -0
  383. package/dist/memory-projection-store.js.map +1 -0
  384. package/dist/model-registry.d.ts +60 -0
  385. package/dist/model-registry.js +8 -0
  386. package/dist/model-registry.js.map +1 -0
  387. package/dist/native-knowledge.d.ts +94 -0
  388. package/dist/native-knowledge.js +26 -0
  389. package/dist/native-knowledge.js.map +1 -0
  390. package/dist/negative.d.ts +26 -0
  391. package/dist/negative.js +8 -0
  392. package/dist/negative.js.map +1 -0
  393. package/dist/objective-state-writers.d.ts +22 -0
  394. package/dist/objective-state-writers.js +313 -0
  395. package/dist/objective-state-writers.js.map +1 -0
  396. package/dist/objective-state.d.ts +75 -0
  397. package/dist/objective-state.js +17 -0
  398. package/dist/objective-state.js.map +1 -0
  399. package/dist/openai-chat-compat.d.ts +13 -0
  400. package/dist/openai-chat-compat.js +11 -0
  401. package/dist/openai-chat-compat.js.map +1 -0
  402. package/dist/operator-toolkit.d.ts +304 -0
  403. package/dist/operator-toolkit.js +41 -0
  404. package/dist/operator-toolkit.js.map +1 -0
  405. package/dist/opik-exporter.d.ts +72 -0
  406. package/dist/opik-exporter.js +361 -0
  407. package/dist/opik-exporter.js.map +1 -0
  408. package/dist/orchestrator-zTa-Qo-1.d.ts +1104 -0
  409. package/dist/orchestrator.d.ts +21 -0
  410. package/dist/orchestrator.js +145 -0
  411. package/dist/orchestrator.js.map +1 -0
  412. package/dist/policy-runtime.d.ts +37 -0
  413. package/dist/policy-runtime.js +13 -0
  414. package/dist/policy-runtime.js.map +1 -0
  415. package/dist/port-C1GZFv8h.d.ts +41 -0
  416. package/dist/profiling.d.ts +80 -0
  417. package/dist/profiling.js +10 -0
  418. package/dist/profiling.js.map +1 -0
  419. package/dist/qmd-recall-cache.d.ts +29 -0
  420. package/dist/qmd-recall-cache.js +13 -0
  421. package/dist/qmd-recall-cache.js.map +1 -0
  422. package/dist/qmd.d.ts +105 -0
  423. package/dist/qmd.js +13 -0
  424. package/dist/qmd.js.map +1 -0
  425. package/dist/recall-qos.d.ts +33 -0
  426. package/dist/recall-qos.js +10 -0
  427. package/dist/recall-qos.js.map +1 -0
  428. package/dist/recall-query-policy.d.ts +20 -0
  429. package/dist/recall-query-policy.js +11 -0
  430. package/dist/recall-query-policy.js.map +1 -0
  431. package/dist/recall-state.d.ts +113 -0
  432. package/dist/recall-state.js +12 -0
  433. package/dist/recall-state.js.map +1 -0
  434. package/dist/recall-tokenization.d.ts +4 -0
  435. package/dist/recall-tokenization.js +9 -0
  436. package/dist/recall-tokenization.js.map +1 -0
  437. package/dist/reconstruct.d.ts +16 -0
  438. package/dist/reconstruct.js +7 -0
  439. package/dist/reconstruct.js.map +1 -0
  440. package/dist/release-changelog.d.ts +7 -0
  441. package/dist/release-changelog.js +30 -0
  442. package/dist/release-changelog.js.map +1 -0
  443. package/dist/relevance.d.ts +18 -0
  444. package/dist/relevance.js +8 -0
  445. package/dist/relevance.js.map +1 -0
  446. package/dist/rerank.d.ts +57 -0
  447. package/dist/rerank.js +11 -0
  448. package/dist/rerank.js.map +1 -0
  449. package/dist/resolve-provider-secret.d.ts +16 -0
  450. package/dist/resolve-provider-secret.js +11 -0
  451. package/dist/resolve-provider-secret.js.map +1 -0
  452. package/dist/resume-bundles.d.ts +66 -0
  453. package/dist/resume-bundles.js +27 -0
  454. package/dist/resume-bundles.js.map +1 -0
  455. package/dist/retrieval-agents.d.ts +129 -0
  456. package/dist/retrieval-agents.js +23 -0
  457. package/dist/retrieval-agents.js.map +1 -0
  458. package/dist/retrieval.d.ts +19 -0
  459. package/dist/retrieval.js +10 -0
  460. package/dist/retrieval.js.map +1 -0
  461. package/dist/sanitize.d.ts +9 -0
  462. package/dist/sanitize.js +9 -0
  463. package/dist/sanitize.js.map +1 -0
  464. package/dist/schemas.d.ts +688 -0
  465. package/dist/schemas.js +51 -0
  466. package/dist/schemas.js.map +1 -0
  467. package/dist/sdk-compat.d.ts +21 -0
  468. package/dist/sdk-compat.js +28 -0
  469. package/dist/sdk-compat.js.map +1 -0
  470. package/dist/semantic-consolidation.d.ts +42 -0
  471. package/dist/semantic-consolidation.js +12 -0
  472. package/dist/semantic-consolidation.js.map +1 -0
  473. package/dist/semantic-rule-promotion.d.ts +28 -0
  474. package/dist/semantic-rule-promotion.js +17 -0
  475. package/dist/semantic-rule-promotion.js.map +1 -0
  476. package/dist/semantic-rule-verifier.d.ts +19 -0
  477. package/dist/semantic-rule-verifier.js +18 -0
  478. package/dist/semantic-rule-verifier.js.map +1 -0
  479. package/dist/session-integrity.d.ts +67 -0
  480. package/dist/session-integrity.js +11 -0
  481. package/dist/session-integrity.js.map +1 -0
  482. package/dist/session-observer-bands.d.ts +6 -0
  483. package/dist/session-observer-bands.js +9 -0
  484. package/dist/session-observer-bands.js.map +1 -0
  485. package/dist/session-observer-state.d.ts +40 -0
  486. package/dist/session-observer-state.js +11 -0
  487. package/dist/session-observer-state.js.map +1 -0
  488. package/dist/signal.d.ts +6 -0
  489. package/dist/signal.js +9 -0
  490. package/dist/signal.js.map +1 -0
  491. package/dist/storage.d.ts +453 -0
  492. package/dist/storage.js +24 -0
  493. package/dist/storage.js.map +1 -0
  494. package/dist/store-contract.d.ts +10 -0
  495. package/dist/store-contract.js +21 -0
  496. package/dist/store-contract.js.map +1 -0
  497. package/dist/summarizer.d.ts +35 -0
  498. package/dist/summarizer.js +17 -0
  499. package/dist/summarizer.js.map +1 -0
  500. package/dist/summary-snapshot.d.ts +8 -0
  501. package/dist/summary-snapshot.js +13 -0
  502. package/dist/summary-snapshot.js.map +1 -0
  503. package/dist/temporal-index.d.ts +139 -0
  504. package/dist/temporal-index.js +29 -0
  505. package/dist/temporal-index.js.map +1 -0
  506. package/dist/threading.d.ts +62 -0
  507. package/dist/threading.js +8 -0
  508. package/dist/threading.js.map +1 -0
  509. package/dist/tier-migration.d.ts +44 -0
  510. package/dist/tier-migration.js +7 -0
  511. package/dist/tier-migration.js.map +1 -0
  512. package/dist/tier-routing.d.ts +21 -0
  513. package/dist/tier-routing.js +10 -0
  514. package/dist/tier-routing.js.map +1 -0
  515. package/dist/tmt.d.ts +79 -0
  516. package/dist/tmt.js +29 -0
  517. package/dist/tmt.js.map +1 -0
  518. package/dist/tokens.d.ts +24 -0
  519. package/dist/tokens.js +21 -0
  520. package/dist/tokens.js.map +1 -0
  521. package/dist/topics.d.ts +29 -0
  522. package/dist/topics.js +9 -0
  523. package/dist/topics.js.map +1 -0
  524. package/dist/transcript.d.ts +171 -0
  525. package/dist/transcript.js +9 -0
  526. package/dist/transcript.js.map +1 -0
  527. package/dist/trust-zones.d.ts +170 -0
  528. package/dist/trust-zones.js +32 -0
  529. package/dist/trust-zones.js.map +1 -0
  530. package/dist/types.d.ts +1243 -0
  531. package/dist/types.js +9 -0
  532. package/dist/types.js.map +1 -0
  533. package/dist/utility-learner.d.ts +59 -0
  534. package/dist/utility-learner.js +17 -0
  535. package/dist/utility-learner.js.map +1 -0
  536. package/dist/utility-runtime.d.ts +21 -0
  537. package/dist/utility-runtime.js +16 -0
  538. package/dist/utility-runtime.js.map +1 -0
  539. package/dist/utility-telemetry.d.ts +68 -0
  540. package/dist/utility-telemetry.js +17 -0
  541. package/dist/utility-telemetry.js.map +1 -0
  542. package/dist/verified-recall.d.ts +17 -0
  543. package/dist/verified-recall.js +19 -0
  544. package/dist/verified-recall.js.map +1 -0
  545. package/dist/version-utils.d.ts +4 -0
  546. package/dist/version-utils.js +7 -0
  547. package/dist/version-utils.js.map +1 -0
  548. package/dist/work-product-ledger.d.ts +65 -0
  549. package/dist/work-product-ledger.js +18 -0
  550. package/dist/work-product-ledger.js.map +1 -0
  551. package/package.json +58 -0
@@ -0,0 +1,154 @@
1
+ import {
2
+ assertIsoRecordedAt,
3
+ assertSafePathSegment,
4
+ assertString,
5
+ isRecord,
6
+ optionalStringArray,
7
+ recordStoreDay,
8
+ validateStringRecord
9
+ } from "./chunk-DGXUHMOV.js";
10
+ import {
11
+ listJsonFiles,
12
+ readJsonFile
13
+ } from "./chunk-LPSF4OQH.js";
14
+
15
+ // src/utility-telemetry.ts
16
+ import path from "path";
17
+ import { mkdir, writeFile } from "fs/promises";
18
+ function resolveUtilityTelemetryDir(memoryDir, overrideDir) {
19
+ if (typeof overrideDir === "string" && overrideDir.trim().length > 0) {
20
+ return overrideDir.trim();
21
+ }
22
+ return path.join(memoryDir, "state", "utility-telemetry");
23
+ }
24
+ function assertUtilityScore(value) {
25
+ if (typeof value !== "number" || !Number.isFinite(value)) {
26
+ throw new Error("utilityScore must be a finite number");
27
+ }
28
+ if (value < -1 || value > 1) {
29
+ throw new Error("utilityScore must be between -1 and 1");
30
+ }
31
+ return value;
32
+ }
33
+ function validateUtilityTelemetryEvent(raw) {
34
+ if (!isRecord(raw)) throw new Error("utility telemetry event must be an object");
35
+ if (raw.schemaVersion !== 1) throw new Error("schemaVersion must be 1");
36
+ const source = assertString(raw.source, "source");
37
+ if (!["cli", "system", "benchmark", "tool_result"].includes(source)) {
38
+ throw new Error("source must be one of cli|system|benchmark|tool_result");
39
+ }
40
+ const target = assertString(raw.target, "target");
41
+ if (!["promotion", "ranking"].includes(target)) {
42
+ throw new Error("target must be one of promotion|ranking");
43
+ }
44
+ const decision = assertString(raw.decision, "decision");
45
+ if (!["promote", "demote", "hold", "boost", "suppress"].includes(decision)) {
46
+ throw new Error("decision must be one of promote|demote|hold|boost|suppress");
47
+ }
48
+ const outcome = assertString(raw.outcome, "outcome");
49
+ if (!["helpful", "neutral", "harmful"].includes(outcome)) {
50
+ throw new Error("outcome must be one of helpful|neutral|harmful");
51
+ }
52
+ return {
53
+ schemaVersion: 1,
54
+ eventId: assertSafePathSegment(assertString(raw.eventId, "eventId"), "eventId"),
55
+ recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, "recordedAt")),
56
+ sessionKey: assertString(raw.sessionKey, "sessionKey"),
57
+ source,
58
+ target,
59
+ decision,
60
+ outcome,
61
+ utilityScore: assertUtilityScore(raw.utilityScore),
62
+ summary: assertString(raw.summary, "summary"),
63
+ memoryIds: optionalStringArray(raw.memoryIds, "memoryIds"),
64
+ entityRefs: optionalStringArray(raw.entityRefs, "entityRefs"),
65
+ tags: optionalStringArray(raw.tags, "tags"),
66
+ metadata: validateStringRecord(raw.metadata, "metadata")
67
+ };
68
+ }
69
+ async function recordUtilityTelemetryEvent(options) {
70
+ const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);
71
+ const validated = validateUtilityTelemetryEvent(options.event);
72
+ const day = recordStoreDay(validated.recordedAt);
73
+ const eventsDir = path.join(rootDir, "events", day);
74
+ const filePath = path.join(eventsDir, `${validated.eventId}.json`);
75
+ await mkdir(eventsDir, { recursive: true });
76
+ await writeFile(filePath, JSON.stringify(validated, null, 2), "utf8");
77
+ return filePath;
78
+ }
79
+ async function readUtilityTelemetryEvents(options) {
80
+ const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);
81
+ const files = await listJsonFiles(path.join(rootDir, "events"));
82
+ const events = [];
83
+ const invalidEvents = [];
84
+ for (const filePath of files) {
85
+ try {
86
+ events.push(validateUtilityTelemetryEvent(await readJsonFile(filePath)));
87
+ } catch (error) {
88
+ invalidEvents.push({
89
+ path: filePath,
90
+ error: error instanceof Error ? error.message : String(error)
91
+ });
92
+ }
93
+ }
94
+ return { files, events, invalidEvents };
95
+ }
96
+ async function getUtilityTelemetryStatus(options) {
97
+ const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);
98
+ const eventsDir = path.join(rootDir, "events");
99
+ if (!options.enabled) {
100
+ return {
101
+ enabled: false,
102
+ promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,
103
+ rootDir,
104
+ eventsDir,
105
+ events: {
106
+ total: 0,
107
+ valid: 0,
108
+ invalid: 0,
109
+ byTarget: {},
110
+ byDecision: {},
111
+ byOutcome: {}
112
+ },
113
+ invalidEvents: []
114
+ };
115
+ }
116
+ const { files, events, invalidEvents } = await readUtilityTelemetryEvents(options);
117
+ events.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));
118
+ const byTarget = {};
119
+ const byDecision = {};
120
+ const byOutcome = {};
121
+ for (const event of events) {
122
+ byTarget[event.target] = (byTarget[event.target] ?? 0) + 1;
123
+ byDecision[event.decision] = (byDecision[event.decision] ?? 0) + 1;
124
+ byOutcome[event.outcome] = (byOutcome[event.outcome] ?? 0) + 1;
125
+ }
126
+ return {
127
+ enabled: true,
128
+ promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,
129
+ rootDir,
130
+ eventsDir,
131
+ events: {
132
+ total: files.length,
133
+ valid: events.length,
134
+ invalid: invalidEvents.length,
135
+ byTarget,
136
+ byDecision,
137
+ byOutcome,
138
+ latestEventId: events[0]?.eventId,
139
+ latestRecordedAt: events[0]?.recordedAt,
140
+ latestSessionKey: events[0]?.sessionKey
141
+ },
142
+ latestEvent: events[0],
143
+ invalidEvents
144
+ };
145
+ }
146
+
147
+ export {
148
+ resolveUtilityTelemetryDir,
149
+ validateUtilityTelemetryEvent,
150
+ recordUtilityTelemetryEvent,
151
+ readUtilityTelemetryEvents,
152
+ getUtilityTelemetryStatus
153
+ };
154
+ //# sourceMappingURL=chunk-3QKK7QOS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utility-telemetry.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport {\n assertIsoRecordedAt,\n assertSafePathSegment,\n assertString,\n isRecord,\n optionalStringArray,\n recordStoreDay,\n validateStringRecord,\n} from \"./store-contract.js\";\n\nexport type UtilityTelemetrySource = \"cli\" | \"system\" | \"benchmark\" | \"tool_result\";\nexport type UtilityTelemetryTarget = \"promotion\" | \"ranking\";\nexport type UtilityTelemetryDecision = \"promote\" | \"demote\" | \"hold\" | \"boost\" | \"suppress\";\nexport type UtilityTelemetryOutcome = \"helpful\" | \"neutral\" | \"harmful\";\n\nexport interface UtilityTelemetryEvent {\n schemaVersion: 1;\n eventId: string;\n recordedAt: string;\n sessionKey: string;\n source: UtilityTelemetrySource;\n target: UtilityTelemetryTarget;\n decision: UtilityTelemetryDecision;\n outcome: UtilityTelemetryOutcome;\n utilityScore: number;\n summary: string;\n memoryIds?: string[];\n entityRefs?: string[];\n tags?: string[];\n metadata?: Record<string, string>;\n}\n\nexport interface UtilityTelemetryStatus {\n enabled: boolean;\n promotionByOutcomeEnabled: boolean;\n rootDir: string;\n eventsDir: string;\n events: {\n total: number;\n valid: number;\n invalid: number;\n byTarget: Partial<Record<UtilityTelemetryTarget, number>>;\n byDecision: Partial<Record<UtilityTelemetryDecision, number>>;\n byOutcome: Partial<Record<UtilityTelemetryOutcome, number>>;\n latestEventId?: string;\n latestRecordedAt?: string;\n latestSessionKey?: string;\n };\n latestEvent?: UtilityTelemetryEvent;\n invalidEvents: Array<{\n path: string;\n error: string;\n }>;\n}\n\nexport function resolveUtilityTelemetryDir(memoryDir: string, overrideDir?: string): string {\n if (typeof overrideDir === \"string\" && overrideDir.trim().length > 0) {\n return overrideDir.trim();\n }\n return path.join(memoryDir, \"state\", \"utility-telemetry\");\n}\n\nfunction assertUtilityScore(value: unknown): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new Error(\"utilityScore must be a finite number\");\n }\n if (value < -1 || value > 1) {\n throw new Error(\"utilityScore must be between -1 and 1\");\n }\n return value;\n}\n\nexport function validateUtilityTelemetryEvent(raw: unknown): UtilityTelemetryEvent {\n if (!isRecord(raw)) throw new Error(\"utility telemetry event must be an object\");\n if (raw.schemaVersion !== 1) throw new Error(\"schemaVersion must be 1\");\n\n const source = assertString(raw.source, \"source\");\n if (![\"cli\", \"system\", \"benchmark\", \"tool_result\"].includes(source)) {\n throw new Error(\"source must be one of cli|system|benchmark|tool_result\");\n }\n\n const target = assertString(raw.target, \"target\");\n if (![\"promotion\", \"ranking\"].includes(target)) {\n throw new Error(\"target must be one of promotion|ranking\");\n }\n\n const decision = assertString(raw.decision, \"decision\");\n if (![\"promote\", \"demote\", \"hold\", \"boost\", \"suppress\"].includes(decision)) {\n throw new Error(\"decision must be one of promote|demote|hold|boost|suppress\");\n }\n\n const outcome = assertString(raw.outcome, \"outcome\");\n if (![\"helpful\", \"neutral\", \"harmful\"].includes(outcome)) {\n throw new Error(\"outcome must be one of helpful|neutral|harmful\");\n }\n\n return {\n schemaVersion: 1,\n eventId: assertSafePathSegment(assertString(raw.eventId, \"eventId\"), \"eventId\"),\n recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, \"recordedAt\")),\n sessionKey: assertString(raw.sessionKey, \"sessionKey\"),\n source: source as UtilityTelemetrySource,\n target: target as UtilityTelemetryTarget,\n decision: decision as UtilityTelemetryDecision,\n outcome: outcome as UtilityTelemetryOutcome,\n utilityScore: assertUtilityScore(raw.utilityScore),\n summary: assertString(raw.summary, \"summary\"),\n memoryIds: optionalStringArray(raw.memoryIds, \"memoryIds\"),\n entityRefs: optionalStringArray(raw.entityRefs, \"entityRefs\"),\n tags: optionalStringArray(raw.tags, \"tags\"),\n metadata: validateStringRecord(raw.metadata, \"metadata\"),\n };\n}\n\nexport async function recordUtilityTelemetryEvent(options: {\n memoryDir: string;\n utilityTelemetryDir?: string;\n event: UtilityTelemetryEvent;\n}): Promise<string> {\n const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);\n const validated = validateUtilityTelemetryEvent(options.event);\n const day = recordStoreDay(validated.recordedAt);\n const eventsDir = path.join(rootDir, \"events\", day);\n const filePath = path.join(eventsDir, `${validated.eventId}.json`);\n await mkdir(eventsDir, { recursive: true });\n await writeFile(filePath, JSON.stringify(validated, null, 2), \"utf8\");\n return filePath;\n}\n\nexport async function readUtilityTelemetryEvents(options: {\n memoryDir: string;\n utilityTelemetryDir?: string;\n}): Promise<{\n files: string[];\n events: UtilityTelemetryEvent[];\n invalidEvents: Array<{ path: string; error: string }>;\n}> {\n const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);\n const files = await listJsonFiles(path.join(rootDir, \"events\"));\n const events: UtilityTelemetryEvent[] = [];\n const invalidEvents: Array<{ path: string; error: string }> = [];\n for (const filePath of files) {\n try {\n events.push(validateUtilityTelemetryEvent(await readJsonFile(filePath)));\n } catch (error) {\n invalidEvents.push({\n path: filePath,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return { files, events, invalidEvents };\n}\n\nexport async function getUtilityTelemetryStatus(options: {\n memoryDir: string;\n utilityTelemetryDir?: string;\n enabled: boolean;\n promotionByOutcomeEnabled?: boolean;\n}): Promise<UtilityTelemetryStatus> {\n const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);\n const eventsDir = path.join(rootDir, \"events\");\n if (!options.enabled) {\n return {\n enabled: false,\n promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,\n rootDir,\n eventsDir,\n events: {\n total: 0,\n valid: 0,\n invalid: 0,\n byTarget: {},\n byDecision: {},\n byOutcome: {},\n },\n invalidEvents: [],\n };\n }\n\n const { files, events, invalidEvents } = await readUtilityTelemetryEvents(options);\n events.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));\n\n const byTarget: Partial<Record<UtilityTelemetryTarget, number>> = {};\n const byDecision: Partial<Record<UtilityTelemetryDecision, number>> = {};\n const byOutcome: Partial<Record<UtilityTelemetryOutcome, number>> = {};\n for (const event of events) {\n byTarget[event.target] = (byTarget[event.target] ?? 0) + 1;\n byDecision[event.decision] = (byDecision[event.decision] ?? 0) + 1;\n byOutcome[event.outcome] = (byOutcome[event.outcome] ?? 0) + 1;\n }\n\n return {\n enabled: true,\n promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,\n rootDir,\n eventsDir,\n events: {\n total: files.length,\n valid: events.length,\n invalid: invalidEvents.length,\n byTarget,\n byDecision,\n byOutcome,\n latestEventId: events[0]?.eventId,\n latestRecordedAt: events[0]?.recordedAt,\n latestSessionKey: events[0]?.sessionKey,\n },\n latestEvent: events[0],\n invalidEvents,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,26 @@
1
+ import {
2
+ graphEdgeKey
3
+ } from "./chunk-Y4Z4I6WK.js";
4
+
5
+ // src/graph-dashboard-diff.ts
6
+ function diffGraphSnapshots(previous, next) {
7
+ const prevNodeSet = new Set(previous.nodes.map((node) => node.id));
8
+ const nextNodeSet = new Set(next.nodes.map((node) => node.id));
9
+ const prevEdges = new Map(previous.edges.map((edge) => [graphEdgeKey(edge), edge]));
10
+ const nextEdges = new Map(next.edges.map((edge) => [graphEdgeKey(edge), edge]));
11
+ const addedNodes = [...nextNodeSet].filter((id) => !prevNodeSet.has(id)).sort((a, b) => a.localeCompare(b));
12
+ const removedNodes = [...prevNodeSet].filter((id) => !nextNodeSet.has(id)).sort((a, b) => a.localeCompare(b));
13
+ const addedEdges = [...nextEdges.entries()].filter(([key]) => !prevEdges.has(key)).map(([, edge]) => edge).sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));
14
+ const removedEdges = [...prevEdges.entries()].filter(([key]) => !nextEdges.has(key)).map(([, edge]) => edge).sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));
15
+ return {
16
+ addedNodes,
17
+ removedNodes,
18
+ addedEdges,
19
+ removedEdges
20
+ };
21
+ }
22
+
23
+ export {
24
+ diffGraphSnapshots
25
+ };
26
+ //# sourceMappingURL=chunk-3SLRNYNG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graph-dashboard-diff.ts"],"sourcesContent":["import type { GraphEdge } from \"./graph.js\";\nimport { graphEdgeKey } from \"./graph-dashboard-key.js\";\nimport type { GraphSnapshot } from \"./graph-dashboard-parser.js\";\n\nexport interface GraphPatch {\n addedNodes: string[];\n removedNodes: string[];\n addedEdges: GraphEdge[];\n removedEdges: GraphEdge[];\n}\n\nexport function diffGraphSnapshots(previous: GraphSnapshot, next: GraphSnapshot): GraphPatch {\n const prevNodeSet = new Set(previous.nodes.map((node) => node.id));\n const nextNodeSet = new Set(next.nodes.map((node) => node.id));\n const prevEdges = new Map(previous.edges.map((edge) => [graphEdgeKey(edge), edge]));\n const nextEdges = new Map(next.edges.map((edge) => [graphEdgeKey(edge), edge]));\n\n const addedNodes = [...nextNodeSet].filter((id) => !prevNodeSet.has(id)).sort((a, b) => a.localeCompare(b));\n const removedNodes = [...prevNodeSet].filter((id) => !nextNodeSet.has(id)).sort((a, b) => a.localeCompare(b));\n const addedEdges = [...nextEdges.entries()]\n .filter(([key]) => !prevEdges.has(key))\n .map(([, edge]) => edge)\n .sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));\n const removedEdges = [...prevEdges.entries()]\n .filter(([key]) => !nextEdges.has(key))\n .map(([, edge]) => edge)\n .sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));\n\n return {\n addedNodes,\n removedNodes,\n addedEdges,\n removedEdges,\n };\n}\n"],"mappings":";;;;;AAWO,SAAS,mBAAmB,UAAyB,MAAiC;AAC3F,QAAM,cAAc,IAAI,IAAI,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC;AACjE,QAAM,cAAc,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC;AAC7D,QAAM,YAAY,IAAI,IAAI,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,GAAG,IAAI,CAAC,CAAC;AAClF,QAAM,YAAY,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,GAAG,IAAI,CAAC,CAAC;AAE9E,QAAM,aAAa,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC1G,QAAM,eAAe,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC5G,QAAM,aAAa,CAAC,GAAG,UAAU,QAAQ,CAAC,EACvC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,EACrC,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EACtB,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAC1G,QAAM,eAAe,CAAC,GAAG,UAAU,QAAQ,CAAC,EACzC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,EACrC,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EACtB,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAE1G,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,68 @@
1
+ import {
2
+ clamp01,
3
+ computeLifecycleValueInputs,
4
+ daysSince
5
+ } from "./chunk-QCCCQT3O.js";
6
+
7
+ // src/tier-routing.ts
8
+ function computeTierValueScore(memory, now, signals) {
9
+ const fm = memory.frontmatter;
10
+ const inputs = computeLifecycleValueInputs(memory, now, signals);
11
+ const correctionBoost = fm.category === "correction" ? 0.08 : 0;
12
+ const confirmedBoost = fm.verificationState === "user_confirmed" ? 0.05 : 0;
13
+ const score = inputs.confidence * 0.24 + inputs.access * 0.26 + inputs.recency * 0.2 + inputs.importance * 0.2 + inputs.feedback * 0.1 + correctionBoost + confirmedBoost - inputs.disputedPenalty * 0.5;
14
+ return clamp01(score);
15
+ }
16
+ function decideTierTransition(memory, currentTier, policy, now, signals) {
17
+ const valueScore = computeTierValueScore(memory, now, signals);
18
+ if (!policy.enabled) {
19
+ return {
20
+ currentTier,
21
+ nextTier: currentTier,
22
+ valueScore,
23
+ changed: false,
24
+ reason: "tier_migration_disabled"
25
+ };
26
+ }
27
+ if (currentTier === "hot") {
28
+ const ageDays = daysSince(memory.frontmatter.updated ?? memory.frontmatter.created, now.getTime());
29
+ if (ageDays >= policy.demotionMinAgeDays && valueScore <= policy.demotionValueThreshold) {
30
+ return {
31
+ currentTier,
32
+ nextTier: "cold",
33
+ valueScore,
34
+ changed: true,
35
+ reason: "value_below_demotion_threshold"
36
+ };
37
+ }
38
+ return {
39
+ currentTier,
40
+ nextTier: currentTier,
41
+ valueScore,
42
+ changed: false,
43
+ reason: ageDays < policy.demotionMinAgeDays ? "demotion_min_age_not_met" : "value_above_demotion_threshold"
44
+ };
45
+ }
46
+ if (valueScore >= policy.promotionValueThreshold) {
47
+ return {
48
+ currentTier,
49
+ nextTier: "hot",
50
+ valueScore,
51
+ changed: true,
52
+ reason: "value_above_promotion_threshold"
53
+ };
54
+ }
55
+ return {
56
+ currentTier,
57
+ nextTier: currentTier,
58
+ valueScore,
59
+ changed: false,
60
+ reason: "value_below_promotion_threshold"
61
+ };
62
+ }
63
+
64
+ export {
65
+ computeTierValueScore,
66
+ decideTierTransition
67
+ };
68
+ //# sourceMappingURL=chunk-4A24LIM2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tier-routing.ts"],"sourcesContent":["import type { MemoryFile } from \"./types.js\";\nimport {\n clamp01,\n computeLifecycleValueInputs,\n daysSince,\n type LifecycleSignals,\n} from \"./lifecycle.js\";\n\nexport type MemoryTier = \"hot\" | \"cold\";\n\nexport interface TierRoutingPolicy {\n enabled: boolean;\n demotionMinAgeDays: number;\n demotionValueThreshold: number;\n promotionValueThreshold: number;\n}\n\nexport interface TierTransitionDecision {\n currentTier: MemoryTier;\n nextTier: MemoryTier;\n valueScore: number;\n changed: boolean;\n reason: string;\n}\n\nexport function computeTierValueScore(\n memory: Pick<MemoryFile, \"frontmatter\">,\n now: Date,\n signals?: LifecycleSignals,\n): number {\n const fm = memory.frontmatter;\n const inputs = computeLifecycleValueInputs(memory, now, signals);\n const correctionBoost = fm.category === \"correction\" ? 0.08 : 0;\n const confirmedBoost = fm.verificationState === \"user_confirmed\" ? 0.05 : 0;\n\n const score = (inputs.confidence * 0.24)\n + (inputs.access * 0.26)\n + (inputs.recency * 0.2)\n + (inputs.importance * 0.2)\n + (inputs.feedback * 0.1)\n + correctionBoost\n + confirmedBoost\n - (inputs.disputedPenalty * 0.5);\n\n return clamp01(score);\n}\n\nexport function decideTierTransition(\n memory: Pick<MemoryFile, \"frontmatter\">,\n currentTier: MemoryTier,\n policy: TierRoutingPolicy,\n now: Date,\n signals?: LifecycleSignals,\n): TierTransitionDecision {\n const valueScore = computeTierValueScore(memory, now, signals);\n if (!policy.enabled) {\n return {\n currentTier,\n nextTier: currentTier,\n valueScore,\n changed: false,\n reason: \"tier_migration_disabled\",\n };\n }\n\n if (currentTier === \"hot\") {\n const ageDays = daysSince(memory.frontmatter.updated ?? memory.frontmatter.created, now.getTime());\n if (ageDays >= policy.demotionMinAgeDays && valueScore <= policy.demotionValueThreshold) {\n return {\n currentTier,\n nextTier: \"cold\",\n valueScore,\n changed: true,\n reason: \"value_below_demotion_threshold\",\n };\n }\n return {\n currentTier,\n nextTier: currentTier,\n valueScore,\n changed: false,\n reason: ageDays < policy.demotionMinAgeDays ? \"demotion_min_age_not_met\" : \"value_above_demotion_threshold\",\n };\n }\n\n if (valueScore >= policy.promotionValueThreshold) {\n return {\n currentTier,\n nextTier: \"hot\",\n valueScore,\n changed: true,\n reason: \"value_above_promotion_threshold\",\n };\n }\n return {\n currentTier,\n nextTier: currentTier,\n valueScore,\n changed: false,\n reason: \"value_below_promotion_threshold\",\n };\n}\n"],"mappings":";;;;;;;AAyBO,SAAS,sBACd,QACA,KACA,SACQ;AACR,QAAM,KAAK,OAAO;AAClB,QAAM,SAAS,4BAA4B,QAAQ,KAAK,OAAO;AAC/D,QAAM,kBAAkB,GAAG,aAAa,eAAe,OAAO;AAC9D,QAAM,iBAAiB,GAAG,sBAAsB,mBAAmB,OAAO;AAE1E,QAAM,QAAS,OAAO,aAAa,OAC9B,OAAO,SAAS,OAChB,OAAO,UAAU,MACjB,OAAO,aAAa,MACpB,OAAO,WAAW,MACnB,kBACA,iBACC,OAAO,kBAAkB;AAE9B,SAAO,QAAQ,KAAK;AACtB;AAEO,SAAS,qBACd,QACA,aACA,QACA,KACA,SACwB;AACxB,QAAM,aAAa,sBAAsB,QAAQ,KAAK,OAAO;AAC7D,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,MAAI,gBAAgB,OAAO;AACzB,UAAM,UAAU,UAAU,OAAO,YAAY,WAAW,OAAO,YAAY,SAAS,IAAI,QAAQ,CAAC;AACjG,QAAI,WAAW,OAAO,sBAAsB,cAAc,OAAO,wBAAwB;AACvF,aAAO;AAAA,QACL;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,QAAQ,UAAU,OAAO,qBAAqB,6BAA6B;AAAA,IAC7E;AAAA,EACF;AAEA,MAAI,cAAc,OAAO,yBAAyB;AAChD,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF;","names":[]}
@@ -0,0 +1,164 @@
1
+ // src/recall-query-policy.ts
2
+ var DEFAULT_STOPWORDS = /* @__PURE__ */ new Set([
3
+ "the",
4
+ "and",
5
+ "for",
6
+ "with",
7
+ "from",
8
+ "that",
9
+ "this",
10
+ "your",
11
+ "you",
12
+ "are",
13
+ "was",
14
+ "were",
15
+ "have",
16
+ "has",
17
+ "had",
18
+ "not",
19
+ "but",
20
+ "its",
21
+ "into",
22
+ "only",
23
+ "use",
24
+ "run",
25
+ "then",
26
+ "when",
27
+ "what",
28
+ "where",
29
+ "which",
30
+ "will",
31
+ "would",
32
+ "should",
33
+ "could",
34
+ "goal",
35
+ "output",
36
+ "format",
37
+ "rules",
38
+ "section",
39
+ "sections",
40
+ "skip",
41
+ "today",
42
+ "yesterday",
43
+ "return",
44
+ "summary",
45
+ "plain",
46
+ "text",
47
+ "before",
48
+ "after",
49
+ "time",
50
+ "date",
51
+ "daily",
52
+ "cron",
53
+ "agent",
54
+ "mode",
55
+ "data",
56
+ "gathering",
57
+ "context"
58
+ ]);
59
+ function collapseWhitespace(text) {
60
+ return text.replace(/\s+/g, " ").trim();
61
+ }
62
+ function stripFilesystemLikePaths(text) {
63
+ return text.replace(/(?:^|\s)(~\/[^\s)]+)(?=\s|$)/g, " ").replace(/(?:^|\s)(\/[A-Za-z0-9._\-\/]+)(?=\s|$)/g, " ").replace(/(?:^|\s)([A-Za-z]:\\[^\s)]+)(?=\s|$)/g, " ");
64
+ }
65
+ function isBulletOrNumberedLine(line) {
66
+ if (line.startsWith("-") || line.startsWith("*")) {
67
+ return true;
68
+ }
69
+ let i = 0;
70
+ while (i < line.length) {
71
+ const code = line.charCodeAt(i);
72
+ if (code < 48 || code > 57) {
73
+ break;
74
+ }
75
+ i += 1;
76
+ }
77
+ return i > 0 && i < line.length && line.charAt(i) === ".";
78
+ }
79
+ function scoreInstructionHeavyShape(prompt) {
80
+ const lines = prompt.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
81
+ const lineCount = lines.length;
82
+ if (lineCount === 0) return 0;
83
+ const headingLineCount = lines.filter(
84
+ (line) => /^(goal|output format|tone rules|grounding rules|data gathering|date computation|crm context|follow-up|social|current time|return)\b/i.test(
85
+ line
86
+ ) || /^[A-Z][A-Z\s/-]{4,}:$/.test(line)
87
+ ).length;
88
+ const bulletLineCount = lines.filter((line) => isBulletOrNumberedLine(line)).length;
89
+ const longLineCount = lines.filter((line) => line.length >= 180).length;
90
+ const hasPathDensity = (prompt.match(/(?:~\/|\/Users\/|[A-Za-z]:\\)/g)?.length ?? 0) >= 2;
91
+ const hasImperativeDensity = (prompt.match(/\b(run|extract|read|parse|determine|include|omit|skip)\b/gi)?.length ?? 0) >= 8;
92
+ let score = 0;
93
+ if (lineCount >= 24) score += 2;
94
+ if (headingLineCount >= 4) score += 2;
95
+ if (bulletLineCount >= 8) score += 1;
96
+ if (longLineCount >= 3) score += 1;
97
+ if (hasPathDensity) score += 1;
98
+ if (hasImperativeDensity) score += 1;
99
+ return score;
100
+ }
101
+ function classifyRecallPromptShape(prompt) {
102
+ const score = scoreInstructionHeavyShape(prompt);
103
+ return score >= 5 ? "instruction_heavy" : "standard";
104
+ }
105
+ function tokenizeForCompactQuery(text) {
106
+ const raw = text.toLowerCase().replace(/[^a-z0-9\s:_-]+/g, " ").split(/\s+/).filter((token) => token.length >= 3);
107
+ const deduped = [];
108
+ const seen = /* @__PURE__ */ new Set();
109
+ for (const token of raw) {
110
+ if (DEFAULT_STOPWORDS.has(token)) continue;
111
+ if (seen.has(token)) continue;
112
+ seen.add(token);
113
+ deduped.push(token);
114
+ }
115
+ return deduped;
116
+ }
117
+ function buildInstructionHeavyQuery(prompt, tokenCap, maxChars) {
118
+ const cleaned = stripFilesystemLikePaths(prompt);
119
+ const tokens = tokenizeForCompactQuery(cleaned).slice(0, Math.max(8, tokenCap));
120
+ const joined = tokens.join(" ");
121
+ const compact = collapseWhitespace(joined);
122
+ if (compact.length <= maxChars) return compact;
123
+ return compact.slice(0, maxChars).trim();
124
+ }
125
+ function clampInstructionHeavyTokenCap(value) {
126
+ if (!Number.isFinite(value)) return 8;
127
+ return Math.max(8, Math.round(value));
128
+ }
129
+ function buildStandardQuery(prompt, maxChars) {
130
+ const trimmed = collapseWhitespace(prompt);
131
+ if (trimmed.length <= maxChars) return trimmed;
132
+ return trimmed.slice(0, maxChars).trim();
133
+ }
134
+ function buildRecallQueryPolicy(prompt, sessionKey, cfg) {
135
+ const normalizedPrompt = collapseWhitespace(prompt);
136
+ const isCron = (sessionKey ?? "").includes(":cron:");
137
+ if (!cfg.cronRecallPolicyEnabled || !isCron) {
138
+ return {
139
+ promptShape: "standard",
140
+ retrievalQuery: prompt,
141
+ skipConversationRecall: false,
142
+ retrievalBudgetMode: "full"
143
+ };
144
+ }
145
+ const promptShape = classifyRecallPromptShape(prompt);
146
+ const maxChars = Math.max(120, cfg.cronRecallNormalizedQueryMaxChars);
147
+ const tokenCap = clampInstructionHeavyTokenCap(cfg.cronRecallInstructionHeavyTokenCap);
148
+ const retrievalQuery = promptShape === "instruction_heavy" ? buildInstructionHeavyQuery(prompt, tokenCap, maxChars) : buildStandardQuery(prompt, maxChars);
149
+ const skipConversationRecall = cfg.cronConversationRecallMode === "never" ? true : cfg.cronConversationRecallMode === "always" ? false : promptShape === "instruction_heavy";
150
+ const retrievalBudgetMode = promptShape === "instruction_heavy" ? "minimal" : "full";
151
+ return {
152
+ promptShape,
153
+ retrievalQuery: retrievalQuery.length > 0 ? retrievalQuery : normalizedPrompt.slice(0, maxChars),
154
+ skipConversationRecall,
155
+ retrievalBudgetMode
156
+ };
157
+ }
158
+
159
+ export {
160
+ classifyRecallPromptShape,
161
+ clampInstructionHeavyTokenCap,
162
+ buildRecallQueryPolicy
163
+ };
164
+ //# sourceMappingURL=chunk-6HZ6AO2P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/recall-query-policy.ts"],"sourcesContent":["export type RecallPromptShape = \"standard\" | \"instruction_heavy\";\nexport type CronConversationRecallMode = \"auto\" | \"always\" | \"never\";\nexport type RecallBudgetMode = \"full\" | \"minimal\";\n\nexport interface RecallQueryPolicyConfig {\n cronRecallPolicyEnabled: boolean;\n cronRecallNormalizedQueryMaxChars: number;\n cronRecallInstructionHeavyTokenCap: number;\n cronConversationRecallMode: CronConversationRecallMode;\n}\n\nexport interface RecallQueryPolicyResult {\n promptShape: RecallPromptShape;\n retrievalQuery: string;\n skipConversationRecall: boolean;\n retrievalBudgetMode: RecallBudgetMode;\n}\n\nconst DEFAULT_STOPWORDS = new Set([\n \"the\",\n \"and\",\n \"for\",\n \"with\",\n \"from\",\n \"that\",\n \"this\",\n \"your\",\n \"you\",\n \"are\",\n \"was\",\n \"were\",\n \"have\",\n \"has\",\n \"had\",\n \"not\",\n \"but\",\n \"its\",\n \"into\",\n \"only\",\n \"use\",\n \"run\",\n \"then\",\n \"when\",\n \"what\",\n \"where\",\n \"which\",\n \"will\",\n \"would\",\n \"should\",\n \"could\",\n \"goal\",\n \"output\",\n \"format\",\n \"rules\",\n \"section\",\n \"sections\",\n \"skip\",\n \"today\",\n \"yesterday\",\n \"return\",\n \"summary\",\n \"plain\",\n \"text\",\n \"before\",\n \"after\",\n \"time\",\n \"date\",\n \"daily\",\n \"cron\",\n \"agent\",\n \"mode\",\n \"data\",\n \"gathering\",\n \"context\",\n]);\n\nfunction collapseWhitespace(text: string): string {\n return text.replace(/\\s+/g, \" \").trim();\n}\n\nfunction stripFilesystemLikePaths(text: string): string {\n return text\n .replace(/(?:^|\\s)(~\\/[^\\s)]+)(?=\\s|$)/g, \" \")\n .replace(/(?:^|\\s)(\\/[A-Za-z0-9._\\-\\/]+)(?=\\s|$)/g, \" \")\n .replace(/(?:^|\\s)([A-Za-z]:\\\\[^\\s)]+)(?=\\s|$)/g, \" \");\n}\n\nfunction isBulletOrNumberedLine(line: string): boolean {\n if (line.startsWith(\"-\") || line.startsWith(\"*\")) {\n return true;\n }\n\n let i = 0;\n while (i < line.length) {\n const code = line.charCodeAt(i);\n if (code < 48 || code > 57) {\n break;\n }\n i += 1;\n }\n return i > 0 && i < line.length && line.charAt(i) === \".\";\n}\n\nfunction scoreInstructionHeavyShape(prompt: string): number {\n const lines = prompt\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n const lineCount = lines.length;\n if (lineCount === 0) return 0;\n\n const headingLineCount = lines.filter(\n (line) =>\n /^(goal|output format|tone rules|grounding rules|data gathering|date computation|crm context|follow-up|social|current time|return)\\b/i.test(\n line,\n ) || /^[A-Z][A-Z\\s/-]{4,}:$/.test(line),\n ).length;\n const bulletLineCount = lines.filter((line) => isBulletOrNumberedLine(line)).length;\n const longLineCount = lines.filter((line) => line.length >= 180).length;\n const hasPathDensity =\n (prompt.match(/(?:~\\/|\\/Users\\/|[A-Za-z]:\\\\)/g)?.length ?? 0) >= 2;\n const hasImperativeDensity =\n (prompt.match(/\\b(run|extract|read|parse|determine|include|omit|skip)\\b/gi)?.length ?? 0) >=\n 8;\n\n let score = 0;\n if (lineCount >= 24) score += 2;\n if (headingLineCount >= 4) score += 2;\n if (bulletLineCount >= 8) score += 1;\n if (longLineCount >= 3) score += 1;\n if (hasPathDensity) score += 1;\n if (hasImperativeDensity) score += 1;\n return score;\n}\n\nexport function classifyRecallPromptShape(prompt: string): RecallPromptShape {\n const score = scoreInstructionHeavyShape(prompt);\n return score >= 5 ? \"instruction_heavy\" : \"standard\";\n}\n\nfunction tokenizeForCompactQuery(text: string): string[] {\n const raw = text\n .toLowerCase()\n .replace(/[^a-z0-9\\s:_-]+/g, \" \")\n .split(/\\s+/)\n .filter((token) => token.length >= 3);\n const deduped: string[] = [];\n const seen = new Set<string>();\n for (const token of raw) {\n if (DEFAULT_STOPWORDS.has(token)) continue;\n if (seen.has(token)) continue;\n seen.add(token);\n deduped.push(token);\n }\n return deduped;\n}\n\nfunction buildInstructionHeavyQuery(\n prompt: string,\n tokenCap: number,\n maxChars: number,\n): string {\n const cleaned = stripFilesystemLikePaths(prompt);\n const tokens = tokenizeForCompactQuery(cleaned).slice(0, Math.max(8, tokenCap));\n const joined = tokens.join(\" \");\n const compact = collapseWhitespace(joined);\n if (compact.length <= maxChars) return compact;\n return compact.slice(0, maxChars).trim();\n}\n\nexport function clampInstructionHeavyTokenCap(value: number): number {\n if (!Number.isFinite(value)) return 8;\n return Math.max(8, Math.round(value));\n}\n\nfunction buildStandardQuery(prompt: string, maxChars: number): string {\n const trimmed = collapseWhitespace(prompt);\n if (trimmed.length <= maxChars) return trimmed;\n return trimmed.slice(0, maxChars).trim();\n}\n\nexport function buildRecallQueryPolicy(\n prompt: string,\n sessionKey: string | undefined,\n cfg: RecallQueryPolicyConfig,\n): RecallQueryPolicyResult {\n const normalizedPrompt = collapseWhitespace(prompt);\n const isCron = (sessionKey ?? \"\").includes(\":cron:\");\n if (!cfg.cronRecallPolicyEnabled || !isCron) {\n return {\n promptShape: \"standard\",\n retrievalQuery: prompt,\n skipConversationRecall: false,\n retrievalBudgetMode: \"full\",\n };\n }\n\n const promptShape = classifyRecallPromptShape(prompt);\n const maxChars = Math.max(120, cfg.cronRecallNormalizedQueryMaxChars);\n const tokenCap = clampInstructionHeavyTokenCap(cfg.cronRecallInstructionHeavyTokenCap);\n const retrievalQuery =\n promptShape === \"instruction_heavy\"\n ? buildInstructionHeavyQuery(prompt, tokenCap, maxChars)\n : buildStandardQuery(prompt, maxChars);\n\n const skipConversationRecall =\n cfg.cronConversationRecallMode === \"never\"\n ? true\n : cfg.cronConversationRecallMode === \"always\"\n ? false\n : promptShape === \"instruction_heavy\";\n\n const retrievalBudgetMode = promptShape === \"instruction_heavy\" ? \"minimal\" : \"full\";\n\n return {\n promptShape,\n retrievalQuery: retrievalQuery.length > 0 ? retrievalQuery : normalizedPrompt.slice(0, maxChars),\n skipConversationRecall,\n retrievalBudgetMode,\n };\n}\n"],"mappings":"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","names":[]}