@remnic/core 9.3.692 → 9.3.694

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 (268) hide show
  1. package/dist/access-boundary.d.ts +6 -6
  2. package/dist/access-boundary.js +11 -9
  3. package/dist/access-cli.js +76 -23
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +5 -5
  6. package/dist/access-http.js +14 -12
  7. package/dist/access-mcp.d.ts +14 -5
  8. package/dist/access-mcp.js +13 -11
  9. package/dist/access-operations.d.ts +54 -7
  10. package/dist/access-operations.js +42 -10
  11. package/dist/{access-service-DvApf9LZ.d.ts → access-service-Ceq4TdPO.d.ts} +180 -3
  12. package/dist/access-service.d.ts +5 -5
  13. package/dist/access-service.js +10 -8
  14. package/dist/access-surface-catalog.d.ts +5 -5
  15. package/dist/access-surface-catalog.js +17 -0
  16. package/dist/access-surface-catalog.js.map +1 -1
  17. package/dist/action-confidence.d.ts +1 -1
  18. package/dist/active-memory-bridge.d.ts +1 -1
  19. package/dist/active-recall.d.ts +1 -1
  20. package/dist/active-recall.js +1 -1
  21. package/dist/behavior-learner.d.ts +1 -1
  22. package/dist/behavior-signals.d.ts +1 -1
  23. package/dist/bootstrap.d.ts +4 -4
  24. package/dist/briefing.d.ts +1 -1
  25. package/dist/briefing.js +3 -3
  26. package/dist/buffer-surprise-report.d.ts +1 -1
  27. package/dist/buffer.d.ts +1 -1
  28. package/dist/calibration.d.ts +1 -1
  29. package/dist/capabilities.d.ts +1 -1
  30. package/dist/{catalog-BEWLjdOr.d.ts → catalog-Tkb991rg.d.ts} +1 -1
  31. package/dist/causal-behavior.d.ts +1 -1
  32. package/dist/causal-consolidation.d.ts +1 -1
  33. package/dist/causal-consolidation.js +4 -4
  34. package/dist/{chunk-ADUAF5EV.js → chunk-24FCDBJV.js} +2 -2
  35. package/dist/{chunk-V56S3A23.js → chunk-5A35EGHM.js} +1092 -29
  36. package/dist/chunk-5A35EGHM.js.map +1 -0
  37. package/dist/{chunk-3VVH6ZQW.js → chunk-5S53ZBPH.js} +2 -2
  38. package/dist/{chunk-DO7MDZMU.js → chunk-6C4WHMKV.js} +123 -7
  39. package/dist/chunk-6C4WHMKV.js.map +1 -0
  40. package/dist/{chunk-2D27ODNX.js → chunk-B55EAZNF.js} +2 -2
  41. package/dist/{chunk-W4MICQIZ.js → chunk-C5AOVGVC.js} +15 -15
  42. package/dist/chunk-CDOIDOTQ.js +381 -0
  43. package/dist/chunk-CDOIDOTQ.js.map +1 -0
  44. package/dist/{chunk-UOCLRM74.js → chunk-D7PQ7HZL.js} +2 -2
  45. package/dist/{chunk-HXNMDPHN.js → chunk-DT2ZGQT7.js} +2 -2
  46. package/dist/{chunk-QFG23CRE.js → chunk-EPVIBPVE.js} +2 -2
  47. package/dist/{chunk-O4ZIV62T.js → chunk-FCH766FX.js} +21 -19
  48. package/dist/chunk-FCH766FX.js.map +1 -0
  49. package/dist/{chunk-7MOTEVAA.js → chunk-HRUULBBV.js} +3 -1
  50. package/dist/chunk-HRUULBBV.js.map +1 -0
  51. package/dist/{chunk-U2OBZSGG.js → chunk-IZLNJYLX.js} +2 -2
  52. package/dist/{chunk-KYH53EFD.js → chunk-JIKBEDSB.js} +6 -6
  53. package/dist/{chunk-3BRA3N5A.js → chunk-KCRV3HVN.js} +2 -2
  54. package/dist/{chunk-AFWEUTMS.js → chunk-MOGFK2DU.js} +2 -2
  55. package/dist/{chunk-SAC5V6JT.js → chunk-MSUA4KAK.js} +2 -2
  56. package/dist/{chunk-VFVG4NS2.js → chunk-NXNUG7IA.js} +2 -2
  57. package/dist/{chunk-66HROLW5.js → chunk-P7IDNF7H.js} +2 -2
  58. package/dist/{chunk-FM7KLRKN.js → chunk-PILLH262.js} +2 -2
  59. package/dist/{chunk-UTUYAPLY.js → chunk-PNW4KKJX.js} +12 -3
  60. package/dist/{chunk-UTUYAPLY.js.map → chunk-PNW4KKJX.js.map} +1 -1
  61. package/dist/{chunk-2EN5WZQB.js → chunk-PQP6MFPL.js} +2 -2
  62. package/dist/chunk-PQP6MFPL.js.map +1 -0
  63. package/dist/{chunk-6C2BMUZA.js → chunk-QXWQ5V24.js} +2 -2
  64. package/dist/{chunk-SEK4XIDN.js → chunk-SJGTY2TW.js} +35 -9
  65. package/dist/chunk-SJGTY2TW.js.map +1 -0
  66. package/dist/{chunk-4IQNAOP3.js → chunk-SN5DFE34.js} +2 -2
  67. package/dist/{chunk-DQHZA7Y3.js → chunk-U62ZGWU7.js} +1 -1
  68. package/dist/chunk-U62ZGWU7.js.map +1 -0
  69. package/dist/{chunk-WIKNVFBS.js → chunk-UX5QTAFE.js} +2 -2
  70. package/dist/chunk-VQ7B2Q6M.js +112 -0
  71. package/dist/chunk-VQ7B2Q6M.js.map +1 -0
  72. package/dist/{chunk-MCV2DD6F.js → chunk-WVTNZUER.js} +2 -2
  73. package/dist/{chunk-ZLXGFAML.js → chunk-YI3KC2B5.js} +2 -2
  74. package/dist/{chunk-W4ELOUNX.js → chunk-YWYZPKK3.js} +2 -2
  75. package/dist/{chunk-NUZ3N445.js → chunk-YXZPKBFW.js} +3 -3
  76. package/dist/{chunk-GCOSQBQ2.js → chunk-ZKD3UVEO.js} +3 -3
  77. package/dist/{cli-BjsY9Le7.d.ts → cli-CxtZyBLl.d.ts} +3 -3
  78. package/dist/cli.d.ts +6 -6
  79. package/dist/cli.js +28 -26
  80. package/dist/coding/optional-coding-graph.js +7 -104
  81. package/dist/coding/optional-coding-graph.js.map +1 -1
  82. package/dist/compounding/engine.d.ts +1 -1
  83. package/dist/compounding/engine.js +3 -3
  84. package/dist/compounding/preference-consolidator.d.ts +1 -1
  85. package/dist/compression-optimizer.d.ts +1 -1
  86. package/dist/config.d.ts +1 -1
  87. package/dist/config.js +1 -1
  88. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  89. package/dist/connectors/codex-materialize-runner.js +3 -3
  90. package/dist/connectors/codex-materialize.d.ts +1 -1
  91. package/dist/connectors/index.d.ts +1 -1
  92. package/dist/connectors/index.js +3 -3
  93. package/dist/consolidation-provenance-check.d.ts +1 -1
  94. package/dist/consolidation-undo.d.ts +1 -1
  95. package/dist/contradiction/index.d.ts +1 -1
  96. package/dist/conversation-index/backend.d.ts +1 -1
  97. package/dist/conversation-index/chunker.d.ts +1 -1
  98. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  99. package/dist/conversation-index/indexer.d.ts +1 -1
  100. package/dist/conversation-index/search.d.ts +1 -1
  101. package/dist/day-summary.d.ts +1 -1
  102. package/dist/delinearize.d.ts +1 -1
  103. package/dist/direct-answer-wiring.d.ts +1 -1
  104. package/dist/direct-answer.d.ts +1 -1
  105. package/dist/embedding-fallback.d.ts +1 -1
  106. package/dist/enrichment/index.d.ts +1 -1
  107. package/dist/entity-retrieval.d.ts +1 -1
  108. package/dist/entity-retrieval.js +3 -3
  109. package/dist/entity-schema.d.ts +1 -1
  110. package/dist/explicit-capture.d.ts +4 -4
  111. package/dist/extraction-judge-telemetry.d.ts +1 -1
  112. package/dist/extraction-judge-training.d.ts +1 -1
  113. package/dist/extraction-judge.d.ts +1 -1
  114. package/dist/extraction.d.ts +1 -1
  115. package/dist/fallback-llm.d.ts +1 -1
  116. package/dist/identity-continuity.d.ts +1 -1
  117. package/dist/importance.d.ts +1 -1
  118. package/dist/index.d.ts +9 -9
  119. package/dist/index.js +37 -36
  120. package/dist/index.js.map +1 -1
  121. package/dist/intent.d.ts +1 -1
  122. package/dist/lcm/engine.d.ts +1 -1
  123. package/dist/lcm/index.d.ts +1 -1
  124. package/dist/lcm/tools.d.ts +1 -1
  125. package/dist/lifecycle.d.ts +1 -1
  126. package/dist/live-connectors-runner.d.ts +1 -1
  127. package/dist/local-llm.d.ts +1 -1
  128. package/dist/maintenance/memory-governance.d.ts +1 -1
  129. package/dist/maintenance/memory-governance.js +3 -3
  130. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  131. package/dist/maintenance/rebuild-memory-projection.js +4 -4
  132. package/dist/mcp-memory-inspector-app.d.ts +5 -5
  133. package/dist/memory-action-policy.d.ts +1 -1
  134. package/dist/memory-cache.d.ts +1 -1
  135. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  136. package/dist/memory-projection-store.d.ts +1 -1
  137. package/dist/memory-provenance.d.ts +1 -1
  138. package/dist/memory-worth-outcomes.d.ts +1 -1
  139. package/dist/models-json.d.ts +1 -1
  140. package/dist/namespaces/migrate.d.ts +2 -2
  141. package/dist/namespaces/migrate.js +4 -4
  142. package/dist/namespaces/principal.d.ts +1 -1
  143. package/dist/namespaces/search.d.ts +1 -1
  144. package/dist/namespaces/storage.d.ts +2 -2
  145. package/dist/namespaces/storage.js +3 -3
  146. package/dist/native-knowledge.d.ts +1 -1
  147. package/dist/operator-toolkit.d.ts +1 -1
  148. package/dist/operator-toolkit.js +9 -9
  149. package/dist/orchestration/maintenance.d.ts +2 -2
  150. package/dist/orchestration/maintenance.js +5 -5
  151. package/dist/{orchestrator-CNJCYjZ1.d.ts → orchestrator-CnbxRQs8.d.ts} +3 -3
  152. package/dist/orchestrator.d.ts +4 -4
  153. package/dist/orchestrator.js +16 -16
  154. package/dist/patterns-cli.d.ts +1 -1
  155. package/dist/policy-runtime.d.ts +1 -1
  156. package/dist/provenance.d.ts +1 -1
  157. package/dist/qmd-recall-cache.d.ts +1 -1
  158. package/dist/qmd.d.ts +1 -1
  159. package/dist/recall-disclosure-escalation.d.ts +1 -1
  160. package/dist/recall-explain-renderer.d.ts +1 -1
  161. package/dist/recall-explain-renderer.js +3 -3
  162. package/dist/recall-planner-llm.d.ts +1 -1
  163. package/dist/recall-state.d.ts +1 -1
  164. package/dist/recall-tag-filter.d.ts +1 -1
  165. package/dist/recall-xray-cli.d.ts +1 -1
  166. package/dist/recall-xray-cli.js +4 -4
  167. package/dist/recall-xray-renderer.d.ts +1 -1
  168. package/dist/recall-xray-renderer.js +3 -3
  169. package/dist/recall-xray.d.ts +1 -1
  170. package/dist/recall-xray.js +2 -2
  171. package/dist/resolve-auth-token.d.ts +1 -1
  172. package/dist/resume-bundles.js +2 -2
  173. package/dist/retrieval-agents.d.ts +1 -1
  174. package/dist/retrieval-tiers.d.ts +1 -1
  175. package/dist/routing/engine.d.ts +1 -1
  176. package/dist/routing/store.d.ts +1 -1
  177. package/dist/schemas.d.ts +28 -28
  178. package/dist/search/embed-helper.d.ts +1 -1
  179. package/dist/search/factory.d.ts +1 -1
  180. package/dist/search/index.d.ts +1 -1
  181. package/dist/search/lancedb-backend.d.ts +1 -1
  182. package/dist/search/meilisearch-backend.d.ts +1 -1
  183. package/dist/search/noop-backend.d.ts +1 -1
  184. package/dist/search/orama-backend.d.ts +1 -1
  185. package/dist/search/port.d.ts +1 -1
  186. package/dist/search/remote-backend.d.ts +1 -1
  187. package/dist/{semantic-consolidation-D5U0Mrdb.d.ts → semantic-consolidation-DXmtQ_4B.d.ts} +1 -1
  188. package/dist/semantic-consolidation.d.ts +2 -2
  189. package/dist/semantic-consolidation.js +4 -4
  190. package/dist/semantic-rule-promotion.js +3 -3
  191. package/dist/semantic-rule-verifier.d.ts +1 -1
  192. package/dist/semantic-rule-verifier.js +3 -3
  193. package/dist/session-observer-bands.d.ts +1 -1
  194. package/dist/session-observer-state.d.ts +1 -1
  195. package/dist/shared-context/manager.d.ts +1 -1
  196. package/dist/signal.d.ts +1 -1
  197. package/dist/storage.d.ts +1 -1
  198. package/dist/storage.js +2 -2
  199. package/dist/summarizer.d.ts +1 -1
  200. package/dist/summary-snapshot.d.ts +1 -1
  201. package/dist/temporal-supersession.d.ts +1 -1
  202. package/dist/temporal-validity.d.ts +1 -1
  203. package/dist/threading.d.ts +1 -1
  204. package/dist/tier-migration.d.ts +1 -1
  205. package/dist/tier-routing.d.ts +1 -1
  206. package/dist/topics.d.ts +1 -1
  207. package/dist/transcript.d.ts +1 -1
  208. package/dist/transfer/types.d.ts +12 -12
  209. package/dist/{types-2NoBoRBM.d.ts → types-CEWBmjCH.d.ts} +14 -0
  210. package/dist/types.d.ts +1 -1
  211. package/dist/types.js +1 -1
  212. package/dist/utility-runtime.d.ts +1 -1
  213. package/dist/verified-recall.js +3 -3
  214. package/package.json +2 -2
  215. package/src/access-boundary.ts +19 -1
  216. package/src/access-cli.ts +65 -2
  217. package/src/access-http.ts +47 -3
  218. package/src/access-mcp.ts +128 -2
  219. package/src/access-operations.ts +305 -0
  220. package/src/access-service.ts +137 -0
  221. package/src/access-surface-catalog.test.ts +1 -1
  222. package/src/access-surface-catalog.ts +17 -0
  223. package/src/cli.ts +2 -0
  224. package/src/coding/architecture-surfaces.test.ts +2 -0
  225. package/src/coding/codegraph-runtime.ts +773 -0
  226. package/src/coding/codegraph-surfaces.test.ts +880 -0
  227. package/src/coding/codegraph-surfaces.ts +771 -0
  228. package/src/coding/coding-knowledge-config.ts +7 -0
  229. package/src/coding/coding-namespace.ts +1 -1
  230. package/src/coding/decision-surfaces.test.ts +2 -0
  231. package/src/coding/session-delta-surfaces.test.ts +385 -0
  232. package/src/coding/session-delta-surfaces.ts +325 -0
  233. package/src/coding/session-delta.test.ts +411 -0
  234. package/src/coding/session-delta.ts +442 -0
  235. package/src/config.test.ts +2 -0
  236. package/src/types.ts +14 -0
  237. package/dist/chunk-2EN5WZQB.js.map +0 -1
  238. package/dist/chunk-7MOTEVAA.js.map +0 -1
  239. package/dist/chunk-DO7MDZMU.js.map +0 -1
  240. package/dist/chunk-DQHZA7Y3.js.map +0 -1
  241. package/dist/chunk-NEILAC3H.js +0 -153
  242. package/dist/chunk-NEILAC3H.js.map +0 -1
  243. package/dist/chunk-O4ZIV62T.js.map +0 -1
  244. package/dist/chunk-SEK4XIDN.js.map +0 -1
  245. package/dist/chunk-V56S3A23.js.map +0 -1
  246. /package/dist/{chunk-ADUAF5EV.js.map → chunk-24FCDBJV.js.map} +0 -0
  247. /package/dist/{chunk-3VVH6ZQW.js.map → chunk-5S53ZBPH.js.map} +0 -0
  248. /package/dist/{chunk-2D27ODNX.js.map → chunk-B55EAZNF.js.map} +0 -0
  249. /package/dist/{chunk-W4MICQIZ.js.map → chunk-C5AOVGVC.js.map} +0 -0
  250. /package/dist/{chunk-UOCLRM74.js.map → chunk-D7PQ7HZL.js.map} +0 -0
  251. /package/dist/{chunk-HXNMDPHN.js.map → chunk-DT2ZGQT7.js.map} +0 -0
  252. /package/dist/{chunk-QFG23CRE.js.map → chunk-EPVIBPVE.js.map} +0 -0
  253. /package/dist/{chunk-U2OBZSGG.js.map → chunk-IZLNJYLX.js.map} +0 -0
  254. /package/dist/{chunk-KYH53EFD.js.map → chunk-JIKBEDSB.js.map} +0 -0
  255. /package/dist/{chunk-3BRA3N5A.js.map → chunk-KCRV3HVN.js.map} +0 -0
  256. /package/dist/{chunk-AFWEUTMS.js.map → chunk-MOGFK2DU.js.map} +0 -0
  257. /package/dist/{chunk-SAC5V6JT.js.map → chunk-MSUA4KAK.js.map} +0 -0
  258. /package/dist/{chunk-VFVG4NS2.js.map → chunk-NXNUG7IA.js.map} +0 -0
  259. /package/dist/{chunk-66HROLW5.js.map → chunk-P7IDNF7H.js.map} +0 -0
  260. /package/dist/{chunk-FM7KLRKN.js.map → chunk-PILLH262.js.map} +0 -0
  261. /package/dist/{chunk-6C2BMUZA.js.map → chunk-QXWQ5V24.js.map} +0 -0
  262. /package/dist/{chunk-4IQNAOP3.js.map → chunk-SN5DFE34.js.map} +0 -0
  263. /package/dist/{chunk-WIKNVFBS.js.map → chunk-UX5QTAFE.js.map} +0 -0
  264. /package/dist/{chunk-MCV2DD6F.js.map → chunk-WVTNZUER.js.map} +0 -0
  265. /package/dist/{chunk-ZLXGFAML.js.map → chunk-YI3KC2B5.js.map} +0 -0
  266. /package/dist/{chunk-W4ELOUNX.js.map → chunk-YWYZPKK3.js.map} +0 -0
  267. /package/dist/{chunk-NUZ3N445.js.map → chunk-YXZPKBFW.js.map} +0 -0
  268. /package/dist/{chunk-GCOSQBQ2.js.map → chunk-ZKD3UVEO.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { a0 as HourlySummary } from './types-2NoBoRBM.js';
1
+ import { a0 as HourlySummary } from './types-CEWBmjCH.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { j as MemoryFrontmatter } from './types-2NoBoRBM.js';
1
+ import { j as MemoryFrontmatter } from './types-CEWBmjCH.js';
2
2
  import { StorageManager } from './storage.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -1,4 +1,4 @@
1
- import { j as MemoryFrontmatter } from './types-2NoBoRBM.js';
1
+ import { j as MemoryFrontmatter } from './types-CEWBmjCH.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { Z as BufferTurn, au as ConversationThread } from './types-2NoBoRBM.js';
1
+ import { Z as BufferTurn, au as ConversationThread } from './types-CEWBmjCH.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile } from './types-2NoBoRBM.js';
1
+ import { g as MemoryFile } from './types-CEWBmjCH.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-2NoBoRBM.js';
1
+ import { g as MemoryFile } from './types-CEWBmjCH.js';
2
2
  import { LifecycleSignals } from './lifecycle.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
package/dist/topics.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { g as MemoryFile, T as TopicScore } from './types-2NoBoRBM.js';
1
+ import { g as MemoryFile, T as TopicScore } from './types-CEWBmjCH.js';
2
2
  import './types-ByK7T3L6.js';
3
3
  import './index-DJ9QWMw-.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, _ as TranscriptEntry, $ as Checkpoint } from './types-2NoBoRBM.js';
1
+ import { P as PluginConfig, _ as TranscriptEntry, $ as Checkpoint } from './types-CEWBmjCH.js';
2
2
  import { SessionIntegrityReport } from './session-integrity.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
@@ -313,13 +313,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
313
313
  peerProfiles: boolean;
314
314
  }>;
315
315
  }, "strip", z.ZodTypeAny, {
316
+ schemaVersion: string;
316
317
  includes: {
317
318
  procedural: boolean;
318
319
  taxonomy: boolean;
319
320
  identityAnchors: boolean;
320
321
  peerProfiles: boolean;
321
322
  };
322
- schemaVersion: string;
323
323
  id: string;
324
324
  description: string;
325
325
  version: string;
@@ -334,13 +334,13 @@ declare const CapsuleBlockSchema: z.ZodObject<{
334
334
  directAnswerEnabled: boolean;
335
335
  };
336
336
  }, {
337
+ schemaVersion: string;
337
338
  includes: {
338
339
  procedural: boolean;
339
340
  taxonomy: boolean;
340
341
  identityAnchors: boolean;
341
342
  peerProfiles: boolean;
342
343
  };
343
- schemaVersion: string;
344
344
  id: string;
345
345
  description: string;
346
346
  version: string;
@@ -464,13 +464,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
464
464
  peerProfiles: boolean;
465
465
  }>;
466
466
  }, "strip", z.ZodTypeAny, {
467
+ schemaVersion: string;
467
468
  includes: {
468
469
  procedural: boolean;
469
470
  taxonomy: boolean;
470
471
  identityAnchors: boolean;
471
472
  peerProfiles: boolean;
472
473
  };
473
- schemaVersion: string;
474
474
  id: string;
475
475
  description: string;
476
476
  version: string;
@@ -485,13 +485,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
485
485
  directAnswerEnabled: boolean;
486
486
  };
487
487
  }, {
488
+ schemaVersion: string;
488
489
  includes: {
489
490
  procedural: boolean;
490
491
  taxonomy: boolean;
491
492
  identityAnchors: boolean;
492
493
  peerProfiles: boolean;
493
494
  };
494
- schemaVersion: string;
495
495
  id: string;
496
496
  description: string;
497
497
  version: string;
@@ -518,13 +518,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
518
518
  pluginVersion: string;
519
519
  includesTranscripts: boolean;
520
520
  capsule: {
521
+ schemaVersion: string;
521
522
  includes: {
522
523
  procedural: boolean;
523
524
  taxonomy: boolean;
524
525
  identityAnchors: boolean;
525
526
  peerProfiles: boolean;
526
527
  };
527
- schemaVersion: string;
528
528
  id: string;
529
529
  description: string;
530
530
  version: string;
@@ -551,13 +551,13 @@ declare const ExportManifestV2Schema: z.ZodObject<{
551
551
  pluginVersion: string;
552
552
  includesTranscripts: boolean;
553
553
  capsule: {
554
+ schemaVersion: string;
554
555
  includes: {
555
556
  procedural: boolean;
556
557
  taxonomy: boolean;
557
558
  identityAnchors: boolean;
558
559
  peerProfiles: boolean;
559
560
  };
560
- schemaVersion: string;
561
561
  id: string;
562
562
  description: string;
563
563
  version: string;
@@ -683,13 +683,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
683
683
  peerProfiles: boolean;
684
684
  }>;
685
685
  }, "strip", z.ZodTypeAny, {
686
+ schemaVersion: string;
686
687
  includes: {
687
688
  procedural: boolean;
688
689
  taxonomy: boolean;
689
690
  identityAnchors: boolean;
690
691
  peerProfiles: boolean;
691
692
  };
692
- schemaVersion: string;
693
693
  id: string;
694
694
  description: string;
695
695
  version: string;
@@ -704,13 +704,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
704
704
  directAnswerEnabled: boolean;
705
705
  };
706
706
  }, {
707
+ schemaVersion: string;
707
708
  includes: {
708
709
  procedural: boolean;
709
710
  taxonomy: boolean;
710
711
  identityAnchors: boolean;
711
712
  peerProfiles: boolean;
712
713
  };
713
- schemaVersion: string;
714
714
  id: string;
715
715
  description: string;
716
716
  version: string;
@@ -737,13 +737,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
737
737
  pluginVersion: string;
738
738
  includesTranscripts: boolean;
739
739
  capsule: {
740
+ schemaVersion: string;
740
741
  includes: {
741
742
  procedural: boolean;
742
743
  taxonomy: boolean;
743
744
  identityAnchors: boolean;
744
745
  peerProfiles: boolean;
745
746
  };
746
- schemaVersion: string;
747
747
  id: string;
748
748
  description: string;
749
749
  version: string;
@@ -770,13 +770,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
770
770
  pluginVersion: string;
771
771
  includesTranscripts: boolean;
772
772
  capsule: {
773
+ schemaVersion: string;
773
774
  includes: {
774
775
  procedural: boolean;
775
776
  taxonomy: boolean;
776
777
  identityAnchors: boolean;
777
778
  peerProfiles: boolean;
778
779
  };
779
- schemaVersion: string;
780
780
  id: string;
781
781
  description: string;
782
782
  version: string;
@@ -819,13 +819,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
819
819
  pluginVersion: string;
820
820
  includesTranscripts: boolean;
821
821
  capsule: {
822
+ schemaVersion: string;
822
823
  includes: {
823
824
  procedural: boolean;
824
825
  taxonomy: boolean;
825
826
  identityAnchors: boolean;
826
827
  peerProfiles: boolean;
827
828
  };
828
- schemaVersion: string;
829
829
  id: string;
830
830
  description: string;
831
831
  version: string;
@@ -858,13 +858,13 @@ declare const ExportBundleV2Schema: z.ZodObject<{
858
858
  pluginVersion: string;
859
859
  includesTranscripts: boolean;
860
860
  capsule: {
861
+ schemaVersion: string;
861
862
  includes: {
862
863
  procedural: boolean;
863
864
  taxonomy: boolean;
864
865
  identityAnchors: boolean;
865
866
  peerProfiles: boolean;
866
867
  };
867
- schemaVersion: string;
868
868
  id: string;
869
869
  description: string;
870
870
  version: string;
@@ -791,6 +791,20 @@ interface CodingKnowledgeConfig {
791
791
  * check at boot, not at every call.
792
792
  */
793
793
  structuralProviderCommand: string;
794
+ /**
795
+ * Gate for the 14 codegraph parity tools (issue #1554). Off by default --
796
+ * tools/list, HTTP routes, and CLI help are byte-identical to pre-feature
797
+ * until this is true. The runtime also requires the @remnic/coding-graph
798
+ * package to be installed (rule 39: single gate predicate
799
+ * codegraphSurfaceVisible(config) && isCodingGraphInstalled()).
800
+ */
801
+ codegraphTools: boolean;
802
+ /**
803
+ * Root directory for per-project graph SQLite DBs. Empty string = derive
804
+ * from memoryDir (<memoryDir>/codegraph/<principal>/<projectId>.sqlite).
805
+ * Absolute path required when set explicitly (rule 11 -- no relative paths).
806
+ */
807
+ codegraphDbDir: string;
794
808
  }
795
809
  /**
796
810
  * Session-scoped coding context. Produced by `resolveGitContext()` in the
package/dist/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import './types-ByK7T3L6.js';
2
2
  import './index-DJ9QWMw-.js';
3
- export { y as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, a7 as AgentAccessAuthToken, b6 as AgentAccessHttpConfig, b7 as AgentDefaultsConfig, b8 as AgentPersona, f as AgentPersonaModelConfig, b9 as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, ba as BehaviorSignalDirection, B as BehaviorSignalEvent, bb as BehaviorSignalType, aL as BootstrapOptions, aM as BootstrapResult, W as BriefingActiveThread, bc as BriefingCalendarSourceError, aS as BriefingConfig, S as BriefingFocus, O as BriefingFollowup, aT as BriefingOpenCommitment, Y as BriefingRecentEntity, X as BriefingResult, N as BriefingSections, aU as BriefingWindow, bd as BufferEntryState, k as BufferState, o as BufferSurpriseEvent, Z as BufferTurn, V as CalendarEvent, U as CalendarSource, be as CaptureMode, $ as Checkpoint, bf as CodexCliReasoningEffort, bg as CodexCompactionFlushMode, aV as CodexCompatConfig, bh as CodexConnectorConfig, aK as CodingContext, bi as CodingKnowledgeConfig, aP as CodingModeConfig, bj as CompressionGuidelineActivationState, a9 as CompressionGuidelineOptimizerActionSummary, a8 as CompressionGuidelineOptimizerEventCounts, aa as CompressionGuidelineOptimizerRuleUpdate, bk as CompressionGuidelineOptimizerSourceWindow, C as CompressionGuidelineOptimizerState, bl as ConfidenceTier, bm as ConsolidationAction, bn as ConsolidationItem, aN as ConsolidationObservation, ag as ConsolidationResult, s as ContinuityImprovementLoop, r as ContinuityIncidentCloseInput, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, bo as ContinuityIncidentState, bp as ContinuityLoopCadence, u as ContinuityLoopReviewInput, bq as ContinuityLoopStatus, t as ContinuityLoopUpsertInput, br as ContradictionScanConfig, au as ConversationThread, bs as CronConversationRecallMode, bt as CronRecallMode, aW as DEFAULT_RECALL_DISCLOSURE, ah as DaySummaryResult, bu as DreamingConfig, bv as DreamingNarrativePromptStyle, bw as DreamsDeepSleepConfig, bx as DreamsLightSleepConfig, ay as DreamsPhase, by as DreamsPhaseStatus, bz as DreamsPhasesConfig, bA as DreamsRemConfig, az as DreamsRunResult, ax as DreamsStatusResult, bB as EngramTraceEvent, w as EntityActivityEntry, x as EntityFile, ac as EntityMention, v as EntityRelationship, ad as EntitySchemaDefinition, ae as EntitySchemaSectionDefinition, E as EntityStructuredSection, aO as EntityTimelineEntry, aX as ExtractedFact, bC as ExtractedProcedureStep, bD as ExtractedQuestion, bE as ExtractedReasoningTrace, bF as ExtractedReasoningTraceStep, bG as ExtractedRelationship, bH as ExtractionPassSource, af as ExtractionResult, F as FileHygieneConfig, G as GatewayConfig, bI as GitHubLiveConnectorConfig, bJ as GmailLiveConnectorConfig, bK as GoogleDriveLiveConnectorConfig, bL as HeartbeatConfig, bM as HeartbeatDetectionMode, a0 as HourlySummary, J as IdentityInjectionMode, a5 as ImportanceLevel, I as ImportanceScore, a2 as LifecycleState, L as LiveConnectorsConfig, bN as LlmTraceCallback, bO as LlmTraceEvent, ak as MemoryActionEligibilityContext, aY as MemoryActionEligibilitySource, m as MemoryActionEvent, bP as MemoryActionOutcome, bQ as MemoryActionPolicyDecision, al as MemoryActionPolicyResult, bR as MemoryActionStatus, ab as MemoryActionType, M as MemoryCategory, g as MemoryFile, j as MemoryFrontmatter, ai as MemoryIntent, n as MemoryLifecycleEvent, am as MemoryLifecycleEventType, an as MemoryLifecycleStateSummary, i as MemoryLink, bS as MemoryLinkType, aZ as MemoryObservation, bT as MemoryOsPresetName, z as MemoryProjectionCurrentState, a_ as MemoryScope, h as MemoryStatus, D as MemorySummary, l as MetaState, bU as ModelApi, bV as ModelDefinitionConfig, bW as ModelProviderAuthMode, ao as ModelProviderConfig, bX as NamespacePolicy, ap as NativeKnowledgeConfig, bY as NativeKnowledgeFolderRuleConfig, bZ as NativeKnowledgeObsidianVaultConfig, b_ as NativeKnowledgeOpenClawWorkspaceConfig, b$ as NotionLiveConnectorConfig, P as PluginConfig, a4 as PolicyClass, c0 as PrincipalFromSessionKeyMode, c1 as PrincipalRule, c2 as ProceduralConfig, aq as ProvenanceConfig, ar as ProvenanceSource, aj as QmdSearchExplain, Q as QmdSearchResult, c3 as QuestionEntry, a$ as RECALL_DISCLOSURE_LEVELS, c4 as ReasoningEffort, K as RecallDisclosure, c5 as RecallPipelineConfig, H as RecallPlanMode, c6 as RecallSectionConfig, R as RecallTierExplain, c7 as RecallTraceEvent, c8 as RelevanceFeedback, as as RetrievalTier, c9 as SPECULATIVE_TTL_DAYS, ca as ScopeProfileAutoPromoteConfig, cb as ScopeProfileConfig, av as ScopeProfileLayerId, aw as ScopeProfilePromotionTarget, cc as ScopeProfileTeamProjectConfig, cd as ScopeTeamConfig, ce as ScoredEntity, a6 as SecretRef, cf as SemanticChunkingConfigShape, a1 as SessionObserverBandConfig, cg as SignalLevel, at as SignalScanResult, ch as SlotBehaviorConfig, ci as SlotMismatchMode, T as TopicScore, _ as TranscriptEntry, cj as TriggerMode, a3 as VerificationState, ck as confidenceTier, b5 as isRecallDisclosure } from './types-2NoBoRBM.js';
3
+ export { y as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, a7 as AgentAccessAuthToken, b6 as AgentAccessHttpConfig, b7 as AgentDefaultsConfig, b8 as AgentPersona, f as AgentPersonaModelConfig, b9 as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, ba as BehaviorSignalDirection, B as BehaviorSignalEvent, bb as BehaviorSignalType, aL as BootstrapOptions, aM as BootstrapResult, W as BriefingActiveThread, bc as BriefingCalendarSourceError, aS as BriefingConfig, S as BriefingFocus, O as BriefingFollowup, aT as BriefingOpenCommitment, Y as BriefingRecentEntity, X as BriefingResult, N as BriefingSections, aU as BriefingWindow, bd as BufferEntryState, k as BufferState, o as BufferSurpriseEvent, Z as BufferTurn, V as CalendarEvent, U as CalendarSource, be as CaptureMode, $ as Checkpoint, bf as CodexCliReasoningEffort, bg as CodexCompactionFlushMode, aV as CodexCompatConfig, bh as CodexConnectorConfig, aK as CodingContext, bi as CodingKnowledgeConfig, aP as CodingModeConfig, bj as CompressionGuidelineActivationState, a9 as CompressionGuidelineOptimizerActionSummary, a8 as CompressionGuidelineOptimizerEventCounts, aa as CompressionGuidelineOptimizerRuleUpdate, bk as CompressionGuidelineOptimizerSourceWindow, C as CompressionGuidelineOptimizerState, bl as ConfidenceTier, bm as ConsolidationAction, bn as ConsolidationItem, aN as ConsolidationObservation, ag as ConsolidationResult, s as ContinuityImprovementLoop, r as ContinuityIncidentCloseInput, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, bo as ContinuityIncidentState, bp as ContinuityLoopCadence, u as ContinuityLoopReviewInput, bq as ContinuityLoopStatus, t as ContinuityLoopUpsertInput, br as ContradictionScanConfig, au as ConversationThread, bs as CronConversationRecallMode, bt as CronRecallMode, aW as DEFAULT_RECALL_DISCLOSURE, ah as DaySummaryResult, bu as DreamingConfig, bv as DreamingNarrativePromptStyle, bw as DreamsDeepSleepConfig, bx as DreamsLightSleepConfig, ay as DreamsPhase, by as DreamsPhaseStatus, bz as DreamsPhasesConfig, bA as DreamsRemConfig, az as DreamsRunResult, ax as DreamsStatusResult, bB as EngramTraceEvent, w as EntityActivityEntry, x as EntityFile, ac as EntityMention, v as EntityRelationship, ad as EntitySchemaDefinition, ae as EntitySchemaSectionDefinition, E as EntityStructuredSection, aO as EntityTimelineEntry, aX as ExtractedFact, bC as ExtractedProcedureStep, bD as ExtractedQuestion, bE as ExtractedReasoningTrace, bF as ExtractedReasoningTraceStep, bG as ExtractedRelationship, bH as ExtractionPassSource, af as ExtractionResult, F as FileHygieneConfig, G as GatewayConfig, bI as GitHubLiveConnectorConfig, bJ as GmailLiveConnectorConfig, bK as GoogleDriveLiveConnectorConfig, bL as HeartbeatConfig, bM as HeartbeatDetectionMode, a0 as HourlySummary, J as IdentityInjectionMode, a5 as ImportanceLevel, I as ImportanceScore, a2 as LifecycleState, L as LiveConnectorsConfig, bN as LlmTraceCallback, bO as LlmTraceEvent, ak as MemoryActionEligibilityContext, aY as MemoryActionEligibilitySource, m as MemoryActionEvent, bP as MemoryActionOutcome, bQ as MemoryActionPolicyDecision, al as MemoryActionPolicyResult, bR as MemoryActionStatus, ab as MemoryActionType, M as MemoryCategory, g as MemoryFile, j as MemoryFrontmatter, ai as MemoryIntent, n as MemoryLifecycleEvent, am as MemoryLifecycleEventType, an as MemoryLifecycleStateSummary, i as MemoryLink, bS as MemoryLinkType, aZ as MemoryObservation, bT as MemoryOsPresetName, z as MemoryProjectionCurrentState, a_ as MemoryScope, h as MemoryStatus, D as MemorySummary, l as MetaState, bU as ModelApi, bV as ModelDefinitionConfig, bW as ModelProviderAuthMode, ao as ModelProviderConfig, bX as NamespacePolicy, ap as NativeKnowledgeConfig, bY as NativeKnowledgeFolderRuleConfig, bZ as NativeKnowledgeObsidianVaultConfig, b_ as NativeKnowledgeOpenClawWorkspaceConfig, b$ as NotionLiveConnectorConfig, P as PluginConfig, a4 as PolicyClass, c0 as PrincipalFromSessionKeyMode, c1 as PrincipalRule, c2 as ProceduralConfig, aq as ProvenanceConfig, ar as ProvenanceSource, aj as QmdSearchExplain, Q as QmdSearchResult, c3 as QuestionEntry, a$ as RECALL_DISCLOSURE_LEVELS, c4 as ReasoningEffort, K as RecallDisclosure, c5 as RecallPipelineConfig, H as RecallPlanMode, c6 as RecallSectionConfig, R as RecallTierExplain, c7 as RecallTraceEvent, c8 as RelevanceFeedback, as as RetrievalTier, c9 as SPECULATIVE_TTL_DAYS, ca as ScopeProfileAutoPromoteConfig, cb as ScopeProfileConfig, av as ScopeProfileLayerId, aw as ScopeProfilePromotionTarget, cc as ScopeProfileTeamProjectConfig, cd as ScopeTeamConfig, ce as ScoredEntity, a6 as SecretRef, cf as SemanticChunkingConfigShape, a1 as SessionObserverBandConfig, cg as SignalLevel, at as SignalScanResult, ch as SlotBehaviorConfig, ci as SlotMismatchMode, T as TopicScore, _ as TranscriptEntry, cj as TriggerMode, a3 as VerificationState, ck as confidenceTier, b5 as isRecallDisclosure } from './types-CEWBmjCH.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-DQHZA7Y3.js";
7
+ } from "./chunk-U62ZGWU7.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-2NoBoRBM.js';
2
+ import './types-CEWBmjCH.js';
3
3
  import './types-ByK7T3L6.js';
4
4
  import './index-DJ9QWMw-.js';
5
5
  import './lifecycle.js';
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  compareVerifiedEpisodeResults,
3
3
  searchVerifiedEpisodes
4
- } from "./chunk-3VVH6ZQW.js";
4
+ } from "./chunk-5S53ZBPH.js";
5
5
  import "./chunk-7FL4CNPV.js";
6
- import "./chunk-VFVG4NS2.js";
6
+ import "./chunk-NXNUG7IA.js";
7
7
  import "./chunk-M7XQSUBB.js";
8
8
  import "./chunk-5UZXUTVO.js";
9
9
  import "./chunk-5GPPACXK.js";
10
10
  import "./chunk-SVOZFLIQ.js";
11
11
  import "./chunk-J6A3CX5N.js";
12
- import "./chunk-DQHZA7Y3.js";
12
+ import "./chunk-U62ZGWU7.js";
13
13
  import "./chunk-SCU65EZI.js";
14
14
  import "./chunk-MB5RSUW6.js";
15
15
  import "./chunk-6KYMPV2O.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.3.692",
3
+ "version": "9.3.694",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2941,7 +2941,7 @@
2941
2941
  "core"
2942
2942
  ],
2943
2943
  "peerDependencies": {
2944
- "@remnic/coding-graph": "^9.3.692"
2944
+ "@remnic/coding-graph": "^9.3.694"
2945
2945
  },
2946
2946
  "peerDependenciesMeta": {
2947
2947
  "@remnic/coding-graph": {
@@ -35,7 +35,25 @@ export type OperationName =
35
35
  | "memory_search"
36
36
  | "memory_store"
37
37
  | "coding_decision"
38
- | "coding_architecture";
38
+ | "coding_architecture"
39
+ // codegraph parity tools (issue #1554) -- each maps to one codegraph_*
40
+ // boundary operation that delegates to the surface handler in
41
+ // 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
+ | "coding_delta";
39
57
 
40
58
  // ---------------------------------------------------------------------------
41
59
  // Operation context — what every handler receives
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";
18
+ type CommandName = "browse" | "store" | "decision" | "architecture" | "delta";
19
19
 
20
20
  type ParsedArgs = {
21
21
  command: CommandName;
@@ -138,6 +138,7 @@ function usage(): string {
138
138
  " engram-access store [options]",
139
139
  " engram-access decision [options]",
140
140
  " engram-access architecture [options]",
141
+ " engram-access delta [options]",
141
142
  "",
142
143
  "Browse options:",
143
144
  " --namespace <name>",
@@ -248,6 +249,17 @@ const COMMAND_SPECS: Record<CommandName, CommandSpec> = {
248
249
  ]),
249
250
  flagOptions: new Set(),
250
251
  },
252
+ delta: {
253
+ valueOptions: new Set([
254
+ "subcommand",
255
+ "namespace",
256
+ "session-key",
257
+ "principal",
258
+ "project-tag",
259
+ "repo-root",
260
+ ]),
261
+ flagOptions: new Set(),
262
+ },
251
263
  };
252
264
  const BROWSE_SORT_VALUES = Object.freeze([
253
265
  "updated_desc",
@@ -265,7 +277,7 @@ type BrowseSort = (typeof BROWSE_SORT_VALUES)[number];
265
277
  * `command: commandRaw` assignment below (codex review P2).
266
278
  */
267
279
  function isCommandName(value: string): value is CommandName {
268
- return value === "browse" || value === "store" || value === "decision" || value === "architecture";
280
+ return value === "browse" || value === "store" || value === "decision" || value === "architecture" || value === "delta";
269
281
  }
270
282
 
271
283
  function parseArgs(argv: string[]): ParsedArgs {
@@ -636,6 +648,53 @@ async function runArchitecture(args: ParsedArgs, preferredId?: string): Promise<
636
648
  console.log(JSON.stringify(output.result, null, 2));
637
649
  }
638
650
 
651
+ /**
652
+ * Session-delta surface (issue #1548 Track A PR 4). Dispatches through the
653
+ * same `coding_delta` operation as the MCP tool and HTTP route — one
654
+ * validation boundary, three transports.
655
+ */
656
+ async function runDelta(args: ParsedArgs, preferredId?: string): Promise<void> {
657
+ const subcommand = requireOption(args, "subcommand");
658
+ const { config, service } = buildRuntime(preferredId);
659
+ // Same coding-context attachment as runArchitecture/runDecision: the CLI's
660
+ // fresh Orchestrator has an empty session coding-context map, so attach a
661
+ // context BEFORE dispatching so the gate passes.
662
+ const projectTag = getLastOption(args, "project-tag");
663
+ const sessionKey = getLastOption(args, "session-key");
664
+ if (sessionKey && sessionKey.trim().length > 0) {
665
+ const repoRoot = expandOptionalPath(getLastOption(args, "repo-root")) ?? process.cwd();
666
+ const projectId =
667
+ projectTag && projectTag.trim().length > 0
668
+ ? projectTagProjectId(projectTag.trim())
669
+ : projectTagProjectId(path.basename(repoRoot));
670
+ service.setCodingContext({
671
+ sessionKey,
672
+ codingContext: {
673
+ projectId,
674
+ branch: null,
675
+ rootPath: repoRoot,
676
+ defaultBranch: null,
677
+ },
678
+ });
679
+ }
680
+ const op = getOperation("coding_delta");
681
+ if (!op) {
682
+ throw new Error("access-boundary: operation not registered: coding_delta");
683
+ }
684
+ const output = (await op.run(
685
+ {
686
+ subcommand,
687
+ namespace: getLastOption(args, "namespace"),
688
+ sessionKey,
689
+ },
690
+ {
691
+ service,
692
+ authenticatedPrincipal: getLastOption(args, "principal") ?? config.agentAccessHttp.principal,
693
+ },
694
+ )) as { result: unknown };
695
+ console.log(JSON.stringify(output.result, null, 2));
696
+ }
697
+
639
698
  export async function main(
640
699
  argv: string[] = process.argv.slice(2),
641
700
  options: AccessCliOptions = {},
@@ -653,6 +712,10 @@ export async function main(
653
712
  await runArchitecture(args, options.preferredId);
654
713
  return;
655
714
  }
715
+ if (args.command === "delta") {
716
+ await runDelta(args, options.preferredId);
717
+ return;
718
+ }
656
719
  await runStore(args, options.preferredId);
657
720
  }
658
721
 
@@ -317,6 +317,8 @@ export class EngramAccessHttpServer {
317
317
  emitLegacyTools: options.emitLegacyTools,
318
318
  codingDecisionVisible: this.service.decisionRecordSurfaceVisible,
319
319
  architectureCardVisible: this.service.architectureCardSurfaceVisible,
320
+ codegraphVisible: this.service.codegraphSurfaceVisible,
321
+ sessionDeltaVisible: this.service.sessionDeltaSurfaceVisible,
320
322
  });
321
323
  }
322
324
 
@@ -1386,6 +1388,25 @@ export class EngramAccessHttpServer {
1386
1388
  return;
1387
1389
  }
1388
1390
 
1391
+ if (req.method === "POST" && pathname === "/engram/v1/coding/delta") {
1392
+ // Migrated through the access boundary (issue #1525/#1548 PR4):
1393
+ // get is read-only with respect to user memory content. It DOES write
1394
+ // the operator-side state file (last-seen-head marker), but that is
1395
+ // bookkeeping — the same way calibration.ts writes are uncounted. No
1396
+ // write-quota enforcement.
1397
+ const body = await this.readJsonBody(req);
1398
+ const op = getOperation("coding_delta");
1399
+ if (!op) {
1400
+ throw new EngramAccessInputError("access-boundary: operation not registered: coding_delta");
1401
+ }
1402
+ const output = (await op.run(body, {
1403
+ service: this.service,
1404
+ authenticatedPrincipal: this.resolveRequestPrincipal(req),
1405
+ })) as { result: unknown };
1406
+ this.respondJson(res, 200, output.result);
1407
+ return;
1408
+ }
1409
+
1389
1410
  if (req.method === "POST" && pathname === "/engram/v1/suggestions") {
1390
1411
  const body = await this.readValidatedBody(req, "suggestionSubmit");
1391
1412
  const request = {
@@ -2248,6 +2269,20 @@ export class EngramAccessHttpServer {
2248
2269
  const codingArchitectureWrite =
2249
2270
  (toolName === "engram.coding_architecture" || toolName === "remnic.coding_architecture") &&
2250
2271
  toolArgsSubcommand === "refresh";
2272
+ // codegraph parity tools (issue #1554): only mutating tools count as
2273
+ // writes — index, delete_project, ingest_traces, and manage_adr
2274
+ // (record|supersede). Read-only tools (search_graph, get_schema,
2275
+ // list_projects, etc.) must NOT hit the write quota.
2276
+ const CODEGRAPH_WRITE_TOOLS = new Set([
2277
+ "engram.codegraph_index", "remnic.codegraph_index",
2278
+ "engram.codegraph_delete_project", "remnic.codegraph_delete_project",
2279
+ "engram.codegraph_ingest_traces", "remnic.codegraph_ingest_traces",
2280
+ ]);
2281
+ const isCodegraphManageAdr =
2282
+ toolName === "engram.codegraph_manage_adr" || toolName === "remnic.codegraph_manage_adr";
2283
+ const codegraphWrite =
2284
+ CODEGRAPH_WRITE_TOOLS.has(toolName) ||
2285
+ (isCodegraphManageAdr && (toolArgsSubcommand === "record" || toolArgsSubcommand === "supersede"));
2251
2286
  const isMcpWrite =
2252
2287
  request.method === "tools/call" &&
2253
2288
  (
@@ -2277,7 +2312,8 @@ export class EngramAccessHttpServer {
2277
2312
  )
2278
2313
  ) ||
2279
2314
  codingDecisionWrite ||
2280
- codingArchitectureWrite
2315
+ codingArchitectureWrite ||
2316
+ codegraphWrite
2281
2317
  );
2282
2318
  if (isMcpWrite) {
2283
2319
  this.ensureWriteRateLimitAvailable();
@@ -2300,8 +2336,16 @@ export class EngramAccessHttpServer {
2300
2336
  if (isMcpWrite && response !== null) {
2301
2337
  const result = (response as Record<string, unknown>).result as Record<string, unknown> | undefined;
2302
2338
  const isError = result?.isError === true;
2303
- const structured = result?.structuredContent as { dryRun?: boolean; idempotencyReplay?: boolean } | undefined;
2304
- if (!isError && structured && this.shouldCountWriteRateLimit(structured)) {
2339
+ const structured = result?.structuredContent as
2340
+ | { dryRun?: boolean; idempotencyReplay?: boolean; ok?: boolean }
2341
+ | undefined;
2342
+ // Rejected codegraph calls carry { ok: false } in structuredContent
2343
+ // (confirm_required, package_missing, runtime_unavailable, ...). The
2344
+ // MCP layer sets isError:false for these, so without this guard they
2345
+ // would consume the write quota despite no mutation occurring
2346
+ // (issue #1554 review thread: don't bill rejected calls as writes).
2347
+ const isRejectedCodegraph = structured?.ok === false;
2348
+ if (!isError && !isRejectedCodegraph && structured && this.shouldCountWriteRateLimit(structured)) {
2305
2349
  this.recordWriteRateLimitHit();
2306
2350
  }
2307
2351
  }