@remnic/core 9.3.708 → 9.3.709

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 (266) hide show
  1. package/dist/access-boundary.d.ts +7 -7
  2. package/dist/access-boundary.js +8 -8
  3. package/dist/access-cli.js +111 -24
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +6 -6
  6. package/dist/access-http.js +12 -12
  7. package/dist/access-mcp.d.ts +14 -6
  8. package/dist/access-mcp.js +11 -11
  9. package/dist/access-operations-batch.js +9 -9
  10. package/dist/access-operations.d.ts +28 -8
  11. package/dist/access-operations.js +14 -10
  12. package/dist/access-schema.d.ts +6 -6
  13. package/dist/{access-service-j1c1gptF.d.ts → access-service-CoIA0NrG.d.ts} +186 -3
  14. package/dist/access-service.d.ts +6 -6
  15. package/dist/access-service.js +7 -7
  16. package/dist/access-surface-catalog.d.ts +6 -6
  17. package/dist/access-surface-catalog.js +7 -0
  18. package/dist/access-surface-catalog.js.map +1 -1
  19. package/dist/action-confidence.d.ts +1 -1
  20. package/dist/active-memory-bridge.d.ts +1 -1
  21. package/dist/active-recall.d.ts +1 -1
  22. package/dist/active-recall.js +1 -1
  23. package/dist/behavior-learner.d.ts +1 -1
  24. package/dist/behavior-signals.d.ts +1 -1
  25. package/dist/bootstrap.d.ts +4 -4
  26. package/dist/briefing.d.ts +1 -1
  27. package/dist/briefing.js +3 -3
  28. package/dist/buffer-surprise-report.d.ts +1 -1
  29. package/dist/buffer.d.ts +1 -1
  30. package/dist/calibration.d.ts +1 -1
  31. package/dist/capabilities.d.ts +1 -1
  32. package/dist/{catalog-CKxilpzS.d.ts → catalog-DQCZrBjw.d.ts} +1 -1
  33. package/dist/causal-behavior.d.ts +1 -1
  34. package/dist/causal-consolidation.d.ts +1 -1
  35. package/dist/causal-consolidation.js +4 -4
  36. package/dist/{chunk-PDJQVAGM.js → chunk-2T4TDXPC.js} +14 -14
  37. package/dist/{chunk-W2WQ4LE7.js → chunk-35YJ6KCV.js} +2 -2
  38. package/dist/{chunk-C63MK3WL.js → chunk-3TCRU4JA.js} +2 -2
  39. package/dist/{chunk-WRGPE6AW.js → chunk-3XHD3XGK.js} +44 -1
  40. package/dist/chunk-3XHD3XGK.js.map +1 -0
  41. package/dist/{chunk-GKI6LX5L.js → chunk-54TI5GLV.js} +2 -2
  42. package/dist/{chunk-IVCQW4C4.js → chunk-7IBEWQLG.js} +2 -2
  43. package/dist/{chunk-Y6YHAGQP.js → chunk-7NDYFAJS.js} +2 -2
  44. package/dist/{chunk-SPETAWFE.js → chunk-AZVHBFI3.js} +2 -2
  45. package/dist/{chunk-MLLTU5FX.js → chunk-BOGENF7P.js} +1 -1
  46. package/dist/chunk-BOGENF7P.js.map +1 -0
  47. package/dist/{chunk-3PTOZJOI.js → chunk-BQCFXAMN.js} +2 -2
  48. package/dist/{chunk-4E2QCH46.js → chunk-CNVIWMQI.js} +2 -2
  49. package/dist/{chunk-4DZATVK5.js → chunk-CXMXAC5R.js} +3 -3
  50. package/dist/{chunk-STYMKPFT.js → chunk-EVX52NCY.js} +1459 -21
  51. package/dist/chunk-EVX52NCY.js.map +1 -0
  52. package/dist/{chunk-W2S3Z5MT.js → chunk-GMRNKPWO.js} +2 -2
  53. package/dist/{chunk-HIV5E57C.js → chunk-HSDJCT3V.js} +2 -2
  54. package/dist/{chunk-NM6TSEGQ.js → chunk-JNOYYWCA.js} +2 -2
  55. package/dist/{chunk-IONFO7UK.js → chunk-JQ7XVM4V.js} +3 -3
  56. package/dist/{chunk-2VQYHHWB.js → chunk-JSDZMOT7.js} +11 -2
  57. package/dist/chunk-JSDZMOT7.js.map +1 -0
  58. package/dist/{chunk-WSWYIKXX.js → chunk-KOEKDZ6A.js} +62 -5
  59. package/dist/chunk-KOEKDZ6A.js.map +1 -0
  60. package/dist/{chunk-WQADZ3ZY.js → chunk-NK3SPJLM.js} +20 -19
  61. package/dist/chunk-NK3SPJLM.js.map +1 -0
  62. package/dist/{chunk-WDH3KUZU.js → chunk-NXL5CVE7.js} +2 -2
  63. package/dist/{chunk-BGAHTI4C.js → chunk-OK7FUX6R.js} +6 -6
  64. package/dist/{chunk-24FGNOQS.js → chunk-P6PRSI3W.js} +85 -4
  65. package/dist/chunk-P6PRSI3W.js.map +1 -0
  66. package/dist/{chunk-66TSLESZ.js → chunk-PKE7EJMX.js} +2 -2
  67. package/dist/chunk-PKE7EJMX.js.map +1 -0
  68. package/dist/{chunk-MOXFPLD6.js → chunk-QXNFQKWU.js} +2 -2
  69. package/dist/{chunk-MRX6ZXHZ.js → chunk-S6FQLQGH.js} +2 -2
  70. package/dist/{chunk-6HPJMR5I.js → chunk-SKQCFAYU.js} +2 -2
  71. package/dist/{chunk-EJDAXR7O.js → chunk-VWB3HDY6.js} +56 -8
  72. package/dist/chunk-VWB3HDY6.js.map +1 -0
  73. package/dist/{chunk-N75N5SNX.js → chunk-XD33EX2F.js} +3 -3
  74. package/dist/{chunk-ESMY4RJ4.js → chunk-XKU4YE6Z.js} +2 -2
  75. package/dist/{chunk-XKMDDM7P.js → chunk-Y6PIFKXX.js} +2 -2
  76. package/dist/{chunk-RH2OSRQY.js → chunk-Z56IHRVV.js} +2 -2
  77. package/dist/{cli-CbT-pyM4.d.ts → cli-qex-L3GT.d.ts} +3 -3
  78. package/dist/cli.d.ts +6 -6
  79. package/dist/cli.js +26 -26
  80. package/dist/compounding/engine.d.ts +1 -1
  81. package/dist/compounding/engine.js +3 -3
  82. package/dist/compounding/preference-consolidator.d.ts +1 -1
  83. package/dist/compression-optimizer.d.ts +1 -1
  84. package/dist/config.d.ts +1 -1
  85. package/dist/config.js +1 -1
  86. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  87. package/dist/connectors/codex-materialize-runner.js +3 -3
  88. package/dist/connectors/codex-materialize.d.ts +1 -1
  89. package/dist/connectors/index.d.ts +1 -1
  90. package/dist/connectors/index.js +3 -3
  91. package/dist/consolidation-provenance-check.d.ts +1 -1
  92. package/dist/consolidation-undo.d.ts +1 -1
  93. package/dist/contradiction/index.d.ts +1 -1
  94. package/dist/conversation-index/backend.d.ts +1 -1
  95. package/dist/conversation-index/chunker.d.ts +1 -1
  96. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  97. package/dist/conversation-index/indexer.d.ts +1 -1
  98. package/dist/conversation-index/search.d.ts +1 -1
  99. package/dist/day-summary.d.ts +1 -1
  100. package/dist/delinearize.d.ts +1 -1
  101. package/dist/direct-answer-wiring.d.ts +1 -1
  102. package/dist/direct-answer.d.ts +1 -1
  103. package/dist/embedding-fallback.d.ts +1 -1
  104. package/dist/enrichment/index.d.ts +1 -1
  105. package/dist/entity-retrieval.d.ts +1 -1
  106. package/dist/entity-retrieval.js +3 -3
  107. package/dist/entity-schema.d.ts +1 -1
  108. package/dist/explicit-capture.d.ts +4 -4
  109. package/dist/extraction-faithfulness.d.ts +1 -1
  110. package/dist/extraction-judge-telemetry.d.ts +1 -1
  111. package/dist/extraction-judge-training.d.ts +1 -1
  112. package/dist/extraction-judge.d.ts +1 -1
  113. package/dist/extraction.d.ts +1 -1
  114. package/dist/fallback-llm.d.ts +1 -1
  115. package/dist/identity-continuity.d.ts +1 -1
  116. package/dist/importance.d.ts +1 -1
  117. package/dist/index.d.ts +9 -9
  118. package/dist/index.js +32 -32
  119. package/dist/intent.d.ts +1 -1
  120. package/dist/lcm/engine.d.ts +1 -1
  121. package/dist/lcm/index.d.ts +1 -1
  122. package/dist/lcm/tools.d.ts +1 -1
  123. package/dist/lifecycle.d.ts +1 -1
  124. package/dist/live-connectors-runner.d.ts +1 -1
  125. package/dist/local-llm.d.ts +1 -1
  126. package/dist/maintenance/memory-governance.d.ts +1 -1
  127. package/dist/maintenance/memory-governance.js +3 -3
  128. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  129. package/dist/maintenance/rebuild-memory-projection.js +4 -4
  130. package/dist/mcp-memory-inspector-app.d.ts +6 -6
  131. package/dist/memory-action-policy.d.ts +1 -1
  132. package/dist/memory-cache.d.ts +1 -1
  133. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  134. package/dist/memory-projection-store.d.ts +1 -1
  135. package/dist/memory-provenance.d.ts +1 -1
  136. package/dist/memory-worth-outcomes.d.ts +1 -1
  137. package/dist/models-json.d.ts +1 -1
  138. package/dist/namespaces/migrate.d.ts +2 -2
  139. package/dist/namespaces/migrate.js +4 -4
  140. package/dist/namespaces/principal.d.ts +1 -1
  141. package/dist/namespaces/search.d.ts +1 -1
  142. package/dist/namespaces/storage.d.ts +2 -2
  143. package/dist/namespaces/storage.js +3 -3
  144. package/dist/native-knowledge.d.ts +1 -1
  145. package/dist/operator-toolkit.d.ts +1 -1
  146. package/dist/operator-toolkit.js +9 -9
  147. package/dist/orchestration/maintenance.d.ts +2 -2
  148. package/dist/orchestration/maintenance.js +5 -5
  149. package/dist/{orchestrator-D4ovYV3x.d.ts → orchestrator-DsVKLEBk.d.ts} +3 -3
  150. package/dist/orchestrator.d.ts +4 -4
  151. package/dist/orchestrator.js +15 -15
  152. package/dist/patterns-cli.d.ts +1 -1
  153. package/dist/policy-runtime.d.ts +1 -1
  154. package/dist/provenance.d.ts +1 -1
  155. package/dist/qmd-recall-cache.d.ts +1 -1
  156. package/dist/qmd.d.ts +1 -1
  157. package/dist/recall-disclosure-escalation.d.ts +1 -1
  158. package/dist/recall-explain-renderer.d.ts +1 -1
  159. package/dist/recall-explain-renderer.js +3 -3
  160. package/dist/recall-planner-llm.d.ts +1 -1
  161. package/dist/recall-state.d.ts +1 -1
  162. package/dist/recall-tag-filter.d.ts +1 -1
  163. package/dist/recall-xray-cli.d.ts +1 -1
  164. package/dist/recall-xray-cli.js +4 -4
  165. package/dist/recall-xray-renderer.d.ts +1 -1
  166. package/dist/recall-xray-renderer.js +3 -3
  167. package/dist/recall-xray.d.ts +1 -1
  168. package/dist/recall-xray.js +2 -2
  169. package/dist/resolve-auth-token.d.ts +1 -1
  170. package/dist/resume-bundles.js +2 -2
  171. package/dist/retrieval-agents.d.ts +1 -1
  172. package/dist/retrieval-tiers.d.ts +1 -1
  173. package/dist/routing/engine.d.ts +1 -1
  174. package/dist/routing/store.d.ts +1 -1
  175. package/dist/schemas.d.ts +2 -2
  176. package/dist/search/embed-helper.d.ts +1 -1
  177. package/dist/search/factory.d.ts +1 -1
  178. package/dist/search/index.d.ts +1 -1
  179. package/dist/search/lancedb-backend.d.ts +1 -1
  180. package/dist/search/meilisearch-backend.d.ts +1 -1
  181. package/dist/search/noop-backend.d.ts +1 -1
  182. package/dist/search/orama-backend.d.ts +1 -1
  183. package/dist/search/port.d.ts +1 -1
  184. package/dist/search/remote-backend.d.ts +1 -1
  185. package/dist/{semantic-consolidation-DyMUCsfN.d.ts → semantic-consolidation-_hVxkTuF.d.ts} +1 -1
  186. package/dist/semantic-consolidation.d.ts +2 -2
  187. package/dist/semantic-consolidation.js +4 -4
  188. package/dist/semantic-rule-promotion.js +3 -3
  189. package/dist/semantic-rule-verifier.d.ts +1 -1
  190. package/dist/semantic-rule-verifier.js +3 -3
  191. package/dist/session-observer-bands.d.ts +1 -1
  192. package/dist/session-observer-state.d.ts +1 -1
  193. package/dist/shared-context/manager.d.ts +1 -1
  194. package/dist/signal.d.ts +1 -1
  195. package/dist/storage.d.ts +8 -1
  196. package/dist/storage.js +2 -2
  197. package/dist/summarizer.d.ts +1 -1
  198. package/dist/summary-snapshot.d.ts +1 -1
  199. package/dist/temporal-supersession.d.ts +1 -1
  200. package/dist/temporal-validity.d.ts +1 -1
  201. package/dist/threading.d.ts +1 -1
  202. package/dist/tier-migration.d.ts +1 -1
  203. package/dist/tier-routing.d.ts +1 -1
  204. package/dist/topics.d.ts +1 -1
  205. package/dist/transcript.d.ts +1 -1
  206. package/dist/transfer/types.d.ts +12 -12
  207. package/dist/{types-Couvz-L3.d.ts → types-DUK4vVnN.d.ts} +27 -0
  208. package/dist/types.d.ts +1 -1
  209. package/dist/types.js +1 -1
  210. package/dist/utility-runtime.d.ts +1 -1
  211. package/dist/verified-recall.js +3 -3
  212. package/package.json +2 -2
  213. package/src/access-boundary.ts +2 -0
  214. package/src/access-cli.ts +107 -2
  215. package/src/access-http.ts +70 -1
  216. package/src/access-mcp.ts +65 -0
  217. package/src/access-operations.ts +122 -0
  218. package/src/access-service.ts +92 -0
  219. package/src/access-surface-catalog.test.ts +6 -1
  220. package/src/access-surface-catalog.ts +7 -0
  221. package/src/cli.ts +1 -0
  222. package/src/config.test.ts +10 -0
  223. package/src/config.ts +43 -0
  224. package/src/correction/correction-access-wiring.ts +887 -0
  225. package/src/correction/correction-contract.ts +416 -0
  226. package/src/correction/correction-executor.test.ts +742 -0
  227. package/src/correction/correction-executor.ts +473 -0
  228. package/src/correction/correction-planner.test.ts +446 -0
  229. package/src/correction/correction-planner.ts +546 -0
  230. package/src/correction/correction-service.ts +180 -0
  231. package/src/correction/correction-surfaces.test.ts +245 -0
  232. package/src/correction/index.ts +43 -0
  233. package/src/storage.ts +10 -0
  234. package/src/types.ts +27 -0
  235. package/dist/chunk-24FGNOQS.js.map +0 -1
  236. package/dist/chunk-2VQYHHWB.js.map +0 -1
  237. package/dist/chunk-66TSLESZ.js.map +0 -1
  238. package/dist/chunk-EJDAXR7O.js.map +0 -1
  239. package/dist/chunk-MLLTU5FX.js.map +0 -1
  240. package/dist/chunk-STYMKPFT.js.map +0 -1
  241. package/dist/chunk-WQADZ3ZY.js.map +0 -1
  242. package/dist/chunk-WRGPE6AW.js.map +0 -1
  243. package/dist/chunk-WSWYIKXX.js.map +0 -1
  244. /package/dist/{chunk-PDJQVAGM.js.map → chunk-2T4TDXPC.js.map} +0 -0
  245. /package/dist/{chunk-W2WQ4LE7.js.map → chunk-35YJ6KCV.js.map} +0 -0
  246. /package/dist/{chunk-C63MK3WL.js.map → chunk-3TCRU4JA.js.map} +0 -0
  247. /package/dist/{chunk-GKI6LX5L.js.map → chunk-54TI5GLV.js.map} +0 -0
  248. /package/dist/{chunk-IVCQW4C4.js.map → chunk-7IBEWQLG.js.map} +0 -0
  249. /package/dist/{chunk-Y6YHAGQP.js.map → chunk-7NDYFAJS.js.map} +0 -0
  250. /package/dist/{chunk-SPETAWFE.js.map → chunk-AZVHBFI3.js.map} +0 -0
  251. /package/dist/{chunk-3PTOZJOI.js.map → chunk-BQCFXAMN.js.map} +0 -0
  252. /package/dist/{chunk-4E2QCH46.js.map → chunk-CNVIWMQI.js.map} +0 -0
  253. /package/dist/{chunk-4DZATVK5.js.map → chunk-CXMXAC5R.js.map} +0 -0
  254. /package/dist/{chunk-W2S3Z5MT.js.map → chunk-GMRNKPWO.js.map} +0 -0
  255. /package/dist/{chunk-HIV5E57C.js.map → chunk-HSDJCT3V.js.map} +0 -0
  256. /package/dist/{chunk-NM6TSEGQ.js.map → chunk-JNOYYWCA.js.map} +0 -0
  257. /package/dist/{chunk-IONFO7UK.js.map → chunk-JQ7XVM4V.js.map} +0 -0
  258. /package/dist/{chunk-WDH3KUZU.js.map → chunk-NXL5CVE7.js.map} +0 -0
  259. /package/dist/{chunk-BGAHTI4C.js.map → chunk-OK7FUX6R.js.map} +0 -0
  260. /package/dist/{chunk-MOXFPLD6.js.map → chunk-QXNFQKWU.js.map} +0 -0
  261. /package/dist/{chunk-MRX6ZXHZ.js.map → chunk-S6FQLQGH.js.map} +0 -0
  262. /package/dist/{chunk-6HPJMR5I.js.map → chunk-SKQCFAYU.js.map} +0 -0
  263. /package/dist/{chunk-N75N5SNX.js.map → chunk-XD33EX2F.js.map} +0 -0
  264. /package/dist/{chunk-ESMY4RJ4.js.map → chunk-XKU4YE6Z.js.map} +0 -0
  265. /package/dist/{chunk-XKMDDM7P.js.map → chunk-Y6PIFKXX.js.map} +0 -0
  266. /package/dist/{chunk-RH2OSRQY.js.map → chunk-Z56IHRVV.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  compareVerifiedSemanticRuleResults,
3
3
  searchVerifiedSemanticRules
4
- } from "./chunk-6HPJMR5I.js";
4
+ } from "./chunk-SKQCFAYU.js";
5
5
  import "./chunk-ZBJMUXZH.js";
6
- import "./chunk-2VQYHHWB.js";
6
+ import "./chunk-JSDZMOT7.js";
7
7
  import "./chunk-M7XQSUBB.js";
8
8
  import "./chunk-3JJWNZTT.js";
9
9
  import "./chunk-5UZXUTVO.js";
@@ -13,7 +13,7 @@ import "./chunk-6CIAGZ6X.js";
13
13
  import "./chunk-SVOZFLIQ.js";
14
14
  import "./chunk-LTJAMRGI.js";
15
15
  import "./chunk-J6A3CX5N.js";
16
- import "./chunk-MLLTU5FX.js";
16
+ import "./chunk-BOGENF7P.js";
17
17
  import "./chunk-RULE4VG5.js";
18
18
  import "./chunk-SCU65EZI.js";
19
19
  import "./chunk-MB5RSUW6.js";
@@ -1,4 +1,4 @@
1
- import { S as SessionObserverBandConfig } from './types-Couvz-L3.js';
1
+ import { S as SessionObserverBandConfig } from './types-DUK4vVnN.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { S as SessionObserverBandConfig } from './types-Couvz-L3.js';
1
+ import { S as SessionObserverBandConfig } from './types-DUK4vVnN.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { P as PluginConfig } from '../types-Couvz-L3.js';
2
+ import { P as PluginConfig } from '../types-DUK4vVnN.js';
3
3
  import '../types-gb_SNtjR.js';
4
4
  import '../message-parts/index.js';
5
5
 
package/dist/signal.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { al as SignalScanResult } from './types-Couvz-L3.js';
1
+ import { al as SignalScanResult } from './types-DUK4vVnN.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
package/dist/storage.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, h as MemoryStatus, M as MemoryCategory, a9 as ImportanceScore, ao as MemoryLink, k as MemoryFrontmatter, F as FaithfulnessFrontmatter, ai as ProvenanceSource, g as MemoryFile, $ as EntityStructuredSection, ap as BufferState, aq as MetaState, W as MemoryActionEvent, m as MemoryLifecycleEvent, z as BufferSurpriseEvent, B as BehaviorSignalEvent, X as CompressionGuidelineOptimizerState, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, a4 as ContinuityIncidentCloseInput, a6 as ContinuityImprovementLoop, a8 as ContinuityLoopUpsertInput, a7 as ContinuityLoopReviewInput, ar as FileHygieneConfig, as as EntityRelationship, at as EntityActivityEntry, E as EntityFile, au as AccessTrackingEntry, l as MemoryProjectionCurrentState, av as MemorySummary, an as TopicScore } from './types-Couvz-L3.js';
1
+ import { P as PluginConfig, h as MemoryStatus, M as MemoryCategory, a9 as ImportanceScore, ao as MemoryLink, k as MemoryFrontmatter, F as FaithfulnessFrontmatter, ai as ProvenanceSource, g as MemoryFile, $ as EntityStructuredSection, ap as BufferState, aq as MetaState, W as MemoryActionEvent, m as MemoryLifecycleEvent, z as BufferSurpriseEvent, B as BehaviorSignalEvent, X as CompressionGuidelineOptimizerState, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, a4 as ContinuityIncidentCloseInput, a6 as ContinuityImprovementLoop, a8 as ContinuityLoopUpsertInput, a7 as ContinuityLoopReviewInput, ar as FileHygieneConfig, as as EntityRelationship, at as EntityActivityEntry, E as EntityFile, au as AccessTrackingEntry, l as MemoryProjectionCurrentState, av as MemorySummary, an as TopicScore } from './types-DUK4vVnN.js';
2
2
  import { VersioningConfig } from './page-versioning.js';
3
3
  import { ConsolidationOperator } from './consolidation-operator.js';
4
4
  import { ProjectedMemoryBrowseOptions, ProjectedMemoryBrowsePage, readProjectedGovernanceRecord } from './memory-projection-store.js';
@@ -564,6 +564,13 @@ declare class StorageManager {
564
564
  * here was the original regression (the chokepoint threw and failed OPEN).
565
565
  */
566
566
  getTombstoneStore(): Promise<TombstoneStore>;
567
+ /**
568
+ * Whether tombstones are enabled on this storage. Callers that need to
569
+ * distinguish "tombstones disabled" (null return is expected) from
570
+ * "persistence failed" (appendTombstone swallows store errors and also
571
+ * returns null) use this to fail closed when enabled (#1580 review OgIqp).
572
+ */
573
+ isTombstonesEnabled(): boolean;
567
574
  /**
568
575
  * Append a tombstone for a retired memory (issue #1579 emitters).
569
576
  * Best-effort: a tombstone append failure MUST NOT fail the supersession /
package/dist/storage.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  normalizeEntityName,
9
9
  parseEntityFile,
10
10
  serializeEntityFile
11
- } from "./chunk-2VQYHHWB.js";
11
+ } from "./chunk-JSDZMOT7.js";
12
12
  import "./chunk-M7XQSUBB.js";
13
13
  import "./chunk-3JJWNZTT.js";
14
14
  import "./chunk-5UZXUTVO.js";
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-SVOZFLIQ.js";
21
21
  import "./chunk-LTJAMRGI.js";
22
22
  import "./chunk-J6A3CX5N.js";
23
- import "./chunk-MLLTU5FX.js";
23
+ import "./chunk-BOGENF7P.js";
24
24
  import "./chunk-RULE4VG5.js";
25
25
  import "./chunk-SCU65EZI.js";
26
26
  import "./chunk-MB5RSUW6.js";
@@ -1,5 +1,5 @@
1
1
  import { ModelRegistry } from './model-registry.js';
2
- import { P as PluginConfig, G as GatewayConfig, T as TranscriptEntry, H as HourlySummary } from './types-Couvz-L3.js';
2
+ import { P as PluginConfig, G as GatewayConfig, T as TranscriptEntry, H as HourlySummary } from './types-DUK4vVnN.js';
3
3
  import { TranscriptManager } from './transcript.js';
4
4
  import './types-gb_SNtjR.js';
5
5
  import './message-parts/index.js';
@@ -1,4 +1,4 @@
1
- import { H as HourlySummary } from './types-Couvz-L3.js';
1
+ import { H as HourlySummary } from './types-DUK4vVnN.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { k as MemoryFrontmatter } from './types-Couvz-L3.js';
1
+ import { k as MemoryFrontmatter } from './types-DUK4vVnN.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import './types-gb_SNtjR.js';
4
4
  import './message-parts/index.js';
@@ -1,4 +1,4 @@
1
- import { k as MemoryFrontmatter } from './types-Couvz-L3.js';
1
+ import { k as MemoryFrontmatter } from './types-DUK4vVnN.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { u as BufferTurn, am as ConversationThread } from './types-Couvz-L3.js';
1
+ import { u as BufferTurn, am as ConversationThread } from './types-DUK4vVnN.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-Couvz-L3.js';
1
+ import { g as MemoryFile } from './types-DUK4vVnN.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import { MemoryTier } from './tier-routing.js';
4
4
  import { SearchBackend } from './search/port.js';
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-Couvz-L3.js';
1
+ import { g as MemoryFile } from './types-DUK4vVnN.js';
2
2
  import { LifecycleSignals } from './lifecycle.js';
3
3
  import './types-gb_SNtjR.js';
4
4
  import './message-parts/index.js';
package/dist/topics.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile, an as TopicScore } from './types-Couvz-L3.js';
1
+ import { g as MemoryFile, an as TopicScore } from './types-DUK4vVnN.js';
2
2
  import './types-gb_SNtjR.js';
3
3
  import './message-parts/index.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, T as TranscriptEntry, v as Checkpoint } from './types-Couvz-L3.js';
1
+ import { P as PluginConfig, T as TranscriptEntry, v as Checkpoint } from './types-DUK4vVnN.js';
2
2
  import { SessionIntegrityReport } from './session-integrity.js';
3
3
  import './types-gb_SNtjR.js';
4
4
  import './message-parts/index.js';
@@ -321,8 +321,8 @@ declare const CapsuleBlockSchema: z.ZodObject<{
321
321
  peerProfiles: boolean;
322
322
  };
323
323
  id: string;
324
- description: string;
325
324
  version: string;
325
+ description: string;
326
326
  parentCapsule: string | null;
327
327
  parent: {
328
328
  version: string;
@@ -342,8 +342,8 @@ declare const CapsuleBlockSchema: z.ZodObject<{
342
342
  peerProfiles: boolean;
343
343
  };
344
344
  id: string;
345
- description: string;
346
345
  version: string;
346
+ description: string;
347
347
  parentCapsule: string | null;
348
348
  retrievalPolicy: {
349
349
  tierWeights: Record<string, number>;
@@ -472,8 +472,8 @@ declare const ExportManifestV2Schema: z.ZodObject<{
472
472
  peerProfiles: boolean;
473
473
  };
474
474
  id: string;
475
- description: string;
476
475
  version: string;
476
+ description: string;
477
477
  parentCapsule: string | null;
478
478
  parent: {
479
479
  version: string;
@@ -493,8 +493,8 @@ declare const ExportManifestV2Schema: z.ZodObject<{
493
493
  peerProfiles: boolean;
494
494
  };
495
495
  id: string;
496
- description: string;
497
496
  version: string;
497
+ description: string;
498
498
  parentCapsule: string | null;
499
499
  retrievalPolicy: {
500
500
  tierWeights: Record<string, number>;
@@ -526,8 +526,8 @@ declare const ExportManifestV2Schema: z.ZodObject<{
526
526
  peerProfiles: boolean;
527
527
  };
528
528
  id: string;
529
- description: string;
530
529
  version: string;
530
+ description: string;
531
531
  parentCapsule: string | null;
532
532
  parent: {
533
533
  version: string;
@@ -559,8 +559,8 @@ declare const ExportManifestV2Schema: z.ZodObject<{
559
559
  peerProfiles: boolean;
560
560
  };
561
561
  id: string;
562
- description: string;
563
562
  version: string;
563
+ description: string;
564
564
  parentCapsule: string | null;
565
565
  retrievalPolicy: {
566
566
  tierWeights: Record<string, number>;
@@ -691,8 +691,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
691
691
  peerProfiles: boolean;
692
692
  };
693
693
  id: string;
694
- description: string;
695
694
  version: string;
695
+ description: string;
696
696
  parentCapsule: string | null;
697
697
  parent: {
698
698
  version: string;
@@ -712,8 +712,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
712
712
  peerProfiles: boolean;
713
713
  };
714
714
  id: string;
715
- description: string;
716
715
  version: string;
716
+ description: string;
717
717
  parentCapsule: string | null;
718
718
  retrievalPolicy: {
719
719
  tierWeights: Record<string, number>;
@@ -745,8 +745,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
745
745
  peerProfiles: boolean;
746
746
  };
747
747
  id: string;
748
- description: string;
749
748
  version: string;
749
+ description: string;
750
750
  parentCapsule: string | null;
751
751
  parent: {
752
752
  version: string;
@@ -778,8 +778,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
778
778
  peerProfiles: boolean;
779
779
  };
780
780
  id: string;
781
- description: string;
782
781
  version: string;
782
+ description: string;
783
783
  parentCapsule: string | null;
784
784
  retrievalPolicy: {
785
785
  tierWeights: Record<string, number>;
@@ -827,8 +827,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
827
827
  peerProfiles: boolean;
828
828
  };
829
829
  id: string;
830
- description: string;
831
830
  version: string;
831
+ description: string;
832
832
  parentCapsule: string | null;
833
833
  parent: {
834
834
  version: string;
@@ -866,8 +866,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
866
866
  peerProfiles: boolean;
867
867
  };
868
868
  id: string;
869
- description: string;
870
869
  version: string;
870
+ description: string;
871
871
  parentCapsule: string | null;
872
872
  retrievalPolicy: {
873
873
  tierWeights: Record<string, number>;
@@ -1096,6 +1096,33 @@ interface PluginConfig {
1096
1096
  * deployments prefer the older (always-inject) behavior. Default `false`.
1097
1097
  */
1098
1098
  temporalExpiredInInjection: boolean;
1099
+ /**
1100
+ * Correction Contract (issue #1580) — one plan/apply pipeline for memory
1101
+ * corrections. Master visibility + enforcement gate for the
1102
+ * `memory_correct_plan` / `memory_correct_apply` tools. Default `true`:
1103
+ * planning is read-only (locates candidates + drafts a pending plan file)
1104
+ * and safe to ship on; `false` hides the tools and rejects runtime calls so
1105
+ * the surface cannot drift out of sync. Parsed from `correction.enabled`
1106
+ * (nested) or `correctionEnabled` (flat legacy).
1107
+ */
1108
+ correctionEnabled: boolean;
1109
+ /**
1110
+ * Whether `memory_correct_apply` requires an explicit `confirm: true` to
1111
+ * mutate memories. Default `true` (least-privileged). Parsed from
1112
+ * `correction.applyRequiresConfirm` / `correctionApplyRequiresConfirm`.
1113
+ */
1114
+ correctionApplyRequiresConfirm: boolean;
1115
+ /**
1116
+ * Max memories a single correction plan may touch; over-limit plans are
1117
+ * rejected, never silently truncated (review thread). Default `10`. Parsed
1118
+ * from `correction.maxAffected` / `correctionMaxAffected`.
1119
+ */
1120
+ correctionMaxAffected: number;
1121
+ /**
1122
+ * Plan time-to-live in hours; expired plans are rejected at apply. Default
1123
+ * `24`. Parsed from `correction.planTtlHours` / `correctionPlanTtlHours`.
1124
+ */
1125
+ correctionPlanTtlHours: number;
1099
1126
  /**
1100
1127
  * Master gate for the tombstone non-resurrection invariant. When `true`
1101
1128
  * (default), a fact that matches an active tombstone at the storage
package/dist/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import './types-gb_SNtjR.js';
2
2
  import './message-parts/index.js';
3
- export { au as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, J as AgentAccessAuthToken, b8 as AgentAccessHttpConfig, b9 as AgentDefaultsConfig, ba as AgentPersona, f as AgentPersonaModelConfig, bb as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, bc as BehaviorSignalDirection, B as BehaviorSignalEvent, bd as BehaviorSignalType, aH as BootstrapOptions, aI as BootstrapResult, r as BriefingActiveThread, be as BriefingCalendarSourceError, aU as BriefingConfig, p as BriefingFocus, o as BriefingFollowup, aV as BriefingOpenCommitment, t as BriefingRecentEntity, s as BriefingResult, n as BriefingSections, aW as BriefingWindow, bf as BufferEntryState, ap as BufferState, z as BufferSurpriseEvent, u as BufferTurn, q as CalendarEvent, C as CalendarSource, bg as CaptureMode, v as Checkpoint, bh as CodexCliReasoningEffort, bi as CodexCompactionFlushMode, aX as CodexCompatConfig, bj as CodexConnectorConfig, aG as CodingContext, bk as CodingKnowledgeConfig, aR as CodingModeConfig, bl as CompressionGuidelineActivationState, N as CompressionGuidelineOptimizerActionSummary, K as CompressionGuidelineOptimizerEventCounts, O as CompressionGuidelineOptimizerRuleUpdate, bm as CompressionGuidelineOptimizerSourceWindow, X as CompressionGuidelineOptimizerState, bn as ConfidenceTier, bo as ConsolidationAction, bp as ConsolidationItem, aJ as ConsolidationObservation, a1 as ConsolidationResult, a6 as ContinuityImprovementLoop, a4 as ContinuityIncidentCloseInput, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, bq as ContinuityIncidentState, br as ContinuityLoopCadence, a7 as ContinuityLoopReviewInput, bs as ContinuityLoopStatus, a8 as ContinuityLoopUpsertInput, bt as ContradictionScanConfig, am as ConversationThread, bu as CronConversationRecallMode, bv as CronRecallMode, aY as DEFAULT_RECALL_DISCLOSURE, a2 as DaySummaryResult, bw as DreamingConfig, bx as DreamingNarrativePromptStyle, by as DreamsDeepSleepConfig, bz as DreamsLightSleepConfig, aP as DreamsPhase, bA as DreamsPhaseStatus, bB as DreamsPhasesConfig, bC as DreamsRemConfig, aQ as DreamsRunResult, aO as DreamsStatusResult, bD as EngramTraceEvent, at as EntityActivityEntry, E as EntityFile, Y as EntityMention, as as EntityRelationship, Z as EntitySchemaDefinition, _ as EntitySchemaSectionDefinition, $ as EntityStructuredSection, aK as EntityTimelineEntry, aZ as ExtractedFact, bE as ExtractedProcedureStep, bF as ExtractedQuestion, bG as ExtractedReasoningTrace, bH as ExtractedReasoningTraceStep, bI as ExtractedRelationship, bJ as ExtractionPassSource, a0 as ExtractionResult, F as FaithfulnessFrontmatter, ar as FileHygieneConfig, G as GatewayConfig, bK as GitHubLiveConnectorConfig, bL as GmailLiveConnectorConfig, bM as GoogleDriveLiveConnectorConfig, bN as HeartbeatConfig, bO as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, y as ImportanceLevel, a9 as ImportanceScore, w as LifecycleState, L as LiveConnectorsConfig, bP as LlmTraceCallback, bQ as LlmTraceEvent, ac as MemoryActionEligibilityContext, a_ as MemoryActionEligibilitySource, W as MemoryActionEvent, bR as MemoryActionOutcome, bS as MemoryActionPolicyDecision, ad as MemoryActionPolicyResult, bT as MemoryActionStatus, U as MemoryActionType, M as MemoryCategory, g as MemoryFile, k as MemoryFrontmatter, aa as MemoryIntent, m as MemoryLifecycleEvent, ae as MemoryLifecycleEventType, af as MemoryLifecycleStateSummary, ao as MemoryLink, bU as MemoryLinkType, a$ as MemoryObservation, bV as MemoryOsPresetName, l as MemoryProjectionCurrentState, b0 as MemoryScope, h as MemoryStatus, av as MemorySummary, aq as MetaState, bW as ModelApi, bX as ModelDefinitionConfig, bY as ModelProviderAuthMode, ag as ModelProviderConfig, bZ as NamespacePolicy, ah as NativeKnowledgeConfig, b_ as NativeKnowledgeFolderRuleConfig, b$ as NativeKnowledgeObsidianVaultConfig, c0 as NativeKnowledgeOpenClawWorkspaceConfig, c1 as NotionLiveConnectorConfig, P as PluginConfig, x as PolicyClass, c2 as PrincipalFromSessionKeyMode, c3 as PrincipalRule, c4 as ProceduralConfig, aj as ProvenanceConfig, ai as ProvenanceSource, ab as QmdSearchExplain, Q as QmdSearchResult, c5 as QuestionEntry, b1 as RECALL_DISCLOSURE_LEVELS, c6 as ReasoningEffort, j as RecallDisclosure, c7 as RecallPipelineConfig, i as RecallPlanMode, c8 as RecallSectionConfig, R as RecallTierExplain, c9 as RecallTraceEvent, ca as RelevanceFeedback, ak as RetrievalTier, cb as SPECULATIVE_TTL_DAYS, cc as ScopeProfileAutoPromoteConfig, aN as ScopeProfileConfig, aL as ScopeProfileLayerId, aM as ScopeProfilePromotionTarget, cd as ScopeProfileTeamProjectConfig, ce as ScopeTeamConfig, cf as ScoredEntity, D as SecretRef, cg as SemanticChunkingConfigShape, S as SessionObserverBandConfig, ch as SignalLevel, al as SignalScanResult, ci as SlotBehaviorConfig, cj as SlotMismatchMode, an as TopicScore, T as TranscriptEntry, ck as TriggerMode, V as VerificationState, cl as confidenceTier, b7 as isRecallDisclosure } from './types-Couvz-L3.js';
3
+ export { au as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, J as AgentAccessAuthToken, b8 as AgentAccessHttpConfig, b9 as AgentDefaultsConfig, ba as AgentPersona, f as AgentPersonaModelConfig, bb as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, bc as BehaviorSignalDirection, B as BehaviorSignalEvent, bd as BehaviorSignalType, aH as BootstrapOptions, aI as BootstrapResult, r as BriefingActiveThread, be as BriefingCalendarSourceError, aU as BriefingConfig, p as BriefingFocus, o as BriefingFollowup, aV as BriefingOpenCommitment, t as BriefingRecentEntity, s as BriefingResult, n as BriefingSections, aW as BriefingWindow, bf as BufferEntryState, ap as BufferState, z as BufferSurpriseEvent, u as BufferTurn, q as CalendarEvent, C as CalendarSource, bg as CaptureMode, v as Checkpoint, bh as CodexCliReasoningEffort, bi as CodexCompactionFlushMode, aX as CodexCompatConfig, bj as CodexConnectorConfig, aG as CodingContext, bk as CodingKnowledgeConfig, aR as CodingModeConfig, bl as CompressionGuidelineActivationState, N as CompressionGuidelineOptimizerActionSummary, K as CompressionGuidelineOptimizerEventCounts, O as CompressionGuidelineOptimizerRuleUpdate, bm as CompressionGuidelineOptimizerSourceWindow, X as CompressionGuidelineOptimizerState, bn as ConfidenceTier, bo as ConsolidationAction, bp as ConsolidationItem, aJ as ConsolidationObservation, a1 as ConsolidationResult, a6 as ContinuityImprovementLoop, a4 as ContinuityIncidentCloseInput, a5 as ContinuityIncidentOpenInput, a3 as ContinuityIncidentRecord, bq as ContinuityIncidentState, br as ContinuityLoopCadence, a7 as ContinuityLoopReviewInput, bs as ContinuityLoopStatus, a8 as ContinuityLoopUpsertInput, bt as ContradictionScanConfig, am as ConversationThread, bu as CronConversationRecallMode, bv as CronRecallMode, aY as DEFAULT_RECALL_DISCLOSURE, a2 as DaySummaryResult, bw as DreamingConfig, bx as DreamingNarrativePromptStyle, by as DreamsDeepSleepConfig, bz as DreamsLightSleepConfig, aP as DreamsPhase, bA as DreamsPhaseStatus, bB as DreamsPhasesConfig, bC as DreamsRemConfig, aQ as DreamsRunResult, aO as DreamsStatusResult, bD as EngramTraceEvent, at as EntityActivityEntry, E as EntityFile, Y as EntityMention, as as EntityRelationship, Z as EntitySchemaDefinition, _ as EntitySchemaSectionDefinition, $ as EntityStructuredSection, aK as EntityTimelineEntry, aZ as ExtractedFact, bE as ExtractedProcedureStep, bF as ExtractedQuestion, bG as ExtractedReasoningTrace, bH as ExtractedReasoningTraceStep, bI as ExtractedRelationship, bJ as ExtractionPassSource, a0 as ExtractionResult, F as FaithfulnessFrontmatter, ar as FileHygieneConfig, G as GatewayConfig, bK as GitHubLiveConnectorConfig, bL as GmailLiveConnectorConfig, bM as GoogleDriveLiveConnectorConfig, bN as HeartbeatConfig, bO as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, y as ImportanceLevel, a9 as ImportanceScore, w as LifecycleState, L as LiveConnectorsConfig, bP as LlmTraceCallback, bQ as LlmTraceEvent, ac as MemoryActionEligibilityContext, a_ as MemoryActionEligibilitySource, W as MemoryActionEvent, bR as MemoryActionOutcome, bS as MemoryActionPolicyDecision, ad as MemoryActionPolicyResult, bT as MemoryActionStatus, U as MemoryActionType, M as MemoryCategory, g as MemoryFile, k as MemoryFrontmatter, aa as MemoryIntent, m as MemoryLifecycleEvent, ae as MemoryLifecycleEventType, af as MemoryLifecycleStateSummary, ao as MemoryLink, bU as MemoryLinkType, a$ as MemoryObservation, bV as MemoryOsPresetName, l as MemoryProjectionCurrentState, b0 as MemoryScope, h as MemoryStatus, av as MemorySummary, aq as MetaState, bW as ModelApi, bX as ModelDefinitionConfig, bY as ModelProviderAuthMode, ag as ModelProviderConfig, bZ as NamespacePolicy, ah as NativeKnowledgeConfig, b_ as NativeKnowledgeFolderRuleConfig, b$ as NativeKnowledgeObsidianVaultConfig, c0 as NativeKnowledgeOpenClawWorkspaceConfig, c1 as NotionLiveConnectorConfig, P as PluginConfig, x as PolicyClass, c2 as PrincipalFromSessionKeyMode, c3 as PrincipalRule, c4 as ProceduralConfig, aj as ProvenanceConfig, ai as ProvenanceSource, ab as QmdSearchExplain, Q as QmdSearchResult, c5 as QuestionEntry, b1 as RECALL_DISCLOSURE_LEVELS, c6 as ReasoningEffort, j as RecallDisclosure, c7 as RecallPipelineConfig, i as RecallPlanMode, c8 as RecallSectionConfig, R as RecallTierExplain, c9 as RecallTraceEvent, ca as RelevanceFeedback, ak as RetrievalTier, cb as SPECULATIVE_TTL_DAYS, cc as ScopeProfileAutoPromoteConfig, aN as ScopeProfileConfig, aL as ScopeProfileLayerId, aM as ScopeProfilePromotionTarget, cd as ScopeProfileTeamProjectConfig, ce as ScopeTeamConfig, cf as ScoredEntity, D as SecretRef, cg as SemanticChunkingConfigShape, S as SessionObserverBandConfig, ch as SignalLevel, al as SignalScanResult, ci as SlotBehaviorConfig, cj as SlotMismatchMode, an as TopicScore, T as TranscriptEntry, ck as TriggerMode, V as VerificationState, cl as confidenceTier, b7 as isRecallDisclosure } from './types-DUK4vVnN.js';
package/dist/types.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  SPECULATIVE_TTL_DAYS,
5
5
  confidenceTier,
6
6
  isRecallDisclosure
7
- } from "./chunk-MLLTU5FX.js";
7
+ } from "./chunk-BOGENF7P.js";
8
8
  import "./chunk-PZ5AY32C.js";
9
9
  export {
10
10
  DEFAULT_RECALL_DISCLOSURE,
@@ -1,5 +1,5 @@
1
1
  import { TierRoutingPolicy } from './tier-routing.js';
2
- import './types-Couvz-L3.js';
2
+ import './types-DUK4vVnN.js';
3
3
  import './types-gb_SNtjR.js';
4
4
  import './message-parts/index.js';
5
5
  import './lifecycle.js';
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  compareVerifiedEpisodeResults,
3
3
  searchVerifiedEpisodes
4
- } from "./chunk-MRX6ZXHZ.js";
4
+ } from "./chunk-S6FQLQGH.js";
5
5
  import "./chunk-7FL4CNPV.js";
6
6
  import "./chunk-ZBJMUXZH.js";
7
- import "./chunk-2VQYHHWB.js";
7
+ import "./chunk-JSDZMOT7.js";
8
8
  import "./chunk-M7XQSUBB.js";
9
9
  import "./chunk-3JJWNZTT.js";
10
10
  import "./chunk-5UZXUTVO.js";
@@ -14,7 +14,7 @@ import "./chunk-6CIAGZ6X.js";
14
14
  import "./chunk-SVOZFLIQ.js";
15
15
  import "./chunk-LTJAMRGI.js";
16
16
  import "./chunk-J6A3CX5N.js";
17
- import "./chunk-MLLTU5FX.js";
17
+ import "./chunk-BOGENF7P.js";
18
18
  import "./chunk-RULE4VG5.js";
19
19
  import "./chunk-SCU65EZI.js";
20
20
  import "./chunk-MB5RSUW6.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.3.708",
3
+ "version": "9.3.709",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2966,7 +2966,7 @@
2966
2966
  "core"
2967
2967
  ],
2968
2968
  "peerDependencies": {
2969
- "@remnic/coding-graph": "^9.3.708"
2969
+ "@remnic/coding-graph": "^9.3.709"
2970
2970
  },
2971
2971
  "peerDependenciesMeta": {
2972
2972
  "@remnic/coding-graph": {
@@ -53,6 +53,8 @@ export type OperationName =
53
53
  | "codegraph_search_code"
54
54
  | "codegraph_manage_adr"
55
55
  | "codegraph_ingest_traces"
56
+ | "memory_correct_plan"
57
+ | "memory_correct_apply"
56
58
  | "coding_delta"
57
59
  // Remaining MCP/HTTP handlers migrated through the boundary (issue #1525).
58
60
  | "recall"
package/src/access-cli.ts CHANGED
@@ -15,7 +15,7 @@ import { projectTagProjectId } from "./coding/coding-namespace.js";
15
15
 
16
16
  const OPENCLAW_REMNIC_PLUGIN_IDS = ["openclaw-remnic", "openclaw-engram"] as const;
17
17
 
18
- type CommandName = "browse" | "store" | "decision" | "architecture" | "delta";
18
+ type CommandName = "browse" | "store" | "decision" | "architecture" | "delta" | "correct";
19
19
 
20
20
  type ParsedArgs = {
21
21
  command: CommandName;
@@ -139,6 +139,7 @@ function usage(): string {
139
139
  " engram-access decision [options]",
140
140
  " engram-access architecture [options]",
141
141
  " engram-access delta [options]",
142
+ " engram-access correct [options]",
142
143
  "",
143
144
  "Browse options:",
144
145
  " --namespace <name>",
@@ -186,6 +187,18 @@ function usage(): string {
186
187
  " --principal <principal>",
187
188
  " --project-tag <tag> (attach coding context for this invocation)",
188
189
  " --repo-root <path> (repo to scan for refresh; defaults to the current directory)",
190
+ "",
191
+ "Correct options (issue #1580 — one plan/apply pipeline for all corrections):",
192
+ " --text \"<correction>\" plan a correction from natural language",
193
+ " --id <memoryId> (repeatable) explicit target memory ids",
194
+ " --apply apply a pending plan (requires --plan-id + --confirm)",
195
+ " --plan-id <id> the plan to apply or discard",
196
+ " --confirm confirm the apply (safety guard, rule 48)",
197
+ " --list list pending plans",
198
+ " --discard discard a pending plan (requires --plan-id)",
199
+ " --namespace <name> namespace (validated by policy)",
200
+ " --session-key <key> session identifier for namespace resolution",
201
+ " --principal <principal>",
189
202
  ].join("\n");
190
203
  }
191
204
 
@@ -260,6 +273,17 @@ const COMMAND_SPECS: Record<CommandName, CommandSpec> = {
260
273
  ]),
261
274
  flagOptions: new Set(),
262
275
  },
276
+ correct: {
277
+ valueOptions: new Set([
278
+ "text",
279
+ "id",
280
+ "plan-id",
281
+ "namespace",
282
+ "session-key",
283
+ "principal",
284
+ ]),
285
+ flagOptions: new Set(["apply", "list", "discard", "confirm", "yes"]),
286
+ },
263
287
  };
264
288
  const BROWSE_SORT_VALUES = Object.freeze([
265
289
  "updated_desc",
@@ -277,7 +301,7 @@ type BrowseSort = (typeof BROWSE_SORT_VALUES)[number];
277
301
  * `command: commandRaw` assignment below (codex review P2).
278
302
  */
279
303
  function isCommandName(value: string): value is CommandName {
280
- return value === "browse" || value === "store" || value === "decision" || value === "architecture" || value === "delta";
304
+ return value === "browse" || value === "store" || value === "decision" || value === "architecture" || value === "delta" || value === "correct";
281
305
  }
282
306
 
283
307
  function parseArgs(argv: string[]): ParsedArgs {
@@ -695,6 +719,83 @@ async function runDelta(args: ParsedArgs, preferredId?: string): Promise<void> {
695
719
  console.log(JSON.stringify(output.result, null, 2));
696
720
  }
697
721
 
722
+ /**
723
+ * Correction Contract surface (issue #1580). Dispatches through the same
724
+ * `memory_correct_plan` / `memory_correct_apply` operations as the MCP tool
725
+ * and HTTP route — one validation boundary, three transports.
726
+ *
727
+ * Modes:
728
+ * remnic correct "<text>" [--id <id>...] → plan + print diff
729
+ * remnic correct --apply <planId> [--confirm] → apply a pending plan
730
+ * remnic correct --list → list pending plans
731
+ * remnic correct --discard <planId> → discard a pending plan
732
+ */
733
+ async function runCorrect(args: ParsedArgs, preferredId?: string): Promise<void> {
734
+ const { config, service } = buildRuntime(preferredId);
735
+ const principal = getLastOption(args, "principal") ?? config.agentAccessHttp.principal;
736
+ const namespace = getLastOption(args, "namespace");
737
+ const sessionKey = getLastOption(args, "session-key");
738
+
739
+ if (args.flags.has("list")) {
740
+ const plans = await service.correctionListPending({
741
+ ...(namespace ? { namespace } : {}),
742
+ ...(sessionKey ? { sessionKey } : {}),
743
+ principal,
744
+ });
745
+ console.log(JSON.stringify(plans, null, 2));
746
+ return;
747
+ }
748
+
749
+ if (args.flags.has("discard")) {
750
+ const planId = requireOption(args, "plan-id");
751
+ await service.correctionDiscard(planId, {
752
+ ...(namespace ? { namespace } : {}),
753
+ ...(sessionKey ? { sessionKey } : {}),
754
+ principal,
755
+ });
756
+ console.log(JSON.stringify({ discarded: planId }));
757
+ return;
758
+ }
759
+
760
+ if (args.flags.has("apply")) {
761
+ const planId = requireOption(args, "plan-id");
762
+ const op = getOperation("memory_correct_apply");
763
+ if (!op) {
764
+ throw new Error("access-boundary: operation not registered: memory_correct_apply");
765
+ }
766
+ const output = (await op.run(
767
+ {
768
+ planId,
769
+ confirm: args.flags.has("confirm") || args.flags.has("yes"),
770
+ ...(sessionKey ? { sessionKey } : {}),
771
+ ...(namespace ? { namespace } : {}),
772
+ },
773
+ { service, authenticatedPrincipal: principal },
774
+ )) as { result: unknown };
775
+ console.log(JSON.stringify(output.result, null, 2));
776
+ return;
777
+ }
778
+
779
+ // Default mode: plan from text — dispatch through the boundary operation
780
+ // so schema validation + namespace policy reach this path (same as MCP/HTTP).
781
+ const text = requireOption(args, "text");
782
+ const targetIds = getAllOptions(args, "id");
783
+ const planOp = getOperation("memory_correct_plan");
784
+ if (!planOp) {
785
+ throw new Error("access-boundary: operation not registered: memory_correct_plan");
786
+ }
787
+ const planOutput = (await planOp.run(
788
+ {
789
+ text,
790
+ ...(targetIds.length > 0 ? { targetIds } : {}),
791
+ ...(sessionKey ? { sessionKey } : {}),
792
+ ...(namespace ? { namespace } : {}),
793
+ },
794
+ { service, authenticatedPrincipal: principal },
795
+ )) as { result: unknown };
796
+ console.log(JSON.stringify(planOutput.result, null, 2));
797
+ }
798
+
698
799
  export async function main(
699
800
  argv: string[] = process.argv.slice(2),
700
801
  options: AccessCliOptions = {},
@@ -716,6 +817,10 @@ export async function main(
716
817
  await runDelta(args, options.preferredId);
717
818
  return;
718
819
  }
820
+ if (args.command === "correct") {
821
+ await runCorrect(args, options.preferredId);
822
+ return;
823
+ }
719
824
  await runStore(args, options.preferredId);
720
825
  }
721
826