@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 @@
1
+ {"version":3,"sources":["../src/boxes.ts"],"sourcesContent":["/**\n * Memory Boxes + Trace Weaving (v8.0 Phase 2A)\n *\n * Implements the Membox concept: a sliding topic window that forms an \"open box\"\n * accumulating related memories. The box is sealed on topic shift or time gap,\n * then written to memory/boxes/YYYY-MM-DD/box-<id>.md.\n *\n * Trace Weaving links recurring topic boxes with a shared traceId so that\n * cross-session continuity on the same topics is preserved and discoverable.\n */\n\nimport { mkdir, writeFile, readFile, readdir } from \"node:fs/promises\";\nimport type { Dirent } from \"node:fs\";\nimport path from \"node:path\";\nimport { createHash } from \"node:crypto\";\nimport { log } from \"./logger.js\";\n\nexport const BOX_DIR = \"boxes\";\nconst STATE_DIR = \"state\";\nconst TRACES_FILE = \"traces.json\";\nconst OPEN_BOX_STATE_FILE = \"open-box.json\";\n\n// ── Types ─────────────────────────────────────────────────────────────────\n\nexport interface BoxFrontmatter {\n id: string;\n memoryKind: \"box\";\n createdAt: string;\n sealedAt: string;\n sealReason: SealReason;\n sessionKey?: string;\n topics: string[];\n memoryIds: string[];\n traceId?: string;\n /** High-level task goal for this episode (REMem-inspired). */\n goal?: string;\n /** Tools invoked during this episode. */\n toolsUsed?: string[];\n /** Episode outcome: success, failure, partial, or unknown. */\n outcome?: \"success\" | \"failure\" | \"partial\" | \"unknown\";\n}\n\nexport type SealReason = \"topic_shift\" | \"time_gap\" | \"max_memories\" | \"forced\" | \"flush\";\n\ninterface OpenBoxState {\n id: string;\n createdAt: string;\n lastActivityAt: string;\n topics: string[];\n memoryIds: string[];\n goal?: string;\n toolsUsed?: string[];\n}\n\ninterface TraceIndex {\n /** traceId → list of box IDs */\n traces: Record<string, string[]>;\n /** boxId → traceId */\n boxToTrace: Record<string, string>;\n /** traceId → canonical topic fingerprint for matching */\n traceTopics: Record<string, string[]>;\n /** traceId → ISO timestamp of last box added (for lookback filtering) */\n traceLastSeen: Record<string, string>;\n}\n\nexport interface BoxBuilderConfig {\n memoryBoxesEnabled: boolean;\n traceWeaverEnabled: boolean;\n /** Jaccard threshold below which topic shift triggers seal (0-1, default 0.35) */\n boxTopicShiftThreshold: number;\n /** Time gap in ms before sealing an open box (default 30 min) */\n boxTimeGapMs: number;\n /** Max memories in one box before forced seal */\n boxMaxMemories: number;\n /** Days back to look for trace links */\n traceWeaverLookbackDays: number;\n /** Minimum topic overlap to assign same traceId (0-1, default 0.4) */\n traceWeaverOverlapThreshold: number;\n}\n\ninterface ExtractionEvent {\n topics: string[];\n memoryIds: string[];\n timestamp: string;\n goal?: string;\n toolsUsed?: string[];\n}\n\n// ── Utility ───────────────────────────────────────────────────────────────\n\n/**\n * Jaccard similarity between two topic arrays.\n * Returns 0.0 for empty inputs.\n */\nexport function topicOverlapScore(a: string[], b: string[]): number {\n if (a.length === 0 || b.length === 0) return 0.0;\n const setA = new Set(a.map((t) => t.toLowerCase()));\n const setB = new Set(b.map((t) => t.toLowerCase()));\n const intersection = [...setA].filter((t) => setB.has(t)).length;\n const union = new Set([...setA, ...setB]).size;\n return union === 0 ? 0.0 : intersection / union;\n}\n\nfunction makeBoxId(): string {\n return `box-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;\n}\n\nfunction makeTraceId(topics: string[]): string {\n const key = topics.slice().sort().join(\",\");\n return `trace-${createHash(\"sha256\").update(key).digest(\"hex\").slice(0, 8)}`;\n}\n\n// ── Frontmatter serialization ──────────────────────────────────────────────\n\nfunction serializeBoxFrontmatter(fm: BoxFrontmatter): string {\n const lines = [\n \"---\",\n `id: ${fm.id}`,\n `memoryKind: ${fm.memoryKind}`,\n `createdAt: ${fm.createdAt}`,\n `sealedAt: ${fm.sealedAt}`,\n `sealReason: ${fm.sealReason}`,\n `topics: [${fm.topics.map((t) => `\"${t}\"`).join(\", \")}]`,\n `memoryIds: [${fm.memoryIds.map((m) => `\"${m}\"`).join(\", \")}]`,\n ];\n if (fm.sessionKey) lines.push(`sessionKey: ${fm.sessionKey}`);\n if (fm.traceId) lines.push(`traceId: ${fm.traceId}`);\n if (fm.goal) lines.push(`goal: ${fm.goal.replace(/[\\r\\n]+/g, \" \")}`);\n if (fm.toolsUsed?.length) lines.push(`toolsUsed: [${fm.toolsUsed.map((t) => `\"${t}\"`).join(\", \")}]`);\n if (fm.outcome) lines.push(`outcome: ${fm.outcome}`);\n lines.push(\"---\");\n return lines.join(\"\\n\");\n}\n\nexport function parseBoxFrontmatter(raw: string): BoxFrontmatter | null {\n const match = raw.match(/^---\\n([\\s\\S]*?)\\n---/);\n if (!match) return null;\n\n const fmBlock = match[1];\n const fm: Record<string, string> = {};\n for (const line of fmBlock.split(\"\\n\")) {\n const colonIdx = line.indexOf(\":\");\n if (colonIdx === -1) continue;\n fm[line.slice(0, colonIdx).trim()] = line.slice(colonIdx + 1).trim();\n }\n\n const parseArray = (val: string | undefined): string[] => {\n if (!val) return [];\n const m = val.match(/\\[(.*)]/);\n if (!m) return [];\n return m[1].split(\",\").map((s) => s.trim().replace(/^\"|\"$/g, \"\")).filter(Boolean);\n };\n\n const outcome = fm.outcome as BoxFrontmatter[\"outcome\"];\n return {\n id: fm.id ?? \"\",\n memoryKind: \"box\",\n createdAt: fm.createdAt ?? \"\",\n sealedAt: fm.sealedAt ?? \"\",\n sealReason: (fm.sealReason ?? \"forced\") as SealReason,\n sessionKey: fm.sessionKey,\n topics: parseArray(fm.topics),\n memoryIds: parseArray(fm.memoryIds),\n traceId: fm.traceId,\n goal: fm.goal || undefined,\n toolsUsed: fm.toolsUsed ? parseArray(fm.toolsUsed) : undefined,\n outcome: outcome && [\"success\", \"failure\", \"partial\", \"unknown\"].includes(outcome) ? outcome : undefined,\n };\n}\n\n// ── BoxBuilder ────────────────────────────────────────────────────────────\n\nexport class BoxBuilder {\n private baseDir: string;\n private cfg: BoxBuilderConfig;\n private openBox: OpenBoxState | null = null;\n private stateLoaded = false;\n\n constructor(baseDir: string, cfg: BoxBuilderConfig) {\n this.baseDir = baseDir;\n this.cfg = cfg;\n }\n\n private get boxBaseDir(): string {\n return path.join(this.baseDir, BOX_DIR);\n }\n\n private get stateDir(): string {\n return path.join(this.baseDir, STATE_DIR);\n }\n\n private get openBoxStatePath(): string {\n return path.join(this.stateDir, OPEN_BOX_STATE_FILE);\n }\n\n private get tracesPath(): string {\n return path.join(this.stateDir, TRACES_FILE);\n }\n\n // ── State persistence ────────────────────────────────────────────────────\n\n private async loadOpenBox(): Promise<void> {\n if (this.stateLoaded) return;\n this.stateLoaded = true;\n try {\n const raw = await readFile(this.openBoxStatePath, \"utf-8\");\n this.openBox = JSON.parse(raw) as OpenBoxState;\n } catch {\n this.openBox = null;\n }\n }\n\n private async saveOpenBox(): Promise<void> {\n await mkdir(this.stateDir, { recursive: true });\n if (this.openBox) {\n await writeFile(this.openBoxStatePath, JSON.stringify(this.openBox, null, 2), \"utf-8\");\n } else {\n // Clear open box state\n try { await writeFile(this.openBoxStatePath, \"null\", \"utf-8\"); } catch { /* ok */ }\n }\n }\n\n private async loadTraceIndex(): Promise<TraceIndex> {\n try {\n const raw = await readFile(this.tracesPath, \"utf-8\");\n const parsed = JSON.parse(raw) as TraceIndex;\n // Backfill missing field for indexes written before this field was added\n parsed.traceLastSeen ??= {};\n return parsed;\n } catch {\n return { traces: {}, boxToTrace: {}, traceTopics: {}, traceLastSeen: {} };\n }\n }\n\n private async saveTraceIndex(idx: TraceIndex): Promise<void> {\n try {\n await mkdir(this.stateDir, { recursive: true });\n await writeFile(this.tracesPath, JSON.stringify(idx, null, 2), \"utf-8\");\n } catch (err) {\n log.warn(`[engram/boxes] Failed to save trace index: ${(err as Error).message}`);\n }\n }\n\n // ── Core logic ────────────────────────────────────────────────────────────\n\n /**\n * Called after each extraction run.\n * Decides whether to seal the current open box and/or start a new one.\n */\n async onExtraction(event: ExtractionEvent): Promise<void> {\n if (!this.cfg.memoryBoxesEnabled) return;\n\n await this.loadOpenBox();\n\n const newTopics = event.topics.filter(Boolean);\n const now = new Date(event.timestamp);\n const nowMs = now.getTime();\n\n if (this.openBox) {\n // Check seal conditions\n const lastActivity = new Date(this.openBox.lastActivityAt).getTime();\n const timeGapMs = nowMs - lastActivity;\n const overlap = topicOverlapScore(this.openBox.topics, newTopics);\n const topicShifted = newTopics.length > 0 && overlap < this.cfg.boxTopicShiftThreshold;\n const timeExpired = timeGapMs >= this.cfg.boxTimeGapMs;\n const tooManyMemories =\n this.openBox.memoryIds.length + event.memoryIds.length > this.cfg.boxMaxMemories;\n\n if (tooManyMemories) {\n // Merge topics and add current batch then seal\n const topicSet = new Set([...this.openBox.topics, ...newTopics]);\n this.openBox.topics = [...topicSet];\n this.openBox.memoryIds.push(...event.memoryIds);\n if (event.toolsUsed?.length) {\n const toolSet = new Set([...(this.openBox.toolsUsed ?? []), ...event.toolsUsed]);\n this.openBox.toolsUsed = [...toolSet];\n }\n await this.sealCurrent(\"max_memories\");\n } else if (topicShifted) {\n await this.sealCurrent(\"topic_shift\");\n this.openBox = this.newBox(event, now.toISOString());\n await this.saveOpenBox();\n } else if (timeExpired) {\n await this.sealCurrent(\"time_gap\");\n this.openBox = this.newBox(event, now.toISOString());\n await this.saveOpenBox();\n } else {\n // Accumulate\n this.openBox.memoryIds.push(...event.memoryIds);\n // Merge new topics (union)\n const topicSet = new Set([...this.openBox.topics, ...newTopics]);\n this.openBox.topics = [...topicSet];\n this.openBox.lastActivityAt = now.toISOString();\n // Merge toolsUsed (union)\n if (event.toolsUsed?.length) {\n const toolSet = new Set([...(this.openBox.toolsUsed ?? []), ...event.toolsUsed]);\n this.openBox.toolsUsed = [...toolSet];\n }\n await this.saveOpenBox();\n }\n } else {\n // No open box — start one\n this.openBox = this.newBox(event, now.toISOString());\n // If this initial batch already exceeds max, seal immediately\n if (this.openBox.memoryIds.length > this.cfg.boxMaxMemories) {\n await this.sealCurrent(\"max_memories\");\n } else {\n await this.saveOpenBox();\n }\n }\n }\n\n private newBox(event: ExtractionEvent, ts: string): OpenBoxState {\n return {\n id: makeBoxId(),\n createdAt: ts,\n lastActivityAt: ts,\n topics: event.topics.filter(Boolean),\n memoryIds: [...event.memoryIds],\n goal: event.goal,\n toolsUsed: event.toolsUsed?.length ? [...event.toolsUsed] : undefined,\n };\n }\n\n /**\n * Seal the current open box and write it to disk.\n * Also runs trace weaving if enabled.\n */\n async sealCurrent(reason: SealReason): Promise<string | null> {\n await this.loadOpenBox();\n if (!this.openBox) return null;\n\n const box = this.openBox;\n this.openBox = null;\n\n if (box.memoryIds.length === 0 && box.topics.length === 0) {\n await this.saveOpenBox();\n return null;\n }\n\n const sealedAt = new Date().toISOString();\n const day = sealedAt.slice(0, 10);\n const dir = path.join(this.boxBaseDir, day);\n await mkdir(dir, { recursive: true });\n\n let traceId: string | undefined;\n if (this.cfg.traceWeaverEnabled && box.topics.length > 0) {\n traceId = await this.resolveTrace(box.id, box.topics);\n }\n\n const fm: BoxFrontmatter = {\n id: box.id,\n memoryKind: \"box\",\n createdAt: box.createdAt,\n sealedAt,\n sealReason: reason,\n topics: box.topics,\n memoryIds: box.memoryIds,\n traceId,\n goal: box.goal,\n toolsUsed: box.toolsUsed?.length ? box.toolsUsed : undefined,\n outcome: \"unknown\",\n };\n\n const content = `${serializeBoxFrontmatter(fm)}\\n\\n<!-- Topics: ${box.topics.join(\", \")} | Memories: ${box.memoryIds.length} -->\\n`;\n const filePath = path.join(dir, `${box.id}.md`);\n await writeFile(filePath, content, \"utf-8\");\n log.debug(`[boxes] sealed box ${box.id} (${reason}): ${box.memoryIds.length} memories, topics=[${box.topics.join(\",\")}]`);\n\n await this.saveOpenBox();\n return box.id;\n }\n\n // ── Trace Weaving ─────────────────────────────────────────────────────────\n\n /**\n * Find an existing trace that matches box topics, or create a new trace.\n * Returns the traceId to assign to this box.\n */\n private async resolveTrace(boxId: string, topics: string[]): Promise<string> {\n const idx = await this.loadTraceIndex();\n\n // Filter to traces active within the lookback window\n const lookbackMs = this.cfg.traceWeaverLookbackDays * 24 * 60 * 60 * 1000;\n const cutoff = new Date(Date.now() - lookbackMs);\n\n let bestTraceId: string | undefined;\n let bestScore = 0;\n\n for (const [tid, traceTopics] of Object.entries(idx.traceTopics)) {\n const lastSeen = idx.traceLastSeen[tid];\n if (lastSeen && new Date(lastSeen) < cutoff) continue; // outside lookback window\n const score = topicOverlapScore(topics, traceTopics);\n if (score >= this.cfg.traceWeaverOverlapThreshold && score > bestScore) {\n bestScore = score;\n bestTraceId = tid;\n }\n }\n\n const traceId = bestTraceId ?? makeTraceId(topics);\n const now = new Date().toISOString();\n\n // Update trace index\n if (!idx.traces[traceId]) idx.traces[traceId] = [];\n idx.traces[traceId].push(boxId);\n idx.boxToTrace[boxId] = traceId;\n idx.traceLastSeen[traceId] = now;\n\n // Update canonical topics for this trace (merge)\n if (idx.traceTopics[traceId]) {\n const merged = new Set([...idx.traceTopics[traceId], ...topics]);\n idx.traceTopics[traceId] = [...merged];\n } else {\n idx.traceTopics[traceId] = [...topics];\n }\n\n await this.saveTraceIndex(idx);\n return traceId;\n }\n\n // ── Recall ────────────────────────────────────────────────────────────────\n\n /**\n * Read all sealed boxes from the last N days for recall injection.\n */\n async readRecentBoxes(days: number): Promise<BoxFrontmatter[]> {\n const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000);\n const cutoffDateStr = cutoff.toISOString().slice(0, 10); // \"YYYY-MM-DD\"\n\n let topEntries: Dirent<string>[];\n try {\n topEntries = await readdir(this.boxBaseDir, { withFileTypes: true, encoding: \"utf-8\" });\n } catch {\n return [];\n }\n\n // Filter day directories by name (YYYY-MM-DD) — skip dirs older than cutoff\n // without reading a single file from them.\n const recentDirs = topEntries\n .filter((e) => e.isDirectory() && /^\\d{4}-\\d{2}-\\d{2}$/.test(e.name) && e.name >= cutoffDateStr)\n .map((e) => path.join(this.boxBaseDir, e.name));\n\n // Also include legacy flat entries at the root level (non-date dirs and .md files)\n const legacyEntries = topEntries.filter(\n (e) => !e.isDirectory() || !/^\\d{4}-\\d{2}-\\d{2}$/.test(e.name),\n );\n\n // Read all files in each recent day directory in parallel (per dir)\n const boxes: BoxFrontmatter[] = [];\n\n const readDir = async (dir: string) => {\n let files: string[];\n try {\n files = (await readdir(dir)).filter((f) => f.endsWith(\".md\"));\n } catch {\n return;\n }\n const results = await Promise.all(\n files.map(async (f) => {\n try {\n const raw = await readFile(path.join(dir, f), \"utf-8\");\n const parsed = parseBoxFrontmatter(raw);\n return parsed && new Date(parsed.sealedAt) >= cutoff ? parsed : null;\n } catch {\n return null;\n }\n }),\n );\n for (const r of results) {\n if (r !== null) boxes.push(r);\n }\n };\n\n // Day dirs in parallel\n await Promise.all(recentDirs.map(readDir));\n\n // Legacy non-date entries (walk sub-dirs sequentially but read files in parallel)\n for (const e of legacyEntries) {\n const full = path.join(this.boxBaseDir, e.name);\n if (e.isDirectory()) {\n await readDir(full);\n } else if (e.name.endsWith(\".md\")) {\n try {\n const raw = await readFile(full, \"utf-8\");\n const parsed = parseBoxFrontmatter(raw);\n if (parsed && new Date(parsed.sealedAt) >= cutoff) boxes.push(parsed);\n } catch { /* corrupt file — skip */ }\n }\n }\n\n // Sort newest-first so slice(0, N) gives the most recent boxes\n boxes.sort((a, b) => new Date(b.sealedAt).getTime() - new Date(a.sealedAt).getTime());\n return boxes;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,41 @@
1
+ // src/sanitize.ts
2
+ var INJECTION_PATTERNS = [
3
+ /ignore\s+(all\s+)?(previous|prior|above)\s+(instructions?|prompts?|context)/i,
4
+ /forget\s+(everything|all|previous|what)/i,
5
+ /new\s+(system\s+)?prompt:/i,
6
+ /\[system\]/i,
7
+ /<\s*system\s*>/i,
8
+ /you\s+are\s+now\s+(?!called|named)/i,
9
+ /disregard\s+(all\s+)?(previous|prior)/i,
10
+ /override\s+(previous\s+)?(instructions?|prompt)/i,
11
+ /act\s+as\s+(?:an?\s+)?(?:AI|assistant|ChatGPT|GPT|Claude|LLM)\s+(?:without|that\s+ignores)/i,
12
+ /do\s+not\s+(?:follow|obey)\s+(?:previous|prior|your)\s+instructions/i,
13
+ /pretend\s+(?:you\s+)?(?:have\s+no|you\s+don.?t\s+have)\s+(restrictions|guidelines|rules)/i
14
+ ];
15
+ var REDACTED_PLACEHOLDER = "[content removed: possible prompt injection]";
16
+ function sanitizeMemoryContent(text) {
17
+ const source = typeof text === "string" ? text : "";
18
+ const violations = [];
19
+ for (const pattern of INJECTION_PATTERNS) {
20
+ if (pattern.test(source)) {
21
+ violations.push(pattern.source);
22
+ }
23
+ }
24
+ if (violations.length === 0) {
25
+ return { clean: true, text: source, violations: [] };
26
+ }
27
+ return {
28
+ clean: false,
29
+ text: REDACTED_PLACEHOLDER,
30
+ violations
31
+ };
32
+ }
33
+ function isSafeMemoryContent(text) {
34
+ return sanitizeMemoryContent(text).clean;
35
+ }
36
+
37
+ export {
38
+ sanitizeMemoryContent,
39
+ isSafeMemoryContent
40
+ };
41
+ //# sourceMappingURL=chunk-M62O4P4T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sanitize.ts"],"sourcesContent":["const INJECTION_PATTERNS: RegExp[] = [\n /ignore\\s+(all\\s+)?(previous|prior|above)\\s+(instructions?|prompts?|context)/i,\n /forget\\s+(everything|all|previous|what)/i,\n /new\\s+(system\\s+)?prompt:/i,\n /\\[system\\]/i,\n /<\\s*system\\s*>/i,\n /you\\s+are\\s+now\\s+(?!called|named)/i,\n /disregard\\s+(all\\s+)?(previous|prior)/i,\n /override\\s+(previous\\s+)?(instructions?|prompt)/i,\n /act\\s+as\\s+(?:an?\\s+)?(?:AI|assistant|ChatGPT|GPT|Claude|LLM)\\s+(?:without|that\\s+ignores)/i,\n /do\\s+not\\s+(?:follow|obey)\\s+(?:previous|prior|your)\\s+instructions/i,\n /pretend\\s+(?:you\\s+)?(?:have\\s+no|you\\s+don.?t\\s+have)\\s+(restrictions|guidelines|rules)/i,\n];\n\nexport type SanitizeResult = {\n clean: boolean;\n text: string;\n violations: string[];\n};\n\nconst REDACTED_PLACEHOLDER = \"[content removed: possible prompt injection]\";\n\nexport function sanitizeMemoryContent(text: string): SanitizeResult {\n const source = typeof text === \"string\" ? text : \"\";\n const violations: string[] = [];\n\n for (const pattern of INJECTION_PATTERNS) {\n if (pattern.test(source)) {\n violations.push(pattern.source);\n }\n }\n\n if (violations.length === 0) {\n return { clean: true, text: source, violations: [] };\n }\n\n return {\n clean: false,\n text: REDACTED_PLACEHOLDER,\n violations,\n };\n}\n\nexport function isSafeMemoryContent(text: string): boolean {\n return sanitizeMemoryContent(text).clean;\n}\n\n"],"mappings":";AAAA,IAAM,qBAA+B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQA,IAAM,uBAAuB;AAEtB,SAAS,sBAAsB,MAA8B;AAClE,QAAM,SAAS,OAAO,SAAS,WAAW,OAAO;AACjD,QAAM,aAAuB,CAAC;AAE9B,aAAW,WAAW,oBAAoB;AACxC,QAAI,QAAQ,KAAK,MAAM,GAAG;AACxB,iBAAW,KAAK,QAAQ,MAAM;AAAA,IAChC;AAAA,EACF;AAEA,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,YAAY,CAAC,EAAE;AAAA,EACrD;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,MAAuB;AACzD,SAAO,sBAAsB,IAAI,EAAE;AACrC;","names":[]}
@@ -0,0 +1,48 @@
1
+ // src/runtime/env.ts
2
+ import os from "os";
3
+ var REMNIC_ENGRAM_PREFIX_PAIRS = [
4
+ ["REMNIC_", "ENGRAM_"],
5
+ ["ENGRAM_", "REMNIC_"]
6
+ ];
7
+ function getEnvMap() {
8
+ const runtimeProcess = globalThis.process;
9
+ return runtimeProcess?.["env"];
10
+ }
11
+ function legacyEnvCandidates(name) {
12
+ const candidates = [name];
13
+ for (const [primary, legacy] of REMNIC_ENGRAM_PREFIX_PAIRS) {
14
+ if (name.startsWith(primary)) {
15
+ candidates.push(`${legacy}${name.slice(primary.length)}`);
16
+ }
17
+ }
18
+ return candidates;
19
+ }
20
+ function readEnvVar(name) {
21
+ const env = getEnvMap();
22
+ for (const candidate of legacyEnvCandidates(name)) {
23
+ const value = env?.[candidate];
24
+ if (typeof value === "string") return value;
25
+ }
26
+ return void 0;
27
+ }
28
+ function resolveHomeDir() {
29
+ return readEnvVar("HOME") || os.homedir();
30
+ }
31
+ function cloneEnv() {
32
+ return { ...getEnvMap() ?? {} };
33
+ }
34
+ function mergeEnv(overrides) {
35
+ const merged = cloneEnv();
36
+ for (const [key, value] of Object.entries(overrides)) {
37
+ if (typeof value === "string") merged[key] = value;
38
+ else delete merged[key];
39
+ }
40
+ return merged;
41
+ }
42
+
43
+ export {
44
+ readEnvVar,
45
+ resolveHomeDir,
46
+ mergeEnv
47
+ };
48
+ //# sourceMappingURL=chunk-MARWOCVP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/runtime/env.ts"],"sourcesContent":["import os from \"node:os\";\n\ntype EnvMap = Record<string, string | undefined>;\nconst REMNIC_ENGRAM_PREFIX_PAIRS: Array<[string, string]> = [\n [\"REMNIC_\", \"ENGRAM_\"],\n [\"ENGRAM_\", \"REMNIC_\"],\n];\n\nfunction getEnvMap(): EnvMap | undefined {\n const runtimeProcess = globalThis.process as { env?: EnvMap } | undefined;\n return runtimeProcess?.[\"env\"];\n}\n\nfunction legacyEnvCandidates(name: string): string[] {\n const candidates = [name];\n for (const [primary, legacy] of REMNIC_ENGRAM_PREFIX_PAIRS) {\n if (name.startsWith(primary)) {\n candidates.push(`${legacy}${name.slice(primary.length)}`);\n }\n }\n return candidates;\n}\n\nexport function readEnvVar(name: string): string | undefined {\n const env = getEnvMap();\n for (const candidate of legacyEnvCandidates(name)) {\n const value = env?.[candidate];\n if (typeof value === \"string\") return value;\n }\n return undefined;\n}\n\nexport function resolveHomeDir(): string {\n return readEnvVar(\"HOME\") || os.homedir();\n}\n\nfunction cloneEnv(): NodeJS.ProcessEnv {\n return { ...(getEnvMap() ?? {}) };\n}\n\nexport function mergeEnv(overrides: Record<string, string | undefined>): NodeJS.ProcessEnv {\n const merged = cloneEnv();\n for (const [key, value] of Object.entries(overrides)) {\n if (typeof value === \"string\") merged[key] = value;\n else delete merged[key];\n }\n return merged;\n}\n"],"mappings":";AAAA,OAAO,QAAQ;AAGf,IAAM,6BAAsD;AAAA,EAC1D,CAAC,WAAW,SAAS;AAAA,EACrB,CAAC,WAAW,SAAS;AACvB;AAEA,SAAS,YAAgC;AACvC,QAAM,iBAAiB,WAAW;AAClC,SAAO,iBAAiB,KAAK;AAC/B;AAEA,SAAS,oBAAoB,MAAwB;AACnD,QAAM,aAAa,CAAC,IAAI;AACxB,aAAW,CAAC,SAAS,MAAM,KAAK,4BAA4B;AAC1D,QAAI,KAAK,WAAW,OAAO,GAAG;AAC5B,iBAAW,KAAK,GAAG,MAAM,GAAG,KAAK,MAAM,QAAQ,MAAM,CAAC,EAAE;AAAA,IAC1D;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,WAAW,MAAkC;AAC3D,QAAM,MAAM,UAAU;AACtB,aAAW,aAAa,oBAAoB,IAAI,GAAG;AACjD,UAAM,QAAQ,MAAM,SAAS;AAC7B,QAAI,OAAO,UAAU,SAAU,QAAO;AAAA,EACxC;AACA,SAAO;AACT;AAEO,SAAS,iBAAyB;AACvC,SAAO,WAAW,MAAM,KAAK,GAAG,QAAQ;AAC1C;AAEA,SAAS,WAA8B;AACrC,SAAO,EAAE,GAAI,UAAU,KAAK,CAAC,EAAG;AAClC;AAEO,SAAS,SAAS,WAAkE;AACzF,QAAM,SAAS,SAAS;AACxB,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,SAAS,GAAG;AACpD,QAAI,OAAO,UAAU,SAAU,QAAO,GAAG,IAAI;AAAA,QACxC,QAAO,OAAO,GAAG;AAAA,EACxB;AACA,SAAO;AACT;","names":[]}