@remnic/core 1.1.11 → 1.1.13

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 (1462) hide show
  1. package/README.md +3 -3
  2. package/dist/access-cli.d.ts +2 -1
  3. package/dist/access-cli.js +293 -104
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +31 -62
  6. package/dist/access-http.js +53 -35
  7. package/dist/access-mcp.d.ts +31 -8
  8. package/dist/access-mcp.js +45 -34
  9. package/dist/access-schema.d.ts +197 -14
  10. package/dist/access-schema.js +16 -5
  11. package/dist/access-service-DcCDmNYC.d.ts +1542 -0
  12. package/dist/access-service.d.ts +30 -9
  13. package/dist/access-service.js +42 -32
  14. package/dist/action-confidence.d.ts +83 -0
  15. package/dist/action-confidence.js +22 -0
  16. package/dist/active-memory-bridge.d.ts +1 -1
  17. package/dist/active-memory-bridge.js +2 -2
  18. package/dist/active-recall.d.ts +1 -1
  19. package/dist/active-recall.js +11 -3
  20. package/dist/active-recall.js.map +1 -1
  21. package/dist/adapters/claude-code.d.ts +24 -0
  22. package/dist/adapters/claude-code.js +9 -0
  23. package/dist/adapters/codex.d.ts +25 -0
  24. package/dist/adapters/codex.js +9 -0
  25. package/dist/adapters/hermes.d.ts +35 -0
  26. package/dist/adapters/hermes.js +9 -0
  27. package/dist/adapters/index.d.ts +6 -0
  28. package/dist/adapters/index.js +26 -0
  29. package/dist/adapters/registry.d.ts +20 -0
  30. package/dist/adapters/registry.js +13 -0
  31. package/dist/adapters/replit.d.ts +28 -0
  32. package/dist/adapters/replit.js +9 -0
  33. package/dist/adapters/types.d.ts +43 -0
  34. package/dist/adapters/types.js +8 -0
  35. package/dist/behavior-learner.d.ts +1 -1
  36. package/dist/behavior-signals.d.ts +1 -1
  37. package/dist/bootstrap.d.ts +23 -6
  38. package/dist/boxes.d.ts +7 -0
  39. package/dist/boxes.js +1 -1
  40. package/dist/briefing.d.ts +5 -3
  41. package/dist/briefing.js +10 -7
  42. package/dist/buffer-surprise-report.d.ts +1 -1
  43. package/dist/buffer-surprise-report.js +1 -1
  44. package/dist/buffer.d.ts +18 -4
  45. package/dist/buffer.js +1 -1
  46. package/dist/calibration.d.ts +1 -1
  47. package/dist/calibration.js +6 -6
  48. package/dist/capsule-cli.d.ts +4 -4
  49. package/dist/capsule-cli.js +1 -1
  50. package/dist/capsule-crypto-5CYAGVC5.js +18 -0
  51. package/dist/capsule-merge-4MGKE7C5.js +189 -0
  52. package/dist/causal-behavior.d.ts +9 -29
  53. package/dist/causal-behavior.js +6 -3
  54. package/dist/causal-behavior.js.map +1 -1
  55. package/dist/causal-chain.js +3 -2
  56. package/dist/causal-consolidation.d.ts +2 -2
  57. package/dist/causal-consolidation.js +28 -17
  58. package/dist/causal-consolidation.js.map +1 -1
  59. package/dist/causal-retrieval.js +3 -3
  60. package/dist/causal-trajectory.js +1 -1
  61. package/dist/chunk-25MQ7IHJ.js +427 -0
  62. package/dist/chunk-25MQ7IHJ.js.map +1 -0
  63. package/dist/chunk-2F2W355T.js +256 -0
  64. package/dist/chunk-2F2W355T.js.map +1 -0
  65. package/dist/chunk-2KI4QFHU.js +228 -0
  66. package/dist/chunk-2KI4QFHU.js.map +1 -0
  67. package/dist/chunk-2PRQG7PV.js +86 -0
  68. package/dist/chunk-2PRQG7PV.js.map +1 -0
  69. package/dist/chunk-2QR3XXIC.js +2272 -0
  70. package/dist/chunk-2QR3XXIC.js.map +1 -0
  71. package/dist/chunk-2WWLHTZY.js +121 -0
  72. package/dist/chunk-326G7DJK.js +2185 -0
  73. package/dist/chunk-326G7DJK.js.map +1 -0
  74. package/dist/chunk-34DQE4KF.js +174 -0
  75. package/dist/chunk-34DQE4KF.js.map +1 -0
  76. package/dist/chunk-3APJ5EVB.js +601 -0
  77. package/dist/chunk-3APJ5EVB.js.map +1 -0
  78. package/dist/chunk-3HPAPHUK.js +51 -0
  79. package/dist/chunk-3HPAPHUK.js.map +1 -0
  80. package/dist/chunk-3JXBXXM2.js +69 -0
  81. package/dist/chunk-3JXBXXM2.js.map +1 -0
  82. package/dist/chunk-3KW65B36.js +681 -0
  83. package/dist/chunk-3KW65B36.js.map +1 -0
  84. package/dist/chunk-3UXOZBHV.js +20 -0
  85. package/dist/chunk-3UXOZBHV.js.map +1 -0
  86. package/dist/chunk-3VAL7ZL2.js +266 -0
  87. package/dist/chunk-3VAL7ZL2.js.map +1 -0
  88. package/dist/chunk-3Y4P7RXM.js +31 -0
  89. package/dist/chunk-3Y4P7RXM.js.map +1 -0
  90. package/dist/chunk-47VWKCAF.js +273 -0
  91. package/dist/chunk-47VWKCAF.js.map +1 -0
  92. package/dist/chunk-4CRG46BG.js +271 -0
  93. package/dist/chunk-4RA3C3EV.js +60 -0
  94. package/dist/chunk-4RA3C3EV.js.map +1 -0
  95. package/dist/chunk-5375UYTQ.js +914 -0
  96. package/dist/chunk-5375UYTQ.js.map +1 -0
  97. package/dist/chunk-56K5QLHX.js +506 -0
  98. package/dist/chunk-56K5QLHX.js.map +1 -0
  99. package/dist/chunk-5NXIJZFX.js +180 -0
  100. package/dist/chunk-5NXIJZFX.js.map +1 -0
  101. package/dist/chunk-5RGLBDQF.js +596 -0
  102. package/dist/chunk-5RGLBDQF.js.map +1 -0
  103. package/dist/chunk-5UZXUTVO.js +9 -0
  104. package/dist/chunk-5UZXUTVO.js.map +1 -0
  105. package/dist/chunk-65PG43EQ.js +105 -0
  106. package/dist/chunk-65PG43EQ.js.map +1 -0
  107. package/dist/chunk-66DHUKLO.js +57 -0
  108. package/dist/chunk-66DHUKLO.js.map +1 -0
  109. package/dist/chunk-6FC5EGNV.js +46 -0
  110. package/dist/chunk-6FC5EGNV.js.map +1 -0
  111. package/dist/chunk-6H2TESSP.js +62 -0
  112. package/dist/chunk-6H2TESSP.js.map +1 -0
  113. package/dist/chunk-6LVVDPJ4.js +32 -0
  114. package/dist/chunk-6LVVDPJ4.js.map +1 -0
  115. package/dist/chunk-6NKAQ74D.js +2237 -0
  116. package/dist/chunk-6NKAQ74D.js.map +1 -0
  117. package/dist/chunk-6RVI47ZR.js +159 -0
  118. package/dist/chunk-6RVI47ZR.js.map +1 -0
  119. package/dist/chunk-7AAT6G4Q.js +5117 -0
  120. package/dist/chunk-7AAT6G4Q.js.map +1 -0
  121. package/dist/chunk-7DTASS5T.js +29 -0
  122. package/dist/chunk-7DTASS5T.js.map +1 -0
  123. package/dist/chunk-7IASACLB.js +596 -0
  124. package/dist/chunk-7MNMYOFP.js +32 -0
  125. package/dist/chunk-7MNMYOFP.js.map +1 -0
  126. package/dist/chunk-7N4KAIGN.js +133 -0
  127. package/dist/chunk-7N4KAIGN.js.map +1 -0
  128. package/dist/chunk-7OZ53EXP.js +101 -0
  129. package/dist/chunk-7OZ53EXP.js.map +1 -0
  130. package/dist/chunk-7XYTQGCC.js +134 -0
  131. package/dist/chunk-7XYTQGCC.js.map +1 -0
  132. package/dist/chunk-A2XUIMJ3.js +341 -0
  133. package/dist/chunk-A2XUIMJ3.js.map +1 -0
  134. package/dist/chunk-AC5LO7IU.js +308 -0
  135. package/dist/chunk-AC5LO7IU.js.map +1 -0
  136. package/dist/chunk-AGZQD76C.js +201 -0
  137. package/dist/chunk-AGZQD76C.js.map +1 -0
  138. package/dist/chunk-AH2JUU6X.js +336 -0
  139. package/dist/chunk-AH2JUU6X.js.map +1 -0
  140. package/dist/chunk-APO3DCMU.js +361 -0
  141. package/dist/chunk-APO3DCMU.js.map +1 -0
  142. package/dist/chunk-BFBF3XEF.js +283 -0
  143. package/dist/chunk-BFBF3XEF.js.map +1 -0
  144. package/dist/chunk-BJ3KMYTB.js +1974 -0
  145. package/dist/chunk-BJ3KMYTB.js.map +1 -0
  146. package/dist/chunk-C5BCH4ZS.js +317 -0
  147. package/dist/chunk-C5BCH4ZS.js.map +1 -0
  148. package/dist/chunk-CHEL3SKB.js +6758 -0
  149. package/dist/chunk-CHEL3SKB.js.map +1 -0
  150. package/dist/chunk-CQZRLNMV.js +1491 -0
  151. package/dist/chunk-CQZRLNMV.js.map +1 -0
  152. package/dist/chunk-D46YSIYX.js +892 -0
  153. package/dist/chunk-D46YSIYX.js.map +1 -0
  154. package/dist/chunk-DB5A3NHS.js +906 -0
  155. package/dist/chunk-DB5A3NHS.js.map +1 -0
  156. package/dist/chunk-DINWEURR.js +648 -0
  157. package/dist/chunk-DINWEURR.js.map +1 -0
  158. package/dist/chunk-DK5LDEQM.js +530 -0
  159. package/dist/chunk-DK5LDEQM.js.map +1 -0
  160. package/dist/chunk-DOM4GKSW.js +34 -0
  161. package/dist/chunk-DOM4GKSW.js.map +1 -0
  162. package/dist/chunk-EDTHC6UD.js +1075 -0
  163. package/dist/chunk-EDTHC6UD.js.map +1 -0
  164. package/dist/chunk-EFJ3MQ4V.js +721 -0
  165. package/dist/chunk-EHRTFRWW.js +89 -0
  166. package/dist/chunk-EHRTFRWW.js.map +1 -0
  167. package/dist/chunk-FAJ7FZYM.js +11 -0
  168. package/dist/chunk-FAJ7FZYM.js.map +1 -0
  169. package/dist/chunk-FBYESMQ2.js +570 -0
  170. package/dist/chunk-FBYESMQ2.js.map +1 -0
  171. package/dist/chunk-FDU6HUUL.js +147 -0
  172. package/dist/chunk-FF4KLI5W.js +99 -0
  173. package/dist/chunk-FF4KLI5W.js.map +1 -0
  174. package/dist/chunk-FIT6DMX6.js +310 -0
  175. package/dist/chunk-FIT6DMX6.js.map +1 -0
  176. package/dist/chunk-FJ43PRLT.js +272 -0
  177. package/dist/chunk-FJ43PRLT.js.map +1 -0
  178. package/dist/chunk-FKFMOY3N.js +32 -0
  179. package/dist/chunk-FKFMOY3N.js.map +1 -0
  180. package/dist/chunk-FLTNHQK6.js +262 -0
  181. package/dist/chunk-FLTNHQK6.js.map +1 -0
  182. package/dist/chunk-GA454ALV.js +12436 -0
  183. package/dist/chunk-GA454ALV.js.map +1 -0
  184. package/dist/chunk-GGKRUQOO.js +228 -0
  185. package/dist/chunk-GIF42EW3.js +63 -0
  186. package/dist/chunk-GIF42EW3.js.map +1 -0
  187. package/dist/chunk-GL6I6MEQ.js +647 -0
  188. package/dist/chunk-H3ME6L6D.js +709 -0
  189. package/dist/chunk-H3ME6L6D.js.map +1 -0
  190. package/dist/chunk-HHLLAQGZ.js +1 -0
  191. package/dist/chunk-HXXBL2KD.js +2040 -0
  192. package/dist/chunk-I5V2VDIW.js +219 -0
  193. package/dist/chunk-I5V2VDIW.js.map +1 -0
  194. package/dist/chunk-I6K5FBRQ.js +35 -0
  195. package/dist/chunk-I6K5FBRQ.js.map +1 -0
  196. package/dist/chunk-ICRIXAP2.js +121 -0
  197. package/dist/chunk-ICRIXAP2.js.map +1 -0
  198. package/dist/chunk-J4EB7DNW.js +11 -0
  199. package/dist/chunk-J4EB7DNW.js.map +1 -0
  200. package/dist/chunk-JLFA7DQG.js +62 -0
  201. package/dist/chunk-JLFA7DQG.js.map +1 -0
  202. package/dist/chunk-KJTKLXTH.js +9 -0
  203. package/dist/chunk-KJTKLXTH.js.map +1 -0
  204. package/dist/chunk-KLAO5DGL.js +917 -0
  205. package/dist/chunk-KLAO5DGL.js.map +1 -0
  206. package/dist/chunk-KNKUID7G.js +183 -0
  207. package/dist/chunk-KOSORCJG.js +624 -0
  208. package/dist/chunk-KOSORCJG.js.map +1 -0
  209. package/dist/chunk-KUJVMMZQ.js +1262 -0
  210. package/dist/chunk-KUJVMMZQ.js.map +1 -0
  211. package/dist/chunk-LCR46JY5.js +123 -0
  212. package/dist/chunk-LCR46JY5.js.map +1 -0
  213. package/dist/chunk-LLQ2LLWF.js +148 -0
  214. package/dist/chunk-LLQ2LLWF.js.map +1 -0
  215. package/dist/chunk-LPMVBPA3.js +236 -0
  216. package/dist/chunk-LT3NLYSI.js +50 -0
  217. package/dist/chunk-LT3NLYSI.js.map +1 -0
  218. package/dist/chunk-LUDTDZLK.js +287 -0
  219. package/dist/chunk-LUDTDZLK.js.map +1 -0
  220. package/dist/chunk-M23FSH32.js +3963 -0
  221. package/dist/chunk-M23FSH32.js.map +1 -0
  222. package/dist/chunk-MC26UJIM.js +118 -0
  223. package/dist/chunk-ME6ESPZU.js +119 -0
  224. package/dist/chunk-ME6ESPZU.js.map +1 -0
  225. package/dist/chunk-MGKYQQYF.js +272 -0
  226. package/dist/chunk-MGKYQQYF.js.map +1 -0
  227. package/dist/chunk-MJFNCJXV.js +66 -0
  228. package/dist/chunk-MJFNCJXV.js.map +1 -0
  229. package/dist/chunk-MSWG7JI6.js +237 -0
  230. package/dist/chunk-MSWG7JI6.js.map +1 -0
  231. package/dist/chunk-MT25YHYH.js +141 -0
  232. package/dist/chunk-MT25YHYH.js.map +1 -0
  233. package/dist/chunk-MT4HVDUZ.js +53 -0
  234. package/dist/chunk-MY6TPVXW.js +219 -0
  235. package/dist/chunk-N2D6GXBM.js +267 -0
  236. package/dist/chunk-N2D6GXBM.js.map +1 -0
  237. package/dist/chunk-NJ3MJQZX.js +46 -0
  238. package/dist/chunk-NJ3MJQZX.js.map +1 -0
  239. package/dist/chunk-NMZY542O.js +335 -0
  240. package/dist/chunk-NMZY542O.js.map +1 -0
  241. package/dist/chunk-NNVTUXEB.js +23 -0
  242. package/dist/chunk-NZL6GGQE.js +375 -0
  243. package/dist/chunk-NZL6GGQE.js.map +1 -0
  244. package/dist/chunk-OAZ5MFUB.js +4124 -0
  245. package/dist/chunk-OAZ5MFUB.js.map +1 -0
  246. package/dist/chunk-OIGNEXKZ.js +237 -0
  247. package/dist/chunk-OIGNEXKZ.js.map +1 -0
  248. package/dist/chunk-OZKZ2TRP.js +3729 -0
  249. package/dist/chunk-OZKZ2TRP.js.map +1 -0
  250. package/dist/chunk-P4NEIHUT.js +108 -0
  251. package/dist/chunk-P7FMDTKL.js +103 -0
  252. package/dist/chunk-P7FMDTKL.js.map +1 -0
  253. package/dist/chunk-PD6O7AXF.js +110 -0
  254. package/dist/chunk-PD6O7AXF.js.map +1 -0
  255. package/dist/chunk-PHK3HARR.js +32 -0
  256. package/dist/chunk-PHK3HARR.js.map +1 -0
  257. package/dist/chunk-PIRJPV5T.js +98 -0
  258. package/dist/chunk-PIRJPV5T.js.map +1 -0
  259. package/dist/chunk-PK7H5L6Y.js +159 -0
  260. package/dist/chunk-PK7H5L6Y.js.map +1 -0
  261. package/dist/chunk-PR5FBTFU.js +233 -0
  262. package/dist/chunk-PR5FBTFU.js.map +1 -0
  263. package/dist/chunk-PU63GXWS.js +174 -0
  264. package/dist/chunk-PU63GXWS.js.map +1 -0
  265. package/dist/chunk-PYPOFEMK.js +294 -0
  266. package/dist/chunk-PYPOFEMK.js.map +1 -0
  267. package/dist/chunk-PZIAX57I.js +124 -0
  268. package/dist/chunk-PZIAX57I.js.map +1 -0
  269. package/dist/chunk-Q7P4WJDP.js +26 -0
  270. package/dist/chunk-Q7P4WJDP.js.map +1 -0
  271. package/dist/chunk-QDZ2RLEC.js +908 -0
  272. package/dist/chunk-QDZ2RLEC.js.map +1 -0
  273. package/dist/chunk-QQUAB63I.js +63 -0
  274. package/dist/chunk-QQUAB63I.js.map +1 -0
  275. package/dist/chunk-QRNI5JBH.js +18 -0
  276. package/dist/chunk-RHY3HH7P.js +601 -0
  277. package/dist/chunk-RHY3HH7P.js.map +1 -0
  278. package/dist/chunk-RK6F44Y6.js +84 -0
  279. package/dist/chunk-RK6F44Y6.js.map +1 -0
  280. package/dist/chunk-RRF5UOBJ.js +91 -0
  281. package/dist/chunk-RXDLTSWT.js +124 -0
  282. package/dist/chunk-RXDLTSWT.js.map +1 -0
  283. package/dist/chunk-RYED3SPJ.js +42 -0
  284. package/dist/chunk-RYED3SPJ.js.map +1 -0
  285. package/dist/chunk-S7KDBTWT.js +106 -0
  286. package/dist/chunk-S7KDBTWT.js.map +1 -0
  287. package/dist/chunk-SEDEKFYQ.js +1 -0
  288. package/dist/chunk-SOAU2OE2.js +125 -0
  289. package/dist/chunk-SOAU2OE2.js.map +1 -0
  290. package/dist/chunk-TECVW3JP.js +36 -0
  291. package/dist/chunk-TECVW3JP.js.map +1 -0
  292. package/dist/chunk-TFO23QT4.js +88 -0
  293. package/dist/chunk-TFO23QT4.js.map +1 -0
  294. package/dist/chunk-TK4UEOSK.js +76 -0
  295. package/dist/chunk-TK4UEOSK.js.map +1 -0
  296. package/dist/chunk-TKWGAOLV.js +122 -0
  297. package/dist/chunk-TKWGAOLV.js.map +1 -0
  298. package/dist/chunk-TMM4S4IJ.js +597 -0
  299. package/dist/chunk-TMM4S4IJ.js.map +1 -0
  300. package/dist/chunk-TMQLARTH.js +188 -0
  301. package/dist/chunk-TMQLARTH.js.map +1 -0
  302. package/dist/chunk-TPDBFYEG.js +130 -0
  303. package/dist/chunk-TPDBFYEG.js.map +1 -0
  304. package/dist/chunk-TPMQ3G6Z.js +145 -0
  305. package/dist/chunk-TPMQ3G6Z.js.map +1 -0
  306. package/dist/chunk-TZOLIGIG.js +61 -0
  307. package/dist/chunk-TZOLIGIG.js.map +1 -0
  308. package/dist/chunk-U3PN77QT.js +113 -0
  309. package/dist/chunk-U3WSW6PZ.js +277 -0
  310. package/dist/chunk-U4SCL7B7.js +640 -0
  311. package/dist/chunk-U4SCL7B7.js.map +1 -0
  312. package/dist/chunk-UWK5OXUJ.js +156 -0
  313. package/dist/chunk-UWK5OXUJ.js.map +1 -0
  314. package/dist/chunk-UWVJF25J.js +74 -0
  315. package/dist/chunk-UXHQAFNA.js +1317 -0
  316. package/dist/chunk-UXHQAFNA.js.map +1 -0
  317. package/dist/chunk-V5OCT34X.js +1 -0
  318. package/dist/chunk-V5OCT34X.js.map +1 -0
  319. package/dist/chunk-VLXA6PI2.js +304 -0
  320. package/dist/chunk-VLXA6PI2.js.map +1 -0
  321. package/dist/chunk-VNO6ZJ35.js +500 -0
  322. package/dist/chunk-VNO6ZJ35.js.map +1 -0
  323. package/dist/chunk-VW676BEI.js +827 -0
  324. package/dist/chunk-VW676BEI.js.map +1 -0
  325. package/dist/chunk-VWT3F4IV.js +2161 -0
  326. package/dist/chunk-VWT3F4IV.js.map +1 -0
  327. package/dist/chunk-W3LR522O.js +2296 -0
  328. package/dist/chunk-W3LR522O.js.map +1 -0
  329. package/dist/chunk-W4L6CZKA.js +96 -0
  330. package/dist/chunk-W4L6CZKA.js.map +1 -0
  331. package/dist/chunk-W4RVMTHR.js +372 -0
  332. package/dist/chunk-W4RVMTHR.js.map +1 -0
  333. package/dist/chunk-WEHSQBFR.js +188 -0
  334. package/dist/chunk-WEHSQBFR.js.map +1 -0
  335. package/dist/chunk-WELDCG6C.js +380 -0
  336. package/dist/chunk-WELDCG6C.js.map +1 -0
  337. package/dist/chunk-WZYKANL3.js +2800 -0
  338. package/dist/chunk-WZYKANL3.js.map +1 -0
  339. package/dist/chunk-XIG5PDM7.js +48 -0
  340. package/dist/chunk-XJNBEDFE.js +193 -0
  341. package/dist/chunk-XJNBEDFE.js.map +1 -0
  342. package/dist/chunk-XVVIG67A.js +291 -0
  343. package/dist/chunk-XVVIG67A.js.map +1 -0
  344. package/dist/chunk-XVZ7B3HG.js +135 -0
  345. package/dist/chunk-YBPYIAA5.js +73 -0
  346. package/dist/chunk-YBPYIAA5.js.map +1 -0
  347. package/dist/chunk-Z734BLO3.js +21 -0
  348. package/dist/chunk-Z734BLO3.js.map +1 -0
  349. package/dist/chunk-ZKSK55RC.js +269 -0
  350. package/dist/chunk-ZKSK55RC.js.map +1 -0
  351. package/dist/chunk-ZTFCYYEZ.js +69 -0
  352. package/dist/chunk-ZTFCYYEZ.js.map +1 -0
  353. package/dist/chunk-ZY2MNJR6.js +329 -0
  354. package/dist/chunk-ZY2MNJR6.js.map +1 -0
  355. package/dist/cli-D3VpkVwB.d.ts +1136 -0
  356. package/dist/cli.d.ts +42 -10
  357. package/dist/cli.js +121 -58
  358. package/dist/codex-cli-fallback.d.ts +1 -0
  359. package/dist/codex-cli-fallback.js +1 -1
  360. package/dist/commitment-ledger.js +1 -1
  361. package/dist/compat/checks.d.ts +5 -0
  362. package/dist/compat/checks.js +11 -0
  363. package/dist/compat/checks.js.map +1 -0
  364. package/dist/compat/types.d.ts +30 -0
  365. package/dist/compat/types.js +1 -0
  366. package/dist/compat/types.js.map +1 -0
  367. package/dist/compounding/engine.d.ts +221 -0
  368. package/dist/compounding/engine.js +32 -0
  369. package/dist/compounding/engine.js.map +1 -0
  370. package/dist/compounding/preference-consolidator.d.ts +92 -0
  371. package/dist/compounding/preference-consolidator.js +553 -0
  372. package/dist/compounding/preference-consolidator.js.map +1 -0
  373. package/dist/compression-optimizer.d.ts +1 -1
  374. package/dist/config.d.ts +5 -3
  375. package/dist/config.js +9 -4
  376. package/dist/conflict-policy-DyJ2wd-h.d.ts +4 -0
  377. package/dist/connectors/codex-materialize-runner.d.ts +64 -0
  378. package/dist/connectors/codex-materialize-runner.js +33 -0
  379. package/dist/connectors/codex-materialize-runner.js.map +1 -0
  380. package/dist/connectors/codex-materialize.d.ts +195 -0
  381. package/dist/connectors/codex-materialize.js +38 -0
  382. package/dist/connectors/codex-materialize.js.map +1 -0
  383. package/dist/connectors/index.d.ts +444 -0
  384. package/dist/connectors/index.js +115 -0
  385. package/dist/connectors/index.js.map +1 -0
  386. package/dist/connectors-cli-CwbyjGR7.d.ts +257 -0
  387. package/dist/connectors-cli.d.ts +1 -1
  388. package/dist/consolidation-provenance-check.d.ts +4 -2
  389. package/dist/consolidation-undo.d.ts +4 -2
  390. package/dist/contradiction/index.d.ts +258 -0
  391. package/dist/contradiction/index.js +43 -0
  392. package/dist/contradiction/index.js.map +1 -0
  393. package/dist/contradiction-review-ATP4S6IC.js +30 -0
  394. package/dist/contradiction-review-ATP4S6IC.js.map +1 -0
  395. package/dist/contradiction-scan-5A4IDZV5.js +13 -0
  396. package/dist/contradiction-scan-5A4IDZV5.js.map +1 -0
  397. package/dist/conversation-index/backend.d.ts +97 -0
  398. package/dist/conversation-index/backend.js +13 -0
  399. package/dist/conversation-index/backend.js.map +1 -0
  400. package/dist/conversation-index/chunker.d.ts +16 -0
  401. package/dist/conversation-index/chunker.js +8 -0
  402. package/dist/conversation-index/chunker.js.map +1 -0
  403. package/dist/conversation-index/cleanup.d.ts +11 -0
  404. package/dist/conversation-index/cleanup.js +9 -0
  405. package/dist/conversation-index/cleanup.js.map +1 -0
  406. package/dist/conversation-index/faiss-adapter.d.ts +6 -0
  407. package/dist/conversation-index/faiss-adapter.js +16 -0
  408. package/dist/conversation-index/faiss-adapter.js.map +1 -0
  409. package/dist/conversation-index/indexer.d.ts +23 -0
  410. package/dist/conversation-index/indexer.js +15 -0
  411. package/dist/conversation-index/indexer.js.map +1 -0
  412. package/dist/conversation-index/search.d.ts +6 -0
  413. package/dist/conversation-index/search.js +11 -0
  414. package/dist/conversation-index/search.js.map +1 -0
  415. package/dist/day-summary.d.ts +1 -1
  416. package/dist/delinearize.d.ts +1 -1
  417. package/dist/direct-answer-wiring.d.ts +1 -1
  418. package/dist/direct-answer-wiring.js +1 -1
  419. package/dist/direct-answer.d.ts +1 -1
  420. package/dist/embedding-fallback.d.ts +1 -1
  421. package/dist/embedding-fallback.js +2 -2
  422. package/dist/enrichment/index.d.ts +163 -0
  423. package/dist/enrichment/index.js +18 -0
  424. package/dist/enrichment/index.js.map +1 -0
  425. package/dist/entity-retrieval.d.ts +4 -2
  426. package/dist/entity-retrieval.js +9 -6
  427. package/dist/entity-schema.d.ts +1 -1
  428. package/dist/evals.js +1 -1
  429. package/dist/event-order-recall.d.ts +17 -0
  430. package/dist/event-order-recall.js +11 -0
  431. package/dist/event-order-recall.js.map +1 -0
  432. package/dist/evidence-pack.d.ts +3 -1
  433. package/dist/evidence-pack.js +5 -3
  434. package/dist/explicit-capture.d.ts +23 -6
  435. package/dist/explicit-capture.js +2 -2
  436. package/dist/explicit-cue-recall.d.ts +4 -1
  437. package/dist/explicit-cue-recall.js +4 -2
  438. package/dist/extraction-judge-telemetry.d.ts +1 -1
  439. package/dist/extraction-judge-training.d.ts +1 -1
  440. package/dist/extraction-judge-training.js +1 -1
  441. package/dist/extraction-judge.d.ts +1 -1
  442. package/dist/extraction.d.ts +1 -1
  443. package/dist/extraction.js +11 -10
  444. package/dist/faiss-adapter-CzPghc4C.d.ts +70 -0
  445. package/dist/fallback-llm.d.ts +4 -1
  446. package/dist/fallback-llm.js +6 -6
  447. package/dist/focused-list-recall.d.ts +17 -0
  448. package/dist/focused-list-recall.js +11 -0
  449. package/dist/focused-list-recall.js.map +1 -0
  450. package/dist/graph-edge-decay-5DI5GUNL.js +207 -0
  451. package/dist/identity-continuity.d.ts +1 -1
  452. package/dist/importance.d.ts +1 -1
  453. package/dist/index-DJ9QWMw-.d.ts +35 -0
  454. package/dist/index.d.ts +107 -715
  455. package/dist/index.js +657 -2611
  456. package/dist/index.js.map +1 -1
  457. package/dist/intent.d.ts +1 -1
  458. package/dist/intent.js +1 -1
  459. package/dist/lcm/archive.d.ts +89 -0
  460. package/dist/lcm/archive.js +12 -0
  461. package/dist/lcm/archive.js.map +1 -0
  462. package/dist/lcm/dag.d.ts +48 -0
  463. package/dist/lcm/dag.js +8 -0
  464. package/dist/lcm/dag.js.map +1 -0
  465. package/dist/lcm/engine.d.ts +116 -0
  466. package/dist/lcm/engine.js +20 -0
  467. package/dist/lcm/engine.js.map +1 -0
  468. package/dist/lcm/index.d.ts +12 -0
  469. package/dist/lcm/index.js +44 -0
  470. package/dist/lcm/index.js.map +1 -0
  471. package/dist/lcm/queue.d.ts +62 -0
  472. package/dist/lcm/queue.js +8 -0
  473. package/dist/lcm/queue.js.map +1 -0
  474. package/dist/lcm/recall.d.ts +20 -0
  475. package/dist/lcm/recall.js +8 -0
  476. package/dist/lcm/recall.js.map +1 -0
  477. package/dist/lcm/schema.d.ts +16 -0
  478. package/dist/lcm/schema.js +14 -0
  479. package/dist/lcm/schema.js.map +1 -0
  480. package/dist/lcm/summarizer.d.ts +38 -0
  481. package/dist/lcm/summarizer.js +12 -0
  482. package/dist/lcm/summarizer.js.map +1 -0
  483. package/dist/lcm/tools.d.ts +29 -0
  484. package/dist/lcm/tools.js +8 -0
  485. package/dist/lcm/tools.js.map +1 -0
  486. package/dist/lifecycle.d.ts +1 -1
  487. package/dist/live-connectors-runner.d.ts +1 -1
  488. package/dist/live-connectors-runner.js +5 -5
  489. package/dist/local-llm.d.ts +8 -4
  490. package/dist/local-llm.js +3 -3
  491. package/dist/maintenance/archive-observations.d.ts +18 -0
  492. package/dist/maintenance/archive-observations.js +8 -0
  493. package/dist/maintenance/archive-observations.js.map +1 -0
  494. package/dist/maintenance/backup-stamp.d.ts +3 -0
  495. package/dist/maintenance/backup-stamp.js +8 -0
  496. package/dist/maintenance/backup-stamp.js.map +1 -0
  497. package/dist/maintenance/memory-governance-cron.d.ts +85 -0
  498. package/dist/maintenance/memory-governance-cron.js +22 -0
  499. package/dist/maintenance/memory-governance-cron.js.map +1 -0
  500. package/dist/maintenance/memory-governance.d.ts +137 -0
  501. package/dist/maintenance/memory-governance.js +40 -0
  502. package/dist/maintenance/memory-governance.js.map +1 -0
  503. package/dist/maintenance/migrate-observations.d.ts +18 -0
  504. package/dist/maintenance/migrate-observations.js +9 -0
  505. package/dist/maintenance/migrate-observations.js.map +1 -0
  506. package/dist/maintenance/observation-ledger-utils.d.ts +10 -0
  507. package/dist/maintenance/observation-ledger-utils.js +10 -0
  508. package/dist/maintenance/observation-ledger-utils.js.map +1 -0
  509. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +15 -0
  510. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -0
  511. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js.map +1 -0
  512. package/dist/maintenance/rebuild-memory-projection.d.ts +77 -0
  513. package/dist/maintenance/rebuild-memory-projection.js +35 -0
  514. package/dist/maintenance/rebuild-memory-projection.js.map +1 -0
  515. package/dist/maintenance/rebuild-observations.d.ts +17 -0
  516. package/dist/maintenance/rebuild-observations.js +9 -0
  517. package/dist/maintenance/rebuild-observations.js.map +1 -0
  518. package/dist/mcp-memory-inspector-app.d.ts +124 -0
  519. package/dist/mcp-memory-inspector-app.js +20 -0
  520. package/dist/mcp-memory-inspector-app.js.map +1 -0
  521. package/dist/memory-action-policy.d.ts +1 -1
  522. package/dist/memory-cache.d.ts +1 -1
  523. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  524. package/dist/memory-projection-store.d.ts +108 -3
  525. package/dist/memory-projection-store.js +2 -1
  526. package/dist/memory-provenance.d.ts +57 -0
  527. package/dist/memory-provenance.js +13 -0
  528. package/dist/memory-provenance.js.map +1 -0
  529. package/dist/memory-worth-outcomes.d.ts +4 -2
  530. package/dist/migrate/from-engram.d.ts +24 -0
  531. package/dist/migrate/from-engram.js +12 -0
  532. package/dist/migrate/from-engram.js.map +1 -0
  533. package/dist/models-json.d.ts +1 -1
  534. package/dist/namespaces/migrate.d.ts +50 -0
  535. package/dist/namespaces/migrate.js +50 -0
  536. package/dist/namespaces/migrate.js.map +1 -0
  537. package/dist/namespaces/principal.d.ts +17 -0
  538. package/dist/namespaces/principal.js +16 -0
  539. package/dist/namespaces/principal.js.map +1 -0
  540. package/dist/namespaces/search.d.ts +46 -0
  541. package/dist/namespaces/search.js +28 -0
  542. package/dist/namespaces/search.js.map +1 -0
  543. package/dist/namespaces/storage.d.ts +32 -0
  544. package/dist/namespaces/storage.js +28 -0
  545. package/dist/namespaces/storage.js.map +1 -0
  546. package/dist/native-knowledge.d.ts +1 -1
  547. package/dist/network/tailscale.d.ts +41 -0
  548. package/dist/network/tailscale.js +9 -0
  549. package/dist/network/tailscale.js.map +1 -0
  550. package/dist/network/webdav.d.ts +39 -0
  551. package/dist/network/webdav.js +10 -0
  552. package/dist/network/webdav.js.map +1 -0
  553. package/dist/objective-state-writers.d.ts +1 -1
  554. package/dist/objective-state-writers.js +2 -2
  555. package/dist/operator-toolkit.d.ts +4 -2
  556. package/dist/operator-toolkit.js +35 -17
  557. package/dist/opik-exporter.js +2 -2
  558. package/dist/opik-exporter.js.map +1 -1
  559. package/dist/orchestrator-DuWl9Hwx.d.ts +1244 -0
  560. package/dist/orchestrator.d.ts +24 -7
  561. package/dist/orchestrator.js +107 -65
  562. package/dist/path-MR5JPYOP.js +9 -0
  563. package/dist/path-MR5JPYOP.js.map +1 -0
  564. package/dist/patterns-cli.d.ts +1 -1
  565. package/dist/policy-runtime.d.ts +1 -1
  566. package/dist/qmd-recall-cache.d.ts +2 -2
  567. package/dist/qmd.d.ts +103 -4
  568. package/dist/qmd.js +23 -5
  569. package/dist/recall-disclosure-escalation.d.ts +1 -1
  570. package/dist/recall-explain-renderer.d.ts +3 -1
  571. package/dist/recall-explain-renderer.js +5 -3
  572. package/dist/recall-state.d.ts +1 -1
  573. package/dist/recall-tag-filter.d.ts +3 -1
  574. package/dist/recall-xray-cli.d.ts +3 -1
  575. package/dist/recall-xray-cli.js +6 -4
  576. package/dist/recall-xray-renderer.d.ts +3 -1
  577. package/dist/recall-xray-renderer.js +5 -3
  578. package/dist/recall-xray.d.ts +8 -1
  579. package/dist/recall-xray.js +4 -2
  580. package/dist/replay/normalizers/chatgpt.d.ts +6 -0
  581. package/dist/replay/normalizers/chatgpt.js +11 -0
  582. package/dist/replay/normalizers/chatgpt.js.map +1 -0
  583. package/dist/replay/normalizers/claude.d.ts +6 -0
  584. package/dist/replay/normalizers/claude.js +11 -0
  585. package/dist/replay/normalizers/claude.js.map +1 -0
  586. package/dist/replay/normalizers/openclaw.d.ts +6 -0
  587. package/dist/replay/normalizers/openclaw.js +11 -0
  588. package/dist/replay/normalizers/openclaw.js.map +1 -0
  589. package/dist/replay/normalizers/shared.d.ts +16 -0
  590. package/dist/replay/normalizers/shared.js +14 -0
  591. package/dist/replay/normalizers/shared.js.map +1 -0
  592. package/dist/replay/runner.d.ts +35 -0
  593. package/dist/replay/runner.js +16 -0
  594. package/dist/replay/runner.js.map +1 -0
  595. package/dist/replay/types.d.ts +57 -0
  596. package/dist/replay/types.js +19 -0
  597. package/dist/replay/types.js.map +1 -0
  598. package/dist/resolution-B7FNQSSP.js +12 -0
  599. package/dist/resolution-B7FNQSSP.js.map +1 -0
  600. package/dist/resolve-auth-token.d.ts +1 -1
  601. package/dist/resolve-provider-secret.js +2 -2
  602. package/dist/response-guidance-recall.d.ts +18 -0
  603. package/dist/response-guidance-recall.js +11 -0
  604. package/dist/response-guidance-recall.js.map +1 -0
  605. package/dist/resume-bundles.js +7 -5
  606. package/dist/retrieval-agents.d.ts +2 -2
  607. package/dist/retrieval-tiers.d.ts +1 -1
  608. package/dist/routing/engine.d.ts +35 -0
  609. package/dist/routing/engine.js +16 -0
  610. package/dist/routing/engine.js.map +1 -0
  611. package/dist/routing/store.d.ts +27 -0
  612. package/dist/routing/store.js +10 -0
  613. package/dist/routing/store.js.map +1 -0
  614. package/dist/runtime/better-sqlite.d.ts +8 -0
  615. package/dist/runtime/better-sqlite.js +10 -0
  616. package/dist/runtime/better-sqlite.js.map +1 -0
  617. package/dist/runtime/child-process.d.ts +32 -0
  618. package/dist/runtime/child-process.js +10 -0
  619. package/dist/runtime/child-process.js.map +1 -0
  620. package/dist/runtime/env.d.ts +5 -0
  621. package/dist/runtime/env.js +12 -0
  622. package/dist/runtime/env.js.map +1 -0
  623. package/dist/sdk-compat.js +1 -1
  624. package/dist/search/document-scanner.d.ts +22 -0
  625. package/dist/search/document-scanner.js +8 -0
  626. package/dist/search/document-scanner.js.map +1 -0
  627. package/dist/search/embed-helper.d.ts +35 -0
  628. package/dist/search/embed-helper.js +9 -0
  629. package/dist/search/embed-helper.js.map +1 -0
  630. package/dist/search/factory.d.ts +32 -0
  631. package/dist/search/factory.js +29 -0
  632. package/dist/search/factory.js.map +1 -0
  633. package/dist/search/index.d.ts +15 -0
  634. package/dist/search/index.js +50 -0
  635. package/dist/search/index.js.map +1 -0
  636. package/dist/search/lancedb-backend.d.ts +51 -0
  637. package/dist/search/lancedb-backend.js +10 -0
  638. package/dist/search/lancedb-backend.js.map +1 -0
  639. package/dist/search/meilisearch-backend.d.ts +48 -0
  640. package/dist/search/meilisearch-backend.js +10 -0
  641. package/dist/search/meilisearch-backend.js.map +1 -0
  642. package/dist/search/noop-backend.d.ts +26 -0
  643. package/dist/search/noop-backend.js +8 -0
  644. package/dist/search/noop-backend.js.map +1 -0
  645. package/dist/search/orama-backend.d.ts +53 -0
  646. package/dist/search/orama-backend.js +10 -0
  647. package/dist/search/orama-backend.js.map +1 -0
  648. package/dist/search/port.d.ts +61 -0
  649. package/dist/search/port.js +1 -0
  650. package/dist/search/port.js.map +1 -0
  651. package/dist/search/remote-backend.d.ts +39 -0
  652. package/dist/search/remote-backend.js +9 -0
  653. package/dist/search/remote-backend.js.map +1 -0
  654. package/dist/secure-store/index.d.ts +890 -0
  655. package/dist/secure-store/index.js +156 -0
  656. package/dist/secure-store/index.js.map +1 -0
  657. package/dist/semantic-VwGI14Ok.d.ts +69 -0
  658. package/dist/semantic-consolidation-4HkHWgeI.d.ts +180 -0
  659. package/dist/semantic-consolidation.d.ts +3 -3
  660. package/dist/semantic-consolidation.js +15 -8
  661. package/dist/semantic-rule-promotion.js +9 -6
  662. package/dist/semantic-rule-verifier.d.ts +1 -1
  663. package/dist/semantic-rule-verifier.js +10 -7
  664. package/dist/session-observer-bands.d.ts +1 -1
  665. package/dist/session-observer-state.d.ts +1 -1
  666. package/dist/shared-context/manager.d.ts +131 -0
  667. package/dist/shared-context/manager.js +15 -0
  668. package/dist/shared-context/manager.js.map +1 -0
  669. package/dist/signal.d.ts +1 -1
  670. package/dist/skills-registry.js +13 -1
  671. package/dist/skills-registry.js.map +1 -1
  672. package/dist/state-store-VZU2IA53.js +16 -0
  673. package/dist/state-store-VZU2IA53.js.map +1 -0
  674. package/dist/storage-paths.d.ts +9 -0
  675. package/dist/storage-paths.js +20 -0
  676. package/dist/storage-paths.js.map +1 -0
  677. package/dist/storage.d.ts +6 -2
  678. package/dist/storage.js +8 -5
  679. package/dist/summarizer.d.ts +6 -1
  680. package/dist/summarizer.js +11 -10
  681. package/dist/summary-snapshot.d.ts +1 -1
  682. package/dist/summary-snapshot.js +2 -1
  683. package/dist/surfaces/dreams.d.ts +16 -0
  684. package/dist/surfaces/dreams.js +282 -0
  685. package/dist/surfaces/dreams.js.map +1 -0
  686. package/dist/surfaces/heartbeat.d.ts +17 -0
  687. package/dist/surfaces/heartbeat.js +265 -0
  688. package/dist/surfaces/heartbeat.js.map +1 -0
  689. package/dist/targeted-fact-recall.d.ts +17 -0
  690. package/dist/targeted-fact-recall.js +11 -0
  691. package/dist/targeted-fact-recall.js.map +1 -0
  692. package/dist/telemetry-transcript.d.ts +7 -0
  693. package/dist/telemetry-transcript.js +16 -0
  694. package/dist/telemetry-transcript.js.map +1 -0
  695. package/dist/temporal-supersession.d.ts +4 -2
  696. package/dist/temporal-supersession.js +2 -1
  697. package/dist/temporal-validity.d.ts +1 -1
  698. package/dist/threading.d.ts +6 -1
  699. package/dist/threading.js +2 -1
  700. package/dist/tier-migration.d.ts +5 -3
  701. package/dist/tier-routing.d.ts +1 -1
  702. package/dist/tokens.js +2 -2
  703. package/dist/topics.d.ts +1 -1
  704. package/dist/transcript.d.ts +16 -2
  705. package/dist/transcript.js +2 -1
  706. package/dist/transfer/autodetect.d.ts +4 -0
  707. package/dist/transfer/autodetect.js +15 -0
  708. package/dist/transfer/autodetect.js.map +1 -0
  709. package/dist/transfer/backup.d.ts +21 -0
  710. package/dist/transfer/backup.js +17 -0
  711. package/dist/transfer/backup.js.map +1 -0
  712. package/dist/transfer/capsule-export.d.ts +113 -0
  713. package/dist/transfer/capsule-export.js +19 -0
  714. package/dist/transfer/capsule-export.js.map +1 -0
  715. package/dist/transfer/capsule-import.d.ts +124 -0
  716. package/dist/transfer/capsule-import.js +16 -0
  717. package/dist/transfer/capsule-import.js.map +1 -0
  718. package/dist/transfer/constants.d.ts +13 -0
  719. package/dist/transfer/constants.js +12 -0
  720. package/dist/transfer/constants.js.map +1 -0
  721. package/dist/transfer/export-json.d.ts +11 -0
  722. package/dist/transfer/export-json.js +11 -0
  723. package/dist/transfer/export-json.js.map +1 -0
  724. package/dist/transfer/export-md.d.ts +10 -0
  725. package/dist/transfer/export-md.js +13 -0
  726. package/dist/transfer/export-md.js.map +1 -0
  727. package/dist/transfer/export-sqlite.d.ts +9 -0
  728. package/dist/transfer/export-sqlite.js +12 -0
  729. package/dist/transfer/export-sqlite.js.map +1 -0
  730. package/dist/transfer/fs-utils.d.ts +61 -0
  731. package/dist/transfer/fs-utils.js +40 -0
  732. package/dist/transfer/fs-utils.js.map +1 -0
  733. package/dist/transfer/import-json.d.ts +16 -0
  734. package/dist/transfer/import-json.js +13 -0
  735. package/dist/transfer/import-json.js.map +1 -0
  736. package/dist/transfer/import-md.d.ts +14 -0
  737. package/dist/transfer/import-md.js +11 -0
  738. package/dist/transfer/import-md.js.map +1 -0
  739. package/dist/transfer/import-sqlite.d.ts +14 -0
  740. package/dist/transfer/import-sqlite.js +12 -0
  741. package/dist/transfer/import-sqlite.js.map +1 -0
  742. package/dist/transfer/sqlite-schema.d.ts +4 -0
  743. package/dist/transfer/sqlite-schema.js +10 -0
  744. package/dist/transfer/sqlite-schema.js.map +1 -0
  745. package/dist/transfer/types.d.ts +916 -0
  746. package/dist/transfer/types.js +30 -0
  747. package/dist/transfer/types.js.map +1 -0
  748. package/dist/trust-zones.d.ts +3 -2
  749. package/dist/trust-zones.js +1 -1
  750. package/dist/types.d.ts +88 -3
  751. package/dist/types.js +1 -1
  752. package/dist/user-model.d.ts +37 -0
  753. package/dist/user-model.js +28 -0
  754. package/dist/user-model.js.map +1 -0
  755. package/dist/utility-runtime.d.ts +1 -1
  756. package/dist/verified-recall.js +11 -8
  757. package/dist/work/board.d.ts +43 -0
  758. package/dist/work/board.js +14 -0
  759. package/dist/work/board.js.map +1 -0
  760. package/dist/work/boundary.d.ts +8 -0
  761. package/dist/work/boundary.js +14 -0
  762. package/dist/work/boundary.js.map +1 -0
  763. package/dist/work/storage.d.ts +39 -0
  764. package/dist/work/storage.js +11 -0
  765. package/dist/work/storage.js.map +1 -0
  766. package/dist/work/types.d.ts +75 -0
  767. package/dist/work/types.js +1 -0
  768. package/dist/work/types.js.map +1 -0
  769. package/package.json +2767 -6
  770. package/scripts/faiss_index.py +816 -0
  771. package/scripts/faiss_requirements.txt +3 -0
  772. package/skills/remnic-entities/SKILL.md +51 -0
  773. package/skills/remnic-memory-workflow/SKILL.md +61 -0
  774. package/skills/remnic-recall/SKILL.md +51 -0
  775. package/skills/remnic-remember/SKILL.md +56 -0
  776. package/skills/remnic-search/SKILL.md +51 -0
  777. package/skills/remnic-status/SKILL.md +51 -0
  778. package/src/abort-error.test.ts +49 -0
  779. package/src/abort-error.ts +46 -0
  780. package/src/abstraction-nodes.ts +162 -0
  781. package/src/access-audit.test.ts +178 -0
  782. package/src/access-audit.ts +125 -0
  783. package/src/access-cli.test.ts +439 -0
  784. package/src/access-cli.ts +438 -0
  785. package/src/access-http.test.ts +225 -0
  786. package/src/access-http.ts +1899 -0
  787. package/src/access-idempotency.ts +232 -0
  788. package/src/access-mcp.test.ts +568 -0
  789. package/src/access-mcp.ts +3056 -0
  790. package/src/access-schema-pi.test.ts +60 -0
  791. package/src/access-schema.ts +522 -0
  792. package/src/access-service-namespace.test.ts +123 -0
  793. package/src/access-service.ts +5629 -0
  794. package/src/action-confidence.test.ts +206 -0
  795. package/src/action-confidence.ts +466 -0
  796. package/src/active-memory-bridge.test.ts +285 -0
  797. package/src/active-memory-bridge.ts +217 -0
  798. package/src/active-recall.test.ts +484 -0
  799. package/src/active-recall.ts +459 -0
  800. package/src/adapters/claude-code.ts +56 -0
  801. package/src/adapters/codex.ts +57 -0
  802. package/src/adapters/hermes.ts +64 -0
  803. package/src/adapters/index.ts +6 -0
  804. package/src/adapters/registry.ts +41 -0
  805. package/src/adapters/replit.ts +55 -0
  806. package/src/adapters/types.ts +51 -0
  807. package/src/behavior-learner.ts +144 -0
  808. package/src/behavior-signals.ts +73 -0
  809. package/src/binary-lifecycle/backend.ts +117 -0
  810. package/src/binary-lifecycle/index.ts +35 -0
  811. package/src/binary-lifecycle/manifest.ts +79 -0
  812. package/src/binary-lifecycle/pipeline.ts +352 -0
  813. package/src/binary-lifecycle/scanner.ts +89 -0
  814. package/src/binary-lifecycle/types.ts +89 -0
  815. package/src/bootstrap.ts +178 -0
  816. package/src/boxes.ts +521 -0
  817. package/src/briefing.test.ts +1535 -0
  818. package/src/briefing.ts +1382 -0
  819. package/src/buffer-session.test.ts +443 -0
  820. package/src/buffer-surprise-report.ts +176 -0
  821. package/src/buffer-surprise-telemetry.test.ts +606 -0
  822. package/src/buffer-surprise-trigger.test.ts +766 -0
  823. package/src/buffer-surprise.test.ts +339 -0
  824. package/src/buffer-surprise.ts +203 -0
  825. package/src/buffer.ts +900 -0
  826. package/src/bulk-import/cli-command.test.ts +204 -0
  827. package/src/bulk-import/index.ts +34 -0
  828. package/src/bulk-import/pipeline.test.ts +445 -0
  829. package/src/bulk-import/pipeline.ts +178 -0
  830. package/src/bulk-import/registry.test.ts +151 -0
  831. package/src/bulk-import/registry.ts +72 -0
  832. package/src/bulk-import/types.test.ts +272 -0
  833. package/src/bulk-import/types.ts +145 -0
  834. package/src/calibration.ts +394 -0
  835. package/src/capsule-cli.test.ts +398 -0
  836. package/src/capsule-cli.ts +565 -0
  837. package/src/causal-behavior.ts +308 -0
  838. package/src/causal-chain.ts +419 -0
  839. package/src/causal-consolidation.ts +370 -0
  840. package/src/causal-retrieval.ts +286 -0
  841. package/src/causal-trajectory-graph.ts +60 -0
  842. package/src/causal-trajectory.ts +303 -0
  843. package/src/chunking.ts +220 -0
  844. package/src/citations.ts +232 -0
  845. package/src/cli.ts +9403 -0
  846. package/src/codex-cli-fallback.ts +162 -0
  847. package/src/codex-thread-key.ts +1 -0
  848. package/src/coding/access-coding-context.test.ts +197 -0
  849. package/src/coding/coding-branch-scope.test.ts +281 -0
  850. package/src/coding/coding-namespace.test.ts +360 -0
  851. package/src/coding/coding-namespace.ts +412 -0
  852. package/src/coding/coding-orchestrator.test.ts +249 -0
  853. package/src/coding/git-context.test.ts +507 -0
  854. package/src/coding/git-context.ts +336 -0
  855. package/src/coding/mcp-set-coding-context.test.ts +174 -0
  856. package/src/coding/review-context.test.ts +316 -0
  857. package/src/coding/review-context.ts +349 -0
  858. package/src/coding/wire-coding-context.test.ts +468 -0
  859. package/src/commitment-ledger.test.ts +78 -0
  860. package/src/commitment-ledger.ts +337 -0
  861. package/src/compat/checks.test.ts +206 -0
  862. package/src/compat/checks.ts +716 -0
  863. package/src/compat/types.ts +33 -0
  864. package/src/compounding/engine.ts +1686 -0
  865. package/src/compounding/preference-consolidator.ts +778 -0
  866. package/src/compression-optimizer.ts +312 -0
  867. package/src/config.test.ts +930 -0
  868. package/src/config.ts +3807 -0
  869. package/src/connectors/codex/instructions.md +160 -0
  870. package/src/connectors/codex/resources/namespace-cheatsheet.md +48 -0
  871. package/src/connectors/codex-marketplace.ts +500 -0
  872. package/src/connectors/codex-materialize-runner.ts +212 -0
  873. package/src/connectors/codex-materialize.ts +983 -0
  874. package/src/connectors/coerce.ts +62 -0
  875. package/src/connectors/index.test.ts +1570 -0
  876. package/src/connectors/index.ts +3222 -0
  877. package/src/connectors/live/framework.ts +164 -0
  878. package/src/connectors/live/github.test.ts +1218 -0
  879. package/src/connectors/live/github.ts +1068 -0
  880. package/src/connectors/live/gmail.test.ts +1706 -0
  881. package/src/connectors/live/gmail.ts +1293 -0
  882. package/src/connectors/live/google-drive.test.ts +696 -0
  883. package/src/connectors/live/google-drive.ts +724 -0
  884. package/src/connectors/live/index.ts +101 -0
  885. package/src/connectors/live/live-connectors.test.ts +689 -0
  886. package/src/connectors/live/notion.test.ts +1109 -0
  887. package/src/connectors/live/notion.ts +978 -0
  888. package/src/connectors/live/registry.ts +103 -0
  889. package/src/connectors/live/state-store.ts +399 -0
  890. package/src/connectors/live/transient-errors.ts +150 -0
  891. package/src/connectors/weclone-installer.test.ts +850 -0
  892. package/src/connectors-cli.ts +513 -0
  893. package/src/console/state.test.ts +224 -0
  894. package/src/console/state.ts +514 -0
  895. package/src/console/trace.test.ts +813 -0
  896. package/src/console/trace.ts +603 -0
  897. package/src/console/tui.test.ts +582 -0
  898. package/src/console/tui.ts +508 -0
  899. package/src/consolidation-operator.ts +182 -0
  900. package/src/consolidation-provenance-check.ts +551 -0
  901. package/src/consolidation-undo.ts +718 -0
  902. package/src/contradiction/contradiction-judge.test.ts +189 -0
  903. package/src/contradiction/contradiction-judge.ts +333 -0
  904. package/src/contradiction/contradiction-review.ts +574 -0
  905. package/src/contradiction/contradiction-scan.ts +504 -0
  906. package/src/contradiction/contradiction.test.ts +2230 -0
  907. package/src/contradiction/index.ts +37 -0
  908. package/src/contradiction/resolution.ts +383 -0
  909. package/src/conversation-index/backend.ts +323 -0
  910. package/src/conversation-index/chunker.ts +47 -0
  911. package/src/conversation-index/cleanup.ts +53 -0
  912. package/src/conversation-index/faiss-adapter.ts +384 -0
  913. package/src/conversation-index/indexer.test.ts +164 -0
  914. package/src/conversation-index/indexer.ts +192 -0
  915. package/src/conversation-index/search.ts +37 -0
  916. package/src/cross-namespace-budget.test.ts +275 -0
  917. package/src/cross-namespace-budget.ts +365 -0
  918. package/src/cue-anchors.ts +163 -0
  919. package/src/curation/index.ts +544 -0
  920. package/src/dashboard-runtime.ts +337 -0
  921. package/src/day-summary.ts +122 -0
  922. package/src/dedup/index.ts +330 -0
  923. package/src/dedup/semantic.test.ts +1577 -0
  924. package/src/dedup/semantic.ts +148 -0
  925. package/src/delinearize.ts +193 -0
  926. package/src/direct-answer-wiring.test.ts +473 -0
  927. package/src/direct-answer-wiring.ts +180 -0
  928. package/src/direct-answer.test.ts +484 -0
  929. package/src/direct-answer.ts +273 -0
  930. package/src/embedding-fallback.ts +565 -0
  931. package/src/enrichment/audit.ts +89 -0
  932. package/src/enrichment/index.ts +27 -0
  933. package/src/enrichment/pipeline.ts +197 -0
  934. package/src/enrichment/provider-registry.ts +85 -0
  935. package/src/enrichment/types.ts +100 -0
  936. package/src/enrichment/web-search-provider.ts +63 -0
  937. package/src/entity-retrieval.ts +774 -0
  938. package/src/entity-schema.ts +239 -0
  939. package/src/evals.ts +1312 -0
  940. package/src/event-order-recall.test.ts +4164 -0
  941. package/src/event-order-recall.ts +2802 -0
  942. package/src/evidence-pack.test.ts +89 -0
  943. package/src/evidence-pack.ts +388 -0
  944. package/src/explicit-capture.ts +530 -0
  945. package/src/explicit-cue-recall.test.ts +3019 -0
  946. package/src/explicit-cue-recall.ts +5545 -0
  947. package/src/extraction-judge-telemetry.ts +234 -0
  948. package/src/extraction-judge-training.ts +221 -0
  949. package/src/extraction-judge.ts +846 -0
  950. package/src/extraction-timeout.test.ts +265 -0
  951. package/src/extraction.ts +2719 -0
  952. package/src/fallback-llm.test.ts +1060 -0
  953. package/src/fallback-llm.ts +918 -0
  954. package/src/focused-list-recall.test.ts +734 -0
  955. package/src/focused-list-recall.ts +1160 -0
  956. package/src/graph-dashboard-diff.ts +35 -0
  957. package/src/graph-dashboard-key.ts +5 -0
  958. package/src/graph-dashboard-parser.ts +104 -0
  959. package/src/graph-edge-reinforcement.ts +192 -0
  960. package/src/graph-events.ts +151 -0
  961. package/src/graph-recall.test.ts +164 -0
  962. package/src/graph-recall.ts +189 -0
  963. package/src/graph-retrieval.test.ts +809 -0
  964. package/src/graph-retrieval.ts +823 -0
  965. package/src/graph-snapshot.ts +329 -0
  966. package/src/graph.ts +813 -0
  967. package/src/harmonic-retrieval.ts +223 -0
  968. package/src/himem.ts +154 -0
  969. package/src/hygiene.ts +87 -0
  970. package/src/identity-continuity.ts +333 -0
  971. package/src/importance.ts +328 -0
  972. package/src/importers/base.test.ts +294 -0
  973. package/src/importers/base.ts +436 -0
  974. package/src/importers/index.ts +21 -0
  975. package/src/index.ts +1204 -0
  976. package/src/intent.ts +154 -0
  977. package/src/json-extract.ts +85 -0
  978. package/src/json-store.ts +42 -0
  979. package/src/lcm/archive.ts +617 -0
  980. package/src/lcm/dag.ts +199 -0
  981. package/src/lcm/engine.ts +645 -0
  982. package/src/lcm/index.ts +7 -0
  983. package/src/lcm/queue.test.ts +178 -0
  984. package/src/lcm/queue.ts +200 -0
  985. package/src/lcm/recall.ts +117 -0
  986. package/src/lcm/schema.ts +154 -0
  987. package/src/lcm/summarizer.ts +235 -0
  988. package/src/lcm/tools.ts +191 -0
  989. package/src/lcm-engine.test.ts +660 -0
  990. package/src/legacy-hook-compat.test.ts +20 -0
  991. package/src/legacy-hook-compat.ts +45 -0
  992. package/src/lifecycle.ts +289 -0
  993. package/src/live-connectors-runner.ts +385 -0
  994. package/src/local-llm-qos.test.ts +303 -0
  995. package/src/local-llm-thinking.test.ts +292 -0
  996. package/src/local-llm.ts +1464 -0
  997. package/src/logger.ts +49 -0
  998. package/src/maintenance/archive-observations.ts +147 -0
  999. package/src/maintenance/backup-stamp.ts +3 -0
  1000. package/src/maintenance/dreams-ledger.ts +516 -0
  1001. package/src/maintenance/first-start-migration.ts +362 -0
  1002. package/src/maintenance/forget.test.ts +206 -0
  1003. package/src/maintenance/forget.ts +126 -0
  1004. package/src/maintenance/graph-edge-decay.test.ts +409 -0
  1005. package/src/maintenance/graph-edge-decay.ts +394 -0
  1006. package/src/maintenance/memory-governance-cron.ts +447 -0
  1007. package/src/maintenance/memory-governance.ts +1039 -0
  1008. package/src/maintenance/migrate-observations.ts +216 -0
  1009. package/src/maintenance/observation-ledger-utils.ts +54 -0
  1010. package/src/maintenance/pattern-reinforcement.test.ts +875 -0
  1011. package/src/maintenance/pattern-reinforcement.ts +369 -0
  1012. package/src/maintenance/purge.ts +334 -0
  1013. package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +78 -0
  1014. package/src/maintenance/rebuild-memory-projection.ts +1234 -0
  1015. package/src/maintenance/rebuild-observations.ts +178 -0
  1016. package/src/maintenance/tier-stats.test.ts +378 -0
  1017. package/src/maintenance/tier-stats.ts +222 -0
  1018. package/src/mcp-memory-inspector-app.ts +421 -0
  1019. package/src/memory-action-policy.ts +80 -0
  1020. package/src/memory-cache.ts +208 -0
  1021. package/src/memory-extension/claude-code-publisher.ts +51 -0
  1022. package/src/memory-extension/codex-publisher.ts +149 -0
  1023. package/src/memory-extension/hermes-publisher.ts +51 -0
  1024. package/src/memory-extension/index.ts +100 -0
  1025. package/src/memory-extension/shared-instructions.ts +133 -0
  1026. package/src/memory-extension/types.ts +86 -0
  1027. package/src/memory-extension-host/host-discovery.ts +276 -0
  1028. package/src/memory-extension-host/index.ts +14 -0
  1029. package/src/memory-extension-host/render-extensions-block.ts +73 -0
  1030. package/src/memory-extension-host/types.ts +21 -0
  1031. package/src/memory-lifecycle-ledger-utils.ts +116 -0
  1032. package/src/memory-projection-format.ts +11 -0
  1033. package/src/memory-projection-store.ts +951 -0
  1034. package/src/memory-provenance.test.ts +196 -0
  1035. package/src/memory-provenance.ts +484 -0
  1036. package/src/memory-worth-bench.test.ts +71 -0
  1037. package/src/memory-worth-bench.ts +265 -0
  1038. package/src/memory-worth-filter.test.ts +209 -0
  1039. package/src/memory-worth-filter.ts +204 -0
  1040. package/src/memory-worth-frontmatter.test.ts +311 -0
  1041. package/src/memory-worth-outcomes.test.ts +316 -0
  1042. package/src/memory-worth-outcomes.ts +286 -0
  1043. package/src/memory-worth.test.ts +317 -0
  1044. package/src/memory-worth.ts +215 -0
  1045. package/src/message-parts/index.ts +806 -0
  1046. package/src/message-parts/message-parts.test.ts +421 -0
  1047. package/src/migrate/from-engram.ts +789 -0
  1048. package/src/model-registry.ts +313 -0
  1049. package/src/models-json.ts +76 -0
  1050. package/src/namespaces/migrate.ts +187 -0
  1051. package/src/namespaces/path.ts +25 -0
  1052. package/src/namespaces/principal.test.ts +195 -0
  1053. package/src/namespaces/principal.ts +86 -0
  1054. package/src/namespaces/search.test.ts +105 -0
  1055. package/src/namespaces/search.ts +233 -0
  1056. package/src/namespaces/storage.ts +74 -0
  1057. package/src/native-knowledge.ts +1823 -0
  1058. package/src/negative.ts +72 -0
  1059. package/src/network/tailscale.ts +179 -0
  1060. package/src/network/webdav.ts +385 -0
  1061. package/src/objective-state-writers.ts +951 -0
  1062. package/src/objective-state.ts +320 -0
  1063. package/src/onboarding/index.ts +529 -0
  1064. package/src/openai-chat-compat.ts +56 -0
  1065. package/src/operator-toolkit.ts +2132 -0
  1066. package/src/opik-exporter.test.ts +72 -0
  1067. package/src/opik-exporter.ts +587 -0
  1068. package/src/orchestrator-extraction-queue.test.ts +197 -0
  1069. package/src/orchestrator-flush.test.ts +1171 -0
  1070. package/src/orchestrator-pattern-reinforcement.test.ts +128 -0
  1071. package/src/orchestrator-source-attribution.test.ts +701 -0
  1072. package/src/orchestrator.ts +16368 -0
  1073. package/src/page-versioning.ts +450 -0
  1074. package/src/patterns-cli.ts +574 -0
  1075. package/src/peers/index.ts +54 -0
  1076. package/src/peers/migrate-from-identity-anchor.test.ts +291 -0
  1077. package/src/peers/migrate-from-identity-anchor.ts +350 -0
  1078. package/src/peers/peers.test.ts +419 -0
  1079. package/src/peers/profile-reasoner.ts +694 -0
  1080. package/src/peers/storage.ts +1350 -0
  1081. package/src/peers/types.ts +138 -0
  1082. package/src/plugin-id.ts +84 -0
  1083. package/src/policy-runtime.ts +209 -0
  1084. package/src/procedural/procedure-miner.ts +150 -0
  1085. package/src/procedural/procedure-recall.ts +93 -0
  1086. package/src/procedural/procedure-stats.ts +213 -0
  1087. package/src/procedural/procedure-types.ts +132 -0
  1088. package/src/procedural/reinforcement-core.test.ts +132 -0
  1089. package/src/procedural/reinforcement-core.ts +73 -0
  1090. package/src/profiling.test.ts +263 -0
  1091. package/src/profiling.ts +435 -0
  1092. package/src/projection/index.ts +398 -0
  1093. package/src/qmd-recall-cache.test.ts +138 -0
  1094. package/src/qmd-recall-cache.ts +111 -0
  1095. package/src/qmd.test.ts +257 -0
  1096. package/src/qmd.ts +2614 -0
  1097. package/src/reasoning-trace-recall.ts +201 -0
  1098. package/src/reasoning-trace-types.ts +235 -0
  1099. package/src/recall-audit-anomaly.test.ts +246 -0
  1100. package/src/recall-audit-anomaly.ts +297 -0
  1101. package/src/recall-audit.test.ts +51 -0
  1102. package/src/recall-audit.ts +72 -0
  1103. package/src/recall-budget-config.test.ts +87 -0
  1104. package/src/recall-disclosure-escalation.test.ts +196 -0
  1105. package/src/recall-disclosure-escalation.ts +158 -0
  1106. package/src/recall-disclosure-shaping.test.ts +146 -0
  1107. package/src/recall-disclosure.test.ts +214 -0
  1108. package/src/recall-explain-renderer.test.ts +140 -0
  1109. package/src/recall-explain-renderer.ts +356 -0
  1110. package/src/recall-mmr.test.ts +808 -0
  1111. package/src/recall-mmr.ts +607 -0
  1112. package/src/recall-qos.test.ts +85 -0
  1113. package/src/recall-qos.ts +82 -0
  1114. package/src/recall-query-policy.ts +221 -0
  1115. package/src/recall-state.test.ts +233 -0
  1116. package/src/recall-state.ts +456 -0
  1117. package/src/recall-tag-filter.ts +143 -0
  1118. package/src/recall-tokenization.ts +35 -0
  1119. package/src/recall-xray-cli.test.ts +118 -0
  1120. package/src/recall-xray-cli.ts +100 -0
  1121. package/src/recall-xray-disclosure-telemetry.test.ts +183 -0
  1122. package/src/recall-xray-renderer.test.ts +539 -0
  1123. package/src/recall-xray-renderer.ts +487 -0
  1124. package/src/recall-xray.test.ts +503 -0
  1125. package/src/recall-xray.ts +621 -0
  1126. package/src/reconstruct.ts +41 -0
  1127. package/src/release-changelog.ts +35 -0
  1128. package/src/relevance.ts +67 -0
  1129. package/src/replay/normalizers/chatgpt.ts +133 -0
  1130. package/src/replay/normalizers/claude.ts +102 -0
  1131. package/src/replay/normalizers/openclaw.ts +119 -0
  1132. package/src/replay/normalizers/shared.ts +69 -0
  1133. package/src/replay/runner.ts +197 -0
  1134. package/src/replay/types.ts +143 -0
  1135. package/src/rerank.test.ts +48 -0
  1136. package/src/rerank.ts +176 -0
  1137. package/src/resolve-auth-token.test.ts +226 -0
  1138. package/src/resolve-auth-token.ts +151 -0
  1139. package/src/resolve-provider-secret.test.ts +187 -0
  1140. package/src/resolve-provider-secret.ts +410 -0
  1141. package/src/response-guidance-recall.test.ts +3952 -0
  1142. package/src/response-guidance-recall.ts +4431 -0
  1143. package/src/resume-bundles.ts +415 -0
  1144. package/src/retrieval-agents.ts +623 -0
  1145. package/src/retrieval-tiers.ts +25 -0
  1146. package/src/retrieval.ts +104 -0
  1147. package/src/review/index.test.ts +201 -0
  1148. package/src/review/index.ts +536 -0
  1149. package/src/routing/engine.ts +162 -0
  1150. package/src/routing/store.ts +321 -0
  1151. package/src/runtime/better-sqlite.test.ts +32 -0
  1152. package/src/runtime/better-sqlite.ts +76 -0
  1153. package/src/runtime/child-process.ts +67 -0
  1154. package/src/runtime/env.ts +48 -0
  1155. package/src/sanitize.ts +58 -0
  1156. package/src/schemas.ts +449 -0
  1157. package/src/sdk-compat.ts +87 -0
  1158. package/src/search/document-scanner.ts +96 -0
  1159. package/src/search/embed-helper.ts +142 -0
  1160. package/src/search/factory.ts +189 -0
  1161. package/src/search/index.ts +10 -0
  1162. package/src/search/lancedb-backend.ts +342 -0
  1163. package/src/search/meilisearch-backend.ts +232 -0
  1164. package/src/search/noop-backend.ts +57 -0
  1165. package/src/search/orama-backend.ts +358 -0
  1166. package/src/search/port.ts +86 -0
  1167. package/src/search/remote-backend.ts +124 -0
  1168. package/src/secure-store/cipher.ts +271 -0
  1169. package/src/secure-store/cli-handlers.ts +355 -0
  1170. package/src/secure-store/cli-renderer.ts +131 -0
  1171. package/src/secure-store/header.ts +373 -0
  1172. package/src/secure-store/index.ts +137 -0
  1173. package/src/secure-store/kdf.ts +263 -0
  1174. package/src/secure-store/keyring.ts +106 -0
  1175. package/src/secure-store/metadata.ts +394 -0
  1176. package/src/secure-store/passphrase-reader.ts +252 -0
  1177. package/src/secure-store/secure-fs.ts +571 -0
  1178. package/src/secure-store/secure-store.test.ts +755 -0
  1179. package/src/semantic-chunking.ts +545 -0
  1180. package/src/semantic-consolidation.test.ts +182 -0
  1181. package/src/semantic-consolidation.ts +432 -0
  1182. package/src/semantic-rule-promotion.ts +183 -0
  1183. package/src/semantic-rule-verifier.ts +160 -0
  1184. package/src/session-integrity.ts +569 -0
  1185. package/src/session-observer-bands.ts +11 -0
  1186. package/src/session-observer-state.ts +346 -0
  1187. package/src/session-toggles.test.ts +96 -0
  1188. package/src/session-toggles.ts +159 -0
  1189. package/src/shared-context/manager.ts +810 -0
  1190. package/src/signal.ts +84 -0
  1191. package/src/skills-registry.test.ts +277 -0
  1192. package/src/skills-registry.ts +120 -0
  1193. package/src/source-attribution-roundtrip.test.ts +215 -0
  1194. package/src/source-attribution.test.ts +1425 -0
  1195. package/src/source-attribution.ts +639 -0
  1196. package/src/spaces/index.ts +627 -0
  1197. package/src/storage-paths.ts +117 -0
  1198. package/src/storage.ts +6657 -0
  1199. package/src/store-contract.ts +55 -0
  1200. package/src/summarizer.ts +844 -0
  1201. package/src/summary-snapshot.test.ts +681 -0
  1202. package/src/summary-snapshot.ts +238 -0
  1203. package/src/surfaces/dreams.test.ts +394 -0
  1204. package/src/surfaces/dreams.ts +346 -0
  1205. package/src/surfaces/heartbeat.test.ts +415 -0
  1206. package/src/surfaces/heartbeat.ts +325 -0
  1207. package/src/sync/index.ts +308 -0
  1208. package/src/targeted-fact-recall.test.ts +1694 -0
  1209. package/src/targeted-fact-recall.ts +2905 -0
  1210. package/src/taxonomy/default-taxonomy.ts +87 -0
  1211. package/src/taxonomy/index.ts +26 -0
  1212. package/src/taxonomy/resolver-doc-generator.ts +57 -0
  1213. package/src/taxonomy/resolver.ts +184 -0
  1214. package/src/taxonomy/taxonomy-loader.ts +186 -0
  1215. package/src/taxonomy/types.ts +48 -0
  1216. package/src/telemetry-transcript.ts +70 -0
  1217. package/src/temporal-index.ts +890 -0
  1218. package/src/temporal-supersession.test.ts +2703 -0
  1219. package/src/temporal-supersession.ts +493 -0
  1220. package/src/temporal-validity.test.ts +448 -0
  1221. package/src/temporal-validity.ts +123 -0
  1222. package/src/threading.ts +395 -0
  1223. package/src/tier-migration.ts +124 -0
  1224. package/src/tier-routing.ts +102 -0
  1225. package/src/tmt.ts +462 -0
  1226. package/src/tokens.test.ts +178 -0
  1227. package/src/tokens.ts +279 -0
  1228. package/src/topics.ts +147 -0
  1229. package/src/training-export/cli-date-validation.test.ts +258 -0
  1230. package/src/training-export/converter.test.ts +452 -0
  1231. package/src/training-export/converter.ts +319 -0
  1232. package/src/training-export/date-parse.ts +117 -0
  1233. package/src/training-export/index.ts +26 -0
  1234. package/src/training-export/registry.test.ts +85 -0
  1235. package/src/training-export/registry.ts +57 -0
  1236. package/src/training-export/types.ts +31 -0
  1237. package/src/transcript.ts +1179 -0
  1238. package/src/transfer/autodetect.ts +30 -0
  1239. package/src/transfer/backup.ts +138 -0
  1240. package/src/transfer/capsule-crypto.ts +485 -0
  1241. package/src/transfer/capsule-encrypt.test.ts +690 -0
  1242. package/src/transfer/capsule-export.ts +543 -0
  1243. package/src/transfer/capsule-fork.ts +375 -0
  1244. package/src/transfer/capsule-import.ts +564 -0
  1245. package/src/transfer/capsule-merge.ts +433 -0
  1246. package/src/transfer/conflict-policy.ts +16 -0
  1247. package/src/transfer/constants.ts +13 -0
  1248. package/src/transfer/exclusions.ts +37 -0
  1249. package/src/transfer/export-json.ts +65 -0
  1250. package/src/transfer/export-md.ts +59 -0
  1251. package/src/transfer/export-sqlite.ts +52 -0
  1252. package/src/transfer/fs-utils.ts +269 -0
  1253. package/src/transfer/import-json.ts +108 -0
  1254. package/src/transfer/import-md.ts +84 -0
  1255. package/src/transfer/import-sqlite.ts +100 -0
  1256. package/src/transfer/integrity.ts +71 -0
  1257. package/src/transfer/sqlite-schema.ts +16 -0
  1258. package/src/transfer/types.ts +297 -0
  1259. package/src/trust-zones.ts +1186 -0
  1260. package/src/types.ts +3074 -0
  1261. package/src/user-model.test.ts +124 -0
  1262. package/src/user-model.ts +162 -0
  1263. package/src/utility-learner.ts +353 -0
  1264. package/src/utility-runtime.ts +88 -0
  1265. package/src/utility-telemetry.ts +215 -0
  1266. package/src/utils/category-dir.ts +44 -0
  1267. package/src/utils/errno.ts +6 -0
  1268. package/src/utils/iso-timestamp.test.ts +37 -0
  1269. package/src/utils/iso-timestamp.ts +164 -0
  1270. package/src/utils/path.ts +26 -0
  1271. package/src/verified-recall.ts +138 -0
  1272. package/src/version-utils.test.ts +10 -0
  1273. package/src/version-utils.ts +9 -0
  1274. package/src/whitespace.ts +10 -0
  1275. package/src/work/board.ts +359 -0
  1276. package/src/work/boundary.ts +107 -0
  1277. package/src/work/storage.ts +436 -0
  1278. package/src/work/types.ts +82 -0
  1279. package/src/work-product-ledger.ts +265 -0
  1280. package/dist/access-service-BkXt3di1.d.ts +0 -2039
  1281. package/dist/capsule-crypto-SJS5VVAP.js +0 -18
  1282. package/dist/capsule-export-LLEVB2RG.js +0 -17
  1283. package/dist/capsule-import-UW45R2MZ.js +0 -16
  1284. package/dist/capsule-merge-DI7PNQ2H.js +0 -189
  1285. package/dist/chunk-2LGMW3DJ.js +0 -111
  1286. package/dist/chunk-2YMTO4ZJ.js +0 -265
  1287. package/dist/chunk-2YMTO4ZJ.js.map +0 -1
  1288. package/dist/chunk-363MWCD3.js +0 -9683
  1289. package/dist/chunk-363MWCD3.js.map +0 -1
  1290. package/dist/chunk-36CTNQY7.js +0 -1554
  1291. package/dist/chunk-36CTNQY7.js.map +0 -1
  1292. package/dist/chunk-457A4P3L.js +0 -119
  1293. package/dist/chunk-457A4P3L.js.map +0 -1
  1294. package/dist/chunk-4DXC6HQQ.js +0 -1837
  1295. package/dist/chunk-4DXC6HQQ.js.map +0 -1
  1296. package/dist/chunk-4IS4SXIQ.js +0 -2040
  1297. package/dist/chunk-57QNCUEZ.js +0 -1914
  1298. package/dist/chunk-57QNCUEZ.js.map +0 -1
  1299. package/dist/chunk-6AUUAZEX.js +0 -150
  1300. package/dist/chunk-6AUUAZEX.js.map +0 -1
  1301. package/dist/chunk-6TBWYBJ3.js +0 -236
  1302. package/dist/chunk-6XA7UN4Z.js +0 -135
  1303. package/dist/chunk-6Z6UH6TK.js +0 -2129
  1304. package/dist/chunk-6Z6UH6TK.js.map +0 -1
  1305. package/dist/chunk-74EMIVE4.js +0 -329
  1306. package/dist/chunk-74EMIVE4.js.map +0 -1
  1307. package/dist/chunk-74WWN7ZW.js +0 -82
  1308. package/dist/chunk-74WWN7ZW.js.map +0 -1
  1309. package/dist/chunk-767ODGE6.js +0 -183
  1310. package/dist/chunk-A4ACKWIW.js +0 -289
  1311. package/dist/chunk-A4ACKWIW.js.map +0 -1
  1312. package/dist/chunk-ASAITVLA.js +0 -64
  1313. package/dist/chunk-ASAITVLA.js.map +0 -1
  1314. package/dist/chunk-C5HUWVH2.js +0 -891
  1315. package/dist/chunk-C5HUWVH2.js.map +0 -1
  1316. package/dist/chunk-D54LZC5L.js +0 -147
  1317. package/dist/chunk-DF3RVK3X.js +0 -119
  1318. package/dist/chunk-DF3RVK3X.js.map +0 -1
  1319. package/dist/chunk-E6K4NIEU.js +0 -747
  1320. package/dist/chunk-E6K4NIEU.js.map +0 -1
  1321. package/dist/chunk-EEQLFRUM.js +0 -89
  1322. package/dist/chunk-EQINRHYR.js +0 -672
  1323. package/dist/chunk-EQINRHYR.js.map +0 -1
  1324. package/dist/chunk-ETOW6ACV.js +0 -158
  1325. package/dist/chunk-ETOW6ACV.js.map +0 -1
  1326. package/dist/chunk-EYNQTST2.js +0 -721
  1327. package/dist/chunk-FYIYMQ5N.js +0 -221
  1328. package/dist/chunk-FYIYMQ5N.js.map +0 -1
  1329. package/dist/chunk-G2WADRQ3.js +0 -219
  1330. package/dist/chunk-G4SK7DSQ.js +0 -121
  1331. package/dist/chunk-GGD5W7TB.js +0 -105
  1332. package/dist/chunk-GGD5W7TB.js.map +0 -1
  1333. package/dist/chunk-GVPWB7EY.js +0 -390
  1334. package/dist/chunk-GVPWB7EY.js.map +0 -1
  1335. package/dist/chunk-HJYHRE4S.js +0 -647
  1336. package/dist/chunk-I6BQZSML.js +0 -1451
  1337. package/dist/chunk-I6BQZSML.js.map +0 -1
  1338. package/dist/chunk-IBX3VFOM.js +0 -446
  1339. package/dist/chunk-IBX3VFOM.js.map +0 -1
  1340. package/dist/chunk-IXEJRKCZ.js +0 -18
  1341. package/dist/chunk-JBMSGZEQ.js +0 -441
  1342. package/dist/chunk-JBMSGZEQ.js.map +0 -1
  1343. package/dist/chunk-JRNQ3RNA.js +0 -284
  1344. package/dist/chunk-JRNQ3RNA.js.map +0 -1
  1345. package/dist/chunk-K6WK37A6.js +0 -865
  1346. package/dist/chunk-K6WK37A6.js.map +0 -1
  1347. package/dist/chunk-KBYWQWSB.js +0 -271
  1348. package/dist/chunk-KUHRUM6B.js +0 -14397
  1349. package/dist/chunk-KUHRUM6B.js.map +0 -1
  1350. package/dist/chunk-KWBPHZUU.js +0 -83
  1351. package/dist/chunk-KWBPHZUU.js.map +0 -1
  1352. package/dist/chunk-LIO5X3CM.js +0 -596
  1353. package/dist/chunk-MARWOCVP.js +0 -48
  1354. package/dist/chunk-MCC6KDQF.js +0 -5095
  1355. package/dist/chunk-MCC6KDQF.js.map +0 -1
  1356. package/dist/chunk-N5AKDXAI.js +0 -74
  1357. package/dist/chunk-NN3LPQ5D.js +0 -936
  1358. package/dist/chunk-NN3LPQ5D.js.map +0 -1
  1359. package/dist/chunk-O4XJUPSF.js +0 -533
  1360. package/dist/chunk-O4XJUPSF.js.map +0 -1
  1361. package/dist/chunk-OA3L7BFR.js +0 -183
  1362. package/dist/chunk-OA3L7BFR.js.map +0 -1
  1363. package/dist/chunk-OR64ZGRZ.js +0 -23
  1364. package/dist/chunk-P73JTV34.js +0 -275
  1365. package/dist/chunk-P73JTV34.js.map +0 -1
  1366. package/dist/chunk-P77UEOU2.js +0 -1521
  1367. package/dist/chunk-P77UEOU2.js.map +0 -1
  1368. package/dist/chunk-PB5KW5PL.js +0 -118
  1369. package/dist/chunk-PHNGXFQ6.js +0 -623
  1370. package/dist/chunk-PHNGXFQ6.js.map +0 -1
  1371. package/dist/chunk-QIGOEM65.js +0 -228
  1372. package/dist/chunk-RXTFCYQF.js +0 -108
  1373. package/dist/chunk-S2JJBLJG.js +0 -2101
  1374. package/dist/chunk-S2JJBLJG.js.map +0 -1
  1375. package/dist/chunk-S3IP6R6K.js +0 -219
  1376. package/dist/chunk-S3IP6R6K.js.map +0 -1
  1377. package/dist/chunk-SRBJUAMP.js +0 -403
  1378. package/dist/chunk-SRBJUAMP.js.map +0 -1
  1379. package/dist/chunk-URB2WSKZ.js +0 -350
  1380. package/dist/chunk-URB2WSKZ.js.map +0 -1
  1381. package/dist/chunk-VQXK37XA.js +0 -26
  1382. package/dist/chunk-VQXK37XA.js.map +0 -1
  1383. package/dist/chunk-VTU2B4VF.js +0 -146
  1384. package/dist/chunk-VTU2B4VF.js.map +0 -1
  1385. package/dist/chunk-VX2IUQFE.js +0 -613
  1386. package/dist/chunk-VX2IUQFE.js.map +0 -1
  1387. package/dist/chunk-WGK4VHGP.js +0 -4292
  1388. package/dist/chunk-WGK4VHGP.js.map +0 -1
  1389. package/dist/chunk-WTFWLUSX.js +0 -827
  1390. package/dist/chunk-WTFWLUSX.js.map +0 -1
  1391. package/dist/chunk-XJKFSSDW.js +0 -726
  1392. package/dist/chunk-XJKFSSDW.js.map +0 -1
  1393. package/dist/chunk-XMHBH5H6.js +0 -283
  1394. package/dist/chunk-XMHBH5H6.js.map +0 -1
  1395. package/dist/chunk-XMVFHBHT.js +0 -277
  1396. package/dist/chunk-Y5KDIOKF.js +0 -2403
  1397. package/dist/chunk-Y5KDIOKF.js.map +0 -1
  1398. package/dist/chunk-YNB73F22.js +0 -137
  1399. package/dist/chunk-YNB73F22.js.map +0 -1
  1400. package/dist/chunk-Z2E7VW55.js +0 -335
  1401. package/dist/chunk-Z2E7VW55.js.map +0 -1
  1402. package/dist/chunk-Z5S5HNGY.js +0 -2280
  1403. package/dist/chunk-Z5S5HNGY.js.map +0 -1
  1404. package/dist/chunk-ZL4S7ARC.js +0 -53
  1405. package/dist/chunk-ZTSE2ZJ6.js +0 -190
  1406. package/dist/chunk-ZTSE2ZJ6.js.map +0 -1
  1407. package/dist/cli-Cvy2SNhF.d.ts +0 -1259
  1408. package/dist/codex-materialize-CQlLTzke.d.ts +0 -139
  1409. package/dist/connectors-cli-DFGtY2DB.d.ts +0 -257
  1410. package/dist/contradiction-review-5LTTVDQV.js +0 -22
  1411. package/dist/contradiction-scan-3Z6YW7YA.js +0 -413
  1412. package/dist/contradiction-scan-3Z6YW7YA.js.map +0 -1
  1413. package/dist/engine-FOC3IJLA.js +0 -28
  1414. package/dist/fs-utils-IRVUFB6G.js +0 -30
  1415. package/dist/graph-edge-decay-PWB63GRE.js +0 -207
  1416. package/dist/index-1qIcnbG1.d.ts +0 -34
  1417. package/dist/memory-governance-F3QOJGEY.js +0 -37
  1418. package/dist/memory-projection-store-CY8TU40w.d.ts +0 -222
  1419. package/dist/orchestrator-AOQMo7QI.d.ts +0 -1784
  1420. package/dist/path-RMTY5Y5A.js +0 -9
  1421. package/dist/port-B6VEDIkC.d.ts +0 -53
  1422. package/dist/resolution-YGIBORXI.js +0 -101
  1423. package/dist/resolution-YGIBORXI.js.map +0 -1
  1424. package/dist/secure-store-4R2GSO7S.js +0 -156
  1425. package/dist/semantic-consolidation-ByBXb-sf.d.ts +0 -180
  1426. package/dist/state-store-3EH7HYIN.js +0 -16
  1427. package/dist/types-V3FJ26TF.js +0 -30
  1428. /package/dist/{capsule-crypto-SJS5VVAP.js.map → action-confidence.js.map} +0 -0
  1429. /package/dist/{capsule-export-LLEVB2RG.js.map → adapters/claude-code.js.map} +0 -0
  1430. /package/dist/{capsule-import-UW45R2MZ.js.map → adapters/codex.js.map} +0 -0
  1431. /package/dist/{contradiction-review-5LTTVDQV.js.map → adapters/hermes.js.map} +0 -0
  1432. /package/dist/{engine-FOC3IJLA.js.map → adapters/index.js.map} +0 -0
  1433. /package/dist/{fs-utils-IRVUFB6G.js.map → adapters/registry.js.map} +0 -0
  1434. /package/dist/{memory-governance-F3QOJGEY.js.map → adapters/replit.js.map} +0 -0
  1435. /package/dist/{path-RMTY5Y5A.js.map → adapters/types.js.map} +0 -0
  1436. /package/dist/{secure-store-4R2GSO7S.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
  1437. /package/dist/{capsule-merge-DI7PNQ2H.js.map → capsule-merge-4MGKE7C5.js.map} +0 -0
  1438. /package/dist/{chunk-G4SK7DSQ.js.map → chunk-2WWLHTZY.js.map} +0 -0
  1439. /package/dist/{chunk-KBYWQWSB.js.map → chunk-4CRG46BG.js.map} +0 -0
  1440. /package/dist/{chunk-LIO5X3CM.js.map → chunk-7IASACLB.js.map} +0 -0
  1441. /package/dist/{chunk-EYNQTST2.js.map → chunk-EFJ3MQ4V.js.map} +0 -0
  1442. /package/dist/{chunk-D54LZC5L.js.map → chunk-FDU6HUUL.js.map} +0 -0
  1443. /package/dist/{chunk-QIGOEM65.js.map → chunk-GGKRUQOO.js.map} +0 -0
  1444. /package/dist/{chunk-HJYHRE4S.js.map → chunk-GL6I6MEQ.js.map} +0 -0
  1445. /package/dist/{state-store-3EH7HYIN.js.map → chunk-HHLLAQGZ.js.map} +0 -0
  1446. /package/dist/{chunk-4IS4SXIQ.js.map → chunk-HXXBL2KD.js.map} +0 -0
  1447. /package/dist/{chunk-767ODGE6.js.map → chunk-KNKUID7G.js.map} +0 -0
  1448. /package/dist/{chunk-6TBWYBJ3.js.map → chunk-LPMVBPA3.js.map} +0 -0
  1449. /package/dist/{chunk-PB5KW5PL.js.map → chunk-MC26UJIM.js.map} +0 -0
  1450. /package/dist/{chunk-ZL4S7ARC.js.map → chunk-MT4HVDUZ.js.map} +0 -0
  1451. /package/dist/{chunk-G2WADRQ3.js.map → chunk-MY6TPVXW.js.map} +0 -0
  1452. /package/dist/{chunk-OR64ZGRZ.js.map → chunk-NNVTUXEB.js.map} +0 -0
  1453. /package/dist/{chunk-RXTFCYQF.js.map → chunk-P4NEIHUT.js.map} +0 -0
  1454. /package/dist/{chunk-IXEJRKCZ.js.map → chunk-QRNI5JBH.js.map} +0 -0
  1455. /package/dist/{chunk-EEQLFRUM.js.map → chunk-RRF5UOBJ.js.map} +0 -0
  1456. /package/dist/{types-V3FJ26TF.js.map → chunk-SEDEKFYQ.js.map} +0 -0
  1457. /package/dist/{chunk-2LGMW3DJ.js.map → chunk-U3PN77QT.js.map} +0 -0
  1458. /package/dist/{chunk-XMVFHBHT.js.map → chunk-U3WSW6PZ.js.map} +0 -0
  1459. /package/dist/{chunk-N5AKDXAI.js.map → chunk-UWVJF25J.js.map} +0 -0
  1460. /package/dist/{chunk-MARWOCVP.js.map → chunk-XIG5PDM7.js.map} +0 -0
  1461. /package/dist/{chunk-6XA7UN4Z.js.map → chunk-XVZ7B3HG.js.map} +0 -0
  1462. /package/dist/{graph-edge-decay-PWB63GRE.js.map → graph-edge-decay-5DI5GUNL.js.map} +0 -0
@@ -0,0 +1,73 @@
1
+ // src/buffer-surprise-report.ts
2
+ async function reportBufferSurpriseDistribution(readEvents, options = {}) {
3
+ const limit = normalizeReportLimit(options.limit);
4
+ const raw = await readEvents({ limit, since: options.since });
5
+ const sinceMs = typeof options.since === "string" && options.since.length > 0 ? Date.parse(options.since) : Number.NaN;
6
+ const rows = raw.filter((row) => {
7
+ if (!row || row.event !== "BUFFER_SURPRISE") return false;
8
+ const ts = Date.parse(row.timestamp);
9
+ if (!Number.isFinite(ts)) return false;
10
+ if (typeof row.surpriseScore !== "number") return false;
11
+ if (!Number.isFinite(row.surpriseScore)) return false;
12
+ if (row.surpriseScore < 0 || row.surpriseScore > 1) return false;
13
+ if (typeof row.triggeredFlush !== "boolean") return false;
14
+ if (Number.isFinite(sinceMs)) {
15
+ if (!Number.isFinite(ts) || ts <= sinceMs) return false;
16
+ }
17
+ return true;
18
+ }).sort((left, right) => Date.parse(left.timestamp) - Date.parse(right.timestamp));
19
+ const windowStart = Math.max(0, rows.length - limit);
20
+ const windowRows = rows.slice(windowStart);
21
+ if (windowRows.length === 0) {
22
+ return {
23
+ count: 0,
24
+ triggeredCount: 0,
25
+ triggeredRate: 0,
26
+ mean: 0,
27
+ median: 0,
28
+ p90: 0,
29
+ min: 0,
30
+ max: 0,
31
+ currentThreshold: null
32
+ };
33
+ }
34
+ const scores = windowRows.map((r) => r.surpriseScore).sort((a, b) => a - b);
35
+ const triggeredCount = windowRows.reduce(
36
+ (acc, r) => acc + (r.triggeredFlush ? 1 : 0),
37
+ 0
38
+ );
39
+ const sum = scores.reduce((acc, v) => acc + v, 0);
40
+ const mean = sum / scores.length;
41
+ const median = percentile(scores, 0.5);
42
+ const p90 = percentile(scores, 0.9);
43
+ const mostRecent = windowRows[windowRows.length - 1];
44
+ const currentThreshold = mostRecent && typeof mostRecent.threshold === "number" ? mostRecent.threshold : null;
45
+ return {
46
+ count: scores.length,
47
+ triggeredCount,
48
+ triggeredRate: triggeredCount / scores.length,
49
+ mean,
50
+ median,
51
+ p90,
52
+ min: scores[0],
53
+ max: scores[scores.length - 1],
54
+ currentThreshold
55
+ };
56
+ }
57
+ function normalizeReportLimit(limit) {
58
+ if (limit === void 0) return 200;
59
+ if (typeof limit !== "number" || !Number.isFinite(limit)) return 200;
60
+ const floored = Math.floor(limit);
61
+ return floored > 0 ? floored : 200;
62
+ }
63
+ function percentile(sorted, p) {
64
+ if (sorted.length === 0) return 0;
65
+ const clamped = Math.max(0, Math.min(1, p));
66
+ const rank = Math.max(1, Math.ceil(clamped * sorted.length));
67
+ return sorted[rank - 1];
68
+ }
69
+
70
+ export {
71
+ reportBufferSurpriseDistribution
72
+ };
73
+ //# sourceMappingURL=chunk-YBPYIAA5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/buffer-surprise-report.ts"],"sourcesContent":["/**\n * Buffer-surprise telemetry report (issue #563 PR 3).\n *\n * Reads the append-only `state/buffer-surprise-ledger.jsonl` file written\n * by `SmartBuffer` and summarizes the recent distribution of surprise\n * scores for the Doctor surface. This module is intentionally standalone\n * and pure — the only I/O is reading the ledger via the injected\n * `readEvents` callback, so it can be exercised directly in tests\n * without touching the filesystem.\n *\n * # Output shape\n *\n * `BufferSurpriseDistribution` has fields sized for a one-screen Doctor\n * display:\n *\n * - `count` — rows considered in the summary window.\n * - `triggeredCount` — rows whose `triggeredFlush === true`.\n * - `triggeredRate` — `triggeredCount / count`, or `0` when empty.\n * - `mean` — arithmetic mean of `surpriseScore`.\n * - `median` — middle value (50th percentile).\n * - `p90` — 90th percentile (tail of novelty).\n * - `min`, `max` — window extremes.\n * - `currentThreshold` — threshold from the MOST RECENT row, or `null`.\n *\n * All percentile math uses the nearest-rank method (no interpolation) so\n * the report is stable across small windows.\n *\n * # Why a pure function + injected reader?\n *\n * The Doctor surface is exercised both at runtime (through the CLI and\n * gateway tools) and in tests. A pure distribution helper fed from an\n * arbitrary `readEvents` callback keeps the report logic trivially\n * testable without spinning up a real `StorageManager`.\n */\n\nimport type { BufferSurpriseEvent } from \"./types.js\";\n\nexport interface BufferSurpriseDistribution {\n count: number;\n triggeredCount: number;\n triggeredRate: number;\n mean: number;\n median: number;\n p90: number;\n min: number;\n max: number;\n currentThreshold: number | null;\n}\n\nexport interface BufferSurpriseReportOptions {\n /**\n * Maximum number of recent rows to include. Defaults to `200` — large\n * enough to see a distribution, small enough to read in one sitting.\n */\n limit?: number;\n /** Lower-bound ISO timestamp; rows at or before this are excluded. */\n since?: string;\n}\n\n/**\n * Reader callback shape. The helper does not want to know whether the\n * rows come from a file, a queue, or an in-memory buffer.\n */\nexport type BufferSurpriseReader = (\n options: BufferSurpriseReportOptions,\n) => Promise<readonly BufferSurpriseEvent[]>;\n\n/**\n * Summarize the recent buffer-surprise distribution. Returns the empty\n * distribution shape when the ledger has no applicable rows — callers can\n * detect this via `count === 0` and render \"no data yet\".\n */\nexport async function reportBufferSurpriseDistribution(\n readEvents: BufferSurpriseReader,\n options: BufferSurpriseReportOptions = {},\n): Promise<BufferSurpriseDistribution> {\n const limit = normalizeReportLimit(options.limit);\n const raw = await readEvents({ limit, since: options.since });\n\n // Filter for sanity: finite numeric scores in [0, 1], event tag match,\n // and the optional `since` lower bound. Malformed rows are skipped.\n const sinceMs =\n typeof options.since === \"string\" && options.since.length > 0\n ? Date.parse(options.since)\n : Number.NaN;\n const rows = raw.filter((row): row is BufferSurpriseEvent => {\n if (!row || row.event !== \"BUFFER_SURPRISE\") return false;\n const ts = Date.parse(row.timestamp);\n if (!Number.isFinite(ts)) return false;\n if (typeof row.surpriseScore !== \"number\") return false;\n if (!Number.isFinite(row.surpriseScore)) return false;\n if (row.surpriseScore < 0 || row.surpriseScore > 1) return false;\n // `triggeredFlush` must be a real boolean — not a string or other\n // truthy value. A row with `triggeredFlush: \"false\"` (string from a\n // JSON-parsing bug upstream) would otherwise be counted as\n // triggered, inflating the rate and misleading operators tuning the\n // threshold from real traffic.\n if (typeof row.triggeredFlush !== \"boolean\") return false;\n if (Number.isFinite(sinceMs)) {\n if (!Number.isFinite(ts) || ts <= sinceMs) return false;\n }\n return true;\n }).sort((left, right) => Date.parse(left.timestamp) - Date.parse(right.timestamp));\n\n const windowStart = Math.max(0, rows.length - limit);\n const windowRows = rows.slice(windowStart);\n\n if (windowRows.length === 0) {\n return {\n count: 0,\n triggeredCount: 0,\n triggeredRate: 0,\n mean: 0,\n median: 0,\n p90: 0,\n min: 0,\n max: 0,\n currentThreshold: null,\n };\n }\n\n const scores = windowRows.map((r) => r.surpriseScore).sort((a, b) => a - b);\n const triggeredCount = windowRows.reduce(\n (acc, r) => acc + (r.triggeredFlush ? 1 : 0),\n 0,\n );\n const sum = scores.reduce((acc, v) => acc + v, 0);\n const mean = sum / scores.length;\n\n // Nearest-rank percentiles keep the output stable for small windows.\n const median = percentile(scores, 0.5);\n const p90 = percentile(scores, 0.9);\n\n // \"Current\" threshold is whichever was in force for the most recent row\n // — not necessarily the one configured right now, but the value the\n // ledger rows were judged against. That's what operators need to reason\n // about the distribution.\n const mostRecent = windowRows[windowRows.length - 1];\n const currentThreshold =\n mostRecent && typeof mostRecent.threshold === \"number\"\n ? mostRecent.threshold\n : null;\n\n return {\n count: scores.length,\n triggeredCount,\n triggeredRate: triggeredCount / scores.length,\n mean,\n median,\n p90,\n min: scores[0]!,\n max: scores[scores.length - 1]!,\n currentThreshold,\n };\n}\n\nfunction normalizeReportLimit(limit: number | undefined): number {\n if (limit === undefined) return 200;\n if (typeof limit !== \"number\" || !Number.isFinite(limit)) return 200;\n const floored = Math.floor(limit);\n return floored > 0 ? floored : 200;\n}\n\n/**\n * Nearest-rank percentile of a pre-sorted ascending array.\n *\n * Returns `sorted[ceil(p * n) - 1]`, with `p` clamped to `[0, 1]`.\n * This avoids the interpolation ambiguity of R-7/R-8 percentiles and is\n * stable when the window is small (e.g. 3-5 rows).\n */\nfunction percentile(sorted: readonly number[], p: number): number {\n if (sorted.length === 0) return 0;\n const clamped = Math.max(0, Math.min(1, p));\n const rank = Math.max(1, Math.ceil(clamped * sorted.length));\n return sorted[rank - 1]!;\n}\n"],"mappings":";AAwEA,eAAsB,iCACpB,YACA,UAAuC,CAAC,GACH;AACrC,QAAM,QAAQ,qBAAqB,QAAQ,KAAK;AAChD,QAAM,MAAM,MAAM,WAAW,EAAE,OAAO,OAAO,QAAQ,MAAM,CAAC;AAI5D,QAAM,UACJ,OAAO,QAAQ,UAAU,YAAY,QAAQ,MAAM,SAAS,IACxD,KAAK,MAAM,QAAQ,KAAK,IACxB,OAAO;AACb,QAAM,OAAO,IAAI,OAAO,CAAC,QAAoC;AAC3D,QAAI,CAAC,OAAO,IAAI,UAAU,kBAAmB,QAAO;AACpD,UAAM,KAAK,KAAK,MAAM,IAAI,SAAS;AACnC,QAAI,CAAC,OAAO,SAAS,EAAE,EAAG,QAAO;AACjC,QAAI,OAAO,IAAI,kBAAkB,SAAU,QAAO;AAClD,QAAI,CAAC,OAAO,SAAS,IAAI,aAAa,EAAG,QAAO;AAChD,QAAI,IAAI,gBAAgB,KAAK,IAAI,gBAAgB,EAAG,QAAO;AAM3D,QAAI,OAAO,IAAI,mBAAmB,UAAW,QAAO;AACpD,QAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,UAAI,CAAC,OAAO,SAAS,EAAE,KAAK,MAAM,QAAS,QAAO;AAAA,IACpD;AACA,WAAO;AAAA,EACT,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,MAAM,KAAK,SAAS,IAAI,KAAK,MAAM,MAAM,SAAS,CAAC;AAEjF,QAAM,cAAc,KAAK,IAAI,GAAG,KAAK,SAAS,KAAK;AACnD,QAAM,aAAa,KAAK,MAAM,WAAW;AAEzC,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO;AAAA,MACL,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,kBAAkB;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,SAAS,WAAW,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAC1E,QAAM,iBAAiB,WAAW;AAAA,IAChC,CAAC,KAAK,MAAM,OAAO,EAAE,iBAAiB,IAAI;AAAA,IAC1C;AAAA,EACF;AACA,QAAM,MAAM,OAAO,OAAO,CAAC,KAAK,MAAM,MAAM,GAAG,CAAC;AAChD,QAAM,OAAO,MAAM,OAAO;AAG1B,QAAM,SAAS,WAAW,QAAQ,GAAG;AACrC,QAAM,MAAM,WAAW,QAAQ,GAAG;AAMlC,QAAM,aAAa,WAAW,WAAW,SAAS,CAAC;AACnD,QAAM,mBACJ,cAAc,OAAO,WAAW,cAAc,WAC1C,WAAW,YACX;AAEN,SAAO;AAAA,IACL,OAAO,OAAO;AAAA,IACd;AAAA,IACA,eAAe,iBAAiB,OAAO;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK,OAAO,CAAC;AAAA,IACb,KAAK,OAAO,OAAO,SAAS,CAAC;AAAA,IAC7B;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,OAAmC;AAC/D,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACjE,QAAM,UAAU,KAAK,MAAM,KAAK;AAChC,SAAO,UAAU,IAAI,UAAU;AACjC;AASA,SAAS,WAAW,QAA2B,GAAmB;AAChE,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAC1C,QAAM,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,UAAU,OAAO,MAAM,CAAC;AAC3D,SAAO,OAAO,OAAO,CAAC;AACxB;","names":[]}
@@ -0,0 +1,21 @@
1
+ // src/transfer/sqlite-schema.ts
2
+ var SQLITE_SCHEMA_VERSION = 1;
3
+ var SQLITE_TABLES_SQL = `
4
+ CREATE TABLE IF NOT EXISTS meta (
5
+ key TEXT PRIMARY KEY,
6
+ value TEXT NOT NULL
7
+ );
8
+
9
+ CREATE TABLE IF NOT EXISTS files (
10
+ path_rel TEXT PRIMARY KEY,
11
+ bytes INTEGER NOT NULL,
12
+ sha256 TEXT NOT NULL,
13
+ content TEXT NOT NULL
14
+ );
15
+ `;
16
+
17
+ export {
18
+ SQLITE_SCHEMA_VERSION,
19
+ SQLITE_TABLES_SQL
20
+ };
21
+ //# sourceMappingURL=chunk-Z734BLO3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/transfer/sqlite-schema.ts"],"sourcesContent":["export const SQLITE_SCHEMA_VERSION = 1 as const;\n\nexport const SQLITE_TABLES_SQL = `\nCREATE TABLE IF NOT EXISTS meta (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS files (\n path_rel TEXT PRIMARY KEY,\n bytes INTEGER NOT NULL,\n sha256 TEXT NOT NULL,\n content TEXT NOT NULL\n);\n`;\n\n"],"mappings":";AAAO,IAAM,wBAAwB;AAE9B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -0,0 +1,269 @@
1
+ import {
2
+ WORK_ID_PATTERN,
3
+ WorkStorage
4
+ } from "./chunk-WELDCG6C.js";
5
+
6
+ // src/work/board.ts
7
+ var BOARD_STATUS_ORDER = [
8
+ "todo",
9
+ "in_progress",
10
+ "blocked",
11
+ "done",
12
+ "cancelled"
13
+ ];
14
+ var BOARD_STATUS_LABEL = {
15
+ todo: "Todo",
16
+ in_progress: "In Progress",
17
+ blocked: "Blocked",
18
+ done: "Done",
19
+ cancelled: "Cancelled"
20
+ };
21
+ var PRIORITY_WEIGHT = {
22
+ high: 0,
23
+ medium: 1,
24
+ low: 2
25
+ };
26
+ function stableSortTasks(tasks) {
27
+ return [...tasks].sort((a, b) => {
28
+ const priorityCmp = PRIORITY_WEIGHT[a.priority] - PRIORITY_WEIGHT[b.priority];
29
+ if (priorityCmp !== 0) return priorityCmp;
30
+ const createdCmp = a.createdAt.localeCompare(b.createdAt);
31
+ if (createdCmp !== 0) return createdCmp;
32
+ return a.id.localeCompare(b.id);
33
+ });
34
+ }
35
+ function projectMatches(task, projectId) {
36
+ if (!projectId) return true;
37
+ return task.projectId === projectId;
38
+ }
39
+ function assertValidImportEnums(item) {
40
+ if (!["todo", "in_progress", "blocked", "done", "cancelled"].includes(item.status)) {
41
+ throw new Error(`invalid task status in snapshot for ${item.id}: ${item.status}`);
42
+ }
43
+ if (!["low", "medium", "high"].includes(item.priority)) {
44
+ throw new Error(`invalid task priority in snapshot for ${item.id}: ${item.priority}`);
45
+ }
46
+ }
47
+ function normalizeImportedProjectId(rawValue, taskId, fallbackForUndefined) {
48
+ if (rawValue === void 0) return fallbackForUndefined;
49
+ if (rawValue === null) return null;
50
+ if (typeof rawValue === "string") {
51
+ const trimmed = rawValue.trim();
52
+ return trimmed.length > 0 ? trimmed : null;
53
+ }
54
+ throw new Error(`invalid task projectId in snapshot for ${taskId}`);
55
+ }
56
+ function normalizeImportedTags(rawValue, taskId) {
57
+ if (rawValue === void 0 || rawValue === null) return [];
58
+ if (!Array.isArray(rawValue)) {
59
+ throw new Error(`invalid task tags in snapshot for ${taskId}`);
60
+ }
61
+ if (!rawValue.every((entry) => typeof entry === "string")) {
62
+ throw new Error(`invalid task tags in snapshot for ${taskId}`);
63
+ }
64
+ return [...rawValue];
65
+ }
66
+ function assertValidImportedTaskId(rawValue) {
67
+ if (typeof rawValue !== "string") {
68
+ throw new Error("invalid task id in snapshot");
69
+ }
70
+ const trimmed = rawValue.trim();
71
+ if (!WORK_ID_PATTERN.test(trimmed)) {
72
+ throw new Error(`invalid task id in snapshot: ${trimmed}`);
73
+ }
74
+ return trimmed;
75
+ }
76
+ function normalizeImportedNullableField(rawValue, taskId, fieldName, fallbackForUndefined) {
77
+ if (rawValue === void 0) return fallbackForUndefined;
78
+ if (rawValue === null) return null;
79
+ if (typeof rawValue === "string") return rawValue;
80
+ throw new Error(`invalid task ${fieldName} in snapshot for ${taskId}`);
81
+ }
82
+ function normalizeImportedTitle(rawValue, taskId) {
83
+ if (typeof rawValue !== "string") {
84
+ throw new Error(`invalid task title in snapshot for ${taskId}`);
85
+ }
86
+ const trimmed = rawValue.trim();
87
+ if (trimmed.length === 0) {
88
+ throw new Error(`invalid task title in snapshot for ${taskId}`);
89
+ }
90
+ return trimmed;
91
+ }
92
+ function normalizeImportedDescription(rawValue, taskId) {
93
+ if (typeof rawValue !== "string") {
94
+ throw new Error(`invalid task description in snapshot for ${taskId}`);
95
+ }
96
+ return rawValue;
97
+ }
98
+ function asBoardItem(task) {
99
+ return {
100
+ id: task.id,
101
+ title: task.title,
102
+ description: task.description,
103
+ status: task.status,
104
+ priority: task.priority,
105
+ owner: task.owner,
106
+ assignee: task.assignee,
107
+ projectId: task.projectId,
108
+ tags: [...task.tags],
109
+ dueAt: task.dueAt
110
+ };
111
+ }
112
+ function formatTaskLine(task) {
113
+ const bits = [`id:${task.id}`, `priority:${task.priority}`];
114
+ if (task.assignee) bits.push(`assignee:${task.assignee}`);
115
+ if (task.owner) bits.push(`owner:${task.owner}`);
116
+ if (task.dueAt) bits.push(`due:${task.dueAt}`);
117
+ if (task.tags.length > 0) bits.push(`tags:${task.tags.join(",")}`);
118
+ const checked = task.status === "done";
119
+ return `- [${checked ? "x" : " "}] ${task.title} \`[${bits.join(" ")}]\``;
120
+ }
121
+ async function exportWorkBoardSnapshot(options) {
122
+ const storage = new WorkStorage(options.memoryDir);
123
+ await storage.ensureDirectories();
124
+ const projectId = options.projectId?.trim() || void 0;
125
+ let project = null;
126
+ if (projectId) {
127
+ project = await storage.getProject(projectId);
128
+ if (!project) throw new Error(`project not found: ${projectId}`);
129
+ }
130
+ const allTasks = await storage.listTasks();
131
+ const filtered = stableSortTasks(allTasks.filter((task) => projectMatches(task, projectId)));
132
+ return {
133
+ version: 1,
134
+ generatedAt: (options.now ?? /* @__PURE__ */ new Date()).toISOString(),
135
+ projectId: projectId ?? null,
136
+ projectName: project?.name ?? null,
137
+ items: filtered.map(asBoardItem)
138
+ };
139
+ }
140
+ function renderWorkBoardMarkdown(snapshot) {
141
+ const lines = [];
142
+ lines.push("# Work Board");
143
+ lines.push("");
144
+ lines.push(`Generated: ${snapshot.generatedAt}`);
145
+ lines.push(`Project: ${snapshot.projectName ?? "all"} (${snapshot.projectId ?? "all"})`);
146
+ lines.push("");
147
+ for (const status of BOARD_STATUS_ORDER) {
148
+ const bucket = snapshot.items.filter((item) => item.status === status);
149
+ lines.push(`## ${BOARD_STATUS_LABEL[status]} (${bucket.length})`);
150
+ if (bucket.length === 0) {
151
+ lines.push("_none_");
152
+ } else {
153
+ for (const item of bucket) {
154
+ lines.push(formatTaskLine(item));
155
+ }
156
+ }
157
+ lines.push("");
158
+ }
159
+ return `${lines.join("\n").trim()}
160
+ `;
161
+ }
162
+ async function exportWorkBoardMarkdown(options) {
163
+ const snapshot = await exportWorkBoardSnapshot(options);
164
+ return renderWorkBoardMarkdown(snapshot);
165
+ }
166
+ async function importWorkBoardSnapshot(options) {
167
+ if (options.snapshot.version !== 1) {
168
+ throw new Error(`unsupported work board snapshot version: ${options.snapshot.version}`);
169
+ }
170
+ const storage = new WorkStorage(options.memoryDir);
171
+ await storage.ensureDirectories();
172
+ const forcedProjectId = options.projectId === void 0 ? void 0 : options.projectId?.trim() || null;
173
+ const snapshotProjectId = normalizeImportedProjectId(
174
+ options.snapshot.projectId,
175
+ "snapshot",
176
+ null
177
+ );
178
+ const preparedRows = [];
179
+ const seenItemIds = /* @__PURE__ */ new Set();
180
+ for (const item of options.snapshot.items) {
181
+ const id = assertValidImportedTaskId(item.id);
182
+ if (seenItemIds.has(id)) {
183
+ throw new Error(`duplicate task id in snapshot: ${id}`);
184
+ }
185
+ seenItemIds.add(id);
186
+ assertValidImportEnums(item);
187
+ const existing = await storage.getTask(id);
188
+ const title = normalizeImportedTitle(item.title, id);
189
+ const description = normalizeImportedDescription(item.description, id);
190
+ const fallbackProjectId = existing ? existing.projectId : snapshotProjectId;
191
+ const projectId = forcedProjectId === void 0 ? normalizeImportedProjectId(
192
+ item.projectId,
193
+ item.id,
194
+ fallbackProjectId
195
+ ) : forcedProjectId;
196
+ const hasTagsField = Object.prototype.hasOwnProperty.call(
197
+ item,
198
+ "tags"
199
+ );
200
+ const tags = hasTagsField ? normalizeImportedTags(item.tags, item.id) : existing ? [...existing.tags] : [];
201
+ const owner = normalizeImportedNullableField(
202
+ item.owner,
203
+ id,
204
+ "owner",
205
+ existing?.owner ?? null
206
+ );
207
+ const assignee = normalizeImportedNullableField(
208
+ item.assignee,
209
+ id,
210
+ "assignee",
211
+ existing?.assignee ?? null
212
+ );
213
+ const dueAt = normalizeImportedNullableField(
214
+ item.dueAt,
215
+ id,
216
+ "dueAt",
217
+ existing?.dueAt ?? null
218
+ );
219
+ preparedRows.push({ item, existing, id, title, description, projectId, tags, owner, assignee, dueAt });
220
+ }
221
+ const projectIdsToValidate = new Set(
222
+ preparedRows.map((row) => row.projectId).filter((projectId) => typeof projectId === "string")
223
+ );
224
+ for (const projectId of projectIdsToValidate) {
225
+ const project = await storage.getProject(projectId);
226
+ if (!project) throw new Error(`project not found: ${projectId}`);
227
+ }
228
+ let created = 0;
229
+ let updated = 0;
230
+ for (const row of preparedRows) {
231
+ const { item, existing, id, title, description, projectId, tags, owner, assignee, dueAt } = row;
232
+ if (existing) {
233
+ await storage.updateTask(id, {
234
+ title,
235
+ description,
236
+ status: item.status,
237
+ priority: item.priority,
238
+ owner,
239
+ assignee,
240
+ projectId,
241
+ tags,
242
+ dueAt
243
+ }, options.now, { skipStatusTransitionValidation: true });
244
+ updated += 1;
245
+ continue;
246
+ }
247
+ await storage.createTask({
248
+ id,
249
+ title,
250
+ description,
251
+ status: item.status,
252
+ priority: item.priority,
253
+ owner,
254
+ assignee,
255
+ projectId,
256
+ tags,
257
+ dueAt
258
+ }, options.now);
259
+ created += 1;
260
+ }
261
+ return { created, updated };
262
+ }
263
+
264
+ export {
265
+ exportWorkBoardSnapshot,
266
+ exportWorkBoardMarkdown,
267
+ importWorkBoardSnapshot
268
+ };
269
+ //# sourceMappingURL=chunk-ZKSK55RC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/work/board.ts"],"sourcesContent":["import type { WorkProject, WorkTask, WorkTaskPriority, WorkTaskStatus } from \"./types.js\";\nimport { WORK_ID_PATTERN, WorkStorage } from \"./storage.js\";\n\nconst BOARD_STATUS_ORDER: WorkTaskStatus[] = [\n \"todo\",\n \"in_progress\",\n \"blocked\",\n \"done\",\n \"cancelled\",\n];\n\nconst BOARD_STATUS_LABEL: Record<WorkTaskStatus, string> = {\n todo: \"Todo\",\n in_progress: \"In Progress\",\n blocked: \"Blocked\",\n done: \"Done\",\n cancelled: \"Cancelled\",\n};\n\nconst PRIORITY_WEIGHT: Record<WorkTaskPriority, number> = {\n high: 0,\n medium: 1,\n low: 2,\n};\n\nexport interface WorkBoardItem {\n id: string;\n title: string;\n description: string;\n status: WorkTaskStatus;\n priority: WorkTaskPriority;\n owner: string | null;\n assignee: string | null;\n projectId: string | null;\n tags: string[];\n dueAt: string | null;\n}\n\nexport interface WorkBoardSnapshot {\n version: 1;\n generatedAt: string;\n projectId: string | null;\n projectName: string | null;\n items: WorkBoardItem[];\n}\n\nexport interface ImportWorkBoardResult {\n created: number;\n updated: number;\n}\n\nfunction stableSortTasks(tasks: WorkTask[]): WorkTask[] {\n return [...tasks].sort((a, b) => {\n const priorityCmp = PRIORITY_WEIGHT[a.priority] - PRIORITY_WEIGHT[b.priority];\n if (priorityCmp !== 0) return priorityCmp;\n const createdCmp = a.createdAt.localeCompare(b.createdAt);\n if (createdCmp !== 0) return createdCmp;\n return a.id.localeCompare(b.id);\n });\n}\n\nfunction projectMatches(task: WorkTask, projectId?: string): boolean {\n if (!projectId) return true;\n return task.projectId === projectId;\n}\n\nfunction assertValidImportEnums(item: WorkBoardItem): void {\n if (![\"todo\", \"in_progress\", \"blocked\", \"done\", \"cancelled\"].includes(item.status)) {\n throw new Error(`invalid task status in snapshot for ${item.id}: ${item.status}`);\n }\n if (![\"low\", \"medium\", \"high\"].includes(item.priority)) {\n throw new Error(`invalid task priority in snapshot for ${item.id}: ${item.priority}`);\n }\n}\n\nfunction normalizeImportedProjectId(\n rawValue: unknown,\n taskId: string,\n fallbackForUndefined: string | null,\n): string | null {\n if (rawValue === undefined) return fallbackForUndefined;\n if (rawValue === null) return null;\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n throw new Error(`invalid task projectId in snapshot for ${taskId}`);\n}\n\nfunction normalizeImportedTags(rawValue: unknown, taskId: string): string[] {\n if (rawValue === undefined || rawValue === null) return [];\n if (!Array.isArray(rawValue)) {\n throw new Error(`invalid task tags in snapshot for ${taskId}`);\n }\n if (!rawValue.every((entry) => typeof entry === \"string\")) {\n throw new Error(`invalid task tags in snapshot for ${taskId}`);\n }\n return [...rawValue];\n}\n\nfunction assertValidImportedTaskId(rawValue: unknown): string {\n if (typeof rawValue !== \"string\") {\n throw new Error(\"invalid task id in snapshot\");\n }\n const trimmed = rawValue.trim();\n if (!WORK_ID_PATTERN.test(trimmed)) {\n throw new Error(`invalid task id in snapshot: ${trimmed}`);\n }\n return trimmed;\n}\n\nfunction normalizeImportedNullableField(\n rawValue: unknown,\n taskId: string,\n fieldName: \"owner\" | \"assignee\" | \"dueAt\",\n fallbackForUndefined: string | null,\n): string | null {\n if (rawValue === undefined) return fallbackForUndefined;\n if (rawValue === null) return null;\n if (typeof rawValue === \"string\") return rawValue;\n throw new Error(`invalid task ${fieldName} in snapshot for ${taskId}`);\n}\n\nfunction normalizeImportedTitle(rawValue: unknown, taskId: string): string {\n if (typeof rawValue !== \"string\") {\n throw new Error(`invalid task title in snapshot for ${taskId}`);\n }\n const trimmed = rawValue.trim();\n if (trimmed.length === 0) {\n throw new Error(`invalid task title in snapshot for ${taskId}`);\n }\n return trimmed;\n}\n\nfunction normalizeImportedDescription(rawValue: unknown, taskId: string): string {\n if (typeof rawValue !== \"string\") {\n throw new Error(`invalid task description in snapshot for ${taskId}`);\n }\n return rawValue;\n}\n\nfunction asBoardItem(task: WorkTask): WorkBoardItem {\n return {\n id: task.id,\n title: task.title,\n description: task.description,\n status: task.status,\n priority: task.priority,\n owner: task.owner,\n assignee: task.assignee,\n projectId: task.projectId,\n tags: [...task.tags],\n dueAt: task.dueAt,\n };\n}\n\nfunction formatTaskLine(task: WorkBoardItem): string {\n const bits: string[] = [`id:${task.id}`, `priority:${task.priority}`];\n if (task.assignee) bits.push(`assignee:${task.assignee}`);\n if (task.owner) bits.push(`owner:${task.owner}`);\n if (task.dueAt) bits.push(`due:${task.dueAt}`);\n if (task.tags.length > 0) bits.push(`tags:${task.tags.join(\",\")}`);\n const checked = task.status === \"done\";\n return `- [${checked ? \"x\" : \" \"}] ${task.title} \\`[${bits.join(\" \")}]\\``;\n}\n\nexport async function exportWorkBoardSnapshot(options: {\n memoryDir: string;\n projectId?: string;\n now?: Date;\n}): Promise<WorkBoardSnapshot> {\n const storage = new WorkStorage(options.memoryDir);\n await storage.ensureDirectories();\n\n const projectId = options.projectId?.trim() || undefined;\n let project: WorkProject | null = null;\n if (projectId) {\n project = await storage.getProject(projectId);\n if (!project) throw new Error(`project not found: ${projectId}`);\n }\n\n const allTasks = await storage.listTasks();\n const filtered = stableSortTasks(allTasks.filter((task) => projectMatches(task, projectId)));\n return {\n version: 1,\n generatedAt: (options.now ?? new Date()).toISOString(),\n projectId: projectId ?? null,\n projectName: project?.name ?? null,\n items: filtered.map(asBoardItem),\n };\n}\n\nfunction renderWorkBoardMarkdown(snapshot: WorkBoardSnapshot): string {\n const lines: string[] = [];\n lines.push(\"# Work Board\");\n lines.push(\"\");\n lines.push(`Generated: ${snapshot.generatedAt}`);\n lines.push(`Project: ${snapshot.projectName ?? \"all\"} (${snapshot.projectId ?? \"all\"})`);\n lines.push(\"\");\n\n for (const status of BOARD_STATUS_ORDER) {\n const bucket = snapshot.items.filter((item) => item.status === status);\n lines.push(`## ${BOARD_STATUS_LABEL[status]} (${bucket.length})`);\n if (bucket.length === 0) {\n lines.push(\"_none_\");\n } else {\n for (const item of bucket) {\n lines.push(formatTaskLine(item));\n }\n }\n lines.push(\"\");\n }\n\n return `${lines.join(\"\\n\").trim()}\\n`;\n}\n\nexport async function exportWorkBoardMarkdown(options: {\n memoryDir: string;\n projectId?: string;\n now?: Date;\n}): Promise<string> {\n const snapshot = await exportWorkBoardSnapshot(options);\n return renderWorkBoardMarkdown(snapshot);\n}\n\nexport async function importWorkBoardSnapshot(options: {\n memoryDir: string;\n snapshot: WorkBoardSnapshot;\n projectId?: string | null;\n now?: Date;\n}): Promise<ImportWorkBoardResult> {\n if (options.snapshot.version !== 1) {\n throw new Error(`unsupported work board snapshot version: ${options.snapshot.version}`);\n }\n\n const storage = new WorkStorage(options.memoryDir);\n await storage.ensureDirectories();\n\n const forcedProjectId = options.projectId === undefined\n ? undefined\n : (options.projectId?.trim() || null);\n const snapshotProjectId = normalizeImportedProjectId(\n (options.snapshot as unknown as { projectId?: unknown }).projectId,\n \"snapshot\",\n null,\n );\n\n type PreparedImportRow = {\n item: WorkBoardItem;\n existing: WorkTask | null;\n id: string;\n title: string;\n description: string;\n projectId: string | null;\n tags: string[];\n owner: string | null;\n assignee: string | null;\n dueAt: string | null;\n };\n\n const preparedRows: PreparedImportRow[] = [];\n const seenItemIds = new Set<string>();\n for (const item of options.snapshot.items) {\n const id = assertValidImportedTaskId((item as unknown as { id?: unknown }).id);\n if (seenItemIds.has(id)) {\n throw new Error(`duplicate task id in snapshot: ${id}`);\n }\n seenItemIds.add(id);\n assertValidImportEnums(item);\n const existing = await storage.getTask(id);\n const title = normalizeImportedTitle((item as unknown as { title?: unknown }).title, id);\n const description = normalizeImportedDescription((item as unknown as { description?: unknown }).description, id);\n const fallbackProjectId = existing ? existing.projectId : snapshotProjectId;\n const projectId = forcedProjectId === undefined\n ? normalizeImportedProjectId(\n (item as unknown as { projectId?: unknown }).projectId,\n item.id,\n fallbackProjectId,\n )\n : forcedProjectId;\n\n const hasTagsField = Object.prototype.hasOwnProperty.call(\n item as unknown as Record<string, unknown>,\n \"tags\",\n );\n const tags = hasTagsField\n ? normalizeImportedTags((item as unknown as { tags?: unknown }).tags, item.id)\n : (existing ? [...existing.tags] : []);\n\n const owner = normalizeImportedNullableField(\n (item as unknown as { owner?: unknown }).owner,\n id,\n \"owner\",\n existing?.owner ?? null,\n );\n const assignee = normalizeImportedNullableField(\n (item as unknown as { assignee?: unknown }).assignee,\n id,\n \"assignee\",\n existing?.assignee ?? null,\n );\n const dueAt = normalizeImportedNullableField(\n (item as unknown as { dueAt?: unknown }).dueAt,\n id,\n \"dueAt\",\n existing?.dueAt ?? null,\n );\n\n preparedRows.push({ item, existing, id, title, description, projectId, tags, owner, assignee, dueAt });\n }\n\n const projectIdsToValidate = new Set(\n preparedRows\n .map((row) => row.projectId)\n .filter((projectId): projectId is string => typeof projectId === \"string\"),\n );\n for (const projectId of projectIdsToValidate) {\n const project = await storage.getProject(projectId);\n if (!project) throw new Error(`project not found: ${projectId}`);\n }\n\n let created = 0;\n let updated = 0;\n for (const row of preparedRows) {\n const { item, existing, id, title, description, projectId, tags, owner, assignee, dueAt } = row;\n\n if (existing) {\n await storage.updateTask(id, {\n title,\n description,\n status: item.status,\n priority: item.priority,\n owner,\n assignee,\n projectId,\n tags,\n dueAt,\n }, options.now, { skipStatusTransitionValidation: true });\n updated += 1;\n continue;\n }\n\n await storage.createTask({\n id,\n title,\n description,\n status: item.status,\n priority: item.priority,\n owner,\n assignee,\n projectId,\n tags,\n dueAt,\n }, options.now);\n created += 1;\n }\n\n return { created, updated };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,69 @@
1
+ // src/lcm/recall.ts
2
+ function assembleCompressedHistory(dag, archive, sessionId, config) {
3
+ const maxTurn = archive.getMaxTurnIndex(sessionId);
4
+ if (maxTurn < 0) return "";
5
+ const allNodes = dag.getAllNodes(sessionId);
6
+ if (allNodes.length === 0) return "";
7
+ const freshTailStart = Math.max(0, maxTurn - config.freshTailTurns + 1);
8
+ const sections = [];
9
+ let usedChars = 0;
10
+ if (freshTailStart > 0) {
11
+ const oldNodes = selectBestCoverage(allNodes, 0, freshTailStart - 1);
12
+ for (const node of oldNodes) {
13
+ const label = formatRangeLabel(node, maxTurn);
14
+ const entry = `**${label}** (depth ${node.depth}):
15
+ ${node.summary_text}`;
16
+ if (usedChars + entry.length > config.budgetChars) break;
17
+ sections.push(entry);
18
+ usedChars += entry.length;
19
+ }
20
+ }
21
+ const freshNodes = allNodes.filter(
22
+ (n) => n.depth === 0 && n.msg_end >= freshTailStart && n.msg_end <= maxTurn
23
+ ).sort((a, b) => a.msg_start - b.msg_start);
24
+ for (const node of freshNodes) {
25
+ const label = `Recent (turns ${node.msg_start}-${node.msg_end})`;
26
+ const entry = `**${label}**:
27
+ ${node.summary_text}`;
28
+ if (usedChars + entry.length > config.budgetChars) break;
29
+ sections.push(entry);
30
+ usedChars += entry.length;
31
+ }
32
+ if (sections.length === 0) return "";
33
+ return `## Session History (Compressed)
34
+
35
+ ${sections.join("\n\n")}`;
36
+ }
37
+ function selectBestCoverage(allNodes, fromTurn, toTurn) {
38
+ const candidates = allNodes.filter(
39
+ (n) => n.msg_start <= toTurn && n.msg_end >= fromTurn
40
+ );
41
+ if (candidates.length === 0) return [];
42
+ candidates.sort((a, b) => {
43
+ if (a.msg_start !== b.msg_start) return a.msg_start - b.msg_start;
44
+ return b.depth - a.depth;
45
+ });
46
+ const selected = [];
47
+ let coveredUpTo = fromTurn - 1;
48
+ for (const node of candidates) {
49
+ if (node.msg_start > coveredUpTo) {
50
+ selected.push(node);
51
+ coveredUpTo = Math.min(node.msg_end, toTurn);
52
+ if (coveredUpTo >= toTurn) break;
53
+ }
54
+ }
55
+ selected.sort((a, b) => a.msg_start - b.msg_start);
56
+ return selected;
57
+ }
58
+ function formatRangeLabel(node, maxTurn) {
59
+ const startPct = Math.round(node.msg_start / Math.max(1, maxTurn) * 100);
60
+ const endPct = Math.round(node.msg_end / Math.max(1, maxTurn) * 100);
61
+ if (startPct < 33) return `Early session (turns ${node.msg_start}-${node.msg_end})`;
62
+ if (endPct < 66) return `Mid session (turns ${node.msg_start}-${node.msg_end})`;
63
+ return `Later session (turns ${node.msg_start}-${node.msg_end})`;
64
+ }
65
+
66
+ export {
67
+ assembleCompressedHistory
68
+ };
69
+ //# sourceMappingURL=chunk-ZTFCYYEZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lcm/recall.ts"],"sourcesContent":["import type { LcmDag, SummaryNode } from \"./dag.js\";\nimport type { LcmArchive } from \"./archive.js\";\nimport { log } from \"../logger.js\";\n\nexport interface LcmRecallConfig {\n freshTailTurns: number;\n budgetChars: number;\n}\n\n/**\n * Assemble a compressed session history section from the summary DAG.\n *\n * Strategy:\n * 1. For the \"fresh tail\" (most recent N turns), use leaf-level summaries for maximum detail.\n * 2. For older portions, use the deepest available summary nodes (most compressed).\n * 3. Fill within budget, prioritizing recent content.\n */\nexport function assembleCompressedHistory(\n dag: LcmDag,\n archive: LcmArchive,\n sessionId: string,\n config: LcmRecallConfig,\n): string {\n const maxTurn = archive.getMaxTurnIndex(sessionId);\n if (maxTurn < 0) return \"\";\n\n const allNodes = dag.getAllNodes(sessionId);\n if (allNodes.length === 0) return \"\";\n\n const freshTailStart = Math.max(0, maxTurn - config.freshTailTurns + 1);\n const sections: string[] = [];\n let usedChars = 0;\n\n // Collect nodes covering the \"old\" portion (before fresh tail)\n if (freshTailStart > 0) {\n const oldNodes = selectBestCoverage(allNodes, 0, freshTailStart - 1);\n for (const node of oldNodes) {\n const label = formatRangeLabel(node, maxTurn);\n const entry = `**${label}** (depth ${node.depth}):\\n${node.summary_text}`;\n if (usedChars + entry.length > config.budgetChars) break;\n sections.push(entry);\n usedChars += entry.length;\n }\n }\n\n // Collect leaf nodes that overlap with the fresh tail region.\n // The old section uses deep nodes (depth > 0), so leaf nodes included here\n // won't duplicate old-section content. Use msg_end >= freshTailStart to\n // include straddling leaf nodes that partially cover the fresh region.\n const freshNodes = allNodes\n .filter(\n (n) => n.depth === 0 && n.msg_end >= freshTailStart && n.msg_end <= maxTurn,\n )\n .sort((a, b) => a.msg_start - b.msg_start);\n\n for (const node of freshNodes) {\n const label = `Recent (turns ${node.msg_start}-${node.msg_end})`;\n const entry = `**${label}**:\\n${node.summary_text}`;\n if (usedChars + entry.length > config.budgetChars) break;\n sections.push(entry);\n usedChars += entry.length;\n }\n\n if (sections.length === 0) return \"\";\n\n return `## Session History (Compressed)\\n\\n${sections.join(\"\\n\\n\")}`;\n}\n\n/**\n * Select the best coverage for a turn range.\n * Prefers deeper (more compressed) nodes. Avoids overlapping coverage.\n */\nfunction selectBestCoverage(\n allNodes: SummaryNode[],\n fromTurn: number,\n toTurn: number,\n): SummaryNode[] {\n // Filter to nodes that overlap with the requested range\n const candidates = allNodes.filter(\n (n) => n.msg_start <= toTurn && n.msg_end >= fromTurn,\n );\n\n if (candidates.length === 0) return [];\n\n // Sort by msg_start ascending, then depth descending (prefer deeper at same position)\n candidates.sort((a, b) => {\n if (a.msg_start !== b.msg_start) return a.msg_start - b.msg_start;\n return b.depth - a.depth;\n });\n\n // Greedily select non-overlapping nodes, preferring deeper coverage.\n // Clamp msg_end to toTurn to prevent deep nodes from extending\n // past the requested range (e.g., into the fresh tail region).\n const selected: SummaryNode[] = [];\n let coveredUpTo = fromTurn - 1;\n\n for (const node of candidates) {\n if (node.msg_start > coveredUpTo) {\n selected.push(node);\n coveredUpTo = Math.min(node.msg_end, toTurn);\n if (coveredUpTo >= toTurn) break;\n }\n }\n\n // Re-sort selected by msg_start for chronological output\n selected.sort((a, b) => a.msg_start - b.msg_start);\n return selected;\n}\n\nfunction formatRangeLabel(node: SummaryNode, maxTurn: number): string {\n const startPct = Math.round((node.msg_start / Math.max(1, maxTurn)) * 100);\n const endPct = Math.round((node.msg_end / Math.max(1, maxTurn)) * 100);\n\n if (startPct < 33) return `Early session (turns ${node.msg_start}-${node.msg_end})`;\n if (endPct < 66) return `Mid session (turns ${node.msg_start}-${node.msg_end})`;\n return `Later session (turns ${node.msg_start}-${node.msg_end})`;\n}\n"],"mappings":";AAiBO,SAAS,0BACd,KACA,SACA,WACA,QACQ;AACR,QAAM,UAAU,QAAQ,gBAAgB,SAAS;AACjD,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,WAAW,IAAI,YAAY,SAAS;AAC1C,MAAI,SAAS,WAAW,EAAG,QAAO;AAElC,QAAM,iBAAiB,KAAK,IAAI,GAAG,UAAU,OAAO,iBAAiB,CAAC;AACtE,QAAM,WAAqB,CAAC;AAC5B,MAAI,YAAY;AAGhB,MAAI,iBAAiB,GAAG;AACtB,UAAM,WAAW,mBAAmB,UAAU,GAAG,iBAAiB,CAAC;AACnE,eAAW,QAAQ,UAAU;AAC3B,YAAM,QAAQ,iBAAiB,MAAM,OAAO;AAC5C,YAAM,QAAQ,KAAK,KAAK,aAAa,KAAK,KAAK;AAAA,EAAO,KAAK,YAAY;AACvE,UAAI,YAAY,MAAM,SAAS,OAAO,YAAa;AACnD,eAAS,KAAK,KAAK;AACnB,mBAAa,MAAM;AAAA,IACrB;AAAA,EACF;AAMA,QAAM,aAAa,SAChB;AAAA,IACC,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,WAAW,kBAAkB,EAAE,WAAW;AAAA,EACtE,EACC,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS;AAE3C,aAAW,QAAQ,YAAY;AAC7B,UAAM,QAAQ,iBAAiB,KAAK,SAAS,IAAI,KAAK,OAAO;AAC7D,UAAM,QAAQ,KAAK,KAAK;AAAA,EAAQ,KAAK,YAAY;AACjD,QAAI,YAAY,MAAM,SAAS,OAAO,YAAa;AACnD,aAAS,KAAK,KAAK;AACnB,iBAAa,MAAM;AAAA,EACrB;AAEA,MAAI,SAAS,WAAW,EAAG,QAAO;AAElC,SAAO;AAAA;AAAA,EAAsC,SAAS,KAAK,MAAM,CAAC;AACpE;AAMA,SAAS,mBACP,UACA,UACA,QACe;AAEf,QAAM,aAAa,SAAS;AAAA,IAC1B,CAAC,MAAM,EAAE,aAAa,UAAU,EAAE,WAAW;AAAA,EAC/C;AAEA,MAAI,WAAW,WAAW,EAAG,QAAO,CAAC;AAGrC,aAAW,KAAK,CAAC,GAAG,MAAM;AACxB,QAAI,EAAE,cAAc,EAAE,UAAW,QAAO,EAAE,YAAY,EAAE;AACxD,WAAO,EAAE,QAAQ,EAAE;AAAA,EACrB,CAAC;AAKD,QAAM,WAA0B,CAAC;AACjC,MAAI,cAAc,WAAW;AAE7B,aAAW,QAAQ,YAAY;AAC7B,QAAI,KAAK,YAAY,aAAa;AAChC,eAAS,KAAK,IAAI;AAClB,oBAAc,KAAK,IAAI,KAAK,SAAS,MAAM;AAC3C,UAAI,eAAe,OAAQ;AAAA,IAC7B;AAAA,EACF;AAGA,WAAS,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS;AACjD,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAmB,SAAyB;AACpE,QAAM,WAAW,KAAK,MAAO,KAAK,YAAY,KAAK,IAAI,GAAG,OAAO,IAAK,GAAG;AACzE,QAAM,SAAS,KAAK,MAAO,KAAK,UAAU,KAAK,IAAI,GAAG,OAAO,IAAK,GAAG;AAErE,MAAI,WAAW,GAAI,QAAO,wBAAwB,KAAK,SAAS,IAAI,KAAK,OAAO;AAChF,MAAI,SAAS,GAAI,QAAO,sBAAsB,KAAK,SAAS,IAAI,KAAK,OAAO;AAC5E,SAAO,wBAAwB,KAAK,SAAS,IAAI,KAAK,OAAO;AAC/D;","names":[]}