@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,221 @@
1
+ import {
2
+ assertIsoRecordedAt,
3
+ assertSafePathSegment,
4
+ assertString,
5
+ isRecord,
6
+ optionalString,
7
+ optionalStringArray,
8
+ recordStoreDay,
9
+ validateStringRecord
10
+ } from "./chunk-DGXUHMOV.js";
11
+ import {
12
+ listJsonFiles,
13
+ readJsonFile
14
+ } from "./chunk-LPSF4OQH.js";
15
+
16
+ // src/commitment-ledger.ts
17
+ import path from "path";
18
+ import { mkdir, unlink, writeFile } from "fs/promises";
19
+ function resolveCommitmentLedgerDir(memoryDir, overrideDir) {
20
+ if (typeof overrideDir === "string" && overrideDir.trim().length > 0) {
21
+ return overrideDir.trim();
22
+ }
23
+ return path.join(memoryDir, "state", "commitment-ledger");
24
+ }
25
+ function validateCommitmentLedgerEntry(raw) {
26
+ if (!isRecord(raw)) throw new Error("commitment ledger entry must be an object");
27
+ if (raw.schemaVersion !== 1) throw new Error("schemaVersion must be 1");
28
+ const source = assertString(raw.source, "source");
29
+ if (!["tool_result", "cli", "system", "manual"].includes(source)) {
30
+ throw new Error("source must be one of tool_result|cli|system|manual");
31
+ }
32
+ const kind = assertString(raw.kind, "kind");
33
+ if (!["promise", "follow_up", "deadline", "deliverable"].includes(kind)) {
34
+ throw new Error("kind must be one of promise|follow_up|deadline|deliverable");
35
+ }
36
+ const state = assertString(raw.state, "state");
37
+ if (!["open", "fulfilled", "cancelled", "expired"].includes(state)) {
38
+ throw new Error("state must be one of open|fulfilled|cancelled|expired");
39
+ }
40
+ const dueAt = optionalString(raw.dueAt);
41
+ if (dueAt !== void 0) {
42
+ assertIsoRecordedAt(dueAt, "dueAt");
43
+ }
44
+ const stateChangedAt = optionalString(raw.stateChangedAt);
45
+ if (stateChangedAt !== void 0) {
46
+ assertIsoRecordedAt(stateChangedAt, "stateChangedAt");
47
+ }
48
+ const resolvedAt = optionalString(raw.resolvedAt);
49
+ if (resolvedAt !== void 0) {
50
+ assertIsoRecordedAt(resolvedAt, "resolvedAt");
51
+ }
52
+ const normalizedStateChangedAt = stateChangedAt ?? (state === "open" ? void 0 : assertString(raw.recordedAt, "recordedAt"));
53
+ const normalizedResolvedAt = resolvedAt ?? (state === "open" ? void 0 : normalizedStateChangedAt);
54
+ return {
55
+ schemaVersion: 1,
56
+ entryId: assertSafePathSegment(assertString(raw.entryId, "entryId"), "entryId"),
57
+ recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, "recordedAt")),
58
+ sessionKey: assertString(raw.sessionKey, "sessionKey"),
59
+ source,
60
+ kind,
61
+ state,
62
+ scope: assertString(raw.scope, "scope"),
63
+ summary: assertString(raw.summary, "summary"),
64
+ dueAt,
65
+ entityRefs: optionalStringArray(raw.entityRefs, "entityRefs"),
66
+ workProductEntryRefs: optionalStringArray(raw.workProductEntryRefs, "workProductEntryRefs"),
67
+ objectiveStateSnapshotRefs: optionalStringArray(raw.objectiveStateSnapshotRefs, "objectiveStateSnapshotRefs"),
68
+ tags: optionalStringArray(raw.tags, "tags"),
69
+ metadata: validateStringRecord(raw.metadata, "metadata"),
70
+ stateChangedAt: normalizedStateChangedAt,
71
+ resolvedAt: normalizedResolvedAt
72
+ };
73
+ }
74
+ async function recordCommitmentLedgerEntry(options) {
75
+ const rootDir = resolveCommitmentLedgerDir(options.memoryDir, options.commitmentLedgerDir);
76
+ const validated = validateCommitmentLedgerEntry(options.entry);
77
+ const day = recordStoreDay(validated.recordedAt);
78
+ const entriesDir = path.join(rootDir, "entries", day);
79
+ const filePath = path.join(entriesDir, `${validated.entryId}.json`);
80
+ await mkdir(entriesDir, { recursive: true });
81
+ await writeFile(filePath, JSON.stringify(validated, null, 2), "utf8");
82
+ return filePath;
83
+ }
84
+ async function readCommitmentLedgerEntries(options) {
85
+ const rootDir = resolveCommitmentLedgerDir(options.memoryDir, options.commitmentLedgerDir);
86
+ const files = await listJsonFiles(path.join(rootDir, "entries"));
87
+ const entries = [];
88
+ const entryFiles = [];
89
+ const invalidEntries = [];
90
+ for (const filePath of files) {
91
+ try {
92
+ const entry = validateCommitmentLedgerEntry(await readJsonFile(filePath));
93
+ entries.push(entry);
94
+ entryFiles.push({ entry, filePath });
95
+ } catch (error) {
96
+ invalidEntries.push({
97
+ path: filePath,
98
+ error: error instanceof Error ? error.message : String(error)
99
+ });
100
+ }
101
+ }
102
+ return { files, entries, entryFiles, invalidEntries };
103
+ }
104
+ function isResolvedState(state) {
105
+ return state === "fulfilled" || state === "cancelled" || state === "expired";
106
+ }
107
+ function isOverdueOpenEntry(entry, nowMs) {
108
+ return entry.state === "open" && typeof entry.dueAt === "string" && Date.parse(entry.dueAt) < nowMs;
109
+ }
110
+ function isStaleOpenEntry(entry, nowMs, staleDays) {
111
+ if (entry.state !== "open") return false;
112
+ if (typeof entry.dueAt === "string") return false;
113
+ const staleCutoff = nowMs - staleDays * 24 * 60 * 60 * 1e3;
114
+ return Date.parse(entry.recordedAt) < staleCutoff;
115
+ }
116
+ function isDecayEligibleResolvedEntry(entry, nowMs, decayDays) {
117
+ if (!isResolvedState(entry.state)) return false;
118
+ const reference = entry.resolvedAt ?? entry.stateChangedAt ?? entry.recordedAt;
119
+ const decayCutoff = nowMs - decayDays * 24 * 60 * 60 * 1e3;
120
+ return Date.parse(reference) < decayCutoff;
121
+ }
122
+ async function findCommitmentLedgerEntryById(options) {
123
+ const { entryFiles } = await readCommitmentLedgerEntries(options);
124
+ for (const candidate of entryFiles) {
125
+ if (candidate.entry.entryId === options.entryId || path.basename(candidate.filePath, ".json") === options.entryId) {
126
+ return candidate;
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+ async function transitionCommitmentLedgerEntryState(options) {
132
+ const match = await findCommitmentLedgerEntryById(options);
133
+ if (!match) {
134
+ throw new Error(`commitment entry not found: ${options.entryId}`);
135
+ }
136
+ const changedAt = assertIsoRecordedAt(options.changedAt, "changedAt");
137
+ const nextState = options.nextState;
138
+ const nextEntry = {
139
+ ...match.entry,
140
+ state: nextState,
141
+ stateChangedAt: changedAt,
142
+ resolvedAt: isResolvedState(nextState) ? changedAt : void 0
143
+ };
144
+ await writeFile(match.filePath, JSON.stringify(validateCommitmentLedgerEntry(nextEntry), null, 2), "utf8");
145
+ return nextEntry;
146
+ }
147
+ async function applyCommitmentLedgerLifecycle(options) {
148
+ if (!options.enabled) {
149
+ return { transitionedToExpired: [], deletedResolved: [] };
150
+ }
151
+ const nowIso = assertIsoRecordedAt(options.now ?? (/* @__PURE__ */ new Date()).toISOString(), "now");
152
+ const nowMs = Date.parse(nowIso);
153
+ const { entryFiles } = await readCommitmentLedgerEntries(options);
154
+ const transitionedToExpired = [];
155
+ const deletedResolved = [];
156
+ for (const { entry, filePath } of entryFiles) {
157
+ if (isOverdueOpenEntry(entry, nowMs)) {
158
+ const updated = validateCommitmentLedgerEntry({
159
+ ...entry,
160
+ state: "expired",
161
+ stateChangedAt: nowIso,
162
+ resolvedAt: nowIso
163
+ });
164
+ await writeFile(filePath, JSON.stringify(updated, null, 2), "utf8");
165
+ transitionedToExpired.push(updated);
166
+ continue;
167
+ }
168
+ if (isDecayEligibleResolvedEntry(entry, nowMs, options.decayDays)) {
169
+ await unlink(filePath);
170
+ deletedResolved.push(entry);
171
+ }
172
+ }
173
+ return { transitionedToExpired, deletedResolved };
174
+ }
175
+ async function getCommitmentLedgerStatus(options) {
176
+ const rootDir = resolveCommitmentLedgerDir(options.memoryDir, options.commitmentLedgerDir);
177
+ const entriesDir = path.join(rootDir, "entries");
178
+ const { files, entries, invalidEntries } = await readCommitmentLedgerEntries(options);
179
+ entries.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));
180
+ const nowMs = Date.parse(assertIsoRecordedAt(options.now ?? (/* @__PURE__ */ new Date()).toISOString(), "now"));
181
+ const staleDays = Math.max(1, Math.floor(options.staleDays ?? 14));
182
+ const decayDays = Math.max(1, Math.floor(options.decayDays ?? 90));
183
+ const byKind = {};
184
+ const byState = {};
185
+ for (const entry of entries) {
186
+ byKind[entry.kind] = (byKind[entry.kind] ?? 0) + 1;
187
+ byState[entry.state] = (byState[entry.state] ?? 0) + 1;
188
+ }
189
+ return {
190
+ enabled: options.enabled,
191
+ rootDir,
192
+ entriesDir,
193
+ entries: {
194
+ total: files.length,
195
+ valid: entries.length,
196
+ invalid: invalidEntries.length,
197
+ byKind,
198
+ byState,
199
+ latestEntryId: entries[0]?.entryId,
200
+ latestRecordedAt: entries[0]?.recordedAt,
201
+ latestSessionKey: entries[0]?.sessionKey
202
+ },
203
+ latestEntry: entries[0],
204
+ invalidEntries,
205
+ lifecycle: options.lifecycleEnabled ? {
206
+ overdueOpen: entries.filter((entry) => isOverdueOpenEntry(entry, nowMs)).length,
207
+ staleOpen: entries.filter((entry) => isStaleOpenEntry(entry, nowMs, staleDays)).length,
208
+ decayEligibleResolved: entries.filter((entry) => isDecayEligibleResolvedEntry(entry, nowMs, decayDays)).length
209
+ } : void 0
210
+ };
211
+ }
212
+
213
+ export {
214
+ resolveCommitmentLedgerDir,
215
+ validateCommitmentLedgerEntry,
216
+ recordCommitmentLedgerEntry,
217
+ transitionCommitmentLedgerEntryState,
218
+ applyCommitmentLedgerLifecycle,
219
+ getCommitmentLedgerStatus
220
+ };
221
+ //# sourceMappingURL=chunk-FYIYMQ5N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commitment-ledger.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, unlink, writeFile } from \"node:fs/promises\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport {\n assertIsoRecordedAt,\n assertSafePathSegment,\n assertString,\n isRecord,\n optionalString,\n optionalStringArray,\n recordStoreDay,\n validateStringRecord,\n} from \"./store-contract.js\";\n\nexport type CommitmentLedgerSource = \"tool_result\" | \"cli\" | \"system\" | \"manual\";\nexport type CommitmentLedgerKind = \"promise\" | \"follow_up\" | \"deadline\" | \"deliverable\";\nexport type CommitmentLedgerState = \"open\" | \"fulfilled\" | \"cancelled\" | \"expired\";\n\nexport interface CommitmentLedgerEntry {\n schemaVersion: 1;\n entryId: string;\n recordedAt: string;\n sessionKey: string;\n source: CommitmentLedgerSource;\n kind: CommitmentLedgerKind;\n state: CommitmentLedgerState;\n scope: string;\n summary: string;\n dueAt?: string;\n entityRefs?: string[];\n workProductEntryRefs?: string[];\n objectiveStateSnapshotRefs?: string[];\n tags?: string[];\n metadata?: Record<string, string>;\n stateChangedAt?: string;\n resolvedAt?: string;\n}\n\nexport interface CommitmentLedgerStatus {\n enabled: boolean;\n rootDir: string;\n entriesDir: string;\n entries: {\n total: number;\n valid: number;\n invalid: number;\n byKind: Partial<Record<CommitmentLedgerKind, number>>;\n byState: Partial<Record<CommitmentLedgerState, number>>;\n latestEntryId?: string;\n latestRecordedAt?: string;\n latestSessionKey?: string;\n };\n latestEntry?: CommitmentLedgerEntry;\n invalidEntries: Array<{\n path: string;\n error: string;\n }>;\n lifecycle?: {\n staleOpen: number;\n overdueOpen: number;\n decayEligibleResolved: number;\n };\n}\n\nexport interface CommitmentLedgerLifecycleResult {\n transitionedToExpired: CommitmentLedgerEntry[];\n deletedResolved: CommitmentLedgerEntry[];\n}\n\nexport function resolveCommitmentLedgerDir(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\", \"commitment-ledger\");\n}\n\nexport function validateCommitmentLedgerEntry(raw: unknown): CommitmentLedgerEntry {\n if (!isRecord(raw)) throw new Error(\"commitment ledger entry 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 (![\"tool_result\", \"cli\", \"system\", \"manual\"].includes(source)) {\n throw new Error(\"source must be one of tool_result|cli|system|manual\");\n }\n\n const kind = assertString(raw.kind, \"kind\");\n if (![\"promise\", \"follow_up\", \"deadline\", \"deliverable\"].includes(kind)) {\n throw new Error(\"kind must be one of promise|follow_up|deadline|deliverable\");\n }\n\n const state = assertString(raw.state, \"state\");\n if (![\"open\", \"fulfilled\", \"cancelled\", \"expired\"].includes(state)) {\n throw new Error(\"state must be one of open|fulfilled|cancelled|expired\");\n }\n\n const dueAt = optionalString(raw.dueAt);\n if (dueAt !== undefined) {\n assertIsoRecordedAt(dueAt, \"dueAt\");\n }\n\n const stateChangedAt = optionalString(raw.stateChangedAt);\n if (stateChangedAt !== undefined) {\n assertIsoRecordedAt(stateChangedAt, \"stateChangedAt\");\n }\n\n const resolvedAt = optionalString(raw.resolvedAt);\n if (resolvedAt !== undefined) {\n assertIsoRecordedAt(resolvedAt, \"resolvedAt\");\n }\n\n const normalizedStateChangedAt = stateChangedAt ?? (state === \"open\" ? undefined : assertString(raw.recordedAt, \"recordedAt\"));\n const normalizedResolvedAt = resolvedAt ?? (state === \"open\" ? undefined : normalizedStateChangedAt);\n\n return {\n schemaVersion: 1,\n entryId: assertSafePathSegment(assertString(raw.entryId, \"entryId\"), \"entryId\"),\n recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, \"recordedAt\")),\n sessionKey: assertString(raw.sessionKey, \"sessionKey\"),\n source: source as CommitmentLedgerSource,\n kind: kind as CommitmentLedgerKind,\n state: state as CommitmentLedgerState,\n scope: assertString(raw.scope, \"scope\"),\n summary: assertString(raw.summary, \"summary\"),\n dueAt,\n entityRefs: optionalStringArray(raw.entityRefs, \"entityRefs\"),\n workProductEntryRefs: optionalStringArray(raw.workProductEntryRefs, \"workProductEntryRefs\"),\n objectiveStateSnapshotRefs: optionalStringArray(raw.objectiveStateSnapshotRefs, \"objectiveStateSnapshotRefs\"),\n tags: optionalStringArray(raw.tags, \"tags\"),\n metadata: validateStringRecord(raw.metadata, \"metadata\"),\n stateChangedAt: normalizedStateChangedAt,\n resolvedAt: normalizedResolvedAt,\n };\n}\n\nexport async function recordCommitmentLedgerEntry(options: {\n memoryDir: string;\n commitmentLedgerDir?: string;\n entry: CommitmentLedgerEntry;\n}): Promise<string> {\n const rootDir = resolveCommitmentLedgerDir(options.memoryDir, options.commitmentLedgerDir);\n const validated = validateCommitmentLedgerEntry(options.entry);\n const day = recordStoreDay(validated.recordedAt);\n const entriesDir = path.join(rootDir, \"entries\", day);\n const filePath = path.join(entriesDir, `${validated.entryId}.json`);\n await mkdir(entriesDir, { recursive: true });\n await writeFile(filePath, JSON.stringify(validated, null, 2), \"utf8\");\n return filePath;\n}\n\nasync function readCommitmentLedgerEntries(options: {\n memoryDir: string;\n commitmentLedgerDir?: string;\n}): Promise<{\n files: string[];\n entries: CommitmentLedgerEntry[];\n entryFiles: Array<{ entry: CommitmentLedgerEntry; filePath: string }>;\n invalidEntries: Array<{ path: string; error: string }>;\n}> {\n const rootDir = resolveCommitmentLedgerDir(options.memoryDir, options.commitmentLedgerDir);\n const files = await listJsonFiles(path.join(rootDir, \"entries\"));\n const entries: CommitmentLedgerEntry[] = [];\n const entryFiles: Array<{ entry: CommitmentLedgerEntry; filePath: string }> = [];\n const invalidEntries: Array<{ path: string; error: string }> = [];\n for (const filePath of files) {\n try {\n const entry = validateCommitmentLedgerEntry(await readJsonFile(filePath));\n entries.push(entry);\n entryFiles.push({ entry, filePath });\n } catch (error) {\n invalidEntries.push({\n path: filePath,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return { files, entries, entryFiles, invalidEntries };\n}\n\nfunction isResolvedState(state: CommitmentLedgerState): boolean {\n return state === \"fulfilled\" || state === \"cancelled\" || state === \"expired\";\n}\n\nfunction isOverdueOpenEntry(entry: CommitmentLedgerEntry, nowMs: number): boolean {\n return entry.state === \"open\" && typeof entry.dueAt === \"string\" && Date.parse(entry.dueAt) < nowMs;\n}\n\nfunction isStaleOpenEntry(entry: CommitmentLedgerEntry, nowMs: number, staleDays: number): boolean {\n if (entry.state !== \"open\") return false;\n if (typeof entry.dueAt === \"string\") return false;\n const staleCutoff = nowMs - staleDays * 24 * 60 * 60 * 1000;\n return Date.parse(entry.recordedAt) < staleCutoff;\n}\n\nfunction isDecayEligibleResolvedEntry(entry: CommitmentLedgerEntry, nowMs: number, decayDays: number): boolean {\n if (!isResolvedState(entry.state)) return false;\n const reference = entry.resolvedAt ?? entry.stateChangedAt ?? entry.recordedAt;\n const decayCutoff = nowMs - decayDays * 24 * 60 * 60 * 1000;\n return Date.parse(reference) < decayCutoff;\n}\n\nasync function findCommitmentLedgerEntryById(options: {\n memoryDir: string;\n commitmentLedgerDir?: string;\n entryId: string;\n}): Promise<{ entry: CommitmentLedgerEntry; filePath: string } | null> {\n const { entryFiles } = await readCommitmentLedgerEntries(options);\n for (const candidate of entryFiles) {\n if (candidate.entry.entryId === options.entryId || path.basename(candidate.filePath, \".json\") === options.entryId) {\n return candidate;\n }\n }\n return null;\n}\n\nexport async function transitionCommitmentLedgerEntryState(options: {\n memoryDir: string;\n commitmentLedgerDir?: string;\n entryId: string;\n nextState: CommitmentLedgerState;\n changedAt: string;\n}): Promise<CommitmentLedgerEntry> {\n const match = await findCommitmentLedgerEntryById(options);\n if (!match) {\n throw new Error(`commitment entry not found: ${options.entryId}`);\n }\n\n const changedAt = assertIsoRecordedAt(options.changedAt, \"changedAt\");\n const nextState = options.nextState;\n const nextEntry: CommitmentLedgerEntry = {\n ...match.entry,\n state: nextState,\n stateChangedAt: changedAt,\n resolvedAt: isResolvedState(nextState) ? changedAt : undefined,\n };\n\n await writeFile(match.filePath, JSON.stringify(validateCommitmentLedgerEntry(nextEntry), null, 2), \"utf8\");\n return nextEntry;\n}\n\nexport async function applyCommitmentLedgerLifecycle(options: {\n memoryDir: string;\n commitmentLedgerDir?: string;\n enabled: boolean;\n decayDays: number;\n now?: string;\n}): Promise<CommitmentLedgerLifecycleResult> {\n if (!options.enabled) {\n return { transitionedToExpired: [], deletedResolved: [] };\n }\n\n const nowIso = assertIsoRecordedAt(options.now ?? new Date().toISOString(), \"now\");\n const nowMs = Date.parse(nowIso);\n const { entryFiles } = await readCommitmentLedgerEntries(options);\n\n const transitionedToExpired: CommitmentLedgerEntry[] = [];\n const deletedResolved: CommitmentLedgerEntry[] = [];\n\n for (const { entry, filePath } of entryFiles) {\n\n if (isOverdueOpenEntry(entry, nowMs)) {\n const updated = validateCommitmentLedgerEntry({\n ...entry,\n state: \"expired\",\n stateChangedAt: nowIso,\n resolvedAt: nowIso,\n });\n await writeFile(filePath, JSON.stringify(updated, null, 2), \"utf8\");\n transitionedToExpired.push(updated);\n continue;\n }\n\n if (isDecayEligibleResolvedEntry(entry, nowMs, options.decayDays)) {\n await unlink(filePath);\n deletedResolved.push(entry);\n }\n }\n\n return { transitionedToExpired, deletedResolved };\n}\n\nexport async function getCommitmentLedgerStatus(options: {\n memoryDir: string;\n commitmentLedgerDir?: string;\n enabled: boolean;\n lifecycleEnabled?: boolean;\n staleDays?: number;\n decayDays?: number;\n now?: string;\n}): Promise<CommitmentLedgerStatus> {\n const rootDir = resolveCommitmentLedgerDir(options.memoryDir, options.commitmentLedgerDir);\n const entriesDir = path.join(rootDir, \"entries\");\n const { files, entries, invalidEntries } = await readCommitmentLedgerEntries(options);\n entries.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));\n const nowMs = Date.parse(assertIsoRecordedAt(options.now ?? new Date().toISOString(), \"now\"));\n const staleDays = Math.max(1, Math.floor(options.staleDays ?? 14));\n const decayDays = Math.max(1, Math.floor(options.decayDays ?? 90));\n\n const byKind: Partial<Record<CommitmentLedgerKind, number>> = {};\n const byState: Partial<Record<CommitmentLedgerState, number>> = {};\n for (const entry of entries) {\n byKind[entry.kind] = (byKind[entry.kind] ?? 0) + 1;\n byState[entry.state] = (byState[entry.state] ?? 0) + 1;\n }\n\n return {\n enabled: options.enabled,\n rootDir,\n entriesDir,\n entries: {\n total: files.length,\n valid: entries.length,\n invalid: invalidEntries.length,\n byKind,\n byState,\n latestEntryId: entries[0]?.entryId,\n latestRecordedAt: entries[0]?.recordedAt,\n latestSessionKey: entries[0]?.sessionKey,\n },\n latestEntry: entries[0],\n invalidEntries,\n lifecycle: options.lifecycleEnabled\n ? {\n overdueOpen: entries.filter((entry) => isOverdueOpenEntry(entry, nowMs)).length,\n staleOpen: entries.filter((entry) => isStaleOpenEntry(entry, nowMs, staleDays)).length,\n decayEligibleResolved: entries.filter((entry) => isDecayEligibleResolvedEntry(entry, nowMs, decayDays)).length,\n }\n : undefined,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,78 @@
1
+ import {
2
+ clamp01
3
+ } from "./chunk-QCCCQT3O.js";
4
+
5
+ // src/retrieval.ts
6
+ var DEFAULT_STOPWORDS = /* @__PURE__ */ new Set([
7
+ "a",
8
+ "an",
9
+ "and",
10
+ "are",
11
+ "as",
12
+ "at",
13
+ "be",
14
+ "but",
15
+ "by",
16
+ "for",
17
+ "from",
18
+ "has",
19
+ "have",
20
+ "i",
21
+ "in",
22
+ "is",
23
+ "it",
24
+ "of",
25
+ "on",
26
+ "or",
27
+ "that",
28
+ "the",
29
+ "this",
30
+ "to",
31
+ "was",
32
+ "were",
33
+ "with"
34
+ ]);
35
+ function tokenize(query, minTokenLen) {
36
+ return query.toLowerCase().split(/[^a-z0-9]+/g).map((t) => t.trim()).filter((t) => t.length >= minTokenLen).filter((t) => !DEFAULT_STOPWORDS.has(t));
37
+ }
38
+ function applyRuntimeRetrievalPolicy(base, runtime) {
39
+ const fromRuntime = runtime?.recencyWeight;
40
+ if (typeof fromRuntime !== "number") {
41
+ return { recencyWeight: clamp01(base.recencyWeight) };
42
+ }
43
+ return { recencyWeight: clamp01(fromRuntime) };
44
+ }
45
+ function expandQuery(query, options) {
46
+ const trimmed = query.trim();
47
+ if (!trimmed) return [query];
48
+ const maxQueries = Math.max(1, Math.min(20, options.maxQueries));
49
+ const tokens = tokenize(trimmed, options.minTokenLen);
50
+ const seen = /* @__PURE__ */ new Set();
51
+ const uniqTokens = [];
52
+ for (const t of tokens) {
53
+ if (seen.has(t)) continue;
54
+ seen.add(t);
55
+ uniqTokens.push(t);
56
+ }
57
+ const expansions = [query];
58
+ if (uniqTokens.length === 0) return expansions;
59
+ const top = uniqTokens.slice(0, 6);
60
+ const candidates = [
61
+ top.slice(0, 3).join(" "),
62
+ top.slice(0, 2).join(" "),
63
+ top[0],
64
+ top[1],
65
+ top[2]
66
+ ].filter(Boolean);
67
+ for (const c of candidates) {
68
+ if (expansions.length >= maxQueries) break;
69
+ if (c && !expansions.includes(c)) expansions.push(c);
70
+ }
71
+ return expansions.slice(0, maxQueries);
72
+ }
73
+
74
+ export {
75
+ applyRuntimeRetrievalPolicy,
76
+ expandQuery
77
+ };
78
+ //# sourceMappingURL=chunk-G3AG3KZN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/retrieval.ts"],"sourcesContent":["import { clamp01 } from \"./lifecycle.js\";\n\nexport interface QueryExpansionOptions {\n maxQueries: number;\n minTokenLen: number;\n}\n\nexport interface RuntimeRetrievalPolicy {\n recencyWeight?: number;\n}\n\nconst DEFAULT_STOPWORDS = new Set([\n \"a\",\n \"an\",\n \"and\",\n \"are\",\n \"as\",\n \"at\",\n \"be\",\n \"but\",\n \"by\",\n \"for\",\n \"from\",\n \"has\",\n \"have\",\n \"i\",\n \"in\",\n \"is\",\n \"it\",\n \"of\",\n \"on\",\n \"or\",\n \"that\",\n \"the\",\n \"this\",\n \"to\",\n \"was\",\n \"were\",\n \"with\",\n]);\n\nfunction tokenize(query: string, minTokenLen: number): string[] {\n return query\n .toLowerCase()\n .split(/[^a-z0-9]+/g)\n .map((t) => t.trim())\n .filter((t) => t.length >= minTokenLen)\n .filter((t) => !DEFAULT_STOPWORDS.has(t));\n}\n\nexport function applyRuntimeRetrievalPolicy(\n base: { recencyWeight: number },\n runtime: RuntimeRetrievalPolicy | null,\n): { recencyWeight: number } {\n const fromRuntime = runtime?.recencyWeight;\n if (typeof fromRuntime !== \"number\") {\n return { recencyWeight: clamp01(base.recencyWeight) };\n }\n return { recencyWeight: clamp01(fromRuntime) };\n}\n\n/**\n * Cheap, deterministic query expansion.\n * Produces additional queries biased toward the most salient tokens in the input.\n */\nexport function expandQuery(\n query: string,\n options: QueryExpansionOptions,\n): string[] {\n const trimmed = query.trim();\n if (!trimmed) return [query];\n\n const maxQueries = Math.max(1, Math.min(20, options.maxQueries));\n const tokens = tokenize(trimmed, options.minTokenLen);\n\n // Keep deterministic ordering: first-seen tokens win.\n const seen = new Set<string>();\n const uniqTokens: string[] = [];\n for (const t of tokens) {\n if (seen.has(t)) continue;\n seen.add(t);\n uniqTokens.push(t);\n }\n\n const expansions: string[] = [query];\n if (uniqTokens.length === 0) return expansions;\n\n const top = uniqTokens.slice(0, 6);\n\n const candidates = [\n top.slice(0, 3).join(\" \"),\n top.slice(0, 2).join(\" \"),\n top[0],\n top[1],\n top[2],\n ].filter(Boolean) as string[];\n\n for (const c of candidates) {\n if (expansions.length >= maxQueries) break;\n if (c && !expansions.includes(c)) expansions.push(c);\n }\n\n return expansions.slice(0, maxQueries);\n}\n"],"mappings":";;;;;AAWA,IAAM,oBAAoB,oBAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,SAAS,OAAe,aAA+B;AAC9D,SAAO,MACJ,YAAY,EACZ,MAAM,aAAa,EACnB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,CAAC,MAAM,EAAE,UAAU,WAAW,EACrC,OAAO,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;AAC5C;AAEO,SAAS,4BACd,MACA,SAC2B;AAC3B,QAAM,cAAc,SAAS;AAC7B,MAAI,OAAO,gBAAgB,UAAU;AACnC,WAAO,EAAE,eAAe,QAAQ,KAAK,aAAa,EAAE;AAAA,EACtD;AACA,SAAO,EAAE,eAAe,QAAQ,WAAW,EAAE;AAC/C;AAMO,SAAS,YACd,OACA,SACU;AACV,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,CAAC,QAAS,QAAO,CAAC,KAAK;AAE3B,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,UAAU,CAAC;AAC/D,QAAM,SAAS,SAAS,SAAS,QAAQ,WAAW;AAGpD,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,aAAuB,CAAC;AAC9B,aAAW,KAAK,QAAQ;AACtB,QAAI,KAAK,IAAI,CAAC,EAAG;AACjB,SAAK,IAAI,CAAC;AACV,eAAW,KAAK,CAAC;AAAA,EACnB;AAEA,QAAM,aAAuB,CAAC,KAAK;AACnC,MAAI,WAAW,WAAW,EAAG,QAAO;AAEpC,QAAM,MAAM,WAAW,MAAM,GAAG,CAAC;AAEjC,QAAM,aAAa;AAAA,IACjB,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,IACxB,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,IACxB,IAAI,CAAC;AAAA,IACL,IAAI,CAAC;AAAA,IACL,IAAI,CAAC;AAAA,EACP,EAAE,OAAO,OAAO;AAEhB,aAAW,KAAK,YAAY;AAC1B,QAAI,WAAW,UAAU,WAAY;AACrC,QAAI,KAAK,CAAC,WAAW,SAAS,CAAC,EAAG,YAAW,KAAK,CAAC;AAAA,EACrD;AAEA,SAAO,WAAW,MAAM,GAAG,UAAU;AACvC;","names":[]}
@@ -0,0 +1,61 @@
1
+ import {
2
+ log
3
+ } from "./chunk-KWBU5S5U.js";
4
+
5
+ // src/negative.ts
6
+ import { mkdir, readFile, writeFile } from "fs/promises";
7
+ import path from "path";
8
+ var NegativeExampleStore = class {
9
+ statePath;
10
+ state = {};
11
+ constructor(memoryDir) {
12
+ this.statePath = path.join(memoryDir, "state", "negative_examples.json");
13
+ }
14
+ async load() {
15
+ try {
16
+ const raw = await readFile(this.statePath, "utf-8");
17
+ const parsed = JSON.parse(raw);
18
+ if (parsed && typeof parsed === "object") this.state = parsed;
19
+ } catch {
20
+ this.state = {};
21
+ }
22
+ }
23
+ /**
24
+ * Record that a memory was retrieved but not useful for the user.
25
+ * This should be lightweight and never block agent execution.
26
+ */
27
+ async recordNotUseful(memoryIds, note) {
28
+ const now = (/* @__PURE__ */ new Date()).toISOString();
29
+ for (const memoryId of memoryIds) {
30
+ const existing = this.state[memoryId] ?? { notUseful: 0, lastUpdatedAt: now };
31
+ const next = {
32
+ notUseful: existing.notUseful + 1,
33
+ lastUpdatedAt: now,
34
+ notes: note ? [...(existing.notes ?? []).slice(-19), note] : existing.notes
35
+ };
36
+ this.state[memoryId] = next;
37
+ }
38
+ try {
39
+ await mkdir(path.dirname(this.statePath), { recursive: true });
40
+ await writeFile(this.statePath, JSON.stringify(this.state, null, 2), "utf-8");
41
+ } catch (err) {
42
+ log.debug(`negative example store write failed: ${err}`);
43
+ }
44
+ }
45
+ /**
46
+ * Convert negative examples into a small score penalty.
47
+ * Intended as a soft bias, not a hard filter.
48
+ */
49
+ penalty(memoryId, opts) {
50
+ const entry = this.state[memoryId];
51
+ if (!entry) return 0;
52
+ const hits = Math.min(10, entry.notUseful);
53
+ const raw = hits * opts.perHit;
54
+ return Math.min(opts.cap, raw);
55
+ }
56
+ };
57
+
58
+ export {
59
+ NegativeExampleStore
60
+ };
61
+ //# sourceMappingURL=chunk-GJR6D6KC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/negative.ts"],"sourcesContent":["import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { log } from \"./logger.js\";\n\nexport interface NegativeExampleEntry {\n notUseful: number;\n lastUpdatedAt: string;\n notes?: string[];\n}\n\ntype NegativeState = Record<string, NegativeExampleEntry>;\n\nexport class NegativeExampleStore {\n private readonly statePath: string;\n private state: NegativeState = {};\n\n constructor(memoryDir: string) {\n this.statePath = path.join(memoryDir, \"state\", \"negative_examples.json\");\n }\n\n async load(): Promise<void> {\n try {\n const raw = await readFile(this.statePath, \"utf-8\");\n const parsed = JSON.parse(raw) as NegativeState;\n if (parsed && typeof parsed === \"object\") this.state = parsed;\n } catch {\n this.state = {};\n }\n }\n\n /**\n * Record that a memory was retrieved but not useful for the user.\n * This should be lightweight and never block agent execution.\n */\n async recordNotUseful(memoryIds: string[], note?: string): Promise<void> {\n const now = new Date().toISOString();\n\n for (const memoryId of memoryIds) {\n const existing = this.state[memoryId] ?? { notUseful: 0, lastUpdatedAt: now };\n const next: NegativeExampleEntry = {\n notUseful: existing.notUseful + 1,\n lastUpdatedAt: now,\n notes: note\n ? [...(existing.notes ?? []).slice(-19), note]\n : existing.notes,\n };\n this.state[memoryId] = next;\n }\n\n try {\n await mkdir(path.dirname(this.statePath), { recursive: true });\n await writeFile(this.statePath, JSON.stringify(this.state, null, 2), \"utf-8\");\n } catch (err) {\n log.debug(`negative example store write failed: ${err}`);\n }\n }\n\n /**\n * Convert negative examples into a small score penalty.\n * Intended as a soft bias, not a hard filter.\n */\n penalty(memoryId: string, opts: { perHit: number; cap: number }): number {\n const entry = this.state[memoryId];\n if (!entry) return 0;\n\n // Cap effect to avoid runaway ranking distortion.\n const hits = Math.min(10, entry.notUseful);\n const raw = hits * opts.perHit;\n return Math.min(opts.cap, raw);\n }\n}\n\n"],"mappings":";;;;;AAAA,SAAS,OAAO,UAAU,iBAAiB;AAC3C,OAAO,UAAU;AAWV,IAAM,uBAAN,MAA2B;AAAA,EACf;AAAA,EACT,QAAuB,CAAC;AAAA,EAEhC,YAAY,WAAmB;AAC7B,SAAK,YAAY,KAAK,KAAK,WAAW,SAAS,wBAAwB;AAAA,EACzE;AAAA,EAEA,MAAM,OAAsB;AAC1B,QAAI;AACF,YAAM,MAAM,MAAM,SAAS,KAAK,WAAW,OAAO;AAClD,YAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,UAAI,UAAU,OAAO,WAAW,SAAU,MAAK,QAAQ;AAAA,IACzD,QAAQ;AACN,WAAK,QAAQ,CAAC;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,WAAqB,MAA8B;AACvE,UAAM,OAAM,oBAAI,KAAK,GAAE,YAAY;AAEnC,eAAW,YAAY,WAAW;AAChC,YAAM,WAAW,KAAK,MAAM,QAAQ,KAAK,EAAE,WAAW,GAAG,eAAe,IAAI;AAC5E,YAAM,OAA6B;AAAA,QACjC,WAAW,SAAS,YAAY;AAAA,QAChC,eAAe;AAAA,QACf,OAAO,OACH,CAAC,IAAI,SAAS,SAAS,CAAC,GAAG,MAAM,GAAG,GAAG,IAAI,IAC3C,SAAS;AAAA,MACf;AACA,WAAK,MAAM,QAAQ,IAAI;AAAA,IACzB;AAEA,QAAI;AACF,YAAM,MAAM,KAAK,QAAQ,KAAK,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAC7D,YAAM,UAAU,KAAK,WAAW,KAAK,UAAU,KAAK,OAAO,MAAM,CAAC,GAAG,OAAO;AAAA,IAC9E,SAAS,KAAK;AACZ,UAAI,MAAM,wCAAwC,GAAG,EAAE;AAAA,IACzD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,UAAkB,MAA+C;AACvE,UAAM,QAAQ,KAAK,MAAM,QAAQ;AACjC,QAAI,CAAC,MAAO,QAAO;AAGnB,UAAM,OAAO,KAAK,IAAI,IAAI,MAAM,SAAS;AACzC,UAAM,MAAM,OAAO,KAAK;AACxB,WAAO,KAAK,IAAI,KAAK,KAAK,GAAG;AAAA,EAC/B;AACF;","names":[]}