@remnic/core 9.3.684 → 9.3.686

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 (315) hide show
  1. package/dist/access-boundary.d.ts +4 -3
  2. package/dist/access-boundary.js +23 -23
  3. package/dist/access-cli.js +152 -71
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +3 -2
  6. package/dist/access-http.js +26 -26
  7. package/dist/access-mcp.d.ts +14 -3
  8. package/dist/access-mcp.js +25 -25
  9. package/dist/access-operations.d.ts +10 -4
  10. package/dist/access-operations.js +26 -24
  11. package/dist/access-schema.d.ts +4 -4
  12. package/dist/{access-service-D-siI-xJ.d.ts → access-service-DmCHJ4cH.d.ts} +106 -39
  13. package/dist/access-service.d.ts +3 -2
  14. package/dist/access-service.js +22 -22
  15. package/dist/access-surface-catalog.d.ts +3 -2
  16. package/dist/access-surface-catalog.js +2 -0
  17. package/dist/access-surface-catalog.js.map +1 -1
  18. package/dist/active-recall.js +2 -2
  19. package/dist/{auto-sync-5CJBJMPZ.js → auto-sync-NUQWSFQD.js} +7 -7
  20. package/dist/bootstrap.d.ts +2 -1
  21. package/dist/bootstrap.js +2 -2
  22. package/dist/boxes.js +2 -2
  23. package/dist/briefing.js +3 -3
  24. package/dist/buffer.js +2 -2
  25. package/dist/calibration.js +4 -4
  26. package/dist/catalog-COqWZlZ6.d.ts +456 -0
  27. package/dist/causal-behavior.js +4 -4
  28. package/dist/causal-chain.js +4 -4
  29. package/dist/causal-consolidation.js +11 -11
  30. package/dist/causal-retrieval.js +4 -4
  31. package/dist/causal-trajectory-graph.js +1 -1
  32. package/dist/causal-trajectory.js +1 -1
  33. package/dist/{chunk-ROHLEUTH.js → chunk-2KAYTPPT.js} +10 -10
  34. package/dist/{chunk-NHQGDVJF.js → chunk-2SJCWLQD.js} +3 -3
  35. package/dist/{chunk-YTWNKQ2G.js → chunk-3FC6LW6T.js} +2 -2
  36. package/dist/{chunk-5OE4PYY5.js → chunk-473JIN2U.js} +61 -11
  37. package/dist/chunk-473JIN2U.js.map +1 -0
  38. package/dist/{chunk-XEA4Z7JU.js → chunk-4FE2K57M.js} +3 -3
  39. package/dist/{chunk-WI7JKV2T.js → chunk-4N3TFFPH.js} +2 -2
  40. package/dist/{chunk-BTVX7ZXZ.js → chunk-4NFVPDIL.js} +4 -4
  41. package/dist/{chunk-OUWAQVDJ.js → chunk-5CEJH5ZN.js} +2 -2
  42. package/dist/{chunk-6QM24CP7.js → chunk-6GJS4BFH.js} +2 -2
  43. package/dist/{chunk-J2FBJ63F.js → chunk-6O6A6YUO.js} +4 -4
  44. package/dist/{chunk-HQ6NIBL6.js → chunk-7FL4CNPV.js} +2 -2
  45. package/dist/{chunk-5VDJMYTF.js → chunk-7WWURLG6.js} +3 -3
  46. package/dist/{chunk-QWRC7GIO.js → chunk-A4HH2EWA.js} +5 -5
  47. package/dist/{chunk-4SKKVWLQ.js → chunk-AGJH5ISO.js} +2 -2
  48. package/dist/{chunk-2L3KLWOV.js → chunk-B43NZNMG.js} +54 -92
  49. package/dist/chunk-B43NZNMG.js.map +1 -0
  50. package/dist/{chunk-WRE3JPAW.js → chunk-B4XVLHJA.js} +3 -3
  51. package/dist/{chunk-53FDU4CE.js → chunk-BLIWOONZ.js} +39 -36
  52. package/dist/chunk-BLIWOONZ.js.map +1 -0
  53. package/dist/{chunk-AJU4PJGY.js → chunk-BVKCV2ZY.js} +2 -2
  54. package/dist/{chunk-DQY7NJ5L.js → chunk-CTOQEZSN.js} +2 -2
  55. package/dist/{chunk-7OGJQP7T.js → chunk-DCWIQFNA.js} +4 -4
  56. package/dist/{chunk-MHQC2WU2.js → chunk-DKTSR7EK.js} +2 -2
  57. package/dist/{chunk-RN7MUWON.js → chunk-EHISUJFN.js} +2 -2
  58. package/dist/{chunk-WLEB7WCG.js → chunk-EO5QWINU.js} +2 -2
  59. package/dist/{chunk-XKXKSQU7.js → chunk-EXM3CQTZ.js} +2 -2
  60. package/dist/{chunk-M3FWYURP.js → chunk-FE6DQUNJ.js} +9 -9
  61. package/dist/{chunk-LCC5EZTT.js → chunk-FIVDN2SM.js} +4 -4
  62. package/dist/{chunk-3MY4W5V4.js → chunk-FUCUR2OZ.js} +550 -63
  63. package/dist/chunk-FUCUR2OZ.js.map +1 -0
  64. package/dist/{chunk-452WDNFO.js → chunk-GG6AJN7A.js} +2 -2
  65. package/dist/{chunk-2IBGHRIO.js → chunk-GS55WYRL.js} +3 -3
  66. package/dist/{chunk-IBTZEBUD.js → chunk-HYNHLBKA.js} +2 -2
  67. package/dist/{chunk-EVWIEEKZ.js → chunk-IQ7WCZRW.js} +2 -2
  68. package/dist/{chunk-B5XMS73R.js → chunk-IQVQJJL7.js} +2 -2
  69. package/dist/{chunk-6RHNCKHG.js → chunk-K43PI6DQ.js} +2 -2
  70. package/dist/{chunk-OIF36KGD.js → chunk-KCQA46NR.js} +2 -2
  71. package/dist/{chunk-2LDBXPLB.js → chunk-KF74X62T.js} +1 -1
  72. package/dist/{chunk-3EVIMVQU.js → chunk-KFBOZYME.js} +42 -3
  73. package/dist/chunk-KFBOZYME.js.map +1 -0
  74. package/dist/{chunk-MAV46GWQ.js → chunk-KYYL4U6X.js} +2 -2
  75. package/dist/{chunk-6GC5SGFE.js → chunk-L24JROPR.js} +2 -2
  76. package/dist/{chunk-Q5ZU3RNY.js → chunk-LQ6JI4VH.js} +2 -2
  77. package/dist/{chunk-GWKCEM3S.js → chunk-MCQDSY4G.js} +3 -3
  78. package/dist/{chunk-HP5FMB6L.js → chunk-MDJURR27.js} +2 -2
  79. package/dist/{chunk-FYEVFGJD.js → chunk-NN7QYW5W.js} +2 -2
  80. package/dist/chunk-NN7QYW5W.js.map +1 -0
  81. package/dist/{chunk-2ODBA7MQ.js → chunk-NU3CSQ4H.js} +5 -5
  82. package/dist/chunk-NU3CSQ4H.js.map +1 -0
  83. package/dist/{chunk-T2PO5MUF.js → chunk-O7GOFAM3.js} +2 -2
  84. package/dist/{chunk-Z2OXSMZK.js → chunk-OBXTMFZQ.js} +3 -3
  85. package/dist/{chunk-K6ZN34WC.js → chunk-OV4D5T7V.js} +3 -3
  86. package/dist/{chunk-OMLIFZ4I.js → chunk-PH3HOKYW.js} +2 -2
  87. package/dist/{chunk-C3IW2F5Z.js → chunk-PLBIPT6I.js} +2 -2
  88. package/dist/{chunk-QY7YA7OL.js → chunk-PNLCEFE4.js} +2 -2
  89. package/dist/{chunk-AGRPGAKR.js → chunk-PONNZ54D.js} +2 -2
  90. package/dist/{chunk-XZ4WBBB5.js → chunk-PWFWCGOO.js} +2 -2
  91. package/dist/{chunk-XWEXT4XU.js → chunk-QANVLERJ.js} +4 -4
  92. package/dist/{chunk-W4RVMTHR.js → chunk-QRDOSYOR.js} +2 -2
  93. package/dist/{chunk-OXNOINIP.js → chunk-QVMXQGT7.js} +24 -24
  94. package/dist/chunk-QVMXQGT7.js.map +1 -0
  95. package/dist/{chunk-6IMKOIZ6.js → chunk-R6OVFAX6.js} +2 -2
  96. package/dist/{chunk-5N5DXYDW.js → chunk-S2OU5DZY.js} +31 -10
  97. package/dist/chunk-S2OU5DZY.js.map +1 -0
  98. package/dist/{chunk-JOASJWQR.js → chunk-SANZHXY2.js} +2 -2
  99. package/dist/{chunk-7DTASS5T.js → chunk-SJHM6I4J.js} +2 -2
  100. package/dist/{chunk-M6BVYHBU.js → chunk-STOEE37X.js} +4 -4
  101. package/dist/{chunk-GKKAXVAJ.js → chunk-U33LWTQQ.js} +1 -7
  102. package/dist/chunk-U33LWTQQ.js.map +1 -0
  103. package/dist/{chunk-LXH3DIF2.js → chunk-U7D7NP4J.js} +2 -2
  104. package/dist/{chunk-DRD2Q7HQ.js → chunk-UFS7OXGL.js} +2 -2
  105. package/dist/{chunk-H3HDXD3U.js → chunk-UPTZYUYJ.js} +2 -2
  106. package/dist/{chunk-3Z7NPD5T.js → chunk-UTYBJR7M.js} +2 -2
  107. package/dist/{chunk-LN4YGHTM.js → chunk-UUH4YQOF.js} +2 -2
  108. package/dist/{chunk-6VF75M3X.js → chunk-VGUOEDTU.js} +2 -2
  109. package/dist/{chunk-44VFF3BB.js → chunk-VILEUJXC.js} +2 -2
  110. package/dist/{chunk-7SI52C65.js → chunk-VL7DP3OW.js} +2 -2
  111. package/dist/{chunk-7DHTMOND.js → chunk-VQ34TERH.js} +2 -2
  112. package/dist/{chunk-6VMIHVGO.js → chunk-VX6OBUDW.js} +2 -2
  113. package/dist/{chunk-EW5KFXHL.js → chunk-WDXCNJSF.js} +7 -7
  114. package/dist/{chunk-FMEKEF47.js → chunk-WIHPNY65.js} +79 -3
  115. package/dist/chunk-WIHPNY65.js.map +1 -0
  116. package/dist/{chunk-X6IRLNOO.js → chunk-WIWPSQYU.js} +2 -2
  117. package/dist/{chunk-DOCTITOP.js → chunk-WRFKZEO6.js} +2 -2
  118. package/dist/{chunk-E6ZDCOHM.js → chunk-XBZQRZ6G.js} +2 -2
  119. package/dist/{chunk-7YX23JBA.js → chunk-XHYGJVXL.js} +2 -2
  120. package/dist/{chunk-JD4SCARD.js → chunk-YN4ZT4CW.js} +1 -1
  121. package/dist/{chunk-YXWAILM4.js → chunk-YOI3ELXF.js} +2 -2
  122. package/dist/{chunk-XCAZF7KQ.js → chunk-ZA2S2VLL.js} +2 -2
  123. package/dist/{chunk-BEUDU7Y4.js → chunk-ZCWIH4LH.js} +2 -2
  124. package/dist/{chunk-V25ZAOSB.js → chunk-ZPTISBQU.js} +5 -5
  125. package/dist/{cli-ooj6JQBS.d.ts → cli-D8nZ2MPH.d.ts} +2 -2
  126. package/dist/cli.d.ts +4 -3
  127. package/dist/cli.js +44 -44
  128. package/dist/compounding/engine.js +4 -4
  129. package/dist/compounding/preference-consolidator.js +1 -1
  130. package/dist/config.js +2 -2
  131. package/dist/connectors/codex-materialize-runner.js +4 -4
  132. package/dist/connectors/codex-materialize.js +2 -2
  133. package/dist/connectors/index.js +5 -5
  134. package/dist/contradiction/index.js +3 -3
  135. package/dist/{contradiction-scan-AZTGFMPY.js → contradiction-scan-HWGEOUDS.js} +3 -3
  136. package/dist/conversation-index/backend.js +5 -5
  137. package/dist/conversation-index/cleanup.js +2 -2
  138. package/dist/conversation-index/faiss-adapter.js +2 -2
  139. package/dist/conversation-index/indexer.js +2 -2
  140. package/dist/conversation-index/search.js +2 -2
  141. package/dist/day-summary.js +2 -2
  142. package/dist/embedding-fallback.js +2 -2
  143. package/dist/entity-retrieval.js +4 -4
  144. package/dist/explicit-capture.d.ts +2 -1
  145. package/dist/explicit-capture.js +1 -1
  146. package/dist/extraction-judge-telemetry.js +2 -2
  147. package/dist/extraction-judge-training.js +2 -2
  148. package/dist/extraction-judge.js +5 -5
  149. package/dist/extraction.js +9 -9
  150. package/dist/fallback-llm.js +4 -4
  151. package/dist/{graph-edge-decay-KSVJGCZW.js → graph-edge-decay-D7OESCBR.js} +2 -2
  152. package/dist/graph-snapshot.js +2 -2
  153. package/dist/graph.js +1 -1
  154. package/dist/index.d.ts +5 -4
  155. package/dist/index.js +80 -80
  156. package/dist/lcm/archive.js +2 -2
  157. package/dist/lcm/engine.js +5 -5
  158. package/dist/lcm/index.js +5 -5
  159. package/dist/lcm/schema.js +2 -2
  160. package/dist/lcm/summarizer.js +3 -3
  161. package/dist/local-llm.js +2 -2
  162. package/dist/logger.js +1 -1
  163. package/dist/maintenance/memory-governance.js +3 -3
  164. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  165. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  166. package/dist/mcp-memory-inspector-app.d.ts +3 -2
  167. package/dist/model-registry.js +2 -2
  168. package/dist/models-json.js +2 -2
  169. package/dist/namespaces/migrate.d.ts +1 -0
  170. package/dist/namespaces/migrate.js +16 -16
  171. package/dist/namespaces/search.js +13 -13
  172. package/dist/namespaces/storage.d.ts +42 -1
  173. package/dist/namespaces/storage.js +3 -3
  174. package/dist/native-knowledge.js +2 -2
  175. package/dist/negative.js +2 -2
  176. package/dist/operator-toolkit.js +22 -22
  177. package/dist/{orchestrator-DIDDvwDw.d.ts → orchestrator-CA6ouzBn.d.ts} +3 -464
  178. package/dist/orchestrator.d.ts +2 -1
  179. package/dist/orchestrator.js +61 -61
  180. package/dist/profiling.js +2 -2
  181. package/dist/qmd.js +2 -2
  182. package/dist/recall-planner-llm.js +4 -4
  183. package/dist/recall-qos.js +2 -2
  184. package/dist/recall-state.js +2 -2
  185. package/dist/relevance.js +2 -2
  186. package/dist/{resolution-IDTEBJFS.js → resolution-MN36NW5P.js} +3 -3
  187. package/dist/resolve-provider-secret.js +2 -2
  188. package/dist/resume-bundles.js +4 -4
  189. package/dist/retrieval-agents.js +2 -2
  190. package/dist/routing/store.js +2 -2
  191. package/dist/schemas.d.ts +38 -38
  192. package/dist/search/embed-helper.js +2 -2
  193. package/dist/search/factory.js +12 -12
  194. package/dist/search/index.js +12 -12
  195. package/dist/search/lancedb-backend.js +2 -2
  196. package/dist/search/meilisearch-backend.js +2 -2
  197. package/dist/search/orama-backend.js +2 -2
  198. package/dist/search/remote-backend.js +2 -2
  199. package/dist/semantic-consolidation.js +5 -5
  200. package/dist/semantic-rule-promotion.js +3 -3
  201. package/dist/semantic-rule-verifier.js +3 -3
  202. package/dist/session-observer-state.js +2 -2
  203. package/dist/session-transcript-migration.js +2 -2
  204. package/dist/shared-context/manager.js +2 -2
  205. package/dist/storage.d.ts +4 -0
  206. package/dist/storage.js +2 -2
  207. package/dist/summarizer.js +7 -7
  208. package/dist/temporal-supersession.js +2 -2
  209. package/dist/threading.js +2 -2
  210. package/dist/transcript.js +2 -2
  211. package/dist/transfer/types.d.ts +22 -22
  212. package/dist/verified-recall.js +4 -4
  213. package/package.json +2 -2
  214. package/src/access-boundary.ts +2 -1
  215. package/src/access-cli.ts +94 -4
  216. package/src/access-http.ts +40 -2
  217. package/src/access-mcp.ts +55 -2
  218. package/src/access-operations.ts +66 -0
  219. package/src/access-service.ts +148 -73
  220. package/src/access-surface-catalog.test.ts +1 -1
  221. package/src/access-surface-catalog.ts +2 -0
  222. package/src/cli.ts +2 -1
  223. package/src/coding/decision-surfaces.test.ts +279 -0
  224. package/src/coding/decision-surfaces.ts +475 -0
  225. package/src/explicit-capture.ts +3 -12
  226. package/src/logger.ts +13 -4
  227. package/src/namespaces/catalog.test.ts +2 -2
  228. package/src/namespaces/storage.ts +81 -0
  229. package/src/orchestrator.ts +22 -64
  230. package/src/storage.ts +36 -36
  231. package/dist/chunk-2L3KLWOV.js.map +0 -1
  232. package/dist/chunk-2ODBA7MQ.js.map +0 -1
  233. package/dist/chunk-3EVIMVQU.js.map +0 -1
  234. package/dist/chunk-3MY4W5V4.js.map +0 -1
  235. package/dist/chunk-53FDU4CE.js.map +0 -1
  236. package/dist/chunk-5N5DXYDW.js.map +0 -1
  237. package/dist/chunk-5OE4PYY5.js.map +0 -1
  238. package/dist/chunk-FMEKEF47.js.map +0 -1
  239. package/dist/chunk-FYEVFGJD.js.map +0 -1
  240. package/dist/chunk-GKKAXVAJ.js.map +0 -1
  241. package/dist/chunk-OXNOINIP.js.map +0 -1
  242. /package/dist/{auto-sync-5CJBJMPZ.js.map → auto-sync-NUQWSFQD.js.map} +0 -0
  243. /package/dist/{chunk-ROHLEUTH.js.map → chunk-2KAYTPPT.js.map} +0 -0
  244. /package/dist/{chunk-NHQGDVJF.js.map → chunk-2SJCWLQD.js.map} +0 -0
  245. /package/dist/{chunk-YTWNKQ2G.js.map → chunk-3FC6LW6T.js.map} +0 -0
  246. /package/dist/{chunk-XEA4Z7JU.js.map → chunk-4FE2K57M.js.map} +0 -0
  247. /package/dist/{chunk-WI7JKV2T.js.map → chunk-4N3TFFPH.js.map} +0 -0
  248. /package/dist/{chunk-BTVX7ZXZ.js.map → chunk-4NFVPDIL.js.map} +0 -0
  249. /package/dist/{chunk-OUWAQVDJ.js.map → chunk-5CEJH5ZN.js.map} +0 -0
  250. /package/dist/{chunk-6QM24CP7.js.map → chunk-6GJS4BFH.js.map} +0 -0
  251. /package/dist/{chunk-J2FBJ63F.js.map → chunk-6O6A6YUO.js.map} +0 -0
  252. /package/dist/{chunk-HQ6NIBL6.js.map → chunk-7FL4CNPV.js.map} +0 -0
  253. /package/dist/{chunk-5VDJMYTF.js.map → chunk-7WWURLG6.js.map} +0 -0
  254. /package/dist/{chunk-QWRC7GIO.js.map → chunk-A4HH2EWA.js.map} +0 -0
  255. /package/dist/{chunk-4SKKVWLQ.js.map → chunk-AGJH5ISO.js.map} +0 -0
  256. /package/dist/{chunk-WRE3JPAW.js.map → chunk-B4XVLHJA.js.map} +0 -0
  257. /package/dist/{chunk-AJU4PJGY.js.map → chunk-BVKCV2ZY.js.map} +0 -0
  258. /package/dist/{chunk-DQY7NJ5L.js.map → chunk-CTOQEZSN.js.map} +0 -0
  259. /package/dist/{chunk-7OGJQP7T.js.map → chunk-DCWIQFNA.js.map} +0 -0
  260. /package/dist/{chunk-MHQC2WU2.js.map → chunk-DKTSR7EK.js.map} +0 -0
  261. /package/dist/{chunk-RN7MUWON.js.map → chunk-EHISUJFN.js.map} +0 -0
  262. /package/dist/{chunk-WLEB7WCG.js.map → chunk-EO5QWINU.js.map} +0 -0
  263. /package/dist/{chunk-XKXKSQU7.js.map → chunk-EXM3CQTZ.js.map} +0 -0
  264. /package/dist/{chunk-M3FWYURP.js.map → chunk-FE6DQUNJ.js.map} +0 -0
  265. /package/dist/{chunk-LCC5EZTT.js.map → chunk-FIVDN2SM.js.map} +0 -0
  266. /package/dist/{chunk-452WDNFO.js.map → chunk-GG6AJN7A.js.map} +0 -0
  267. /package/dist/{chunk-2IBGHRIO.js.map → chunk-GS55WYRL.js.map} +0 -0
  268. /package/dist/{chunk-IBTZEBUD.js.map → chunk-HYNHLBKA.js.map} +0 -0
  269. /package/dist/{chunk-EVWIEEKZ.js.map → chunk-IQ7WCZRW.js.map} +0 -0
  270. /package/dist/{chunk-B5XMS73R.js.map → chunk-IQVQJJL7.js.map} +0 -0
  271. /package/dist/{chunk-6RHNCKHG.js.map → chunk-K43PI6DQ.js.map} +0 -0
  272. /package/dist/{chunk-OIF36KGD.js.map → chunk-KCQA46NR.js.map} +0 -0
  273. /package/dist/{chunk-2LDBXPLB.js.map → chunk-KF74X62T.js.map} +0 -0
  274. /package/dist/{chunk-MAV46GWQ.js.map → chunk-KYYL4U6X.js.map} +0 -0
  275. /package/dist/{chunk-6GC5SGFE.js.map → chunk-L24JROPR.js.map} +0 -0
  276. /package/dist/{chunk-Q5ZU3RNY.js.map → chunk-LQ6JI4VH.js.map} +0 -0
  277. /package/dist/{chunk-GWKCEM3S.js.map → chunk-MCQDSY4G.js.map} +0 -0
  278. /package/dist/{chunk-HP5FMB6L.js.map → chunk-MDJURR27.js.map} +0 -0
  279. /package/dist/{chunk-T2PO5MUF.js.map → chunk-O7GOFAM3.js.map} +0 -0
  280. /package/dist/{chunk-Z2OXSMZK.js.map → chunk-OBXTMFZQ.js.map} +0 -0
  281. /package/dist/{chunk-K6ZN34WC.js.map → chunk-OV4D5T7V.js.map} +0 -0
  282. /package/dist/{chunk-OMLIFZ4I.js.map → chunk-PH3HOKYW.js.map} +0 -0
  283. /package/dist/{chunk-C3IW2F5Z.js.map → chunk-PLBIPT6I.js.map} +0 -0
  284. /package/dist/{chunk-QY7YA7OL.js.map → chunk-PNLCEFE4.js.map} +0 -0
  285. /package/dist/{chunk-AGRPGAKR.js.map → chunk-PONNZ54D.js.map} +0 -0
  286. /package/dist/{chunk-XZ4WBBB5.js.map → chunk-PWFWCGOO.js.map} +0 -0
  287. /package/dist/{chunk-XWEXT4XU.js.map → chunk-QANVLERJ.js.map} +0 -0
  288. /package/dist/{chunk-W4RVMTHR.js.map → chunk-QRDOSYOR.js.map} +0 -0
  289. /package/dist/{chunk-6IMKOIZ6.js.map → chunk-R6OVFAX6.js.map} +0 -0
  290. /package/dist/{chunk-JOASJWQR.js.map → chunk-SANZHXY2.js.map} +0 -0
  291. /package/dist/{chunk-7DTASS5T.js.map → chunk-SJHM6I4J.js.map} +0 -0
  292. /package/dist/{chunk-M6BVYHBU.js.map → chunk-STOEE37X.js.map} +0 -0
  293. /package/dist/{chunk-LXH3DIF2.js.map → chunk-U7D7NP4J.js.map} +0 -0
  294. /package/dist/{chunk-DRD2Q7HQ.js.map → chunk-UFS7OXGL.js.map} +0 -0
  295. /package/dist/{chunk-H3HDXD3U.js.map → chunk-UPTZYUYJ.js.map} +0 -0
  296. /package/dist/{chunk-3Z7NPD5T.js.map → chunk-UTYBJR7M.js.map} +0 -0
  297. /package/dist/{chunk-LN4YGHTM.js.map → chunk-UUH4YQOF.js.map} +0 -0
  298. /package/dist/{chunk-6VF75M3X.js.map → chunk-VGUOEDTU.js.map} +0 -0
  299. /package/dist/{chunk-44VFF3BB.js.map → chunk-VILEUJXC.js.map} +0 -0
  300. /package/dist/{chunk-7SI52C65.js.map → chunk-VL7DP3OW.js.map} +0 -0
  301. /package/dist/{chunk-7DHTMOND.js.map → chunk-VQ34TERH.js.map} +0 -0
  302. /package/dist/{chunk-6VMIHVGO.js.map → chunk-VX6OBUDW.js.map} +0 -0
  303. /package/dist/{chunk-EW5KFXHL.js.map → chunk-WDXCNJSF.js.map} +0 -0
  304. /package/dist/{chunk-X6IRLNOO.js.map → chunk-WIWPSQYU.js.map} +0 -0
  305. /package/dist/{chunk-DOCTITOP.js.map → chunk-WRFKZEO6.js.map} +0 -0
  306. /package/dist/{chunk-E6ZDCOHM.js.map → chunk-XBZQRZ6G.js.map} +0 -0
  307. /package/dist/{chunk-7YX23JBA.js.map → chunk-XHYGJVXL.js.map} +0 -0
  308. /package/dist/{chunk-JD4SCARD.js.map → chunk-YN4ZT4CW.js.map} +0 -0
  309. /package/dist/{chunk-YXWAILM4.js.map → chunk-YOI3ELXF.js.map} +0 -0
  310. /package/dist/{chunk-XCAZF7KQ.js.map → chunk-ZA2S2VLL.js.map} +0 -0
  311. /package/dist/{chunk-BEUDU7Y4.js.map → chunk-ZCWIH4LH.js.map} +0 -0
  312. /package/dist/{chunk-V25ZAOSB.js.map → chunk-ZPTISBQU.js.map} +0 -0
  313. /package/dist/{contradiction-scan-AZTGFMPY.js.map → contradiction-scan-HWGEOUDS.js.map} +0 -0
  314. /package/dist/{graph-edge-decay-KSVJGCZW.js.map → graph-edge-decay-D7OESCBR.js.map} +0 -0
  315. /package/dist/{resolution-IDTEBJFS.js.map → resolution-MN36NW5P.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { b as EngramAccessService } from './access-service-D-siI-xJ.js';
2
+ import { c as EngramAccessService } from './access-service-DmCHJ4cH.js';
3
3
  import './storage.js';
4
4
  import './page-versioning.js';
5
5
  import './consolidation-operator.js';
@@ -20,7 +20,7 @@ import './user-model.js';
20
20
  import './recall-audit-anomaly.js';
21
21
  import './recall-audit.js';
22
22
  import './explicit-capture.js';
23
- import './orchestrator-DIDDvwDw.js';
23
+ import './orchestrator-CA6ouzBn.js';
24
24
  import './briefing.js';
25
25
  import './buffer.js';
26
26
  import './transcript.js';
@@ -52,6 +52,7 @@ import './conversation-index/backend.js';
52
52
  import './conversation-index/chunker.js';
53
53
  import './faiss-adapter-BHecI1fF.js';
54
54
  import './runtime/child-process.js';
55
+ import './catalog-COqWZlZ6.js';
55
56
  import './namespaces/search.js';
56
57
  import './shared-context/manager.js';
57
58
  import './compounding/engine.js';
@@ -93,7 +94,7 @@ import './action-confidence.js';
93
94
  * lands; the fitness test in `access-surface-catalog.test.ts` treats the
94
95
  * registered set as the migration state.
95
96
  */
96
- type OperationName = "memory_get" | "memory_search" | "memory_store";
97
+ type OperationName = "memory_get" | "memory_search" | "memory_store" | "coding_decision";
97
98
  /**
98
99
  * Per-call context. `service` is the facade the handler delegates to; the
99
100
  * boundary never reaches past it. `authenticatedPrincipal` is resolved by
@@ -7,8 +7,8 @@ import {
7
7
  getOperation,
8
8
  listRegisteredOperations,
9
9
  normalizeOptionalPath
10
- } from "./chunk-FYEVFGJD.js";
11
- import "./chunk-3MY4W5V4.js";
10
+ } from "./chunk-NN7QYW5W.js";
11
+ import "./chunk-FUCUR2OZ.js";
12
12
  import "./chunk-GDASG7NC.js";
13
13
  import "./chunk-GDB4J2H3.js";
14
14
  import "./chunk-ARV3AUOM.js";
@@ -24,40 +24,40 @@ import "./chunk-LLONI6PY.js";
24
24
  import "./chunk-BMFZLLNI.js";
25
25
  import "./chunk-CI7RKSRE.js";
26
26
  import "./chunk-6HMYUWXR.js";
27
- import "./chunk-WI7JKV2T.js";
28
- import "./chunk-DQY7NJ5L.js";
29
- import "./chunk-ROHLEUTH.js";
30
- import "./chunk-DOCTITOP.js";
27
+ import "./chunk-4N3TFFPH.js";
28
+ import "./chunk-CTOQEZSN.js";
29
+ import "./chunk-2KAYTPPT.js";
30
+ import "./chunk-WRFKZEO6.js";
31
31
  import "./chunk-CYEPCZN5.js";
32
- import "./chunk-Q5ZU3RNY.js";
33
- import "./chunk-JOASJWQR.js";
34
- import "./chunk-RN7MUWON.js";
35
- import "./chunk-OUWAQVDJ.js";
32
+ import "./chunk-LQ6JI4VH.js";
33
+ import "./chunk-SANZHXY2.js";
34
+ import "./chunk-EHISUJFN.js";
35
+ import "./chunk-5CEJH5ZN.js";
36
36
  import "./chunk-AER6MT24.js";
37
37
  import "./chunk-CINZGPSJ.js";
38
38
  import "./chunk-ZFXCQPNO.js";
39
- import "./chunk-7OGJQP7T.js";
40
- import "./chunk-E6ZDCOHM.js";
41
- import "./chunk-OIF36KGD.js";
42
- import "./chunk-7DTASS5T.js";
43
- import "./chunk-6RHNCKHG.js";
39
+ import "./chunk-DCWIQFNA.js";
40
+ import "./chunk-XBZQRZ6G.js";
41
+ import "./chunk-KCQA46NR.js";
42
+ import "./chunk-SJHM6I4J.js";
43
+ import "./chunk-K43PI6DQ.js";
44
44
  import "./chunk-YNQ6DFSV.js";
45
45
  import "./chunk-EIR5VLIH.js";
46
- import "./chunk-YXWAILM4.js";
47
- import "./chunk-GKKAXVAJ.js";
46
+ import "./chunk-YOI3ELXF.js";
47
+ import "./chunk-U33LWTQQ.js";
48
48
  import "./chunk-EI6V5UXY.js";
49
- import "./chunk-QY7YA7OL.js";
49
+ import "./chunk-PNLCEFE4.js";
50
50
  import "./chunk-O75CRYGF.js";
51
51
  import "./chunk-QDW3E4RD.js";
52
52
  import "./chunk-3ONXXHQO.js";
53
53
  import "./chunk-ODPLEWB6.js";
54
54
  import "./chunk-ZY2MNJR6.js";
55
- import "./chunk-2LDBXPLB.js";
55
+ import "./chunk-KF74X62T.js";
56
56
  import "./chunk-2LSZVONP.js";
57
57
  import "./chunk-DEUNUKTD.js";
58
- import "./chunk-JD4SCARD.js";
59
- import "./chunk-K6ZN34WC.js";
60
- import "./chunk-53FDU4CE.js";
58
+ import "./chunk-YN4ZT4CW.js";
59
+ import "./chunk-OV4D5T7V.js";
60
+ import "./chunk-BLIWOONZ.js";
61
61
  import "./chunk-M7XQSUBB.js";
62
62
  import "./chunk-5UZXUTVO.js";
63
63
  import "./chunk-5GPPACXK.js";
@@ -98,7 +98,7 @@ import "./chunk-ZPQVJEVQ.js";
98
98
  import "./chunk-4DJQYKMN.js";
99
99
  import "./chunk-EYIEWJNI.js";
100
100
  import "./chunk-JUC24CTX.js";
101
- import "./chunk-2ODBA7MQ.js";
101
+ import "./chunk-NU3CSQ4H.js";
102
102
  import "./chunk-TBBDFYXW.js";
103
103
  import "./chunk-ZBJMUXZH.js";
104
104
  import "./chunk-PVGDJXVK.js";
@@ -1,45 +1,45 @@
1
1
  import {
2
2
  Orchestrator
3
- } from "./chunk-2L3KLWOV.js";
4
- import "./chunk-4SKKVWLQ.js";
3
+ } from "./chunk-B43NZNMG.js";
4
+ import "./chunk-AGJH5ISO.js";
5
5
  import "./chunk-7HYPN2GC.js";
6
6
  import "./chunk-666A3MOW.js";
7
7
  import "./chunk-HHLLAQGZ.js";
8
8
  import "./chunk-UWK5OXUJ.js";
9
- import "./chunk-V25ZAOSB.js";
10
- import "./chunk-MAV46GWQ.js";
11
- import "./chunk-5VDJMYTF.js";
12
- import "./chunk-HP5FMB6L.js";
9
+ import "./chunk-ZPTISBQU.js";
10
+ import "./chunk-KYYL4U6X.js";
11
+ import "./chunk-7WWURLG6.js";
12
+ import "./chunk-MDJURR27.js";
13
13
  import "./chunk-7N4KAIGN.js";
14
14
  import "./chunk-TPDBFYEG.js";
15
15
  import "./chunk-KCYE2MZM.js";
16
16
  import "./chunk-TECVW3JP.js";
17
- import "./chunk-T2PO5MUF.js";
18
- import "./chunk-M6BVYHBU.js";
19
- import "./chunk-DRD2Q7HQ.js";
17
+ import "./chunk-O7GOFAM3.js";
18
+ import "./chunk-STOEE37X.js";
19
+ import "./chunk-UFS7OXGL.js";
20
20
  import "./chunk-LXOM6IQU.js";
21
21
  import "./chunk-VOUOLGIP.js";
22
22
  import "./chunk-S75M5ZRK.js";
23
23
  import "./chunk-ECZU5BJH.js";
24
24
  import "./chunk-UHGBNIOS.js";
25
- import "./chunk-QWRC7GIO.js";
25
+ import "./chunk-A4HH2EWA.js";
26
26
  import "./chunk-XJNBEDFE.js";
27
27
  import "./chunk-R5DB26G6.js";
28
- import "./chunk-YTWNKQ2G.js";
28
+ import "./chunk-3FC6LW6T.js";
29
29
  import "./chunk-MDYG7VI7.js";
30
- import "./chunk-MHQC2WU2.js";
30
+ import "./chunk-DKTSR7EK.js";
31
31
  import "./chunk-EC2AYKRX.js";
32
- import "./chunk-6GC5SGFE.js";
32
+ import "./chunk-L24JROPR.js";
33
33
  import "./chunk-MGN7VHWQ.js";
34
34
  import "./chunk-5IZL4DCV.js";
35
35
  import "./chunk-X7XN6YU4.js";
36
- import "./chunk-452WDNFO.js";
36
+ import "./chunk-GG6AJN7A.js";
37
37
  import "./chunk-E3VODCC3.js";
38
38
  import "./chunk-YDBIWGNI.js";
39
- import "./chunk-7DHTMOND.js";
40
- import "./chunk-44VFF3BB.js";
39
+ import "./chunk-VQ34TERH.js";
40
+ import "./chunk-VILEUJXC.js";
41
41
  import "./chunk-ZZTOURJI.js";
42
- import "./chunk-XKXKSQU7.js";
42
+ import "./chunk-EXM3CQTZ.js";
43
43
  import "./chunk-3GPTTA4J.js";
44
44
  import "./chunk-IISBCCWR.js";
45
45
  import "./chunk-VU3SVYMA.js";
@@ -51,33 +51,33 @@ import "./chunk-UU6MVCJ6.js";
51
51
  import "./chunk-YXLT4EMM.js";
52
52
  import "./chunk-YVVQUAOO.js";
53
53
  import "./chunk-PYPOFEMK.js";
54
- import "./chunk-7YX23JBA.js";
55
- import "./chunk-Z2OXSMZK.js";
56
- import "./chunk-EW5KFXHL.js";
54
+ import "./chunk-XHYGJVXL.js";
55
+ import "./chunk-OBXTMFZQ.js";
56
+ import "./chunk-WDXCNJSF.js";
57
57
  import "./chunk-4RA3C3EV.js";
58
58
  import "./chunk-ROZJACKP.js";
59
59
  import "./chunk-54V4BZWP.js";
60
- import "./chunk-XZ4WBBB5.js";
61
- import "./chunk-H3HDXD3U.js";
60
+ import "./chunk-PWFWCGOO.js";
61
+ import "./chunk-UPTZYUYJ.js";
62
62
  import "./chunk-VEWZZM3H.js";
63
63
  import "./chunk-OQH5XUH3.js";
64
64
  import "./chunk-6HEM6HTQ.js";
65
- import "./chunk-XCAZF7KQ.js";
66
- import "./chunk-WRE3JPAW.js";
67
- import "./chunk-WLEB7WCG.js";
65
+ import "./chunk-ZA2S2VLL.js";
66
+ import "./chunk-B4XVLHJA.js";
67
+ import "./chunk-EO5QWINU.js";
68
68
  import "./chunk-2PRQG7PV.js";
69
- import "./chunk-X6IRLNOO.js";
69
+ import "./chunk-WIWPSQYU.js";
70
70
  import "./chunk-2F6NP3NT.js";
71
71
  import "./chunk-TERNBNJB.js";
72
- import "./chunk-XEA4Z7JU.js";
73
- import "./chunk-W4RVMTHR.js";
74
- import "./chunk-OMLIFZ4I.js";
72
+ import "./chunk-4FE2K57M.js";
73
+ import "./chunk-QRDOSYOR.js";
74
+ import "./chunk-PH3HOKYW.js";
75
75
  import "./chunk-ZRWB5D4H.js";
76
- import "./chunk-AGRPGAKR.js";
76
+ import "./chunk-PONNZ54D.js";
77
77
  import "./chunk-S4DDLTPX.js";
78
78
  import "./chunk-SFQ6QNL7.js";
79
79
  import "./chunk-33JBK2XP.js";
80
- import "./chunk-FMEKEF47.js";
80
+ import "./chunk-WIHPNY65.js";
81
81
  import "./chunk-KFY3SGN7.js";
82
82
  import {
83
83
  resolvePluginEntry
@@ -86,8 +86,8 @@ import "./chunk-TQNRI55H.js";
86
86
  import "./chunk-6GUG4YNM.js";
87
87
  import "./chunk-JXS5PDQ7.js";
88
88
  import "./chunk-AV5ZEH4M.js";
89
- import "./chunk-AJU4PJGY.js";
90
- import "./chunk-BEUDU7Y4.js";
89
+ import "./chunk-BVKCV2ZY.js";
90
+ import "./chunk-ZCWIH4LH.js";
91
91
  import "./chunk-3PY7VHV7.js";
92
92
  import "./chunk-OKTXM5H4.js";
93
93
  import "./chunk-FZZ2QTJI.js";
@@ -95,26 +95,26 @@ import "./chunk-3PG3H5TD.js";
95
95
  import "./chunk-LMDRGRJ2.js";
96
96
  import "./chunk-OD4FM2U7.js";
97
97
  import "./chunk-PBH4JUAB.js";
98
- import "./chunk-2IBGHRIO.js";
99
- import "./chunk-XWEXT4XU.js";
100
- import "./chunk-LN4YGHTM.js";
98
+ import "./chunk-GS55WYRL.js";
99
+ import "./chunk-QANVLERJ.js";
100
+ import "./chunk-UUH4YQOF.js";
101
101
  import "./chunk-JLNBQWZ2.js";
102
102
  import "./chunk-3UXOZBHV.js";
103
103
  import "./chunk-KD3QD3A5.js";
104
- import "./chunk-6VF75M3X.js";
105
- import "./chunk-HQ6NIBL6.js";
104
+ import "./chunk-VGUOEDTU.js";
105
+ import "./chunk-7FL4CNPV.js";
106
106
  import "./chunk-P4BC54KI.js";
107
107
  import "./chunk-UQ7RN5HK.js";
108
- import "./chunk-IBTZEBUD.js";
108
+ import "./chunk-HYNHLBKA.js";
109
109
  import "./chunk-H3FZVNRN.js";
110
- import "./chunk-LCC5EZTT.js";
111
- import "./chunk-B5XMS73R.js";
110
+ import "./chunk-FIVDN2SM.js";
111
+ import "./chunk-IQVQJJL7.js";
112
112
  import "./chunk-L2EXJQJP.js";
113
- import "./chunk-7SI52C65.js";
113
+ import "./chunk-VL7DP3OW.js";
114
114
  import "./chunk-RK6F44Y6.js";
115
115
  import {
116
116
  parseConfig
117
- } from "./chunk-6QM24CP7.js";
117
+ } from "./chunk-6GJS4BFH.js";
118
118
  import "./chunk-NDAH7BJ5.js";
119
119
  import "./chunk-Z5LAYHGJ.js";
120
120
  import "./chunk-QO3AILZN.js";
@@ -122,14 +122,14 @@ import "./chunk-3BQOQYRB.js";
122
122
  import "./chunk-LBJBNWS2.js";
123
123
  import "./chunk-OADWQ5CR.js";
124
124
  import "./chunk-7WV3F5DQ.js";
125
- import "./chunk-3EVIMVQU.js";
125
+ import "./chunk-KFBOZYME.js";
126
126
  import "./chunk-UDJLF3BO.js";
127
127
  import {
128
128
  getOperation
129
- } from "./chunk-FYEVFGJD.js";
129
+ } from "./chunk-NN7QYW5W.js";
130
130
  import {
131
131
  EngramAccessService
132
- } from "./chunk-3MY4W5V4.js";
132
+ } from "./chunk-FUCUR2OZ.js";
133
133
  import "./chunk-GDASG7NC.js";
134
134
  import "./chunk-GDB4J2H3.js";
135
135
  import "./chunk-ARV3AUOM.js";
@@ -137,7 +137,9 @@ import "./chunk-BT7NVCML.js";
137
137
  import "./chunk-H7XKCNR6.js";
138
138
  import "./chunk-GTDH3IUH.js";
139
139
  import "./chunk-SOBJ6NEY.js";
140
- import "./chunk-7MOTEVAA.js";
140
+ import {
141
+ projectTagProjectId
142
+ } from "./chunk-7MOTEVAA.js";
141
143
  import "./chunk-RS25QOKZ.js";
142
144
  import "./chunk-JGSKJHF7.js";
143
145
  import "./chunk-FF4KLI5W.js";
@@ -145,40 +147,40 @@ import "./chunk-LLONI6PY.js";
145
147
  import "./chunk-BMFZLLNI.js";
146
148
  import "./chunk-CI7RKSRE.js";
147
149
  import "./chunk-6HMYUWXR.js";
148
- import "./chunk-WI7JKV2T.js";
149
- import "./chunk-DQY7NJ5L.js";
150
- import "./chunk-ROHLEUTH.js";
151
- import "./chunk-DOCTITOP.js";
150
+ import "./chunk-4N3TFFPH.js";
151
+ import "./chunk-CTOQEZSN.js";
152
+ import "./chunk-2KAYTPPT.js";
153
+ import "./chunk-WRFKZEO6.js";
152
154
  import "./chunk-CYEPCZN5.js";
153
- import "./chunk-Q5ZU3RNY.js";
154
- import "./chunk-JOASJWQR.js";
155
- import "./chunk-RN7MUWON.js";
156
- import "./chunk-OUWAQVDJ.js";
155
+ import "./chunk-LQ6JI4VH.js";
156
+ import "./chunk-SANZHXY2.js";
157
+ import "./chunk-EHISUJFN.js";
158
+ import "./chunk-5CEJH5ZN.js";
157
159
  import "./chunk-AER6MT24.js";
158
160
  import "./chunk-CINZGPSJ.js";
159
161
  import "./chunk-ZFXCQPNO.js";
160
- import "./chunk-7OGJQP7T.js";
161
- import "./chunk-E6ZDCOHM.js";
162
- import "./chunk-OIF36KGD.js";
163
- import "./chunk-7DTASS5T.js";
164
- import "./chunk-6RHNCKHG.js";
162
+ import "./chunk-DCWIQFNA.js";
163
+ import "./chunk-XBZQRZ6G.js";
164
+ import "./chunk-KCQA46NR.js";
165
+ import "./chunk-SJHM6I4J.js";
166
+ import "./chunk-K43PI6DQ.js";
165
167
  import "./chunk-YNQ6DFSV.js";
166
168
  import "./chunk-EIR5VLIH.js";
167
- import "./chunk-YXWAILM4.js";
168
- import "./chunk-GKKAXVAJ.js";
169
+ import "./chunk-YOI3ELXF.js";
170
+ import "./chunk-U33LWTQQ.js";
169
171
  import "./chunk-EI6V5UXY.js";
170
- import "./chunk-QY7YA7OL.js";
172
+ import "./chunk-PNLCEFE4.js";
171
173
  import "./chunk-O75CRYGF.js";
172
174
  import "./chunk-QDW3E4RD.js";
173
175
  import "./chunk-3ONXXHQO.js";
174
176
  import "./chunk-ODPLEWB6.js";
175
177
  import "./chunk-ZY2MNJR6.js";
176
- import "./chunk-2LDBXPLB.js";
178
+ import "./chunk-KF74X62T.js";
177
179
  import "./chunk-2LSZVONP.js";
178
180
  import "./chunk-DEUNUKTD.js";
179
- import "./chunk-JD4SCARD.js";
180
- import "./chunk-K6ZN34WC.js";
181
- import "./chunk-53FDU4CE.js";
181
+ import "./chunk-YN4ZT4CW.js";
182
+ import "./chunk-OV4D5T7V.js";
183
+ import "./chunk-BLIWOONZ.js";
182
184
  import "./chunk-M7XQSUBB.js";
183
185
  import "./chunk-5UZXUTVO.js";
184
186
  import "./chunk-5GPPACXK.js";
@@ -224,7 +226,7 @@ import {
224
226
  readEnvVar,
225
227
  resolveHomeDir
226
228
  } from "./chunk-JUC24CTX.js";
227
- import "./chunk-2ODBA7MQ.js";
229
+ import "./chunk-NU3CSQ4H.js";
228
230
  import "./chunk-TBBDFYXW.js";
229
231
  import "./chunk-ZBJMUXZH.js";
230
232
  import "./chunk-PVGDJXVK.js";
@@ -303,9 +305,9 @@ function writeCliOutput(text = "") {
303
305
  }
304
306
  function usage() {
305
307
  return [
306
- "Usage:",
307
308
  " engram-access browse [options]",
308
309
  " engram-access store [options]",
310
+ " engram-access decision [options]",
309
311
  "",
310
312
  "Browse options:",
311
313
  " --namespace <name>",
@@ -329,7 +331,22 @@ function usage() {
329
331
  " --ttl <duration>",
330
332
  " --source-reason <text>",
331
333
  " --idempotency-key <key>",
332
- " --dry-run"
334
+ " --dry-run",
335
+ "",
336
+ "Decision options:",
337
+ " --subcommand <list|get|record|supersede>",
338
+ " --namespace <name>",
339
+ " --session-key <key>",
340
+ " --principal <principal>",
341
+ " --id <id> (get/supersede)",
342
+ " --title <title> (record/supersede)",
343
+ " --status <proposed|accepted|superseded|rejected> (record)",
344
+ " --context <text> (record/supersede)",
345
+ " --decision <text> (record/supersede)",
346
+ " --consequences <text> (record/supersede)",
347
+ " --entity-ref <ref> (repeatable)",
348
+ " --project-tag <tag> (attach coding context for this invocation)",
349
+ " --supersedes-id <id> (alias for --id on supersede)"
333
350
  ].join("\n");
334
351
  }
335
352
  var COMMAND_SPECS = {
@@ -362,6 +379,24 @@ var COMMAND_SPECS = {
362
379
  "idempotency-key"
363
380
  ]),
364
381
  flagOptions: /* @__PURE__ */ new Set(["dry-run"])
382
+ },
383
+ decision: {
384
+ valueOptions: /* @__PURE__ */ new Set([
385
+ "subcommand",
386
+ "namespace",
387
+ "session-key",
388
+ "principal",
389
+ "id",
390
+ "title",
391
+ "status",
392
+ "context",
393
+ "decision",
394
+ "consequences",
395
+ "entity-ref",
396
+ "project-tag",
397
+ "supersedes-id"
398
+ ]),
399
+ flagOptions: /* @__PURE__ */ new Set()
365
400
  }
366
401
  };
367
402
  var BROWSE_SORT_VALUES = Object.freeze([
@@ -372,7 +407,7 @@ var BROWSE_SORT_VALUES = Object.freeze([
372
407
  ]);
373
408
  function parseArgs(argv) {
374
409
  const [commandRaw, ...rest] = argv;
375
- if (commandRaw !== "browse" && commandRaw !== "store") {
410
+ if (commandRaw !== "browse" && commandRaw !== "store" && commandRaw !== "decision") {
376
411
  throw new UsageError("unsupported-command");
377
412
  }
378
413
  const spec = COMMAND_SPECS[commandRaw];
@@ -586,12 +621,58 @@ async function runStore(args, preferredId) {
586
621
  function expandOptionalPath(value) {
587
622
  return value === void 0 ? void 0 : expandTildePath(value);
588
623
  }
624
+ async function runDecision(args, preferredId) {
625
+ const subcommand = requireOption(args, "subcommand");
626
+ const { config, service } = buildRuntime(preferredId);
627
+ const projectTag = getLastOption(args, "project-tag");
628
+ const sessionKey = getLastOption(args, "session-key");
629
+ if (projectTag && projectTag.trim().length > 0 && sessionKey && sessionKey.trim().length > 0) {
630
+ const projectId = projectTagProjectId(projectTag.trim());
631
+ service.setCodingContext({
632
+ sessionKey,
633
+ codingContext: {
634
+ projectId,
635
+ branch: null,
636
+ rootPath: projectId,
637
+ defaultBranch: null
638
+ }
639
+ });
640
+ }
641
+ const op = getOperation("coding_decision");
642
+ if (!op) {
643
+ throw new Error("access-boundary: operation not registered: coding_decision");
644
+ }
645
+ const output = await op.run(
646
+ {
647
+ subcommand,
648
+ namespace: getLastOption(args, "namespace"),
649
+ sessionKey,
650
+ id: getLastOption(args, "id"),
651
+ supersedesId: getLastOption(args, "supersedes-id"),
652
+ title: getLastOption(args, "title"),
653
+ status: getLastOption(args, "status"),
654
+ context: getLastOption(args, "context"),
655
+ decision: getLastOption(args, "decision"),
656
+ consequences: getLastOption(args, "consequences"),
657
+ entityRefs: getAllOptions(args, "entity-ref")
658
+ },
659
+ {
660
+ service,
661
+ authenticatedPrincipal: getLastOption(args, "principal") ?? config.agentAccessHttp.principal
662
+ }
663
+ );
664
+ console.log(JSON.stringify(output.result, null, 2));
665
+ }
589
666
  async function main(argv = process.argv.slice(2), options = {}) {
590
667
  const args = parseArgs(argv);
591
668
  if (args.command === "browse") {
592
669
  await runBrowse(args, options.preferredId);
593
670
  return;
594
671
  }
672
+ if (args.command === "decision") {
673
+ await runDecision(args, options.preferredId);
674
+ return;
675
+ }
595
676
  await runStore(args, options.preferredId);
596
677
  }
597
678
  function sanitizeAccessCliErrorMessage(message) {
@@ -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 { resolvePluginEntry } from \"./plugin-entry-resolver.js\";\nimport { expandTildePath } from \"./utils/path.js\";\nimport { getOperation } from \"./access-boundary.js\";\n// Importing access-operations registers the pilot boundary operations as a\n// side effect; the store command dispatches through the registry (issue #1525).\nimport \"./access-operations.js\";\n\nconst OPENCLAW_REMNIC_PLUGIN_IDS = [\"openclaw-remnic\", \"openclaw-engram\"] as const;\n\ntype CommandName = \"browse\" | \"store\";\n\ntype ParsedArgs = {\n command: CommandName;\n options: Record<string, string[]>;\n flags: Set<string>;\n};\n\ntype CommandSpec = {\n valueOptions: ReadonlySet<string>;\n flagOptions: ReadonlySet<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 the plugin-entry resolver 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\nfunction getOpenClawPluginEntries(raw: Record<string, unknown>): Record<string, unknown> | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const entries =\n plugins && plugins[\"entries\"] && typeof plugins[\"entries\"] === \"object\" && !Array.isArray(plugins[\"entries\"])\n ? (plugins[\"entries\"] as Record<string, unknown>)\n : undefined;\n return entries;\n}\n\nfunction getOpenClawMemorySlotId(raw: Record<string, unknown>): string | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const slots =\n plugins && plugins[\"slots\"] && typeof plugins[\"slots\"] === \"object\" && !Array.isArray(plugins[\"slots\"])\n ? (plugins[\"slots\"] as Record<string, unknown>)\n : undefined;\n const slotId = slots?.[\"memory\"];\n return typeof slotId === \"string\" ? slotId : undefined;\n}\n\nfunction resolveOpenClawRemnicPluginEntry(raw: unknown, preferredId?: string): Record<string, unknown> | undefined {\n return resolvePluginEntry(raw, {\n candidateIds: OPENCLAW_REMNIC_PLUGIN_IDS,\n preferredId,\n getEntries: getOpenClawPluginEntries,\n getSlotId: getOpenClawMemorySlotId,\n });\n}\n\nfunction hasAllowedOpenClawRemnicPluginId(value: string): boolean {\n return (OPENCLAW_REMNIC_PLUGIN_IDS as readonly string[]).includes(value);\n}\n\ntype UsageErrorKind =\n | \"unsupported-command\"\n | \"unexpected-positional\"\n | \"unknown-option\"\n | \"invalid-option\"\n | \"option-does-not-take-value\"\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 readonly acceptedValues?: readonly 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 \"unknown-option\":\n return `unknown option: --${error.optionName ?? \"unknown\"}`;\n case \"invalid-option\": {\n const accepted = error.acceptedValues?.length ? `. Accepted: ${error.acceptedValues.join(\", \")}.` : \"\";\n return `invalid value for --${error.optionName ?? \"unknown\"}${accepted}`;\n }\n case \"option-does-not-take-value\":\n return `option does not accept a value: --${error.optionName ?? \"unknown\"}`;\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 \" --principal <principal>\",\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\nconst COMMAND_SPECS: Record<CommandName, CommandSpec> = {\n browse: {\n valueOptions: new Set([\n \"namespace\",\n \"principal\",\n \"query\",\n \"category\",\n \"status\",\n \"sort\",\n \"limit\",\n \"offset\",\n ]),\n flagOptions: new Set(),\n },\n store: {\n valueOptions: new Set([\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"content\",\n \"content-file\",\n \"category\",\n \"confidence\",\n \"tag\",\n \"entity-ref\",\n \"ttl\",\n \"source-reason\",\n \"idempotency-key\",\n ]),\n flagOptions: new Set([\"dry-run\"]),\n },\n};\n\nconst BROWSE_SORT_VALUES = Object.freeze([\n \"updated_desc\",\n \"updated_asc\",\n \"created_desc\",\n \"created_asc\",\n] as const);\n\ntype BrowseSort = (typeof BROWSE_SORT_VALUES)[number];\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 const spec = COMMAND_SPECS[commandRaw];\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 rawKey = token.slice(2);\n if (!rawKey) {\n throw new UsageError(\"unknown-option\", rawKey);\n }\n const equalsIndex = rawKey.indexOf(\"=\");\n const key = equalsIndex === -1 ? rawKey : rawKey.slice(0, equalsIndex);\n const inlineValue = equalsIndex === -1 ? undefined : rawKey.slice(equalsIndex + 1);\n\n if (!spec.valueOptions.has(key) && !spec.flagOptions.has(key)) {\n throw new UsageError(\"unknown-option\", key);\n }\n\n if (spec.flagOptions.has(key)) {\n if (inlineValue !== undefined) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n const next = rest[i + 1];\n if (next && !next.startsWith(\"--\")) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n flags.add(key);\n continue;\n }\n\n if (inlineValue !== undefined) {\n if (inlineValue.length === 0) {\n throw new UsageError(\"missing-option\", key);\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(inlineValue);\n continue;\n }\n\n const next = rest[i + 1];\n if (next === undefined || next.length === 0 || next.startsWith(\"--\")) {\n throw new UsageError(\"missing-option\", key);\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(\n args: ParsedArgs,\n name: string,\n options: { min?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?\\d+$/.test(trimmed)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n const value = Number(trimmed);\n if (!Number.isSafeInteger(value)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-option\", name, [`integer >= ${options.min}`]);\n }\n return value;\n}\n\nfunction parseBrowseSortOption(args: ParsedArgs, name: string): BrowseSort | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n if ((BROWSE_SORT_VALUES as readonly string[]).includes(raw)) {\n return raw as BrowseSort;\n }\n throw new UsageError(\"invalid-option\", name, BROWSE_SORT_VALUES);\n}\n\nfunction parseFloatOption(\n args: ParsedArgs,\n name: string,\n options: { min?: number; max?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?(?:(?:\\d+\\.?\\d*)|(?:\\.\\d+))(?:e[+-]?\\d+)?$/i.test(trimmed)) {\n throw new UsageError(\"invalid-number\", name);\n }\n const value = Number(trimmed);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.max !== undefined && value > options.max) {\n throw new UsageError(\"invalid-number\", name);\n }\n return value;\n}\n\nfunction loadPluginConfig(preferredId?: string): Record<string, unknown> {\n const configPath =\n expandOptionalPath(readEnvVar(\"OPENCLAW_CONFIG_PATH\")) ||\n expandOptionalPath(readEnvVar(\"OPENCLAW_ENGRAM_CONFIG_PATH\")) ||\n path.join(resolveHomeDir(), \".openclaw\", \"openclaw.json\");\n const raw = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n const slotId =\n raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? getOpenClawMemorySlotId(raw as Record<string, unknown>)\n : undefined;\n if (typeof slotId === \"string\" && !hasAllowedOpenClawRemnicPluginId(slotId)) {\n throw new Error(\n `OpenClaw memory slot points to non-Remnic plugin \"${slotId}\"; refusing to use default Remnic access config.`,\n );\n }\n // Delegate slot → preferredId → canonical → legacy resolution to the\n // generic 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 = resolveOpenClawRemnicPluginEntry(raw, preferredId);\n if (!entry) {\n throw new Error(\n \"OpenClaw config does not contain an allowed Remnic plugin entry; refusing to use default Remnic access config.\",\n );\n }\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 browseArgs = {\n namespace: getLastOption(args, \"namespace\"),\n principal: getLastOption(args, \"principal\"),\n query: getLastOption(args, \"query\"),\n category: getLastOption(args, \"category\"),\n status: getLastOption(args, \"status\"),\n sort: parseBrowseSortOption(args, \"sort\"),\n limit: parseIntegerOption(args, \"limit\", { min: 1 }),\n offset: parseIntegerOption(args, \"offset\", { min: 0 }),\n };\n const { config, service } = buildRuntime(preferredId);\n const request = {\n namespace: browseArgs.namespace,\n authenticatedPrincipal: browseArgs.principal ?? config.agentAccessHttp.principal,\n query: browseArgs.query,\n category: browseArgs.category,\n status: browseArgs.status,\n sort: browseArgs.sort,\n limit: browseArgs.limit,\n offset: browseArgs.offset,\n };\n const result = await service.memoryBrowse(request);\n console.log(JSON.stringify(result, null, 2));\n}\n\nasync function runStore(args: ParsedArgs, preferredId?: string): Promise<void> {\n const contentFile = getLastOption(args, \"content-file\");\n const inlineContent = getLastOption(args, \"content\");\n const content = contentFile\n ? fs.readFileSync(expandTildePath(contentFile), \"utf8\")\n : inlineContent;\n if (!content || content.trim().length === 0) {\n throw new UsageError(\"missing-content\");\n }\n const storeArgs = {\n namespace: getLastOption(args, \"namespace\"),\n sessionKey: getLastOption(args, \"session-key\"),\n content,\n category: requireOption(args, \"category\"),\n confidence: parseFloatOption(args, \"confidence\", { min: 0, max: 1 }),\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\n const { config, service } = buildRuntime(preferredId);\n // Migrated through the access boundary (issue #1525): the store command\n // dispatches through the same registry entry as the MCP tool and HTTP\n // route, so validation/normalization is owned in ONE place. The CLI has no\n // write-quota hook (it is a one-shot process), so no hooks are forwarded.\n const op = getOperation(\"memory_store\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: memory_store\");\n }\n const output = (await op.run(\n {\n namespace: storeArgs.namespace,\n sessionKey: storeArgs.sessionKey,\n content: storeArgs.content,\n category: storeArgs.category,\n confidence: storeArgs.confidence,\n tags: storeArgs.tags,\n entityRef: storeArgs.entityRef,\n ttl: storeArgs.ttl,\n sourceReason: storeArgs.sourceReason,\n idempotencyKey: storeArgs.idempotencyKey,\n dryRun: storeArgs.dryRun,\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\nfunction expandOptionalPath(value: string | undefined): string | undefined {\n return value === undefined ? undefined : expandTildePath(value);\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 sanitizeAccessCliErrorMessage(message: string): string {\n return message.replace(\n /\\b(openaiApiKey|localLlmApiKey)\\b(\\s*[:=]\\s*)(?:\"[^\"]*\"|'[^']*'|[^\\s,}\\]]+)/gi,\n (_match, name: string, separator: string) => `${name}${separator}[redacted]`,\n );\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: runtime error\");\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["next"]}
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 { resolvePluginEntry } from \"./plugin-entry-resolver.js\";\nimport { expandTildePath } from \"./utils/path.js\";\nimport { getOperation } from \"./access-boundary.js\";\n// Importing access-operations registers the pilot boundary operations as a\n// side effect; the store command dispatches through the registry (issue #1525).\nimport \"./access-operations.js\";\nimport { projectTagProjectId } from \"./coding/coding-namespace.js\";\n\nconst OPENCLAW_REMNIC_PLUGIN_IDS = [\"openclaw-remnic\", \"openclaw-engram\"] as const;\n\ntype CommandName = \"browse\" | \"store\" | \"decision\";\n\ntype ParsedArgs = {\n command: CommandName;\n options: Record<string, string[]>;\n flags: Set<string>;\n};\n\ntype CommandSpec = {\n valueOptions: ReadonlySet<string>;\n flagOptions: ReadonlySet<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 the plugin-entry resolver 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\nfunction getOpenClawPluginEntries(raw: Record<string, unknown>): Record<string, unknown> | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const entries =\n plugins && plugins[\"entries\"] && typeof plugins[\"entries\"] === \"object\" && !Array.isArray(plugins[\"entries\"])\n ? (plugins[\"entries\"] as Record<string, unknown>)\n : undefined;\n return entries;\n}\n\nfunction getOpenClawMemorySlotId(raw: Record<string, unknown>): string | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const slots =\n plugins && plugins[\"slots\"] && typeof plugins[\"slots\"] === \"object\" && !Array.isArray(plugins[\"slots\"])\n ? (plugins[\"slots\"] as Record<string, unknown>)\n : undefined;\n const slotId = slots?.[\"memory\"];\n return typeof slotId === \"string\" ? slotId : undefined;\n}\n\nfunction resolveOpenClawRemnicPluginEntry(raw: unknown, preferredId?: string): Record<string, unknown> | undefined {\n return resolvePluginEntry(raw, {\n candidateIds: OPENCLAW_REMNIC_PLUGIN_IDS,\n preferredId,\n getEntries: getOpenClawPluginEntries,\n getSlotId: getOpenClawMemorySlotId,\n });\n}\n\nfunction hasAllowedOpenClawRemnicPluginId(value: string): boolean {\n return (OPENCLAW_REMNIC_PLUGIN_IDS as readonly string[]).includes(value);\n}\n\ntype UsageErrorKind =\n | \"unsupported-command\"\n | \"unexpected-positional\"\n | \"unknown-option\"\n | \"invalid-option\"\n | \"option-does-not-take-value\"\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 readonly acceptedValues?: readonly 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 \"unknown-option\":\n return `unknown option: --${error.optionName ?? \"unknown\"}`;\n case \"invalid-option\": {\n const accepted = error.acceptedValues?.length ? `. Accepted: ${error.acceptedValues.join(\", \")}.` : \"\";\n return `invalid value for --${error.optionName ?? \"unknown\"}${accepted}`;\n }\n case \"option-does-not-take-value\":\n return `option does not accept a value: --${error.optionName ?? \"unknown\"}`;\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 \" engram-access browse [options]\",\n \" engram-access store [options]\",\n \" engram-access decision [options]\",\n \"\",\n \"Browse options:\",\n \" --namespace <name>\",\n \" --principal <principal>\",\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 \"\",\n \"Decision options:\",\n \" --subcommand <list|get|record|supersede>\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --id <id> (get/supersede)\",\n \" --title <title> (record/supersede)\",\n \" --status <proposed|accepted|superseded|rejected> (record)\",\n \" --context <text> (record/supersede)\",\n \" --decision <text> (record/supersede)\",\n \" --consequences <text> (record/supersede)\",\n \" --entity-ref <ref> (repeatable)\",\n \" --project-tag <tag> (attach coding context for this invocation)\",\n \" --supersedes-id <id> (alias for --id on supersede)\",\n ].join(\"\\n\");\n}\n\nconst COMMAND_SPECS: Record<CommandName, CommandSpec> = {\n browse: {\n valueOptions: new Set([\n \"namespace\",\n \"principal\",\n \"query\",\n \"category\",\n \"status\",\n \"sort\",\n \"limit\",\n \"offset\",\n ]),\n flagOptions: new Set(),\n },\n store: {\n valueOptions: new Set([\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"content\",\n \"content-file\",\n \"category\",\n \"confidence\",\n \"tag\",\n \"entity-ref\",\n \"ttl\",\n \"source-reason\",\n \"idempotency-key\",\n ]),\n flagOptions: new Set([\"dry-run\"]),\n },\n decision: {\n valueOptions: new Set([\n \"subcommand\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"id\",\n \"title\",\n \"status\",\n \"context\",\n \"decision\",\n \"consequences\",\n \"entity-ref\",\n \"project-tag\",\n \"supersedes-id\",\n ]),\n flagOptions: new Set(),\n },\n};\nconst BROWSE_SORT_VALUES = Object.freeze([\n \"updated_desc\",\n \"updated_asc\",\n \"created_desc\",\n \"created_asc\",\n] as const);\n\ntype BrowseSort = (typeof BROWSE_SORT_VALUES)[number];\n\nfunction parseArgs(argv: string[]): ParsedArgs {\n const [commandRaw, ...rest] = argv;\n if (commandRaw !== \"browse\" && commandRaw !== \"store\" && commandRaw !== \"decision\") {\n throw new UsageError(\"unsupported-command\");\n }\n const spec = COMMAND_SPECS[commandRaw];\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 rawKey = token.slice(2);\n if (!rawKey) {\n throw new UsageError(\"unknown-option\", rawKey);\n }\n const equalsIndex = rawKey.indexOf(\"=\");\n const key = equalsIndex === -1 ? rawKey : rawKey.slice(0, equalsIndex);\n const inlineValue = equalsIndex === -1 ? undefined : rawKey.slice(equalsIndex + 1);\n\n if (!spec.valueOptions.has(key) && !spec.flagOptions.has(key)) {\n throw new UsageError(\"unknown-option\", key);\n }\n\n if (spec.flagOptions.has(key)) {\n if (inlineValue !== undefined) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n const next = rest[i + 1];\n if (next && !next.startsWith(\"--\")) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n flags.add(key);\n continue;\n }\n\n if (inlineValue !== undefined) {\n if (inlineValue.length === 0) {\n throw new UsageError(\"missing-option\", key);\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(inlineValue);\n continue;\n }\n\n const next = rest[i + 1];\n if (next === undefined || next.length === 0 || next.startsWith(\"--\")) {\n throw new UsageError(\"missing-option\", key);\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(\n args: ParsedArgs,\n name: string,\n options: { min?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?\\d+$/.test(trimmed)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n const value = Number(trimmed);\n if (!Number.isSafeInteger(value)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-option\", name, [`integer >= ${options.min}`]);\n }\n return value;\n}\n\nfunction parseBrowseSortOption(args: ParsedArgs, name: string): BrowseSort | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n if ((BROWSE_SORT_VALUES as readonly string[]).includes(raw)) {\n return raw as BrowseSort;\n }\n throw new UsageError(\"invalid-option\", name, BROWSE_SORT_VALUES);\n}\n\nfunction parseFloatOption(\n args: ParsedArgs,\n name: string,\n options: { min?: number; max?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?(?:(?:\\d+\\.?\\d*)|(?:\\.\\d+))(?:e[+-]?\\d+)?$/i.test(trimmed)) {\n throw new UsageError(\"invalid-number\", name);\n }\n const value = Number(trimmed);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.max !== undefined && value > options.max) {\n throw new UsageError(\"invalid-number\", name);\n }\n return value;\n}\n\nfunction loadPluginConfig(preferredId?: string): Record<string, unknown> {\n const configPath =\n expandOptionalPath(readEnvVar(\"OPENCLAW_CONFIG_PATH\")) ||\n expandOptionalPath(readEnvVar(\"OPENCLAW_ENGRAM_CONFIG_PATH\")) ||\n path.join(resolveHomeDir(), \".openclaw\", \"openclaw.json\");\n const raw = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n const slotId =\n raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? getOpenClawMemorySlotId(raw as Record<string, unknown>)\n : undefined;\n if (typeof slotId === \"string\" && !hasAllowedOpenClawRemnicPluginId(slotId)) {\n throw new Error(\n `OpenClaw memory slot points to non-Remnic plugin \"${slotId}\"; refusing to use default Remnic access config.`,\n );\n }\n // Delegate slot → preferredId → canonical → legacy resolution to the\n // generic 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 = resolveOpenClawRemnicPluginEntry(raw, preferredId);\n if (!entry) {\n throw new Error(\n \"OpenClaw config does not contain an allowed Remnic plugin entry; refusing to use default Remnic access config.\",\n );\n }\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 browseArgs = {\n namespace: getLastOption(args, \"namespace\"),\n principal: getLastOption(args, \"principal\"),\n query: getLastOption(args, \"query\"),\n category: getLastOption(args, \"category\"),\n status: getLastOption(args, \"status\"),\n sort: parseBrowseSortOption(args, \"sort\"),\n limit: parseIntegerOption(args, \"limit\", { min: 1 }),\n offset: parseIntegerOption(args, \"offset\", { min: 0 }),\n };\n const { config, service } = buildRuntime(preferredId);\n const request = {\n namespace: browseArgs.namespace,\n authenticatedPrincipal: browseArgs.principal ?? config.agentAccessHttp.principal,\n query: browseArgs.query,\n category: browseArgs.category,\n status: browseArgs.status,\n sort: browseArgs.sort,\n limit: browseArgs.limit,\n offset: browseArgs.offset,\n };\n const result = await service.memoryBrowse(request);\n console.log(JSON.stringify(result, null, 2));\n}\n\nasync function runStore(args: ParsedArgs, preferredId?: string): Promise<void> {\n const contentFile = getLastOption(args, \"content-file\");\n const inlineContent = getLastOption(args, \"content\");\n const content = contentFile\n ? fs.readFileSync(expandTildePath(contentFile), \"utf8\")\n : inlineContent;\n if (!content || content.trim().length === 0) {\n throw new UsageError(\"missing-content\");\n }\n const storeArgs = {\n namespace: getLastOption(args, \"namespace\"),\n sessionKey: getLastOption(args, \"session-key\"),\n content,\n category: requireOption(args, \"category\"),\n confidence: parseFloatOption(args, \"confidence\", { min: 0, max: 1 }),\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\n const { config, service } = buildRuntime(preferredId);\n // Migrated through the access boundary (issue #1525): the store command\n // dispatches through the same registry entry as the MCP tool and HTTP\n // route, so validation/normalization is owned in ONE place. The CLI has no\n // write-quota hook (it is a one-shot process), so no hooks are forwarded.\n const op = getOperation(\"memory_store\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: memory_store\");\n }\n const output = (await op.run(\n {\n namespace: storeArgs.namespace,\n sessionKey: storeArgs.sessionKey,\n content: storeArgs.content,\n category: storeArgs.category,\n confidence: storeArgs.confidence,\n tags: storeArgs.tags,\n entityRef: storeArgs.entityRef,\n ttl: storeArgs.ttl,\n sourceReason: storeArgs.sourceReason,\n idempotencyKey: storeArgs.idempotencyKey,\n dryRun: storeArgs.dryRun,\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\nfunction expandOptionalPath(value: string | undefined): string | undefined {\n return value === undefined ? undefined : expandTildePath(value);\n}\n\n/**\n * Decision-record surface (issue #1548 Track A PR 2). Dispatches through the\n * same `coding_decision` operation as the MCP tool and HTTP route — one\n * validation boundary, three transports.\n */\nasync function runDecision(args: ParsedArgs, preferredId?: string): Promise<void> {\n const subcommand = requireOption(args, \"subcommand\");\n const { config, service } = buildRuntime(preferredId);\n // The CLI creates a fresh Orchestrator per invocation, so the session\n // coding-context map is empty. If --project-tag + --session-key are\n // provided, attach a coding context BEFORE dispatching so the gate\n // passes and project-scoped writes resolve to the right namespace\n // (review P2).\n const projectTag = getLastOption(args, \"project-tag\");\n const sessionKey = getLastOption(args, \"session-key\");\n if (projectTag && projectTag.trim().length > 0 && sessionKey && sessionKey.trim().length > 0) {\n const projectId = projectTagProjectId(projectTag.trim());\n service.setCodingContext({\n sessionKey,\n codingContext: {\n projectId,\n branch: null,\n rootPath: projectId,\n defaultBranch: null,\n },\n });\n }\n const op = getOperation(\"coding_decision\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: coding_decision\");\n }\n const output = (await op.run(\n {\n subcommand,\n namespace: getLastOption(args, \"namespace\"),\n sessionKey,\n id: getLastOption(args, \"id\"),\n supersedesId: getLastOption(args, \"supersedes-id\"),\n title: getLastOption(args, \"title\"),\n status: getLastOption(args, \"status\"),\n context: getLastOption(args, \"context\"),\n decision: getLastOption(args, \"decision\"),\n consequences: getLastOption(args, \"consequences\"),\n entityRefs: getAllOptions(args, \"entity-ref\"),\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.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 if (args.command === \"decision\") {\n await runDecision(args, options.preferredId);\n return;\n }\n await runStore(args, options.preferredId);\n}\n\nexport function sanitizeAccessCliErrorMessage(message: string): string {\n return message.replace(\n /\\b(openaiApiKey|localLlmApiKey)\\b(\\s*[:=]\\s*)(?:\"[^\"]*\"|'[^']*'|[^\\s,}\\]]+)/gi,\n (_match, name: string, separator: string) => `${name}${separator}[redacted]`,\n );\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: runtime error\");\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["next"]}