@remnic/core 1.1.0 → 1.1.2

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 (308) hide show
  1. package/dist/access-audit.d.ts +56 -0
  2. package/dist/access-audit.js +9 -0
  3. package/dist/access-cli.js +70 -53
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +16 -9
  6. package/dist/access-http.js +26 -18
  7. package/dist/access-mcp.d.ts +16 -9
  8. package/dist/access-mcp.js +30 -8
  9. package/dist/access-schema.d.ts +124 -33
  10. package/dist/access-schema.js +5 -1
  11. package/dist/{access-service-HmO1Trrx.d.ts → access-service-Br8ZydTK.d.ts} +158 -63
  12. package/dist/access-service.d.ts +13 -6
  13. package/dist/access-service.js +23 -14
  14. package/dist/bootstrap.d.ts +6 -3
  15. package/dist/briefing.d.ts +1 -0
  16. package/dist/briefing.js +8 -6
  17. package/dist/buffer-surprise-report.d.ts +70 -0
  18. package/dist/buffer-surprise-report.js +7 -0
  19. package/dist/buffer-surprise-report.js.map +1 -0
  20. package/dist/buffer-surprise.d.ts +98 -0
  21. package/dist/buffer-surprise.js +11 -0
  22. package/dist/buffer-surprise.js.map +1 -0
  23. package/dist/buffer.d.ts +100 -2
  24. package/dist/buffer.js +1 -1
  25. package/dist/calibration.js +6 -6
  26. package/dist/causal-behavior.js +4 -4
  27. package/dist/causal-chain.js +2 -2
  28. package/dist/causal-consolidation.js +19 -18
  29. package/dist/causal-consolidation.js.map +1 -1
  30. package/dist/causal-retrieval.js +4 -4
  31. package/dist/causal-trajectory.js +1 -1
  32. package/dist/{chunk-QNJMBKFK.js → chunk-2LGMW3DJ.js} +3 -2
  33. package/dist/chunk-2LGMW3DJ.js.map +1 -0
  34. package/dist/{chunk-QDYXG4CS.js → chunk-3FPTCC3Z.js} +4 -3
  35. package/dist/chunk-3FPTCC3Z.js.map +1 -0
  36. package/dist/chunk-3GPTTA4J.js +57 -0
  37. package/dist/chunk-3GPTTA4J.js.map +1 -0
  38. package/dist/{chunk-ITRLGI2T.js → chunk-3OGMS3PE.js} +2 -2
  39. package/dist/{chunk-DEPL3635.js → chunk-3YGHKTBF.js} +1446 -196
  40. package/dist/chunk-3YGHKTBF.js.map +1 -0
  41. package/dist/{chunk-BLKTA7MM.js → chunk-4HQS2HPX.js} +54 -21
  42. package/dist/chunk-4HQS2HPX.js.map +1 -0
  43. package/dist/chunk-54V4BZWP.js +139 -0
  44. package/dist/chunk-54V4BZWP.js.map +1 -0
  45. package/dist/chunk-5JRF2PZA.js +67 -0
  46. package/dist/chunk-5JRF2PZA.js.map +1 -0
  47. package/dist/chunk-64NJRYU2.js +332 -0
  48. package/dist/chunk-64NJRYU2.js.map +1 -0
  49. package/dist/{chunk-OIT5QGG4.js → chunk-6AUUAZEX.js} +72 -2
  50. package/dist/chunk-6AUUAZEX.js.map +1 -0
  51. package/dist/{chunk-3QHL5ABG.js → chunk-6YJHX2DL.js} +191 -10
  52. package/dist/chunk-6YJHX2DL.js.map +1 -0
  53. package/dist/chunk-AJU4PJGY.js +126 -0
  54. package/dist/chunk-AJU4PJGY.js.map +1 -0
  55. package/dist/chunk-ASAITVLA.js +64 -0
  56. package/dist/chunk-ASAITVLA.js.map +1 -0
  57. package/dist/{chunk-44ICJRF3.js → chunk-AYXIPSZO.js} +5 -5
  58. package/dist/{chunk-MBJHSA7F.js → chunk-BECYBZLX.js} +265 -20
  59. package/dist/chunk-BECYBZLX.js.map +1 -0
  60. package/dist/chunk-C4SQJZAF.js +486 -0
  61. package/dist/chunk-C4SQJZAF.js.map +1 -0
  62. package/dist/{chunk-6UJ47TVX.js → chunk-CUPFXL3J.js} +2 -2
  63. package/dist/chunk-DF3RVK3X.js +119 -0
  64. package/dist/chunk-DF3RVK3X.js.map +1 -0
  65. package/dist/{chunk-N42IWANG.js → chunk-DG6YMRDC.js} +3 -3
  66. package/dist/chunk-DGVM5SFL.js +69 -0
  67. package/dist/chunk-DGVM5SFL.js.map +1 -0
  68. package/dist/{chunk-3SV6CQHO.js → chunk-DIXB44VE.js} +102 -66
  69. package/dist/chunk-DIXB44VE.js.map +1 -0
  70. package/dist/chunk-EIR5VLIH.js +90 -0
  71. package/dist/chunk-EIR5VLIH.js.map +1 -0
  72. package/dist/{chunk-GV6NLQ4X.js → chunk-F5VP6YCB.js} +374 -16
  73. package/dist/chunk-F5VP6YCB.js.map +1 -0
  74. package/dist/{chunk-6ZH4TU6I.js → chunk-FAAFWE4G.js} +2 -1
  75. package/dist/chunk-FAAFWE4G.js.map +1 -0
  76. package/dist/{chunk-7WQ6SLIE.js → chunk-FVA6TGI3.js} +2 -2
  77. package/dist/{chunk-PAORGQRI.js → chunk-GA5P7RST.js} +37 -23
  78. package/dist/chunk-GA5P7RST.js.map +1 -0
  79. package/dist/chunk-GDFS42HT.js +206 -0
  80. package/dist/chunk-GDFS42HT.js.map +1 -0
  81. package/dist/chunk-IISBCCWR.js +52 -0
  82. package/dist/chunk-IISBCCWR.js.map +1 -0
  83. package/dist/chunk-JBMSGZEQ.js +441 -0
  84. package/dist/chunk-JBMSGZEQ.js.map +1 -0
  85. package/dist/{chunk-J4IYOZZ5.js → chunk-JXS5PDQ7.js} +3 -1
  86. package/dist/chunk-JXS5PDQ7.js.map +1 -0
  87. package/dist/chunk-KVBLZUKV.js +173 -0
  88. package/dist/chunk-KVBLZUKV.js.map +1 -0
  89. package/dist/{chunk-4LACOVZX.js → chunk-L7IXWRYE.js} +10 -5
  90. package/dist/chunk-L7IXWRYE.js.map +1 -0
  91. package/dist/chunk-LBLXEFWK.js +51 -0
  92. package/dist/chunk-LBLXEFWK.js.map +1 -0
  93. package/dist/{chunk-WBSAYXVI.js → chunk-LOIMBRDE.js} +201 -45
  94. package/dist/chunk-LOIMBRDE.js.map +1 -0
  95. package/dist/{chunk-3WHVNEN7.js → chunk-LTCGGW2D.js} +1 -1
  96. package/dist/chunk-LTCGGW2D.js.map +1 -0
  97. package/dist/{chunk-ZVBB3T7V.js → chunk-NBVAS5MT.js} +25 -23
  98. package/dist/chunk-NBVAS5MT.js.map +1 -0
  99. package/dist/{chunk-UEYA6UC7.js → chunk-NZLQTHS5.js} +25 -2
  100. package/dist/chunk-NZLQTHS5.js.map +1 -0
  101. package/dist/{chunk-NQEVYWX6.js → chunk-OC5OXUQ4.js} +211 -7
  102. package/dist/chunk-OC5OXUQ4.js.map +1 -0
  103. package/dist/{chunk-LK6SGL53.js → chunk-OR64ZGRZ.js} +3 -2
  104. package/dist/chunk-OR64ZGRZ.js.map +1 -0
  105. package/dist/{chunk-SYUK3VLY.js → chunk-PVICZTKG.js} +117 -5
  106. package/dist/chunk-PVICZTKG.js.map +1 -0
  107. package/dist/chunk-PVPWZSSI.js +37 -0
  108. package/dist/chunk-PVPWZSSI.js.map +1 -0
  109. package/dist/{chunk-JL2PU6AI.js → chunk-R2XRID2N.js} +2 -2
  110. package/dist/{chunk-4NRAJUDS.js → chunk-RBBWYEFJ.js} +1 -1
  111. package/dist/chunk-RFYAYKTD.js +146 -0
  112. package/dist/chunk-RFYAYKTD.js.map +1 -0
  113. package/dist/chunk-SOBJ6NEY.js +18 -0
  114. package/dist/chunk-SOBJ6NEY.js.map +1 -0
  115. package/dist/{chunk-JIU55F3X.js → chunk-SPI27QT6.js} +2 -2
  116. package/dist/{chunk-MVTHXUBX.js → chunk-STGWEHYR.js} +479 -20
  117. package/dist/chunk-STGWEHYR.js.map +1 -0
  118. package/dist/{chunk-6LX5ORAS.js → chunk-TMYO7B5P.js} +4 -4
  119. package/dist/chunk-TVVEYCNW.js +65 -0
  120. package/dist/chunk-TVVEYCNW.js.map +1 -0
  121. package/dist/chunk-ULYOGL6R.js +322 -0
  122. package/dist/chunk-ULYOGL6R.js.map +1 -0
  123. package/dist/{chunk-37UIFYWO.js → chunk-UWB5LMWY.js} +108 -9
  124. package/dist/chunk-UWB5LMWY.js.map +1 -0
  125. package/dist/{chunk-47UU5PU2.js → chunk-VBVG2M5G.js} +18 -3
  126. package/dist/chunk-VBVG2M5G.js.map +1 -0
  127. package/dist/{chunk-7ECD5ATE.js → chunk-VDX363PS.js} +2 -2
  128. package/dist/{chunk-O5ETUNBT.js → chunk-VTU2B4VF.js} +7 -3
  129. package/dist/chunk-VTU2B4VF.js.map +1 -0
  130. package/dist/{chunk-MTLYEMJB.js → chunk-WCLICCGB.js} +18 -3
  131. package/dist/chunk-WCLICCGB.js.map +1 -0
  132. package/dist/chunk-X6GF3FX2.js +26 -0
  133. package/dist/chunk-X6GF3FX2.js.map +1 -0
  134. package/dist/{chunk-3QFQGRHO.js → chunk-XMHBH5H6.js} +4 -4
  135. package/dist/{chunk-DHHP2Z4X.js → chunk-XXVWLXSG.js} +2 -2
  136. package/dist/{chunk-XZ2TIKGC.js → chunk-Y7R2XJ5Q.js} +25 -9
  137. package/dist/chunk-Y7R2XJ5Q.js.map +1 -0
  138. package/dist/{chunk-ALXMCZEU.js → chunk-Z2E7VW55.js} +6 -3
  139. package/dist/chunk-Z2E7VW55.js.map +1 -0
  140. package/dist/chunk-ZAIM4TUE.js +488 -0
  141. package/dist/chunk-ZAIM4TUE.js.map +1 -0
  142. package/dist/chunk-ZZTOURJI.js +91 -0
  143. package/dist/chunk-ZZTOURJI.js.map +1 -0
  144. package/dist/{cli-BneVIEvh.d.ts → cli-BkeRaYfk.d.ts} +2 -2
  145. package/dist/cli.d.ts +13 -6
  146. package/dist/cli.js +42 -31
  147. package/dist/config.js +2 -2
  148. package/dist/consolidation-operator.d.ts +41 -0
  149. package/dist/consolidation-operator.js +11 -0
  150. package/dist/consolidation-operator.js.map +1 -0
  151. package/dist/consolidation-provenance-check.d.ts +68 -0
  152. package/dist/consolidation-provenance-check.js +9 -0
  153. package/dist/consolidation-provenance-check.js.map +1 -0
  154. package/dist/consolidation-undo.d.ts +123 -0
  155. package/dist/consolidation-undo.js +426 -0
  156. package/dist/consolidation-undo.js.map +1 -0
  157. package/dist/{contradiction-scan-GR33PONM.js → contradiction-scan-E3GJTI4F.js} +43 -7
  158. package/dist/contradiction-scan-E3GJTI4F.js.map +1 -0
  159. package/dist/cross-namespace-budget.d.ts +133 -0
  160. package/dist/cross-namespace-budget.js +9 -0
  161. package/dist/cross-namespace-budget.js.map +1 -0
  162. package/dist/direct-answer-wiring.js +5 -70
  163. package/dist/direct-answer-wiring.js.map +1 -1
  164. package/dist/embedding-fallback.js +2 -1
  165. package/dist/{engine-5TIQBYZR.js → engine-72LSIWQP.js} +8 -7
  166. package/dist/engine-72LSIWQP.js.map +1 -0
  167. package/dist/entity-retrieval.d.ts +1 -0
  168. package/dist/entity-retrieval.js +7 -6
  169. package/dist/explicit-capture.d.ts +6 -3
  170. package/dist/explicit-capture.js +2 -2
  171. package/dist/extraction-judge-telemetry.d.ts +113 -0
  172. package/dist/extraction-judge-telemetry.js +14 -0
  173. package/dist/extraction-judge-telemetry.js.map +1 -0
  174. package/dist/extraction-judge-training.d.ts +85 -0
  175. package/dist/extraction-judge-training.js +16 -0
  176. package/dist/extraction-judge-training.js.map +1 -0
  177. package/dist/extraction-judge.d.ts +124 -2
  178. package/dist/extraction-judge.js +11 -1
  179. package/dist/extraction.js +10 -9
  180. package/dist/fallback-llm.js +3 -3
  181. package/dist/graph-recall.d.ts +100 -0
  182. package/dist/graph-recall.js +8 -0
  183. package/dist/graph-recall.js.map +1 -0
  184. package/dist/graph-retrieval.d.ts +271 -0
  185. package/dist/graph-retrieval.js +21 -0
  186. package/dist/graph-retrieval.js.map +1 -0
  187. package/dist/importance.js +1 -1
  188. package/dist/index.d.ts +585 -20
  189. package/dist/index.js +542 -344
  190. package/dist/index.js.map +1 -1
  191. package/dist/local-llm.js +2 -2
  192. package/dist/memory-worth-bench.d.ts +51 -0
  193. package/dist/memory-worth-bench.js +131 -0
  194. package/dist/memory-worth-bench.js.map +1 -0
  195. package/dist/memory-worth-filter.d.ts +128 -0
  196. package/dist/memory-worth-filter.js +10 -0
  197. package/dist/memory-worth-filter.js.map +1 -0
  198. package/dist/memory-worth-outcomes.d.ts +118 -0
  199. package/dist/memory-worth-outcomes.js +9 -0
  200. package/dist/memory-worth-outcomes.js.map +1 -0
  201. package/dist/memory-worth.d.ts +102 -0
  202. package/dist/memory-worth.js +7 -0
  203. package/dist/memory-worth.js.map +1 -0
  204. package/dist/operator-toolkit.d.ts +40 -1
  205. package/dist/operator-toolkit.js +25 -16
  206. package/dist/{orchestrator-DRYA6_lW.d.ts → orchestrator-CmJ-NTdJ.d.ts} +233 -8
  207. package/dist/orchestrator.d.ts +6 -3
  208. package/dist/orchestrator.js +54 -44
  209. package/dist/page-versioning.d.ts +12 -1
  210. package/dist/page-versioning.js +5 -3
  211. package/dist/{port-C1GZFv8h.d.ts → port-BADbLZU5.d.ts} +2 -2
  212. package/dist/qmd-recall-cache.d.ts +1 -1
  213. package/dist/qmd.d.ts +5 -3
  214. package/dist/qmd.js +3 -3
  215. package/dist/reasoning-trace-recall.d.ts +90 -0
  216. package/dist/reasoning-trace-recall.js +13 -0
  217. package/dist/reasoning-trace-recall.js.map +1 -0
  218. package/dist/reasoning-trace-types.d.ts +54 -0
  219. package/dist/reasoning-trace-types.js +17 -0
  220. package/dist/reasoning-trace-types.js.map +1 -0
  221. package/dist/recall-audit-anomaly.d.ts +112 -0
  222. package/dist/recall-audit-anomaly.js +11 -0
  223. package/dist/recall-audit-anomaly.js.map +1 -0
  224. package/dist/recall-audit.js +5 -44
  225. package/dist/recall-audit.js.map +1 -1
  226. package/dist/recall-explain-renderer.d.ts +49 -0
  227. package/dist/recall-explain-renderer.js +18 -0
  228. package/dist/recall-explain-renderer.js.map +1 -0
  229. package/dist/recall-state.d.ts +12 -1
  230. package/dist/recall-state.js +1 -1
  231. package/dist/recall-xray-cli.d.ts +40 -0
  232. package/dist/recall-xray-cli.js +11 -0
  233. package/dist/recall-xray-cli.js.map +1 -0
  234. package/dist/recall-xray-renderer.d.ts +44 -0
  235. package/dist/recall-xray-renderer.js +18 -0
  236. package/dist/recall-xray-renderer.js.map +1 -0
  237. package/dist/recall-xray.d.ts +179 -0
  238. package/dist/recall-xray.js +13 -0
  239. package/dist/recall-xray.js.map +1 -0
  240. package/dist/resolve-provider-secret.d.ts +5 -1
  241. package/dist/resolve-provider-secret.js +3 -1
  242. package/dist/resume-bundles.js +6 -6
  243. package/dist/retrieval-agents.d.ts +1 -1
  244. package/dist/retrieval-tiers.d.ts +17 -0
  245. package/dist/retrieval-tiers.js +9 -0
  246. package/dist/retrieval-tiers.js.map +1 -0
  247. package/dist/schemas.d.ts +309 -53
  248. package/dist/schemas.js +1 -1
  249. package/dist/{semantic-consolidation-DrvSYRdB.d.ts → semantic-consolidation-CxJU6MJk.d.ts} +62 -1
  250. package/dist/semantic-consolidation.d.ts +2 -1
  251. package/dist/semantic-consolidation.js +22 -7
  252. package/dist/semantic-rule-promotion.js +7 -6
  253. package/dist/semantic-rule-verifier.js +7 -6
  254. package/dist/storage.d.ts +82 -1
  255. package/dist/storage.js +6 -5
  256. package/dist/summarizer.js +6 -6
  257. package/dist/temporal-supersession.d.ts +1 -0
  258. package/dist/tier-migration.d.ts +2 -1
  259. package/dist/tokens.js +2 -1
  260. package/dist/types.d.ts +276 -2
  261. package/dist/types.js +1 -1
  262. package/dist/verified-recall.js +7 -6
  263. package/package.json +1 -1
  264. package/dist/chunk-37UIFYWO.js.map +0 -1
  265. package/dist/chunk-3QHL5ABG.js.map +0 -1
  266. package/dist/chunk-3SV6CQHO.js.map +0 -1
  267. package/dist/chunk-3WHVNEN7.js.map +0 -1
  268. package/dist/chunk-47UU5PU2.js.map +0 -1
  269. package/dist/chunk-4LACOVZX.js.map +0 -1
  270. package/dist/chunk-6ZH4TU6I.js.map +0 -1
  271. package/dist/chunk-ALXMCZEU.js.map +0 -1
  272. package/dist/chunk-BLKTA7MM.js.map +0 -1
  273. package/dist/chunk-DEPL3635.js.map +0 -1
  274. package/dist/chunk-GV6NLQ4X.js.map +0 -1
  275. package/dist/chunk-J4IYOZZ5.js.map +0 -1
  276. package/dist/chunk-LAYN4LDC.js +0 -267
  277. package/dist/chunk-LAYN4LDC.js.map +0 -1
  278. package/dist/chunk-LK6SGL53.js.map +0 -1
  279. package/dist/chunk-MBJHSA7F.js.map +0 -1
  280. package/dist/chunk-MTLYEMJB.js.map +0 -1
  281. package/dist/chunk-MVTHXUBX.js.map +0 -1
  282. package/dist/chunk-NQEVYWX6.js.map +0 -1
  283. package/dist/chunk-O5ETUNBT.js.map +0 -1
  284. package/dist/chunk-OIT5QGG4.js.map +0 -1
  285. package/dist/chunk-PAORGQRI.js.map +0 -1
  286. package/dist/chunk-QDYXG4CS.js.map +0 -1
  287. package/dist/chunk-QNJMBKFK.js.map +0 -1
  288. package/dist/chunk-SYUK3VLY.js.map +0 -1
  289. package/dist/chunk-UEYA6UC7.js.map +0 -1
  290. package/dist/chunk-UVJFDP7P.js +0 -202
  291. package/dist/chunk-UVJFDP7P.js.map +0 -1
  292. package/dist/chunk-WBSAYXVI.js.map +0 -1
  293. package/dist/chunk-XZ2TIKGC.js.map +0 -1
  294. package/dist/chunk-ZVBB3T7V.js.map +0 -1
  295. package/dist/contradiction-scan-GR33PONM.js.map +0 -1
  296. /package/dist/{engine-5TIQBYZR.js.map → access-audit.js.map} +0 -0
  297. /package/dist/{chunk-ITRLGI2T.js.map → chunk-3OGMS3PE.js.map} +0 -0
  298. /package/dist/{chunk-44ICJRF3.js.map → chunk-AYXIPSZO.js.map} +0 -0
  299. /package/dist/{chunk-6UJ47TVX.js.map → chunk-CUPFXL3J.js.map} +0 -0
  300. /package/dist/{chunk-N42IWANG.js.map → chunk-DG6YMRDC.js.map} +0 -0
  301. /package/dist/{chunk-7WQ6SLIE.js.map → chunk-FVA6TGI3.js.map} +0 -0
  302. /package/dist/{chunk-JL2PU6AI.js.map → chunk-R2XRID2N.js.map} +0 -0
  303. /package/dist/{chunk-4NRAJUDS.js.map → chunk-RBBWYEFJ.js.map} +0 -0
  304. /package/dist/{chunk-JIU55F3X.js.map → chunk-SPI27QT6.js.map} +0 -0
  305. /package/dist/{chunk-6LX5ORAS.js.map → chunk-TMYO7B5P.js.map} +0 -0
  306. /package/dist/{chunk-7ECD5ATE.js.map → chunk-VDX363PS.js.map} +0 -0
  307. /package/dist/{chunk-3QFQGRHO.js.map → chunk-XMHBH5H6.js.map} +0 -0
  308. /package/dist/{chunk-DHHP2Z4X.js.map → chunk-XXVWLXSG.js.map} +0 -0
@@ -0,0 +1,56 @@
1
+ import { RecallAuditEntry } from './recall-audit.js';
2
+ import { AnomalyDetectorConfig, AnomalyDetectorResult } from './recall-audit-anomaly.js';
3
+
4
+ /**
5
+ * Access-layer audit adapter (issue #565 PR 5/5).
6
+ *
7
+ * Wraps `appendRecallAuditEntry` + `detectRecallAnomalies` into a single
8
+ * entry point that MCP (`access-mcp.ts`) and HTTP (`access-http.ts`)
9
+ * surfaces can call once per recall. Closes the gap called out in the
10
+ * memory-extraction threat model §5: recall-audit previously only ran
11
+ * on the Openclaw hook, so MCP/HTTP callers bypassed the trail entirely.
12
+ *
13
+ * The adapter is a per-instance class so the tail-of-trail buffer
14
+ * (used by the anomaly detector) is scoped per-service, not global.
15
+ *
16
+ * No I/O unless `audit.enabled` is true; no detector invocation unless
17
+ * `detection.enabled` is true. Either flag may be enabled independently.
18
+ */
19
+
20
+ interface AccessAuditConfig {
21
+ audit: {
22
+ enabled: boolean;
23
+ /** Root directory the audit adapter writes JSONL shards into. */
24
+ rootDir: string;
25
+ };
26
+ detection: AnomalyDetectorConfig;
27
+ /**
28
+ * How many entries the adapter retains in memory for the detector.
29
+ * Defaults to 256 — enough to cover the threat model's default 5-minute
30
+ * window at high recall rates without unbounded growth.
31
+ */
32
+ trailBufferSize?: number;
33
+ }
34
+ interface AccessAuditResult {
35
+ /** Path of the JSONL shard the entry was appended to (only when audit enabled). */
36
+ appendedAt?: string;
37
+ /** Result of the anomaly detector (only when detection enabled). */
38
+ anomalies?: AnomalyDetectorResult;
39
+ }
40
+ declare class AccessAuditAdapter {
41
+ private readonly config;
42
+ private readonly trails;
43
+ private readonly trailBufferSize;
44
+ constructor(config: AccessAuditConfig);
45
+ /**
46
+ * Record an audit entry and (when enabled) run the anomaly detector
47
+ * over the principal's tail of entries. The principal key is used
48
+ * purely for tail-buffer bucketing — it need not match the production
49
+ * namespace resolver; sessionKey is the safe default.
50
+ */
51
+ record(principalKey: string, entry: RecallAuditEntry, now?: number): Promise<AccessAuditResult>;
52
+ /** Clear all in-memory tail state. Intended for tests / before_reset. */
53
+ reset(): void;
54
+ }
55
+
56
+ export { AccessAuditAdapter, type AccessAuditConfig, type AccessAuditResult };
@@ -0,0 +1,9 @@
1
+ import {
2
+ AccessAuditAdapter
3
+ } from "./chunk-TVVEYCNW.js";
4
+ import "./chunk-RFYAYKTD.js";
5
+ import "./chunk-LBLXEFWK.js";
6
+ export {
7
+ AccessAuditAdapter
8
+ };
9
+ //# sourceMappingURL=access-audit.js.map
@@ -1,121 +1,138 @@
1
1
  import {
2
2
  Orchestrator
3
- } from "./chunk-DEPL3635.js";
4
- import "./chunk-DHHP2Z4X.js";
3
+ } from "./chunk-3YGHKTBF.js";
4
+ import "./chunk-XXVWLXSG.js";
5
5
  import "./chunk-UHGBNIOS.js";
6
6
  import "./chunk-FSFEQI74.js";
7
- import "./chunk-N42IWANG.js";
8
- import "./chunk-ETOW6ACV.js";
9
7
  import "./chunk-W6SL7OFG.js";
10
8
  import "./chunk-Z5AAYHUC.js";
11
9
  import "./chunk-S75M5ZRK.js";
12
10
  import "./chunk-TPB3I2AC.js";
13
11
  import "./chunk-JR4ZC3G4.js";
14
- import "./chunk-KVE7R4CG.js";
15
- import "./chunk-X7XN6YU4.js";
12
+ import "./chunk-DG6YMRDC.js";
13
+ import "./chunk-ETOW6ACV.js";
16
14
  import "./chunk-5NPGSAVB.js";
17
15
  import "./chunk-C7VW7C3F.js";
18
16
  import "./chunk-K4FLSOR5.js";
19
17
  import "./chunk-V3RXWQIE.js";
20
18
  import "./chunk-5IZL4DCV.js";
21
- import "./chunk-YCN4BVDK.js";
19
+ import "./chunk-VBVG2M5G.js";
20
+ import "./chunk-KVBLZUKV.js";
21
+ import "./chunk-X7XN6YU4.js";
22
+ import "./chunk-ZZTOURJI.js";
22
23
  import "./chunk-YDBIWGNI.js";
23
24
  import "./chunk-7DHTMOND.js";
24
- import "./chunk-47UU5PU2.js";
25
+ import "./chunk-YCN4BVDK.js";
25
26
  import "./chunk-D654IBA6.js";
26
27
  import "./chunk-H63EDPFJ.js";
27
- import "./chunk-YAZNBMNF.js";
28
+ import "./chunk-3GPTTA4J.js";
29
+ import "./chunk-IISBCCWR.js";
28
30
  import "./chunk-GGD5W7TB.js";
29
- import "./chunk-LAYN4LDC.js";
30
- import "./chunk-3SV6CQHO.js";
31
- import "./chunk-UEYA6UC7.js";
31
+ import "./chunk-YAZNBMNF.js";
32
+ import "./chunk-AJU4PJGY.js";
33
+ import "./chunk-DF3RVK3X.js";
34
+ import "./chunk-C4SQJZAF.js";
35
+ import "./chunk-DIXB44VE.js";
36
+ import "./chunk-NZLQTHS5.js";
37
+ import "./chunk-54V4BZWP.js";
32
38
  import "./chunk-NBNN5GOB.js";
33
39
  import "./chunk-FEMOX5AD.js";
34
- import "./chunk-JL2PU6AI.js";
35
- import "./chunk-GZCUW5IC.js";
40
+ import "./chunk-R2XRID2N.js";
36
41
  import "./chunk-VEWZZM3H.js";
37
- import "./chunk-ALXMCZEU.js";
38
- import "./chunk-7WQ6SLIE.js";
39
- import "./chunk-PAORGQRI.js";
40
- import "./chunk-6UJ47TVX.js";
42
+ import "./chunk-6AUUAZEX.js";
43
+ import "./chunk-Y4FHOFJ2.js";
44
+ import "./chunk-Z2E7VW55.js";
45
+ import "./chunk-FVA6TGI3.js";
46
+ import "./chunk-GZCUW5IC.js";
47
+ import "./chunk-GA5P7RST.js";
41
48
  import "./chunk-PYXS46O7.js";
42
49
  import "./chunk-3QKK7QOS.js";
50
+ import "./chunk-CUPFXL3J.js";
43
51
  import "./chunk-JRNQ3RNA.js";
44
- import "./chunk-JIU55F3X.js";
52
+ import "./chunk-SPI27QT6.js";
45
53
  import "./chunk-CULXMQJH.js";
46
54
  import "./chunk-E6K4NIEU.js";
47
- import "./chunk-ZVBB3T7V.js";
55
+ import "./chunk-NBVAS5MT.js";
48
56
  import "./chunk-YRMVARQP.js";
49
- import "./chunk-BLKTA7MM.js";
57
+ import "./chunk-4HQS2HPX.js";
50
58
  import {
51
59
  resolveRemnicPluginEntry
52
60
  } from "./chunk-U66YHYC7.js";
53
61
  import "./chunk-EABGC2TL.js";
54
62
  import "./chunk-LOBRX7VD.js";
55
63
  import "./chunk-HMDCOMYU.js";
56
- import "./chunk-J4IYOZZ5.js";
57
- import "./chunk-LK6SGL53.js";
64
+ import "./chunk-JXS5PDQ7.js";
65
+ import "./chunk-OR64ZGRZ.js";
58
66
  import "./chunk-7SEAZFFB.js";
59
67
  import "./chunk-K6WK37A6.js";
60
- import "./chunk-3PG3H5TD.js";
61
- import "./chunk-FYIYMQ5N.js";
62
- import "./chunk-2NMMFZ5T.js";
63
68
  import {
64
69
  parseConfig
65
- } from "./chunk-MBJHSA7F.js";
70
+ } from "./chunk-BECYBZLX.js";
66
71
  import "./chunk-Z5LAYHGJ.js";
67
72
  import "./chunk-C6QPK5GG.js";
68
- import "./chunk-SYUK3VLY.js";
73
+ import "./chunk-C2EFFULQ.js";
74
+ import "./chunk-3PG3H5TD.js";
75
+ import "./chunk-FYIYMQ5N.js";
76
+ import "./chunk-2NMMFZ5T.js";
77
+ import "./chunk-KVE7R4CG.js";
78
+ import "./chunk-4WMCPJWX.js";
79
+ import "./chunk-JBMSGZEQ.js";
80
+ import "./chunk-PVICZTKG.js";
69
81
  import "./chunk-EJI5XIBB.js";
70
- import "./chunk-44ICJRF3.js";
71
- import "./chunk-XZ2TIKGC.js";
72
- import "./chunk-Y27UJK6V.js";
82
+ import "./chunk-AYXIPSZO.js";
83
+ import "./chunk-Y7R2XJ5Q.js";
73
84
  import "./chunk-ODWDQNRE.js";
85
+ import "./chunk-Y27UJK6V.js";
74
86
  import "./chunk-UZB5KHKX.js";
75
- import "./chunk-C2EFFULQ.js";
76
- import "./chunk-4WMCPJWX.js";
77
87
  import "./chunk-6HZ6AO2P.js";
78
88
  import "./chunk-JWPLJLDU.js";
79
89
  import "./chunk-N53K2EXC.js";
80
- import "./chunk-URB2WSKZ.js";
81
- import "./chunk-UVJFDP7P.js";
82
90
  import "./chunk-XYIK4LF6.js";
91
+ import "./chunk-URB2WSKZ.js";
83
92
  import "./chunk-PVGDJXVK.js";
84
93
  import "./chunk-NGAVDO7E.js";
85
- import {
86
- readEnvVar,
87
- resolveHomeDir
88
- } from "./chunk-MARWOCVP.js";
89
94
  import {
90
95
  EngramAccessService
91
- } from "./chunk-MVTHXUBX.js";
92
- import "./chunk-ITRLGI2T.js";
96
+ } from "./chunk-STGWEHYR.js";
97
+ import "./chunk-ZAIM4TUE.js";
98
+ import "./chunk-SOBJ6NEY.js";
99
+ import "./chunk-3OGMS3PE.js";
93
100
  import "./chunk-EQINRHYR.js";
94
- import "./chunk-QDYXG4CS.js";
95
- import "./chunk-QNJMBKFK.js";
101
+ import "./chunk-EIR5VLIH.js";
96
102
  import "./chunk-EEQLFRUM.js";
97
103
  import "./chunk-QDW3E4RD.js";
98
- import "./chunk-4NRAJUDS.js";
104
+ import "./chunk-3FPTCC3Z.js";
105
+ import "./chunk-2LGMW3DJ.js";
106
+ import "./chunk-GDFS42HT.js";
107
+ import "./chunk-RBBWYEFJ.js";
99
108
  import "./chunk-DT5TVLJE.js";
100
109
  import "./chunk-N5AKDXAI.js";
101
110
  import "./chunk-TBBDFYXW.js";
102
- import "./chunk-DGXUHMOV.js";
103
- import "./chunk-LPSF4OQH.js";
104
- import "./chunk-XKECPATV.js";
105
- import "./chunk-4LACOVZX.js";
106
- import "./chunk-GV6NLQ4X.js";
107
- import "./chunk-3WHVNEN7.js";
111
+ import "./chunk-L7IXWRYE.js";
112
+ import "./chunk-F5VP6YCB.js";
113
+ import "./chunk-LTCGGW2D.js";
108
114
  import "./chunk-4KAN3GZ3.js";
109
- import "./chunk-6ZH4TU6I.js";
110
- import "./chunk-SCU65EZI.js";
111
- import "./chunk-BOUYNNYD.js";
112
115
  import "./chunk-6PFRXT4K.js";
113
116
  import "./chunk-TP4FZJIZ.js";
117
+ import "./chunk-SCU65EZI.js";
118
+ import "./chunk-BOUYNNYD.js";
114
119
  import "./chunk-DM2T26WE.js";
115
120
  import "./chunk-QSVPYQPG.js";
116
121
  import "./chunk-M62O4P4T.js";
117
122
  import "./chunk-4DJQYKMN.js";
123
+ import "./chunk-X6GF3FX2.js";
124
+ import "./chunk-FAAFWE4G.js";
125
+ import {
126
+ readEnvVar,
127
+ resolveHomeDir
128
+ } from "./chunk-MARWOCVP.js";
118
129
  import "./chunk-2ODBA7MQ.js";
130
+ import "./chunk-DGXUHMOV.js";
131
+ import "./chunk-LPSF4OQH.js";
132
+ import "./chunk-TVVEYCNW.js";
133
+ import "./chunk-RFYAYKTD.js";
134
+ import "./chunk-LBLXEFWK.js";
135
+ import "./chunk-XKECPATV.js";
119
136
 
120
137
  // src/access-cli.ts
121
138
  import fs from "fs";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/access-cli.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { parseConfig } from \"./config.js\";\nimport type { PluginConfig } from \"./types.js\";\nimport { Orchestrator } from \"./orchestrator.js\";\nimport { EngramAccessService } from \"./access-service.js\";\nimport { readEnvVar, resolveHomeDir } from \"./runtime/env.js\";\nimport { resolveRemnicPluginEntry } from \"./plugin-id.js\";\n\ntype CommandName = \"browse\" | \"store\";\n\ntype ParsedArgs = {\n command: CommandName;\n options: Record<string, string[]>;\n flags: Set<string>;\n};\n\ntype Runtime = {\n config: PluginConfig;\n service: EngramAccessService;\n};\n\nexport type AccessCliOptions = {\n /**\n * The calling plugin's own id (e.g. `\"openclaw-engram\"` when invoked by the\n * shim binary). Forwarded to {@link resolveRemnicPluginEntry} so shim CLI\n * users target their own `plugins.entries[\"openclaw-engram\"]` block instead\n * of accidentally resolving to the canonical `\"openclaw-remnic\"` entry when\n * `plugins.slots.memory` is unset (#403).\n */\n preferredId?: string;\n};\n\ntype UsageErrorKind =\n | \"unsupported-command\"\n | \"unexpected-positional\"\n | \"missing-option\"\n | \"missing-content\"\n | \"invalid-integer\"\n | \"invalid-number\";\n\nclass UsageError extends Error {\n constructor(\n readonly kind: UsageErrorKind,\n readonly optionName?: string,\n ) {\n super(\"invalid access-cli arguments\");\n }\n}\n\nfunction formatUsageError(error: UsageError): string {\n switch (error.kind) {\n case \"unsupported-command\":\n return \"unsupported command\";\n case \"unexpected-positional\":\n return \"unexpected positional argument\";\n case \"missing-option\":\n return `missing required option: --${error.optionName ?? \"unknown\"}`;\n case \"missing-content\":\n return \"missing required option: --content or --content-file\";\n case \"invalid-integer\":\n return `invalid integer for --${error.optionName ?? \"unknown\"}`;\n case \"invalid-number\":\n return `invalid number for --${error.optionName ?? \"unknown\"}`;\n }\n}\n\nfunction writeCliOutput(text: string = \"\"): void {\n process.stdout.write(`${text}\\n`);\n}\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" engram-access browse [options]\",\n \" engram-access store [options]\",\n \"\",\n \"Browse options:\",\n \" --namespace <name>\",\n \" --query <text>\",\n \" --category <name>\",\n \" --status <name>\",\n \" --sort <updated_desc|updated_asc|created_desc|created_asc>\",\n \" --limit <n>\",\n \" --offset <n>\",\n \"\",\n \"Store options:\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --content <text> | --content-file <path>\",\n \" --category <name>\",\n \" --confidence <0-1>\",\n \" --tag <tag> (repeatable)\",\n \" --entity-ref <ref>\",\n \" --ttl <duration>\",\n \" --source-reason <text>\",\n \" --idempotency-key <key>\",\n \" --dry-run\",\n ].join(\"\\n\");\n}\n\nfunction parseArgs(argv: string[]): ParsedArgs {\n const [commandRaw, ...rest] = argv;\n if (commandRaw !== \"browse\" && commandRaw !== \"store\") {\n throw new UsageError(\"unsupported-command\");\n }\n\n const options: Record<string, string[]> = {};\n const flags = new Set<string>();\n\n for (let i = 0; i < rest.length; i += 1) {\n const token = rest[i];\n if (!token.startsWith(\"--\")) {\n throw new UsageError(\"unexpected-positional\");\n }\n const key = token.slice(2);\n const next = rest[i + 1];\n if (!next || next.startsWith(\"--\")) {\n flags.add(key);\n continue;\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(next);\n i += 1;\n }\n\n return {\n command: commandRaw,\n options,\n flags,\n };\n}\n\nfunction getLastOption(args: ParsedArgs, name: string): string | undefined {\n const values = args.options[name];\n if (!values || values.length === 0) return undefined;\n return values[values.length - 1];\n}\n\nfunction getAllOptions(args: ParsedArgs, name: string): string[] {\n return args.options[name] ?? [];\n}\n\nfunction requireOption(args: ParsedArgs, name: string): string {\n const value = getLastOption(args, name);\n if (!value || value.trim().length === 0) {\n throw new UsageError(\"missing-option\", name);\n }\n return value;\n}\n\nfunction parseIntegerOption(args: ParsedArgs, name: string): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const value = parseInt(raw, 10);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n return value;\n}\n\nfunction parseFloatOption(args: ParsedArgs, name: string): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const value = Number.parseFloat(raw);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-number\", name);\n }\n return value;\n}\n\nfunction loadPluginConfig(preferredId?: string): Record<string, unknown> {\n const configPath =\n readEnvVar(\"OPENCLAW_ENGRAM_CONFIG_PATH\") ||\n readEnvVar(\"OPENCLAW_CONFIG_PATH\") ||\n path.join(resolveHomeDir(), \".openclaw\", \"openclaw.json\");\n const raw = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n // Delegate slot → preferredId → PLUGIN_ID → LEGACY_PLUGIN_ID resolution to\n // the shared helper so all config loaders stay in sync (#403). Shim CLI\n // callers pass `preferredId: \"openclaw-engram\"` so legacy shim installs\n // target their own config block instead of falling through to the canonical\n // \"openclaw-remnic\" entry.\n const entry = resolveRemnicPluginEntry(raw, preferredId);\n return (entry?.[\"config\"] as Record<string, unknown> | undefined) ?? {};\n}\n\nfunction buildRuntime(preferredId?: string): Runtime {\n const config = parseConfig(loadPluginConfig(preferredId));\n return {\n config,\n service: new EngramAccessService(new Orchestrator(config)),\n };\n}\n\nasync function runBrowse(args: ParsedArgs, preferredId?: string): Promise<void> {\n const { service } = buildRuntime(preferredId);\n const result = await service.memoryBrowse({\n namespace: getLastOption(args, \"namespace\"),\n query: getLastOption(args, \"query\"),\n category: getLastOption(args, \"category\"),\n status: getLastOption(args, \"status\"),\n sort: getLastOption(args, \"sort\") as \"updated_desc\" | \"updated_asc\" | \"created_desc\" | \"created_asc\" | undefined,\n limit: parseIntegerOption(args, \"limit\"),\n offset: parseIntegerOption(args, \"offset\"),\n });\n console.log(JSON.stringify(result, null, 2));\n}\n\nasync function runStore(args: ParsedArgs, preferredId?: string): Promise<void> {\n const { config, service } = buildRuntime(preferredId);\n const contentFile = getLastOption(args, \"content-file\");\n const inlineContent = getLastOption(args, \"content\");\n const content = contentFile ? fs.readFileSync(contentFile, \"utf8\") : inlineContent;\n if (!content || content.trim().length === 0) {\n throw new UsageError(\"missing-content\");\n }\n\n const result = await service.memoryStore({\n namespace: getLastOption(args, \"namespace\"),\n sessionKey: getLastOption(args, \"session-key\"),\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n content,\n category: requireOption(args, \"category\"),\n confidence: parseFloatOption(args, \"confidence\"),\n tags: getAllOptions(args, \"tag\"),\n entityRef: getLastOption(args, \"entity-ref\"),\n ttl: getLastOption(args, \"ttl\"),\n sourceReason: getLastOption(args, \"source-reason\"),\n idempotencyKey: getLastOption(args, \"idempotency-key\"),\n dryRun: args.flags.has(\"dry-run\"),\n });\n console.log(JSON.stringify(result, null, 2));\n}\n\nexport async function main(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n const args = parseArgs(argv);\n if (args.command === \"browse\") {\n await runBrowse(args, options.preferredId);\n return;\n }\n await runStore(args, options.preferredId);\n}\n\nexport function printUsage(): void {\n writeCliOutput(usage());\n}\n\nexport async function runCli(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n try {\n await main(argv, options);\n } catch (error) {\n if (error instanceof UsageError) {\n writeCliOutput(formatUsageError(error));\n writeCliOutput();\n printUsage();\n process.exit(1);\n }\n\n console.error(\"access-cli failed\");\n process.exit(1);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/access-cli.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { parseConfig } from \"./config.js\";\nimport type { PluginConfig } from \"./types.js\";\nimport { Orchestrator } from \"./orchestrator.js\";\nimport { EngramAccessService } from \"./access-service.js\";\nimport { readEnvVar, resolveHomeDir } from \"./runtime/env.js\";\nimport { resolveRemnicPluginEntry } from \"./plugin-id.js\";\n\ntype CommandName = \"browse\" | \"store\";\n\ntype ParsedArgs = {\n command: CommandName;\n options: Record<string, string[]>;\n flags: Set<string>;\n};\n\ntype Runtime = {\n config: PluginConfig;\n service: EngramAccessService;\n};\n\nexport type AccessCliOptions = {\n /**\n * The calling plugin's own id (e.g. `\"openclaw-engram\"` when invoked by the\n * shim binary). Forwarded to {@link resolveRemnicPluginEntry} so shim CLI\n * users target their own `plugins.entries[\"openclaw-engram\"]` block instead\n * of accidentally resolving to the canonical `\"openclaw-remnic\"` entry when\n * `plugins.slots.memory` is unset (#403).\n */\n preferredId?: string;\n};\n\ntype UsageErrorKind =\n | \"unsupported-command\"\n | \"unexpected-positional\"\n | \"missing-option\"\n | \"missing-content\"\n | \"invalid-integer\"\n | \"invalid-number\";\n\nclass UsageError extends Error {\n constructor(\n readonly kind: UsageErrorKind,\n readonly optionName?: string,\n ) {\n super(\"invalid access-cli arguments\");\n }\n}\n\nfunction formatUsageError(error: UsageError): string {\n switch (error.kind) {\n case \"unsupported-command\":\n return \"unsupported command\";\n case \"unexpected-positional\":\n return \"unexpected positional argument\";\n case \"missing-option\":\n return `missing required option: --${error.optionName ?? \"unknown\"}`;\n case \"missing-content\":\n return \"missing required option: --content or --content-file\";\n case \"invalid-integer\":\n return `invalid integer for --${error.optionName ?? \"unknown\"}`;\n case \"invalid-number\":\n return `invalid number for --${error.optionName ?? \"unknown\"}`;\n }\n}\n\nfunction writeCliOutput(text: string = \"\"): void {\n process.stdout.write(`${text}\\n`);\n}\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" engram-access browse [options]\",\n \" engram-access store [options]\",\n \"\",\n \"Browse options:\",\n \" --namespace <name>\",\n \" --query <text>\",\n \" --category <name>\",\n \" --status <name>\",\n \" --sort <updated_desc|updated_asc|created_desc|created_asc>\",\n \" --limit <n>\",\n \" --offset <n>\",\n \"\",\n \"Store options:\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --content <text> | --content-file <path>\",\n \" --category <name>\",\n \" --confidence <0-1>\",\n \" --tag <tag> (repeatable)\",\n \" --entity-ref <ref>\",\n \" --ttl <duration>\",\n \" --source-reason <text>\",\n \" --idempotency-key <key>\",\n \" --dry-run\",\n ].join(\"\\n\");\n}\n\nfunction parseArgs(argv: string[]): ParsedArgs {\n const [commandRaw, ...rest] = argv;\n if (commandRaw !== \"browse\" && commandRaw !== \"store\") {\n throw new UsageError(\"unsupported-command\");\n }\n\n const options: Record<string, string[]> = {};\n const flags = new Set<string>();\n\n for (let i = 0; i < rest.length; i += 1) {\n const token = rest[i];\n if (!token.startsWith(\"--\")) {\n throw new UsageError(\"unexpected-positional\");\n }\n const key = token.slice(2);\n const next = rest[i + 1];\n if (!next || next.startsWith(\"--\")) {\n flags.add(key);\n continue;\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(next);\n i += 1;\n }\n\n return {\n command: commandRaw,\n options,\n flags,\n };\n}\n\nfunction getLastOption(args: ParsedArgs, name: string): string | undefined {\n const values = args.options[name];\n if (!values || values.length === 0) return undefined;\n return values[values.length - 1];\n}\n\nfunction getAllOptions(args: ParsedArgs, name: string): string[] {\n return args.options[name] ?? [];\n}\n\nfunction requireOption(args: ParsedArgs, name: string): string {\n const value = getLastOption(args, name);\n if (!value || value.trim().length === 0) {\n throw new UsageError(\"missing-option\", name);\n }\n return value;\n}\n\nfunction parseIntegerOption(args: ParsedArgs, name: string): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const value = parseInt(raw, 10);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n return value;\n}\n\nfunction parseFloatOption(args: ParsedArgs, name: string): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const value = Number.parseFloat(raw);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-number\", name);\n }\n return value;\n}\n\nfunction loadPluginConfig(preferredId?: string): Record<string, unknown> {\n const configPath =\n readEnvVar(\"OPENCLAW_ENGRAM_CONFIG_PATH\") ||\n readEnvVar(\"OPENCLAW_CONFIG_PATH\") ||\n path.join(resolveHomeDir(), \".openclaw\", \"openclaw.json\");\n const raw = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n // Delegate slot → preferredId → PLUGIN_ID → LEGACY_PLUGIN_ID resolution to\n // the shared helper so all config loaders stay in sync (#403). Shim CLI\n // callers pass `preferredId: \"openclaw-engram\"` so legacy shim installs\n // target their own config block instead of falling through to the canonical\n // \"openclaw-remnic\" entry.\n const entry = resolveRemnicPluginEntry(raw, preferredId);\n return (entry?.[\"config\"] as Record<string, unknown> | undefined) ?? {};\n}\n\nfunction buildRuntime(preferredId?: string): Runtime {\n const config = parseConfig(loadPluginConfig(preferredId));\n return {\n config,\n service: new EngramAccessService(new Orchestrator(config)),\n };\n}\n\nasync function runBrowse(args: ParsedArgs, preferredId?: string): Promise<void> {\n const { service } = buildRuntime(preferredId);\n const result = await service.memoryBrowse({\n namespace: getLastOption(args, \"namespace\"),\n query: getLastOption(args, \"query\"),\n category: getLastOption(args, \"category\"),\n status: getLastOption(args, \"status\"),\n sort: getLastOption(args, \"sort\") as \"updated_desc\" | \"updated_asc\" | \"created_desc\" | \"created_asc\" | undefined,\n limit: parseIntegerOption(args, \"limit\"),\n offset: parseIntegerOption(args, \"offset\"),\n });\n console.log(JSON.stringify(result, null, 2));\n}\n\nasync function runStore(args: ParsedArgs, preferredId?: string): Promise<void> {\n const { config, service } = buildRuntime(preferredId);\n const contentFile = getLastOption(args, \"content-file\");\n const inlineContent = getLastOption(args, \"content\");\n const content = contentFile ? fs.readFileSync(contentFile, \"utf8\") : inlineContent;\n if (!content || content.trim().length === 0) {\n throw new UsageError(\"missing-content\");\n }\n\n const result = await service.memoryStore({\n namespace: getLastOption(args, \"namespace\"),\n sessionKey: getLastOption(args, \"session-key\"),\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n content,\n category: requireOption(args, \"category\"),\n confidence: parseFloatOption(args, \"confidence\"),\n tags: getAllOptions(args, \"tag\"),\n entityRef: getLastOption(args, \"entity-ref\"),\n ttl: getLastOption(args, \"ttl\"),\n sourceReason: getLastOption(args, \"source-reason\"),\n idempotencyKey: getLastOption(args, \"idempotency-key\"),\n dryRun: args.flags.has(\"dry-run\"),\n });\n console.log(JSON.stringify(result, null, 2));\n}\n\nexport async function main(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n const args = parseArgs(argv);\n if (args.command === \"browse\") {\n await runBrowse(args, options.preferredId);\n return;\n }\n await runStore(args, options.preferredId);\n}\n\nexport function printUsage(): void {\n writeCliOutput(usage());\n}\n\nexport async function runCli(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n try {\n await main(argv, options);\n } catch (error) {\n if (error instanceof UsageError) {\n writeCliOutput(formatUsageError(error));\n writeCliOutput();\n printUsage();\n process.exit(1);\n }\n\n console.error(\"access-cli failed\");\n process.exit(1);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,32 +1,39 @@
1
1
  import { IncomingMessage } from 'node:http';
2
- import { E as EngramAccessService } from './access-service-HmO1Trrx.js';
3
- import './types.js';
4
- import './explicit-capture.js';
5
- import './orchestrator-DRYA6_lW.js';
6
- import './buffer.js';
2
+ import { E as EngramAccessService } from './access-service-Br8ZydTK.js';
7
3
  import './storage.js';
8
4
  import './page-versioning.js';
5
+ import './consolidation-operator.js';
6
+ import './types.js';
9
7
  import './memory-projection-store-DeSXPh1j.js';
10
8
  import 'better-sqlite3';
11
- import './port-C1GZFv8h.js';
9
+ import './recall-xray.js';
10
+ import './recall-explain-renderer.js';
11
+ import './recall-state.js';
12
+ import './recall-audit-anomaly.js';
13
+ import './recall-audit.js';
14
+ import './explicit-capture.js';
15
+ import './orchestrator-CmJ-NTdJ.js';
16
+ import './buffer.js';
17
+ import './port-BADbLZU5.js';
12
18
  import './transcript.js';
13
19
  import './session-integrity.js';
14
20
  import './summarizer.js';
15
21
  import './model-registry.js';
16
22
  import './local-llm.js';
23
+ import './fallback-llm.js';
17
24
  import './relevance.js';
18
25
  import './negative.js';
19
- import './recall-state.js';
20
26
  import './session-observer-state.js';
21
27
  import './embedding-fallback.js';
22
- import './semantic-consolidation-DrvSYRdB.js';
28
+ import './semantic-consolidation-CxJU6MJk.js';
23
29
  import './codex-materialize-CQlLTzke.js';
24
30
  import './logger.js';
25
31
  import 'zod';
26
32
  import './policy-runtime.js';
27
33
  import './profiling.js';
34
+ import './cross-namespace-budget.js';
28
35
  import './trust-zones.js';
29
- import './fallback-llm.js';
36
+ import './memory-worth-outcomes.js';
30
37
 
31
38
  /**
32
39
  * Adapter interface for external system identity resolution.
@@ -1,38 +1,46 @@
1
1
  import {
2
2
  EngramAccessHttpServer
3
- } from "./chunk-37UIFYWO.js";
4
- import "./chunk-NQEVYWX6.js";
3
+ } from "./chunk-UWB5LMWY.js";
4
+ import "./chunk-OC5OXUQ4.js";
5
5
  import "./chunk-IQT3XTKW.js";
6
- import "./chunk-MARWOCVP.js";
7
- import "./chunk-MTLYEMJB.js";
8
- import "./chunk-MVTHXUBX.js";
9
- import "./chunk-ITRLGI2T.js";
6
+ import "./chunk-STGWEHYR.js";
7
+ import "./chunk-ZAIM4TUE.js";
8
+ import "./chunk-SOBJ6NEY.js";
9
+ import "./chunk-3OGMS3PE.js";
10
10
  import "./chunk-EQINRHYR.js";
11
- import "./chunk-QDYXG4CS.js";
12
- import "./chunk-QNJMBKFK.js";
11
+ import "./chunk-EIR5VLIH.js";
13
12
  import "./chunk-EEQLFRUM.js";
14
13
  import "./chunk-QDW3E4RD.js";
15
- import "./chunk-4NRAJUDS.js";
14
+ import "./chunk-3FPTCC3Z.js";
15
+ import "./chunk-2LGMW3DJ.js";
16
+ import "./chunk-GDFS42HT.js";
17
+ import "./chunk-RBBWYEFJ.js";
16
18
  import "./chunk-DT5TVLJE.js";
17
19
  import "./chunk-N5AKDXAI.js";
18
20
  import "./chunk-TBBDFYXW.js";
19
- import "./chunk-DGXUHMOV.js";
20
- import "./chunk-LPSF4OQH.js";
21
- import "./chunk-XKECPATV.js";
22
- import "./chunk-4LACOVZX.js";
23
- import "./chunk-GV6NLQ4X.js";
24
- import "./chunk-3WHVNEN7.js";
21
+ import "./chunk-L7IXWRYE.js";
22
+ import "./chunk-F5VP6YCB.js";
23
+ import "./chunk-LTCGGW2D.js";
25
24
  import "./chunk-4KAN3GZ3.js";
26
- import "./chunk-6ZH4TU6I.js";
27
- import "./chunk-SCU65EZI.js";
28
- import "./chunk-BOUYNNYD.js";
29
25
  import "./chunk-6PFRXT4K.js";
30
26
  import "./chunk-TP4FZJIZ.js";
27
+ import "./chunk-SCU65EZI.js";
28
+ import "./chunk-BOUYNNYD.js";
31
29
  import "./chunk-DM2T26WE.js";
32
30
  import "./chunk-QSVPYQPG.js";
33
31
  import "./chunk-M62O4P4T.js";
34
32
  import "./chunk-4DJQYKMN.js";
33
+ import "./chunk-X6GF3FX2.js";
34
+ import "./chunk-FAAFWE4G.js";
35
+ import "./chunk-MARWOCVP.js";
35
36
  import "./chunk-2ODBA7MQ.js";
37
+ import "./chunk-DGXUHMOV.js";
38
+ import "./chunk-LPSF4OQH.js";
39
+ import "./chunk-TVVEYCNW.js";
40
+ import "./chunk-RFYAYKTD.js";
41
+ import "./chunk-LBLXEFWK.js";
42
+ import "./chunk-XKECPATV.js";
43
+ import "./chunk-WCLICCGB.js";
36
44
  export {
37
45
  EngramAccessHttpServer
38
46
  };
@@ -1,32 +1,39 @@
1
1
  import { Readable, Writable } from 'node:stream';
2
- import { E as EngramAccessService } from './access-service-HmO1Trrx.js';
3
- import './types.js';
4
- import './explicit-capture.js';
5
- import './orchestrator-DRYA6_lW.js';
6
- import './buffer.js';
2
+ import { E as EngramAccessService } from './access-service-Br8ZydTK.js';
7
3
  import './storage.js';
8
4
  import './page-versioning.js';
5
+ import './consolidation-operator.js';
6
+ import './types.js';
9
7
  import './memory-projection-store-DeSXPh1j.js';
10
8
  import 'better-sqlite3';
11
- import './port-C1GZFv8h.js';
9
+ import './recall-xray.js';
10
+ import './recall-explain-renderer.js';
11
+ import './recall-state.js';
12
+ import './recall-audit-anomaly.js';
13
+ import './recall-audit.js';
14
+ import './explicit-capture.js';
15
+ import './orchestrator-CmJ-NTdJ.js';
16
+ import './buffer.js';
17
+ import './port-BADbLZU5.js';
12
18
  import './transcript.js';
13
19
  import './session-integrity.js';
14
20
  import './summarizer.js';
15
21
  import './model-registry.js';
16
22
  import './local-llm.js';
23
+ import './fallback-llm.js';
17
24
  import './relevance.js';
18
25
  import './negative.js';
19
- import './recall-state.js';
20
26
  import './session-observer-state.js';
21
27
  import './embedding-fallback.js';
22
- import './semantic-consolidation-DrvSYRdB.js';
28
+ import './semantic-consolidation-CxJU6MJk.js';
23
29
  import './codex-materialize-CQlLTzke.js';
24
30
  import './logger.js';
25
31
  import 'zod';
26
32
  import './policy-runtime.js';
27
33
  import './profiling.js';
34
+ import './cross-namespace-budget.js';
28
35
  import './trust-zones.js';
29
- import './fallback-llm.js';
36
+ import './memory-worth-outcomes.js';
30
37
 
31
38
  type JsonRpcId = string | number | null;
32
39
  type JsonRpcRequest = {
@@ -1,22 +1,44 @@
1
1
  import {
2
2
  EngramMcpServer
3
- } from "./chunk-NQEVYWX6.js";
3
+ } from "./chunk-OC5OXUQ4.js";
4
4
  import "./chunk-IQT3XTKW.js";
5
- import "./chunk-MARWOCVP.js";
6
- import "./chunk-4LACOVZX.js";
7
- import "./chunk-GV6NLQ4X.js";
8
- import "./chunk-3WHVNEN7.js";
5
+ import "./chunk-STGWEHYR.js";
6
+ import "./chunk-ZAIM4TUE.js";
7
+ import "./chunk-SOBJ6NEY.js";
8
+ import "./chunk-3OGMS3PE.js";
9
+ import "./chunk-EQINRHYR.js";
10
+ import "./chunk-EIR5VLIH.js";
11
+ import "./chunk-EEQLFRUM.js";
12
+ import "./chunk-QDW3E4RD.js";
13
+ import "./chunk-3FPTCC3Z.js";
14
+ import "./chunk-2LGMW3DJ.js";
15
+ import "./chunk-GDFS42HT.js";
16
+ import "./chunk-RBBWYEFJ.js";
17
+ import "./chunk-DT5TVLJE.js";
18
+ import "./chunk-N5AKDXAI.js";
19
+ import "./chunk-TBBDFYXW.js";
20
+ import "./chunk-L7IXWRYE.js";
21
+ import "./chunk-F5VP6YCB.js";
22
+ import "./chunk-LTCGGW2D.js";
9
23
  import "./chunk-4KAN3GZ3.js";
10
- import "./chunk-6ZH4TU6I.js";
11
- import "./chunk-SCU65EZI.js";
12
- import "./chunk-BOUYNNYD.js";
13
24
  import "./chunk-6PFRXT4K.js";
14
25
  import "./chunk-TP4FZJIZ.js";
26
+ import "./chunk-SCU65EZI.js";
27
+ import "./chunk-BOUYNNYD.js";
15
28
  import "./chunk-DM2T26WE.js";
16
29
  import "./chunk-QSVPYQPG.js";
17
30
  import "./chunk-M62O4P4T.js";
18
31
  import "./chunk-4DJQYKMN.js";
32
+ import "./chunk-X6GF3FX2.js";
33
+ import "./chunk-FAAFWE4G.js";
34
+ import "./chunk-MARWOCVP.js";
19
35
  import "./chunk-2ODBA7MQ.js";
36
+ import "./chunk-DGXUHMOV.js";
37
+ import "./chunk-LPSF4OQH.js";
38
+ import "./chunk-TVVEYCNW.js";
39
+ import "./chunk-RFYAYKTD.js";
40
+ import "./chunk-LBLXEFWK.js";
41
+ import "./chunk-XKECPATV.js";
20
42
  export {
21
43
  EngramMcpServer
22
44
  };