@remnic/core 9.4.2 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/dist/access-admin-ops-surface.d.ts +6 -6
  2. package/dist/access-admin-ops-surface.js +28 -28
  3. package/dist/access-boundary.d.ts +27 -8
  4. package/dist/access-boundary.js +33 -29
  5. package/dist/access-cli.js +83 -81
  6. package/dist/access-cli.js.map +1 -1
  7. package/dist/access-http.d.ts +52 -6
  8. package/dist/access-http.js +40 -38
  9. package/dist/access-identity-continuity-surface.d.ts +5 -5
  10. package/dist/access-identity-continuity-surface.js +28 -28
  11. package/dist/access-lcm-surface.d.ts +6 -6
  12. package/dist/access-lcm-surface.js +28 -28
  13. package/dist/access-mcp.d.ts +16 -6
  14. package/dist/access-mcp.js +37 -35
  15. package/dist/access-observe-write-surface.d.ts +6 -6
  16. package/dist/access-observe-write-surface.js +28 -28
  17. package/dist/access-operations-batch.js +33 -32
  18. package/dist/access-operations.d.ts +9 -9
  19. package/dist/access-operations.js +35 -34
  20. package/dist/access-recall-surface.d.ts +6 -6
  21. package/dist/access-recall-surface.js +28 -28
  22. package/dist/access-schema.d.ts +4 -4
  23. package/dist/access-schema.js +4 -4
  24. package/dist/{access-service-m-2VO_Ig.d.ts → access-service-CXJaql3A.d.ts} +4 -4
  25. package/dist/access-service.d.ts +6 -6
  26. package/dist/access-service.js +28 -28
  27. package/dist/access-surface-catalog.d.ts +6 -6
  28. package/dist/access-surface-catalog.js +1 -0
  29. package/dist/access-surface-catalog.js.map +1 -1
  30. package/dist/access-token-capabilities.d.ts +174 -0
  31. package/dist/access-token-capabilities.js +33 -0
  32. package/dist/action-confidence.d.ts +1 -1
  33. package/dist/active-memory-bridge.d.ts +1 -1
  34. package/dist/active-recall.d.ts +1 -1
  35. package/dist/active-recall.js +2 -2
  36. package/dist/adapters/index.js +4 -4
  37. package/dist/adapters/registry.js +2 -2
  38. package/dist/{auto-sync-HMHQHUAG.js → auto-sync-4A5YBWYO.js} +4 -4
  39. package/dist/behavior-learner.d.ts +1 -1
  40. package/dist/behavior-signals.d.ts +1 -1
  41. package/dist/bootstrap.d.ts +5 -5
  42. package/dist/briefing.d.ts +2 -2
  43. package/dist/briefing.js +9 -9
  44. package/dist/buffer-surprise-report.d.ts +1 -1
  45. package/dist/buffer.d.ts +2 -2
  46. package/dist/calibration.d.ts +1 -1
  47. package/dist/capabilities.d.ts +1 -1
  48. package/dist/{capsule-crypto-CZJSLEFG.js → capsule-crypto-RAARDY3M.js} +2 -2
  49. package/dist/capsule-crypto-RAARDY3M.js.map +1 -0
  50. package/dist/{catalog-BxWokdC2.d.ts → catalog-C9cu67Ig.d.ts} +1 -1
  51. package/dist/causal-behavior.d.ts +1 -1
  52. package/dist/causal-behavior.js +5 -5
  53. package/dist/causal-chain.js +3 -3
  54. package/dist/causal-consolidation.d.ts +1 -1
  55. package/dist/causal-consolidation.js +13 -13
  56. package/dist/causal-retrieval.js +3 -3
  57. package/dist/causal-trajectory-graph.d.ts +1 -1
  58. package/dist/causal-trajectory.js +1 -1
  59. package/dist/{chunk-6ZIETXZ2.js → chunk-23JFRB73.js} +2 -2
  60. package/dist/{chunk-IC6QX5TC.js → chunk-3XIY7MDQ.js} +6 -6
  61. package/dist/{chunk-FZGGZAAU.js → chunk-4GNEDXDI.js} +146 -2
  62. package/dist/chunk-4GNEDXDI.js.map +1 -0
  63. package/dist/{chunk-LOR6ZM5R.js → chunk-4LV23CHK.js} +2 -2
  64. package/dist/{chunk-E2SPGGUI.js → chunk-4OKLXWDZ.js} +13 -6
  65. package/dist/chunk-4OKLXWDZ.js.map +1 -0
  66. package/dist/{chunk-AER6MT24.js → chunk-6SXVCD7W.js} +2 -2
  67. package/dist/{chunk-OHDJ34CC.js → chunk-72WG5QKN.js} +2 -2
  68. package/dist/{chunk-CZAZX7JP.js → chunk-7MW3CVLD.js} +4 -4
  69. package/dist/{chunk-CXLNZXG5.js → chunk-7XGSIUP5.js} +1 -1
  70. package/dist/{chunk-CZAA5N5S.js → chunk-AYZJID4S.js} +2 -2
  71. package/dist/{chunk-M7XQSUBB.js → chunk-B3ABVQ36.js} +116 -9
  72. package/dist/chunk-B3ABVQ36.js.map +1 -0
  73. package/dist/{chunk-6BISDEN6.js → chunk-BEM4D2QG.js} +14 -14
  74. package/dist/{chunk-ZPOROUTX.js → chunk-CYWA2CXR.js} +5 -5
  75. package/dist/{chunk-M5QKGHCR.js → chunk-CYWCKFCL.js} +5 -5
  76. package/dist/chunk-D7FOKIY5.js +173 -0
  77. package/dist/chunk-D7FOKIY5.js.map +1 -0
  78. package/dist/{chunk-4BFRBP45.js → chunk-DEG5ULFJ.js} +2 -2
  79. package/dist/{chunk-JLR3JSTL.js → chunk-DS7MM2ES.js} +3 -3
  80. package/dist/{chunk-2BFLDH5F.js → chunk-EEIROWEG.js} +2 -2
  81. package/dist/{chunk-5QZDMSSN.js → chunk-FKCRGLRD.js} +237 -82
  82. package/dist/{chunk-5QZDMSSN.js.map → chunk-FKCRGLRD.js.map} +1 -1
  83. package/dist/{chunk-X4A62ET7.js → chunk-H2DXDQCQ.js} +17 -17
  84. package/dist/{chunk-27FLVMDC.js → chunk-HLN7RROI.js} +7 -7
  85. package/dist/chunk-IC2TCZJ2.js +54 -0
  86. package/dist/chunk-IC2TCZJ2.js.map +1 -0
  87. package/dist/{chunk-2U2A5HF4.js → chunk-J3XHPFEU.js} +6 -6
  88. package/dist/{chunk-AKUCU7CI.js → chunk-JI5AVXYO.js} +5 -5
  89. package/dist/{chunk-KCJ5H6XQ.js → chunk-JSNVWNGX.js} +2 -2
  90. package/dist/{chunk-7Z2DZNWN.js → chunk-KL4UAXUY.js} +43 -2
  91. package/dist/{chunk-7Z2DZNWN.js.map → chunk-KL4UAXUY.js.map} +1 -1
  92. package/dist/{chunk-FLVL4L3L.js → chunk-KTULX4YO.js} +4 -4
  93. package/dist/{chunk-ILFJ7AVS.js → chunk-LADFWYHY.js} +35 -21
  94. package/dist/chunk-LADFWYHY.js.map +1 -0
  95. package/dist/{chunk-437S3G37.js → chunk-LNQUAJNC.js} +1 -1
  96. package/dist/{chunk-EPGWWCZF.js → chunk-LR5DZ56F.js} +6 -6
  97. package/dist/{chunk-YDSWRD33.js → chunk-N3JDIRBW.js} +4 -4
  98. package/dist/{chunk-OUMTBFSQ.js → chunk-NKCPUHCI.js} +5 -5
  99. package/dist/{chunk-7QWMTOIF.js → chunk-P454KXD6.js} +112 -34
  100. package/dist/chunk-P454KXD6.js.map +1 -0
  101. package/dist/{chunk-DR6PEJU3.js → chunk-PCLIWBGD.js} +44 -59
  102. package/dist/chunk-PCLIWBGD.js.map +1 -0
  103. package/dist/{chunk-BGTAL46Y.js → chunk-PNLFN2PZ.js} +2 -2
  104. package/dist/{chunk-P6SYWE4G.js → chunk-PVUJ6WVV.js} +10 -10
  105. package/dist/{chunk-YPEMNNNY.js → chunk-RGK27ELN.js} +6 -6
  106. package/dist/{chunk-2QSZNTDO.js → chunk-RKNJBZ55.js} +4 -4
  107. package/dist/{chunk-66FLU5BT.js → chunk-SIRPLF54.js} +6 -6
  108. package/dist/{chunk-M7GGMGMZ.js → chunk-SVOHGUMI.js} +1202 -126
  109. package/dist/chunk-SVOHGUMI.js.map +1 -0
  110. package/dist/{chunk-HRCACVHL.js → chunk-TLUDFPZL.js} +2 -2
  111. package/dist/{chunk-2FOD2YY3.js → chunk-UFUKHGZD.js} +236 -103
  112. package/dist/chunk-UFUKHGZD.js.map +1 -0
  113. package/dist/{chunk-2MR3MFQB.js → chunk-UPSAT4PY.js} +2 -2
  114. package/dist/{chunk-4P4626RY.js → chunk-UTRJFDP2.js} +4 -4
  115. package/dist/{chunk-CGS7UKWM.js → chunk-VCW74PNH.js} +2 -2
  116. package/dist/{chunk-5GPPACXK.js → chunk-VSMRDBFT.js} +2 -1
  117. package/dist/{chunk-NG7YBCJO.js → chunk-XCL57M6Q.js} +4 -4
  118. package/dist/{chunk-CLX5VDNY.js → chunk-Y4RKAQZ7.js} +4 -4
  119. package/dist/{chunk-DGYCWCQ7.js → chunk-Y7UNNAZD.js} +2 -2
  120. package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
  121. package/dist/{chunk-XN3TUUX2.js → chunk-YQB32INI.js} +2 -2
  122. package/dist/{cli-EiBBOt3r.d.ts → cli-CqdPA6z9.d.ts} +3 -3
  123. package/dist/cli.d.ts +7 -7
  124. package/dist/cli.js +61 -59
  125. package/dist/compounding/engine.d.ts +2 -2
  126. package/dist/compounding/engine.js +9 -9
  127. package/dist/compounding/preference-consolidator.d.ts +1 -1
  128. package/dist/compression-optimizer.d.ts +1 -1
  129. package/dist/config.d.ts +1 -1
  130. package/dist/config.js +2 -2
  131. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  132. package/dist/connectors/codex-materialize-runner.js +9 -9
  133. package/dist/connectors/codex-materialize.d.ts +1 -1
  134. package/dist/connectors/index.d.ts +1 -1
  135. package/dist/connectors/index.js +13 -11
  136. package/dist/consolidation-provenance-check.d.ts +2 -2
  137. package/dist/consolidation-undo.d.ts +2 -2
  138. package/dist/contradiction/index.d.ts +2 -2
  139. package/dist/contradiction/index.js +4 -4
  140. package/dist/conversation-index/backend.d.ts +1 -1
  141. package/dist/conversation-index/backend.js +2 -2
  142. package/dist/conversation-index/chunker.d.ts +1 -1
  143. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  144. package/dist/conversation-index/indexer.d.ts +1 -1
  145. package/dist/conversation-index/search.d.ts +1 -1
  146. package/dist/dashboard-runtime.js +2 -2
  147. package/dist/day-summary.d.ts +1 -1
  148. package/dist/delinearize.d.ts +1 -1
  149. package/dist/direct-answer-wiring.d.ts +1 -1
  150. package/dist/direct-answer.d.ts +1 -1
  151. package/dist/embedding-fallback.d.ts +1 -1
  152. package/dist/enrichment/index.d.ts +1 -1
  153. package/dist/entity-retrieval.d.ts +2 -2
  154. package/dist/entity-retrieval.js +9 -9
  155. package/dist/entity-schema.d.ts +1 -1
  156. package/dist/explicit-capture.d.ts +5 -5
  157. package/dist/extraction-faithfulness.d.ts +1 -1
  158. package/dist/extraction-judge-telemetry.d.ts +1 -1
  159. package/dist/extraction-judge-training.d.ts +1 -1
  160. package/dist/extraction-judge.d.ts +1 -1
  161. package/dist/extraction.d.ts +1 -1
  162. package/dist/fallback-llm.d.ts +1 -1
  163. package/dist/{first-start-migration-DY6YCRC2.js → first-start-migration-VBJQL6OI.js} +5 -5
  164. package/dist/graph-dashboard-diff.d.ts +1 -1
  165. package/dist/graph-dashboard-key.d.ts +1 -1
  166. package/dist/graph-dashboard-parser.d.ts +1 -1
  167. package/dist/graph-edge-reinforcement.d.ts +1 -1
  168. package/dist/graph-snapshot.d.ts +1 -1
  169. package/dist/graph.d.ts +1 -1
  170. package/dist/identity-continuity.d.ts +1 -1
  171. package/dist/importance.d.ts +1 -1
  172. package/dist/index.d.ts +271 -17
  173. package/dist/index.js +163 -99
  174. package/dist/intent.d.ts +1 -1
  175. package/dist/lcm/engine.d.ts +1 -1
  176. package/dist/lcm/engine.js +2 -2
  177. package/dist/lcm/index.d.ts +1 -1
  178. package/dist/lcm/index.js +2 -2
  179. package/dist/lcm/tools.d.ts +1 -1
  180. package/dist/lifecycle.d.ts +1 -1
  181. package/dist/live-connectors-runner.d.ts +1 -1
  182. package/dist/local-llm.d.ts +1 -1
  183. package/dist/local-model-endpoint.d.ts +1 -1
  184. package/dist/maintenance/memory-governance.d.ts +1 -1
  185. package/dist/maintenance/memory-governance.js +10 -10
  186. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +9 -9
  187. package/dist/maintenance/rebuild-memory-projection.js +11 -11
  188. package/dist/mcp-memory-inspector-app.d.ts +6 -6
  189. package/dist/mcp-read-only-tools.d.ts +16 -0
  190. package/dist/mcp-read-only-tools.js +8 -0
  191. package/dist/mcp-read-only-tools.js.map +1 -0
  192. package/dist/memory-action-policy.d.ts +1 -1
  193. package/dist/memory-cache.d.ts +1 -1
  194. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  195. package/dist/memory-projection-store.d.ts +1 -1
  196. package/dist/memory-provenance.d.ts +1 -1
  197. package/dist/memory-worth-outcomes.d.ts +2 -2
  198. package/dist/models-json.d.ts +1 -1
  199. package/dist/namespaces/migrate.d.ts +3 -3
  200. package/dist/namespaces/migrate.js +19 -19
  201. package/dist/namespaces/principal.d.ts +1 -1
  202. package/dist/namespaces/search.d.ts +1 -1
  203. package/dist/namespaces/search.js +10 -10
  204. package/dist/namespaces/storage.d.ts +3 -3
  205. package/dist/namespaces/storage.js +9 -9
  206. package/dist/native-knowledge.d.ts +1 -1
  207. package/dist/operator-toolkit.d.ts +2 -2
  208. package/dist/operator-toolkit.js +25 -25
  209. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  210. package/dist/orchestration/maintenance.d.ts +2 -2
  211. package/dist/orchestration/maintenance.js +11 -11
  212. package/dist/{orchestrator-B2Y28Z9t.d.ts → orchestrator-CWFrT8AF.d.ts} +91 -60
  213. package/dist/orchestrator.d.ts +5 -5
  214. package/dist/orchestrator.js +85 -83
  215. package/dist/patterns-cli.d.ts +1 -1
  216. package/dist/policy-runtime.d.ts +1 -1
  217. package/dist/provenance.d.ts +1 -1
  218. package/dist/{qmd-Db9mOkzB.d.ts → qmd--fnPMK60.d.ts} +1 -1
  219. package/dist/qmd-preflight.d.ts +2 -2
  220. package/dist/qmd-recall-cache.d.ts +1 -1
  221. package/dist/qmd.d.ts +2 -2
  222. package/dist/recall-disclosure-escalation.d.ts +1 -1
  223. package/dist/recall-explain-renderer.d.ts +1 -1
  224. package/dist/recall-planner-llm.d.ts +1 -1
  225. package/dist/recall-state.d.ts +1 -1
  226. package/dist/recall-tag-filter.d.ts +1 -1
  227. package/dist/recall-timings.d.ts +1 -1
  228. package/dist/recall-xray-cli.d.ts +1 -1
  229. package/dist/recall-xray-renderer.d.ts +1 -1
  230. package/dist/recall-xray.d.ts +1 -1
  231. package/dist/resolve-auth-token.d.ts +1 -1
  232. package/dist/resume-bundles.js +4 -4
  233. package/dist/retrieval-agents.d.ts +2 -2
  234. package/dist/retrieval-tiers.d.ts +1 -1
  235. package/dist/routing/engine.d.ts +1 -1
  236. package/dist/routing/store.d.ts +1 -1
  237. package/dist/schemas.d.ts +22 -22
  238. package/dist/search/document-scanner.js +2 -2
  239. package/dist/search/embed-helper.d.ts +1 -1
  240. package/dist/search/factory.d.ts +1 -1
  241. package/dist/search/factory.js +9 -9
  242. package/dist/search/index.d.ts +1 -1
  243. package/dist/search/index.js +13 -13
  244. package/dist/search/lancedb-backend.d.ts +1 -1
  245. package/dist/search/lancedb-backend.js +3 -3
  246. package/dist/search/meilisearch-backend.d.ts +1 -1
  247. package/dist/search/meilisearch-backend.js +3 -3
  248. package/dist/search/noop-backend.d.ts +1 -1
  249. package/dist/search/orama-backend.d.ts +1 -1
  250. package/dist/search/orama-backend.js +3 -3
  251. package/dist/search/port.d.ts +1 -1
  252. package/dist/search/remote-backend.d.ts +1 -1
  253. package/dist/{semantic-consolidation-BDVIbLRw.d.ts → semantic-consolidation-O5lMZ4LG.d.ts} +1 -1
  254. package/dist/semantic-consolidation.d.ts +2 -2
  255. package/dist/semantic-consolidation.js +11 -11
  256. package/dist/semantic-rule-promotion.js +9 -9
  257. package/dist/semantic-rule-verifier.d.ts +1 -1
  258. package/dist/semantic-rule-verifier.js +10 -10
  259. package/dist/session-observer-bands.d.ts +1 -1
  260. package/dist/session-observer-state.d.ts +1 -1
  261. package/dist/shared-context/manager.d.ts +1 -1
  262. package/dist/signal.d.ts +1 -1
  263. package/dist/storage-C1maCNbc.d.ts +1591 -0
  264. package/dist/storage.d.ts +5 -1239
  265. package/dist/storage.js +8 -8
  266. package/dist/summarizer.d.ts +1 -1
  267. package/dist/summary-snapshot.d.ts +1 -1
  268. package/dist/temporal-supersession.d.ts +2 -2
  269. package/dist/temporal-validity.d.ts +1 -1
  270. package/dist/threading.d.ts +1 -1
  271. package/dist/tier-migration.d.ts +2 -2
  272. package/dist/tier-routing.d.ts +1 -1
  273. package/dist/{tier-stats-TG6GUZ6N.js → tier-stats-5XF4UBRQ.js} +4 -4
  274. package/dist/tokens.d.ts +17 -2
  275. package/dist/tokens.js +3 -1
  276. package/dist/topics.d.ts +1 -1
  277. package/dist/transcript.d.ts +1 -1
  278. package/dist/transfer/backup.js +2 -2
  279. package/dist/transfer/capsule-export.js +3 -3
  280. package/dist/transfer/capsule-import.js +3 -3
  281. package/dist/transfer/types.d.ts +12 -12
  282. package/dist/trust-score-stage.d.ts +1 -1
  283. package/dist/trust-score.d.ts +1 -1
  284. package/dist/{types-ljkd82rn.d.ts → types-CGgcNWCG.d.ts} +31 -1
  285. package/dist/types.d.ts +1 -1
  286. package/dist/utility-runtime.d.ts +1 -1
  287. package/dist/verified-recall.js +10 -10
  288. package/package.json +2 -2
  289. package/src/access-boundary.test.ts +62 -0
  290. package/src/access-boundary.ts +165 -126
  291. package/src/access-http.test.ts +781 -0
  292. package/src/access-http.ts +334 -108
  293. package/src/access-mcp.test.ts +264 -0
  294. package/src/access-mcp.ts +45 -70
  295. package/src/access-operations-batch.ts +35 -12
  296. package/src/access-surface-catalog.test.ts +22 -14
  297. package/src/access-surface-catalog.ts +6 -3
  298. package/src/access-token-capabilities.test.ts +844 -0
  299. package/src/access-token-capabilities.ts +391 -0
  300. package/src/chat/chat-mcp.test.ts +232 -0
  301. package/src/chat/chat-session.ts +34 -0
  302. package/src/cli-wearables-fuse.test.ts +197 -0
  303. package/src/cli.ts +25 -0
  304. package/src/index.ts +14 -0
  305. package/src/mcp-read-only-tools.ts +61 -0
  306. package/src/storage.ts +16 -0
  307. package/src/tokens.ts +32 -3
  308. package/src/wearables/cli.test.ts +102 -0
  309. package/src/wearables/cli.ts +65 -0
  310. package/src/wearables/config.test.ts +32 -0
  311. package/src/wearables/config.ts +52 -0
  312. package/src/wearables/day-store.test.ts +246 -0
  313. package/src/wearables/day-store.ts +272 -3
  314. package/src/wearables/fusion/cluster.ts +230 -0
  315. package/src/wearables/fusion/fuse.ts +218 -0
  316. package/src/wearables/fusion/fusion.test.ts +2575 -0
  317. package/src/wearables/fusion/index.ts +50 -0
  318. package/src/wearables/fusion/reconcile.ts +831 -0
  319. package/src/wearables/fusion/reconstruct.ts +251 -0
  320. package/src/wearables/fusion/store.ts +480 -0
  321. package/src/wearables/fusion/types.ts +228 -0
  322. package/src/wearables/index.ts +41 -0
  323. package/src/wearables/service.test.ts +1030 -2
  324. package/src/wearables/service.ts +258 -16
  325. package/src/wearables/speakers.test.ts +128 -0
  326. package/src/wearables/speakers.ts +58 -4
  327. package/src/wearables/storage-io.test.ts +146 -0
  328. package/src/wearables/types.ts +31 -0
  329. package/dist/chunk-2FOD2YY3.js.map +0 -1
  330. package/dist/chunk-7QWMTOIF.js.map +0 -1
  331. package/dist/chunk-DR6PEJU3.js.map +0 -1
  332. package/dist/chunk-E2SPGGUI.js.map +0 -1
  333. package/dist/chunk-FZGGZAAU.js.map +0 -1
  334. package/dist/chunk-ILFJ7AVS.js.map +0 -1
  335. package/dist/chunk-M7GGMGMZ.js.map +0 -1
  336. package/dist/chunk-M7XQSUBB.js.map +0 -1
  337. /package/dist/{capsule-crypto-CZJSLEFG.js.map → access-token-capabilities.js.map} +0 -0
  338. /package/dist/{auto-sync-HMHQHUAG.js.map → auto-sync-4A5YBWYO.js.map} +0 -0
  339. /package/dist/{chunk-6ZIETXZ2.js.map → chunk-23JFRB73.js.map} +0 -0
  340. /package/dist/{chunk-IC6QX5TC.js.map → chunk-3XIY7MDQ.js.map} +0 -0
  341. /package/dist/{chunk-LOR6ZM5R.js.map → chunk-4LV23CHK.js.map} +0 -0
  342. /package/dist/{chunk-AER6MT24.js.map → chunk-6SXVCD7W.js.map} +0 -0
  343. /package/dist/{chunk-OHDJ34CC.js.map → chunk-72WG5QKN.js.map} +0 -0
  344. /package/dist/{chunk-CZAZX7JP.js.map → chunk-7MW3CVLD.js.map} +0 -0
  345. /package/dist/{chunk-CXLNZXG5.js.map → chunk-7XGSIUP5.js.map} +0 -0
  346. /package/dist/{chunk-CZAA5N5S.js.map → chunk-AYZJID4S.js.map} +0 -0
  347. /package/dist/{chunk-6BISDEN6.js.map → chunk-BEM4D2QG.js.map} +0 -0
  348. /package/dist/{chunk-ZPOROUTX.js.map → chunk-CYWA2CXR.js.map} +0 -0
  349. /package/dist/{chunk-M5QKGHCR.js.map → chunk-CYWCKFCL.js.map} +0 -0
  350. /package/dist/{chunk-4BFRBP45.js.map → chunk-DEG5ULFJ.js.map} +0 -0
  351. /package/dist/{chunk-JLR3JSTL.js.map → chunk-DS7MM2ES.js.map} +0 -0
  352. /package/dist/{chunk-2BFLDH5F.js.map → chunk-EEIROWEG.js.map} +0 -0
  353. /package/dist/{chunk-X4A62ET7.js.map → chunk-H2DXDQCQ.js.map} +0 -0
  354. /package/dist/{chunk-27FLVMDC.js.map → chunk-HLN7RROI.js.map} +0 -0
  355. /package/dist/{chunk-2U2A5HF4.js.map → chunk-J3XHPFEU.js.map} +0 -0
  356. /package/dist/{chunk-AKUCU7CI.js.map → chunk-JI5AVXYO.js.map} +0 -0
  357. /package/dist/{chunk-KCJ5H6XQ.js.map → chunk-JSNVWNGX.js.map} +0 -0
  358. /package/dist/{chunk-FLVL4L3L.js.map → chunk-KTULX4YO.js.map} +0 -0
  359. /package/dist/{chunk-437S3G37.js.map → chunk-LNQUAJNC.js.map} +0 -0
  360. /package/dist/{chunk-EPGWWCZF.js.map → chunk-LR5DZ56F.js.map} +0 -0
  361. /package/dist/{chunk-YDSWRD33.js.map → chunk-N3JDIRBW.js.map} +0 -0
  362. /package/dist/{chunk-OUMTBFSQ.js.map → chunk-NKCPUHCI.js.map} +0 -0
  363. /package/dist/{chunk-BGTAL46Y.js.map → chunk-PNLFN2PZ.js.map} +0 -0
  364. /package/dist/{chunk-P6SYWE4G.js.map → chunk-PVUJ6WVV.js.map} +0 -0
  365. /package/dist/{chunk-YPEMNNNY.js.map → chunk-RGK27ELN.js.map} +0 -0
  366. /package/dist/{chunk-2QSZNTDO.js.map → chunk-RKNJBZ55.js.map} +0 -0
  367. /package/dist/{chunk-66FLU5BT.js.map → chunk-SIRPLF54.js.map} +0 -0
  368. /package/dist/{chunk-HRCACVHL.js.map → chunk-TLUDFPZL.js.map} +0 -0
  369. /package/dist/{chunk-2MR3MFQB.js.map → chunk-UPSAT4PY.js.map} +0 -0
  370. /package/dist/{chunk-4P4626RY.js.map → chunk-UTRJFDP2.js.map} +0 -0
  371. /package/dist/{chunk-CGS7UKWM.js.map → chunk-VCW74PNH.js.map} +0 -0
  372. /package/dist/{chunk-5GPPACXK.js.map → chunk-VSMRDBFT.js.map} +0 -0
  373. /package/dist/{chunk-NG7YBCJO.js.map → chunk-XCL57M6Q.js.map} +0 -0
  374. /package/dist/{chunk-CLX5VDNY.js.map → chunk-Y4RKAQZ7.js.map} +0 -0
  375. /package/dist/{chunk-DGYCWCQ7.js.map → chunk-Y7UNNAZD.js.map} +0 -0
  376. /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
  377. /package/dist/{chunk-XN3TUUX2.js.map → chunk-YQB32INI.js.map} +0 -0
  378. /package/dist/{first-start-migration-DY6YCRC2.js.map → first-start-migration-VBJQL6OI.js.map} +0 -0
  379. /package/dist/{tier-stats-TG6GUZ6N.js.map → tier-stats-5XF4UBRQ.js.map} +0 -0
@@ -22,6 +22,9 @@ import {
22
22
  type OperationContext,
23
23
  } from "./access-boundary.js";
24
24
  import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
25
+ import { EngramAccessForbiddenError } from "./access-errors.js";
26
+ import { tokenCapabilityStore } from "./access-token-capabilities.js";
27
+ import { z } from "zod";
25
28
 
26
29
  // ---------------------------------------------------------------------------
27
30
  // Test fixtures
@@ -210,3 +213,62 @@ test("getOperation / listRegisteredOperations: round-trip a registration", async
210
213
  assert.ok(getOperation("memory_search"));
211
214
  assert.ok(listRegisteredOperations().includes("memory_search"));
212
215
  });
216
+
217
+ // ---------------------------------------------------------------------------
218
+ // fleetWide flag — fail-closed for namespace-scoped tokens (issue #1850 round 10)
219
+ // Maintenance ops that run ACROSS ALL namespaces carry no `namespace` arg, so
220
+ // the MCP tools/call effective-namespace gate never fires. The fleetWide flag
221
+ // makes defineOperation's run wrapper reject a namespace-scoped token BEFORE
222
+ // the handler — no side effect on denial; unrestricted/legacy unaffected.
223
+ // ---------------------------------------------------------------------------
224
+
225
+ test("fleetWide op: namespace-scoped token is rejected BEFORE the handler runs (no side effect)", async () => {
226
+ let ran = false;
227
+ __resetRegistryForTest();
228
+ const op = defineOperation({
229
+ name: "memory_get",
230
+ description: "test fleet-wide op",
231
+ fleetWide: true,
232
+ schema: z.object({}),
233
+ handler: async () => { ran = true; return { ok: true }; },
234
+ });
235
+ await assert.rejects(
236
+ () => tokenCapabilityStore.run({ version: 1, namespaces: ["ns_a"] }, () => op.run({}, ctx(makeMockService()))),
237
+ (err: unknown) => err instanceof EngramAccessForbiddenError && /across all namespaces/.test(err.message),
238
+ );
239
+ assert.equal(ran, false, "fleet-wide handler must NOT run for a namespace-scoped token (no side effect)");
240
+ });
241
+
242
+ test("fleetWide op: unrestricted and legacy tokens reach the handler", async () => {
243
+ let ran = false;
244
+ __resetRegistryForTest();
245
+ const op = defineOperation({
246
+ name: "memory_get",
247
+ description: "test fleet-wide op",
248
+ fleetWide: true,
249
+ schema: z.object({}),
250
+ handler: async () => { ran = true; return { ok: true }; },
251
+ });
252
+ // Explicit-unrestricted record (version present, no namespaces axis).
253
+ const result = await tokenCapabilityStore.run({ version: 1 }, () => op.run({}, ctx(makeMockService())));
254
+ assert.deepEqual(result, { ok: true });
255
+ assert.equal(ran, true, "unrestricted token reaches the handler");
256
+ // Legacy (no ALS bound at all — cron / internal callers).
257
+ ran = false;
258
+ assert.deepEqual(await op.run({}, ctx(makeMockService())), { ok: true });
259
+ assert.equal(ran, true, "legacy token reaches the handler");
260
+ });
261
+
262
+ test("fleetWide flag is inert for normal (non-fleet-wide) ops under a scoped token", async () => {
263
+ let ran = false;
264
+ __resetRegistryForTest();
265
+ const op = defineOperation({
266
+ name: "memory_get",
267
+ description: "normal op (not fleet-wide)",
268
+ schema: z.object({}),
269
+ handler: async () => { ran = true; return { ok: true }; },
270
+ });
271
+ const result = await tokenCapabilityStore.run({ version: 1, namespaces: ["ns_a"] }, () => op.run({}, ctx(makeMockService())));
272
+ assert.deepEqual(result, { ok: true });
273
+ assert.equal(ran, true, "a non-fleet-wide op runs normally for a scoped token");
274
+ });
@@ -17,6 +17,7 @@
17
17
 
18
18
  import { z } from "zod";
19
19
  import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
20
+ import { assertFleetWideOperationAllowed, assertOperationAllowed, tokenCapabilityStore } from "./access-token-capabilities.js";
20
21
  import { expandTildePath } from "./utils/path.js";
21
22
 
22
23
  // ---------------------------------------------------------------------------
@@ -30,138 +31,150 @@ import { expandTildePath } from "./utils/path.js";
30
31
  * lands; the fitness test in `access-surface-catalog.test.ts` treats the
31
32
  * registered set as the migration state.
32
33
  */
33
- export type OperationName =
34
- | "memory_get"
35
- | "memory_search"
36
- | "memory_store"
37
- | "coding_decision"
38
- | "coding_architecture"
34
+ export const OPERATION_NAMES = [
35
+ "memory_get",
36
+ "memory_search",
37
+ "memory_store",
38
+ "coding_decision",
39
+ "coding_architecture",
39
40
  // codegraph parity tools (issue #1554) -- each maps to one codegraph_*
40
41
  // boundary operation that delegates to the surface handler in
41
42
  // coding/codegraph-surfaces.ts. Names match the external tool suffixes.
42
- | "codegraph_index"
43
- | "codegraph_list_projects"
44
- | "codegraph_delete_project"
45
- | "codegraph_index_status"
46
- | "codegraph_search_graph"
47
- | "codegraph_trace_path"
48
- | "codegraph_detect_changes"
49
- | "codegraph_query_graph"
50
- | "codegraph_get_schema"
51
- | "codegraph_get_snippet"
52
- | "codegraph_get_architecture"
53
- | "codegraph_search_code"
54
- | "codegraph_manage_adr"
55
- | "codegraph_ingest_traces"
56
- | "memory_correct_plan"
57
- | "memory_correct_apply"
58
- | "coding_delta"
43
+ "codegraph_index",
44
+ "codegraph_list_projects",
45
+ "codegraph_delete_project",
46
+ "codegraph_index_status",
47
+ "codegraph_search_graph",
48
+ "codegraph_trace_path",
49
+ "codegraph_detect_changes",
50
+ "codegraph_query_graph",
51
+ "codegraph_get_schema",
52
+ "codegraph_get_snippet",
53
+ "codegraph_get_architecture",
54
+ "codegraph_search_code",
55
+ "codegraph_manage_adr",
56
+ "codegraph_ingest_traces",
57
+ "memory_correct_plan",
58
+ "memory_correct_apply",
59
+ "coding_delta",
59
60
  // Remaining MCP/HTTP handlers migrated through the boundary (issue #1525).
60
- | "recall"
61
- | "recall_explain"
62
- | "set_coding_context"
63
- | "recall_tier_explain"
64
- | "recall_xray"
65
- | "wearables_status"
66
- | "wearables_sync"
67
- | "transcript_day"
68
- | "transcript_search"
69
- | "transcript_memories"
70
- | "action_confidence"
71
- | "chatgpt_memory_inspector"
72
- | "day_summary"
73
- | "capsule_export"
74
- | "capsule_import"
75
- | "capsule_list"
76
- | "memory_governance_run"
77
- | "procedure_mining_run"
78
- | "pattern_reinforcement_run"
79
- | "procedural_stats"
80
- | "memory_timeline"
81
- | "suggestion_submit"
82
- | "entity_get"
83
- | "review_queue_list"
84
- | "correction_pending"
85
- | "observe"
86
- | "lcm_search"
87
- | "lcm_compaction_flush"
88
- | "lcm_compaction_record"
89
- | "continuity_audit_generate"
90
- | "continuity_incident_open"
91
- | "continuity_incident_close"
92
- | "continuity_incident_list"
93
- | "continuity_loop_add_or_update"
94
- | "continuity_loop_review"
95
- | "identity_anchor_get"
96
- | "identity_anchor_update"
97
- | "memory_identity"
98
- | "work_task"
99
- | "work_project"
100
- | "work_board"
101
- | "shared_context_write_output"
102
- | "shared_feedback_record"
103
- | "shared_priorities_append"
104
- | "shared_context_cross_signals_run"
105
- | "shared_context_curate_daily"
106
- | "compounding_weekly_synthesize"
107
- | "compounding_promote_candidate"
108
- | "compression_guidelines_optimize"
109
- | "compression_guidelines_activate"
110
- | "memory_profile"
111
- | "memory_entities_list"
112
- | "memory_questions"
113
- | "memory_last_recall"
114
- | "memory_intent_debug"
115
- | "memory_qmd_debug"
116
- | "memory_graph_explain"
117
- | "graph_snapshot"
118
- | "memory_feedback"
119
- | "memory_promote"
120
- | "memory_outcome"
121
- | "memory_action_apply"
122
- | "context_checkpoint"
123
- | "briefing"
124
- | "review_list"
125
- | "review_resolve"
126
- | "contradiction_scan_run"
127
- | "memory_summarize_hourly"
128
- | "conversation_index_update"
129
- | "profiling_report"
130
- | "graph_edge_decay_run"
131
- | "live_connectors_run"
132
- | "peer_list"
133
- | "peer_get"
134
- | "peer_set"
135
- | "peer_delete"
136
- | "peer_profile_get"
137
- | "peer_forget"
138
- | "console_state"
139
- | "dreams_status"
140
- | "dreams_run"
61
+ "recall",
62
+ "recall_explain",
63
+ "set_coding_context",
64
+ "recall_tier_explain",
65
+ "recall_xray",
66
+ "wearables_status",
67
+ "wearables_sync",
68
+ "transcript_day",
69
+ "transcript_search",
70
+ "transcript_memories",
71
+ "action_confidence",
72
+ "chatgpt_memory_inspector",
73
+ "day_summary",
74
+ "capsule_export",
75
+ "capsule_import",
76
+ "capsule_list",
77
+ "memory_governance_run",
78
+ "procedure_mining_run",
79
+ "pattern_reinforcement_run",
80
+ "procedural_stats",
81
+ "memory_timeline",
82
+ "suggestion_submit",
83
+ "entity_get",
84
+ "review_queue_list",
85
+ "correction_pending",
86
+ "observe",
87
+ "lcm_search",
88
+ "lcm_compaction_flush",
89
+ "lcm_compaction_record",
90
+ "continuity_audit_generate",
91
+ "continuity_incident_open",
92
+ "continuity_incident_close",
93
+ "continuity_incident_list",
94
+ "continuity_loop_add_or_update",
95
+ "continuity_loop_review",
96
+ "identity_anchor_get",
97
+ "identity_anchor_update",
98
+ "memory_identity",
99
+ "work_task",
100
+ "work_project",
101
+ "work_board",
102
+ "shared_context_write_output",
103
+ "shared_feedback_record",
104
+ "shared_priorities_append",
105
+ "shared_context_cross_signals_run",
106
+ "shared_context_curate_daily",
107
+ "compounding_weekly_synthesize",
108
+ "compounding_promote_candidate",
109
+ "compression_guidelines_optimize",
110
+ "compression_guidelines_activate",
111
+ "memory_profile",
112
+ "memory_entities_list",
113
+ "memory_questions",
114
+ "memory_last_recall",
115
+ "memory_intent_debug",
116
+ "memory_qmd_debug",
117
+ "memory_graph_explain",
118
+ "graph_snapshot",
119
+ "memory_feedback",
120
+ "memory_promote",
121
+ "memory_outcome",
122
+ "memory_action_apply",
123
+ "context_checkpoint",
124
+ "briefing",
125
+ "review_list",
126
+ "review_resolve",
127
+ "contradiction_scan_run",
128
+ "memory_summarize_hourly",
129
+ "conversation_index_update",
130
+ "profiling_report",
131
+ "graph_edge_decay_run",
132
+ "live_connectors_run",
133
+ "peer_list",
134
+ "peer_get",
135
+ "peer_set",
136
+ "peer_delete",
137
+ "peer_profile_get",
138
+ "peer_forget",
139
+ "console_state",
140
+ "dreams_status",
141
+ "dreams_run",
141
142
  // HTTP-only routes (no direct MCP tool equivalent).
142
- | "offline_sync_snapshot"
143
- | "offline_sync_snapshot_stream"
144
- | "offline_sync_files"
145
- | "offline_sync_file_content"
146
- | "offline_sync_apply_file_content"
147
- | "offline_sync_apply"
148
- | "lcm_status"
149
- | "memory_list"
150
- | "recall_timings"
151
- | "entity_list"
152
- | "maintenance_status"
153
- | "quality_status"
154
- | "trust_zones_status"
155
- | "trust_zones_records"
156
- | "review_disposition"
157
- | "trust_zones_promote"
158
- | "trust_zones_demo_seed"
159
- | "citations_observed"
160
- | "contradiction_detail"
161
- | "graph_events"
143
+ "adapters_status",
144
+ "offline_sync_snapshot",
145
+ "offline_sync_snapshot_stream",
146
+ "offline_sync_files",
147
+ "offline_sync_file_content",
148
+ "offline_sync_apply_file_content",
149
+ "offline_sync_apply",
150
+ "lcm_status",
151
+ "memory_list",
152
+ "recall_timings",
153
+ "entity_list",
154
+ "maintenance_status",
155
+ "quality_status",
156
+ "trust_zones_status",
157
+ "trust_zones_records",
158
+ "review_disposition",
159
+ "trust_zones_promote",
160
+ "trust_zones_demo_seed",
161
+ "citations_observed",
162
+ "contradiction_detail",
163
+ "graph_events",
162
164
  // Chat surface — conversational memory inspection/correction (issue #1583).
163
- | "chat_message"
164
- | "chat_events";
165
+ "chat_message",
166
+ "chat_events",
167
+ ] as const;
168
+
169
+ /**
170
+ * Canonical operation ids. One id is shared by the MCP tool, the HTTP route,
171
+ * and the CLI command that expose the same operation. Derived from
172
+ * {@link OPERATION_NAMES} (single source of truth) so the runtime catalog
173
+ * used for token-capability validation cannot drift from the type. The
174
+ * fitness test in `access-surface-catalog.test.ts` treats the registered set
175
+ * as the migration state.
176
+ */
177
+ export type OperationName = (typeof OPERATION_NAMES)[number];
165
178
 
166
179
  // ---------------------------------------------------------------------------
167
180
  // Operation context — what every handler receives
@@ -206,6 +219,16 @@ export interface OperationSpec<In, Out> {
206
219
  readonly schema: z.ZodType<In>;
207
220
  /** Handler invoked with the parsed input; throws EngramAccessInputError for domain faults. */
208
221
  readonly handler: (input: In, ctx: OperationContext) => Promise<Out>;
222
+ /**
223
+ * Marks an operation as inherently FLEET-WIDE / global — it runs across ALL
224
+ * namespaces (or against a single non-namespaced global layer) and carries no
225
+ * `namespace` argument, so the MCP `tools/call` effective-namespace chokepoint
226
+ * never applies. When set, {@link defineOperation}'s run wrapper rejects any
227
+ * namespace-SCOPED token (fail closed) via assertFleetWideOperationAllowed
228
+ * BEFORE the handler — no side effect on denial. Unrestricted/legacy tokens
229
+ * (cron, internal callers, no capability record) are unaffected (issue #1850).
230
+ */
231
+ readonly fleetWide?: boolean;
209
232
  }
210
233
 
211
234
  export interface BoundOperation<In = unknown, Out = unknown> {
@@ -372,6 +395,22 @@ export function defineOperation<In, Out>(spec: OperationSpec<In, Out>): BoundOpe
372
395
  if (!parseResult.success) {
373
396
  throw new EngramAccessInputError(formatZodIssues(parseResult.error));
374
397
  }
398
+ // Per-token capability enforcement (issue #1837): when the presenting
399
+ // token carries an ops allow-list, reject operations not in it. The
400
+ // capability record is carried via AsyncLocalStorage, set once per
401
+ // authorized HTTP/MCP request; absent (CLI/tests/direct callers) ⇒
402
+ // unrestricted. Default-deny ONLY when an ops axis is present — legacy
403
+ // tokens (absent record) and explicit-unrestricted new tokens are
404
+ // unaffected.
405
+ assertOperationAllowed(tokenCapabilityStore.getStore(), spec.name);
406
+ // Fleet-wide / global maintenance ops (issue #1850 round 10): these run
407
+ // across all namespaces with no `namespace` arg, so the tools/call
408
+ // effective-namespace gate never fires. A namespace-SCOPED token must not
409
+ // trigger cross-namespace maintenance — fail closed BEFORE the handler so
410
+ // a denial never leaks a partial mutation. No-op for unrestricted/legacy.
411
+ if (spec.fleetWide) {
412
+ assertFleetWideOperationAllowed(tokenCapabilityStore.getStore());
413
+ }
375
414
  return spec.handler(parseResult.data, ctx);
376
415
  },
377
416
  };