@remnic/core 9.6.1 → 9.6.3

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 (332) hide show
  1. package/dist/access-admin-ops-surface.d.ts +7 -8
  2. package/dist/access-admin-ops-surface.js +8 -8
  3. package/dist/access-boundary.d.ts +9 -8
  4. package/dist/access-boundary.js +9 -9
  5. package/dist/access-cli.js +40 -40
  6. package/dist/access-http.d.ts +47 -16
  7. package/dist/access-http.js +13 -13
  8. package/dist/access-identity-continuity-surface.d.ts +6 -7
  9. package/dist/access-identity-continuity-surface.js +8 -8
  10. package/dist/access-lcm-surface.d.ts +7 -8
  11. package/dist/access-lcm-surface.js +8 -8
  12. package/dist/access-mcp.d.ts +13 -8
  13. package/dist/access-mcp.js +12 -12
  14. package/dist/access-observe-write-surface.d.ts +7 -8
  15. package/dist/access-observe-write-surface.js +8 -8
  16. package/dist/access-operations-batch.js +10 -10
  17. package/dist/access-operations.d.ts +8 -9
  18. package/dist/access-operations.js +11 -11
  19. package/dist/access-recall-surface.d.ts +7 -8
  20. package/dist/access-recall-surface.js +8 -8
  21. package/dist/access-schema.d.ts +6 -6
  22. package/dist/{access-service-CXJaql3A.d.ts → access-service-Bps_9G1t.d.ts} +9 -9
  23. package/dist/access-service.d.ts +7 -8
  24. package/dist/access-service.js +8 -8
  25. package/dist/access-surface-catalog.d.ts +7 -8
  26. package/dist/action-confidence.d.ts +1 -2
  27. package/dist/active-memory-bridge.d.ts +1 -2
  28. package/dist/active-recall.d.ts +1 -2
  29. package/dist/behavior-learner.d.ts +1 -2
  30. package/dist/behavior-signals.d.ts +1 -2
  31. package/dist/bootstrap.d.ts +6 -7
  32. package/dist/briefing.d.ts +2 -3
  33. package/dist/briefing.js +3 -3
  34. package/dist/buffer-surprise-report.d.ts +1 -2
  35. package/dist/buffer.d.ts +2 -3
  36. package/dist/buffer.js +1 -1
  37. package/dist/bulk-import/index.d.ts +3 -3
  38. package/dist/bulk-import/index.js +2 -2
  39. package/dist/calibration.d.ts +1 -2
  40. package/dist/capabilities.d.ts +1 -2
  41. package/dist/{catalog-C9cu67Ig.d.ts → catalog-9WanSGtt.d.ts} +1 -1
  42. package/dist/causal-behavior.d.ts +1 -2
  43. package/dist/causal-consolidation.d.ts +1 -2
  44. package/dist/causal-consolidation.js +4 -4
  45. package/dist/causal-trajectory-graph.d.ts +1 -2
  46. package/dist/{chunk-PNLFN2PZ.js → chunk-23G3T2Q5.js} +2 -2
  47. package/dist/{chunk-SIRPLF54.js → chunk-2K3OSLHE.js} +2 -2
  48. package/dist/{chunk-JS2HKKOK.js → chunk-3AC5UYKI.js} +1 -1
  49. package/dist/{chunk-JS2HKKOK.js.map → chunk-3AC5UYKI.js.map} +1 -1
  50. package/dist/{chunk-LQHDIS7L.js → chunk-54BGIBCR.js} +2 -2
  51. package/dist/{chunk-PVUJ6WVV.js → chunk-5MH5NF3U.js} +5 -5
  52. package/dist/{chunk-Y7UNNAZD.js → chunk-7ZYBDQ7V.js} +2 -2
  53. package/dist/{chunk-2PRQG7PV.js → chunk-AJVLDJU6.js} +1 -1
  54. package/dist/chunk-AJVLDJU6.js.map +1 -0
  55. package/dist/{chunk-LR5DZ56F.js → chunk-AXALUFAH.js} +2 -2
  56. package/dist/{chunk-AYZJID4S.js → chunk-B5GBWBCZ.js} +2 -2
  57. package/dist/{chunk-H2DXDQCQ.js → chunk-BT3PTVYZ.js} +48 -44
  58. package/dist/chunk-BT3PTVYZ.js.map +1 -0
  59. package/dist/{chunk-TLUDFPZL.js → chunk-CAZ3Z5M6.js} +2 -2
  60. package/dist/{chunk-P454KXD6.js → chunk-CJPVWAJF.js} +21 -21
  61. package/dist/{chunk-RGK27ELN.js → chunk-DEKIXXIG.js} +2 -2
  62. package/dist/{chunk-XCL57M6Q.js → chunk-DPZKMGEP.js} +21 -20
  63. package/dist/chunk-DPZKMGEP.js.map +1 -0
  64. package/dist/{chunk-2KK5WNQB.js → chunk-DQ42IQSK.js} +2 -2
  65. package/dist/{chunk-UFUKHGZD.js → chunk-EIGE4IMQ.js} +89 -33
  66. package/dist/chunk-EIGE4IMQ.js.map +1 -0
  67. package/dist/{chunk-HOJZMQ4J.js → chunk-FGDKJJZS.js} +2 -2
  68. package/dist/{chunk-ABP6QMVM.js → chunk-FQ7HAWWC.js} +2 -2
  69. package/dist/{chunk-CYWA2CXR.js → chunk-FVTLSFWU.js} +2 -2
  70. package/dist/{chunk-JJEJJ7RK.js → chunk-FXZTL7F7.js} +2 -2
  71. package/dist/{chunk-DANV2HTH.js → chunk-GQGDRLDM.js} +3 -3
  72. package/dist/{chunk-7F7Z6MOS.js → chunk-H4CKS5B2.js} +2 -2
  73. package/dist/{chunk-SVOHGUMI.js → chunk-H4FHR4UM.js} +174 -197
  74. package/dist/chunk-H4FHR4UM.js.map +1 -0
  75. package/dist/{chunk-CKITWVWJ.js → chunk-HSSERO3E.js} +2 -2
  76. package/dist/{chunk-23JFRB73.js → chunk-JODHPNLN.js} +2 -2
  77. package/dist/{chunk-DS7MM2ES.js → chunk-JZKR6ZAV.js} +2 -2
  78. package/dist/{chunk-BEM4D2QG.js → chunk-KJIJNLXT.js} +3 -3
  79. package/dist/{chunk-JSNVWNGX.js → chunk-KVSVVKHA.js} +2 -2
  80. package/dist/{chunk-MC4FJXPA.js → chunk-MMACM5G2.js} +2 -2
  81. package/dist/{chunk-PCLIWBGD.js → chunk-N2RP4K5Q.js} +8 -6
  82. package/dist/chunk-N2RP4K5Q.js.map +1 -0
  83. package/dist/{chunk-OUELRE5E.js → chunk-NOUJNHWG.js} +1 -1
  84. package/dist/chunk-NOUJNHWG.js.map +1 -0
  85. package/dist/{chunk-3XIY7MDQ.js → chunk-O6YI4CVI.js} +2 -2
  86. package/dist/{chunk-F53UF7CI.js → chunk-QLVLW7UD.js} +6 -2
  87. package/dist/{chunk-F53UF7CI.js.map → chunk-QLVLW7UD.js.map} +1 -1
  88. package/dist/{chunk-LADFWYHY.js → chunk-QMC3BI3K.js} +6 -6
  89. package/dist/chunk-QMC3BI3K.js.map +1 -0
  90. package/dist/{chunk-72WG5QKN.js → chunk-SDAXPXER.js} +2 -2
  91. package/dist/{chunk-FKCRGLRD.js → chunk-T43VKQU3.js} +269 -167
  92. package/dist/chunk-T43VKQU3.js.map +1 -0
  93. package/dist/{chunk-4LV23CHK.js → chunk-VHJARF5R.js} +2 -2
  94. package/dist/{chunk-6MMONPHM.js → chunk-W2AHSCKY.js} +2 -2
  95. package/dist/{chunk-4GNEDXDI.js → chunk-WULTHJRU.js} +2 -2
  96. package/dist/chunk-WULTHJRU.js.map +1 -0
  97. package/dist/{chunk-K5LLP4CY.js → chunk-ZGPDSEKG.js} +20 -9
  98. package/dist/chunk-ZGPDSEKG.js.map +1 -0
  99. package/dist/{cli-CqdPA6z9.d.ts → cli-SBWBw_eK.d.ts} +4 -5
  100. package/dist/cli.d.ts +9 -10
  101. package/dist/cli.js +32 -32
  102. package/dist/compounding/engine.d.ts +2 -3
  103. package/dist/compounding/engine.js +3 -3
  104. package/dist/compounding/preference-consolidator.d.ts +1 -2
  105. package/dist/compression-optimizer.d.ts +1 -2
  106. package/dist/config.d.ts +1 -2
  107. package/dist/connectors/codex-materialize-runner.d.ts +1 -2
  108. package/dist/connectors/codex-materialize-runner.js +3 -3
  109. package/dist/connectors/codex-materialize.d.ts +1 -2
  110. package/dist/connectors/index.d.ts +1 -2
  111. package/dist/connectors/index.js +3 -3
  112. package/dist/consolidation-provenance-check.d.ts +2 -3
  113. package/dist/consolidation-undo.d.ts +2 -3
  114. package/dist/contradiction/index.d.ts +3 -4
  115. package/dist/conversation-index/backend.d.ts +1 -2
  116. package/dist/conversation-index/chunker.d.ts +1 -2
  117. package/dist/conversation-index/faiss-adapter.d.ts +1 -2
  118. package/dist/conversation-index/indexer.d.ts +1 -2
  119. package/dist/conversation-index/search.d.ts +1 -2
  120. package/dist/day-summary.d.ts +1 -2
  121. package/dist/delinearize.d.ts +1 -2
  122. package/dist/direct-answer-wiring.d.ts +1 -2
  123. package/dist/direct-answer.d.ts +1 -2
  124. package/dist/embedding-fallback.d.ts +1 -2
  125. package/dist/enrichment/index.d.ts +1 -2
  126. package/dist/entity-retrieval.d.ts +2 -3
  127. package/dist/entity-retrieval.js +3 -3
  128. package/dist/entity-schema.d.ts +1 -2
  129. package/dist/explicit-capture.d.ts +8 -7
  130. package/dist/explicit-capture.js +1 -1
  131. package/dist/extraction-faithfulness.d.ts +1 -2
  132. package/dist/extraction-judge-telemetry.d.ts +1 -2
  133. package/dist/extraction-judge-training.d.ts +1 -2
  134. package/dist/extraction-judge.d.ts +1 -2
  135. package/dist/extraction.d.ts +1 -2
  136. package/dist/fallback-llm.d.ts +1 -2
  137. package/dist/graph-dashboard-diff.d.ts +1 -2
  138. package/dist/graph-dashboard-key.d.ts +1 -2
  139. package/dist/graph-dashboard-parser.d.ts +1 -2
  140. package/dist/graph-edge-reinforcement.d.ts +1 -2
  141. package/dist/graph-snapshot.d.ts +1 -2
  142. package/dist/graph.d.ts +1 -2
  143. package/dist/identity-continuity.d.ts +1 -2
  144. package/dist/importance.d.ts +1 -2
  145. package/dist/importers/index.d.ts +1 -1
  146. package/dist/importers/index.js +2 -2
  147. package/dist/index.d.ts +14 -15
  148. package/dist/index.js +40 -40
  149. package/dist/intent.d.ts +1 -2
  150. package/dist/lcm/engine.d.ts +1 -2
  151. package/dist/lcm/index.d.ts +1 -2
  152. package/dist/lcm/tools.d.ts +1 -2
  153. package/dist/lifecycle.d.ts +1 -2
  154. package/dist/live-connectors-runner.d.ts +1 -2
  155. package/dist/local-llm.d.ts +1 -2
  156. package/dist/local-model-endpoint.d.ts +1 -2
  157. package/dist/maintenance/memory-governance.d.ts +1 -2
  158. package/dist/maintenance/memory-governance.js +3 -3
  159. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
  160. package/dist/maintenance/rebuild-memory-projection.js +4 -4
  161. package/dist/mcp-memory-inspector-app.d.ts +7 -8
  162. package/dist/memory-action-policy.d.ts +1 -2
  163. package/dist/memory-cache.d.ts +1 -2
  164. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -2
  165. package/dist/memory-projection-store.d.ts +1 -2
  166. package/dist/memory-provenance.d.ts +1 -2
  167. package/dist/memory-worth-outcomes.d.ts +2 -3
  168. package/dist/models-json.d.ts +1 -2
  169. package/dist/namespaces/migrate.d.ts +3 -4
  170. package/dist/namespaces/migrate.js +4 -4
  171. package/dist/namespaces/principal.d.ts +1 -2
  172. package/dist/namespaces/search.d.ts +1 -2
  173. package/dist/namespaces/storage.d.ts +3 -4
  174. package/dist/namespaces/storage.js +3 -3
  175. package/dist/native-knowledge.d.ts +1 -2
  176. package/dist/operator-toolkit.d.ts +2 -3
  177. package/dist/operator-toolkit.js +7 -7
  178. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -3
  179. package/dist/orchestration/maintenance.d.ts +2 -3
  180. package/dist/orchestration/maintenance.js +5 -5
  181. package/dist/{orchestrator-CWFrT8AF.d.ts → orchestrator-B0YrUl2H.d.ts} +40 -38
  182. package/dist/orchestrator.d.ts +6 -7
  183. package/dist/orchestrator.js +40 -40
  184. package/dist/patterns-cli.d.ts +1 -2
  185. package/dist/{pipeline-DmqtvION.d.ts → pipeline-CiD86zIk.d.ts} +1 -1
  186. package/dist/policy-runtime.d.ts +1 -2
  187. package/dist/provenance.d.ts +1 -2
  188. package/dist/{qmd--fnPMK60.d.ts → qmd-Bef7DDuQ.d.ts} +1 -1
  189. package/dist/qmd-preflight.d.ts +2 -3
  190. package/dist/qmd-recall-cache.d.ts +1 -2
  191. package/dist/qmd.d.ts +2 -3
  192. package/dist/recall-disclosure-escalation.d.ts +1 -2
  193. package/dist/recall-explain-renderer.d.ts +1 -2
  194. package/dist/recall-explain-renderer.js +3 -3
  195. package/dist/recall-planner-llm.d.ts +1 -2
  196. package/dist/recall-state.d.ts +1 -2
  197. package/dist/recall-tag-filter.d.ts +1 -2
  198. package/dist/recall-timings.d.ts +1 -2
  199. package/dist/recall-xray-cli.d.ts +1 -2
  200. package/dist/recall-xray-cli.js +4 -4
  201. package/dist/recall-xray-renderer.d.ts +1 -2
  202. package/dist/recall-xray-renderer.js +3 -3
  203. package/dist/recall-xray.d.ts +1 -2
  204. package/dist/recall-xray.js +2 -2
  205. package/dist/replay/normalizers/chatgpt.d.ts +1 -0
  206. package/dist/replay/normalizers/chatgpt.js +3 -3
  207. package/dist/replay/normalizers/claude.d.ts +1 -0
  208. package/dist/replay/normalizers/claude.js +3 -3
  209. package/dist/replay/normalizers/openclaw.d.ts +1 -0
  210. package/dist/replay/normalizers/openclaw.js +3 -3
  211. package/dist/replay/normalizers/shared.d.ts +1 -0
  212. package/dist/replay/normalizers/shared.js +2 -2
  213. package/dist/replay/runner.d.ts +1 -0
  214. package/dist/replay/runner.js +2 -2
  215. package/dist/replay/types.d.ts +2 -1
  216. package/dist/replay/types.js +1 -1
  217. package/dist/resolve-auth-token.d.ts +1 -2
  218. package/dist/retrieval-agents.d.ts +2 -3
  219. package/dist/retrieval-tiers.d.ts +1 -2
  220. package/dist/routing/engine.d.ts +1 -2
  221. package/dist/routing/store.d.ts +1 -2
  222. package/dist/schemas.d.ts +22 -22
  223. package/dist/search/embed-helper.d.ts +1 -2
  224. package/dist/search/factory.d.ts +1 -2
  225. package/dist/search/index.d.ts +1 -2
  226. package/dist/search/lancedb-backend.d.ts +1 -2
  227. package/dist/search/meilisearch-backend.d.ts +1 -2
  228. package/dist/search/noop-backend.d.ts +1 -2
  229. package/dist/search/orama-backend.d.ts +1 -2
  230. package/dist/search/port.d.ts +1 -2
  231. package/dist/search/remote-backend.d.ts +1 -2
  232. package/dist/{semantic-DJR8_DMQ.d.ts → semantic-TddhF0y7.d.ts} +17 -1
  233. package/dist/{semantic-consolidation-O5lMZ4LG.d.ts → semantic-consolidation-BTShF2Fo.d.ts} +1 -1
  234. package/dist/semantic-consolidation.d.ts +2 -3
  235. package/dist/semantic-consolidation.js +4 -4
  236. package/dist/semantic-rule-promotion.js +3 -3
  237. package/dist/semantic-rule-verifier.d.ts +1 -2
  238. package/dist/semantic-rule-verifier.js +3 -3
  239. package/dist/session-observer-bands.d.ts +1 -2
  240. package/dist/session-observer-state.d.ts +1 -2
  241. package/dist/shared-context/manager.d.ts +3 -4
  242. package/dist/signal.d.ts +1 -2
  243. package/dist/{storage-C1maCNbc.d.ts → storage-DxPDAiU9.d.ts} +5 -1
  244. package/dist/storage.d.ts +2 -3
  245. package/dist/storage.js +2 -2
  246. package/dist/summarizer.d.ts +1 -2
  247. package/dist/summary-snapshot.d.ts +1 -2
  248. package/dist/temporal-supersession.d.ts +2 -3
  249. package/dist/temporal-validity.d.ts +1 -2
  250. package/dist/threading.d.ts +1 -2
  251. package/dist/tier-migration.d.ts +2 -3
  252. package/dist/tier-routing.d.ts +1 -2
  253. package/dist/topics.d.ts +1 -2
  254. package/dist/transcript.d.ts +1 -2
  255. package/dist/trust-score-stage.d.ts +1 -2
  256. package/dist/trust-score.d.ts +1 -2
  257. package/dist/{types-CGgcNWCG.d.ts → types-DDUDgd7T.d.ts} +93 -4
  258. package/dist/types.d.ts +1 -2
  259. package/dist/types.js +1 -1
  260. package/dist/utility-runtime.d.ts +1 -2
  261. package/dist/verified-recall.js +3 -3
  262. package/package.json +2 -2
  263. package/src/access-admin-ops-surface.ts +1 -0
  264. package/src/access-boundary.ts +2 -0
  265. package/src/access-http.test.ts +129 -0
  266. package/src/access-http.ts +92 -23
  267. package/src/access-mcp.ts +11 -2
  268. package/src/access-observe-write-surface.ts +87 -113
  269. package/src/access-operations-batch.ts +2 -2
  270. package/src/access-operations.ts +17 -16
  271. package/src/access-service.ts +13 -5
  272. package/src/admin/admin-surfaces.ts +2 -0
  273. package/src/buffer.ts +6 -1
  274. package/src/bulk-import/types.ts +2 -1
  275. package/src/coding/architecture-surfaces.test.ts +79 -5
  276. package/src/coding/architecture-surfaces.ts +7 -1
  277. package/src/coding/decision-surfaces.test.ts +1 -0
  278. package/src/coding/decision-surfaces.ts +4 -0
  279. package/src/connector-provenance-lifecycle.test.ts +618 -0
  280. package/src/connector-provenance.test.ts +219 -0
  281. package/src/dedup/semantic.test.ts +105 -0
  282. package/src/dedup/semantic.ts +69 -1
  283. package/src/explicit-capture.ts +21 -4
  284. package/src/orchestration/extraction-persist.ts +154 -6
  285. package/src/orchestration/extraction-run.ts +138 -228
  286. package/src/orchestration/persistence-index.ts +40 -5
  287. package/src/orchestration/turn-ingestion.ts +16 -9
  288. package/src/orchestrator-connector-dedup.test.ts +1082 -0
  289. package/src/orchestrator.ts +10 -26
  290. package/src/replay/types.ts +2 -1
  291. package/src/storage.ts +426 -553
  292. package/src/types.ts +11 -2
  293. package/src/utils/yaml-scalar.ts +20 -0
  294. package/dist/chunk-2PRQG7PV.js.map +0 -1
  295. package/dist/chunk-4GNEDXDI.js.map +0 -1
  296. package/dist/chunk-FKCRGLRD.js.map +0 -1
  297. package/dist/chunk-H2DXDQCQ.js.map +0 -1
  298. package/dist/chunk-K5LLP4CY.js.map +0 -1
  299. package/dist/chunk-LADFWYHY.js.map +0 -1
  300. package/dist/chunk-OUELRE5E.js.map +0 -1
  301. package/dist/chunk-PCLIWBGD.js.map +0 -1
  302. package/dist/chunk-SVOHGUMI.js.map +0 -1
  303. package/dist/chunk-UFUKHGZD.js.map +0 -1
  304. package/dist/chunk-XCL57M6Q.js.map +0 -1
  305. package/dist/types-gb_SNtjR.d.ts +0 -85
  306. /package/dist/{chunk-PNLFN2PZ.js.map → chunk-23G3T2Q5.js.map} +0 -0
  307. /package/dist/{chunk-SIRPLF54.js.map → chunk-2K3OSLHE.js.map} +0 -0
  308. /package/dist/{chunk-LQHDIS7L.js.map → chunk-54BGIBCR.js.map} +0 -0
  309. /package/dist/{chunk-PVUJ6WVV.js.map → chunk-5MH5NF3U.js.map} +0 -0
  310. /package/dist/{chunk-Y7UNNAZD.js.map → chunk-7ZYBDQ7V.js.map} +0 -0
  311. /package/dist/{chunk-LR5DZ56F.js.map → chunk-AXALUFAH.js.map} +0 -0
  312. /package/dist/{chunk-AYZJID4S.js.map → chunk-B5GBWBCZ.js.map} +0 -0
  313. /package/dist/{chunk-TLUDFPZL.js.map → chunk-CAZ3Z5M6.js.map} +0 -0
  314. /package/dist/{chunk-P454KXD6.js.map → chunk-CJPVWAJF.js.map} +0 -0
  315. /package/dist/{chunk-RGK27ELN.js.map → chunk-DEKIXXIG.js.map} +0 -0
  316. /package/dist/{chunk-2KK5WNQB.js.map → chunk-DQ42IQSK.js.map} +0 -0
  317. /package/dist/{chunk-HOJZMQ4J.js.map → chunk-FGDKJJZS.js.map} +0 -0
  318. /package/dist/{chunk-ABP6QMVM.js.map → chunk-FQ7HAWWC.js.map} +0 -0
  319. /package/dist/{chunk-CYWA2CXR.js.map → chunk-FVTLSFWU.js.map} +0 -0
  320. /package/dist/{chunk-JJEJJ7RK.js.map → chunk-FXZTL7F7.js.map} +0 -0
  321. /package/dist/{chunk-DANV2HTH.js.map → chunk-GQGDRLDM.js.map} +0 -0
  322. /package/dist/{chunk-7F7Z6MOS.js.map → chunk-H4CKS5B2.js.map} +0 -0
  323. /package/dist/{chunk-CKITWVWJ.js.map → chunk-HSSERO3E.js.map} +0 -0
  324. /package/dist/{chunk-23JFRB73.js.map → chunk-JODHPNLN.js.map} +0 -0
  325. /package/dist/{chunk-DS7MM2ES.js.map → chunk-JZKR6ZAV.js.map} +0 -0
  326. /package/dist/{chunk-BEM4D2QG.js.map → chunk-KJIJNLXT.js.map} +0 -0
  327. /package/dist/{chunk-JSNVWNGX.js.map → chunk-KVSVVKHA.js.map} +0 -0
  328. /package/dist/{chunk-MC4FJXPA.js.map → chunk-MMACM5G2.js.map} +0 -0
  329. /package/dist/{chunk-3XIY7MDQ.js.map → chunk-O6YI4CVI.js.map} +0 -0
  330. /package/dist/{chunk-72WG5QKN.js.map → chunk-SDAXPXER.js.map} +0 -0
  331. /package/dist/{chunk-4LV23CHK.js.map → chunk-VHJARF5R.js.map} +0 -0
  332. /package/dist/{chunk-6MMONPHM.js.map → chunk-W2AHSCKY.js.map} +0 -0
@@ -180,7 +180,7 @@ import type {
180
180
  EntityFile,
181
181
  MemoryFile,
182
182
  MemoryActionOutcome,
183
- CodingContext,
183
+ CodingContext, SourceConnectorProvenance,
184
184
  MemoryActionType,
185
185
  MemoryLifecycleEvent,
186
186
  MemoryStatus,
@@ -1019,7 +1019,7 @@ export interface EngramAccessObserveMessage {
1019
1019
  sourceFormat?: MessagePartSourceFormat;
1020
1020
  }
1021
1021
 
1022
- export interface EngramAccessObserveRequest {
1022
+ export interface EngramAccessObserveRequest extends SourceConnectorProvenance {
1023
1023
  sessionKey: string;
1024
1024
  messages: EngramAccessObserveMessage[];
1025
1025
  namespace?: string;
@@ -2961,6 +2961,7 @@ export class EngramAccessService {
2961
2961
  entityRef: request.entityRef,
2962
2962
  ttl: request.ttl,
2963
2963
  sourceReason: request.sourceReason,
2964
+ sourceConnector: request.sourceConnector,
2964
2965
  },
2965
2966
  skip: request.dryRun === true,
2966
2967
  });
@@ -2997,6 +2998,7 @@ export class EngramAccessService {
2997
2998
  entityRef: request.entityRef,
2998
2999
  ttl: request.ttl,
2999
3000
  sourceReason: request.sourceReason,
3001
+ sourceConnector: request.sourceConnector,
3000
3002
  },
3001
3003
  skip: request.dryRun === true,
3002
3004
  });
@@ -3061,6 +3063,7 @@ export class EngramAccessService {
3061
3063
  async codegraphTool(
3062
3064
  request: CodegraphSurfaceRequest,
3063
3065
  authenticatedPrincipal?: string,
3066
+ sourceConnector?: string,
3064
3067
  ): Promise<CodegraphSurfaceResponse> {
3065
3068
  const principal = authenticatedPrincipal ?? "default";
3066
3069
  const memoryDir = this.orchestrator.config.memoryDir;
@@ -3097,7 +3100,7 @@ export class EngramAccessService {
3097
3100
  throw new EngramAccessInputError(msg);
3098
3101
  },
3099
3102
  delegateDecisionRecord: async (decisionRequest) => {
3100
- return this.codingDecision(decisionRequest, authenticatedPrincipal);
3103
+ return this.codingDecision(decisionRequest, authenticatedPrincipal, sourceConnector);
3101
3104
  },
3102
3105
  buildArchitectureCard: async (repoRoot) => {
3103
3106
  return buildArchitectureCard(repoRoot, {
@@ -3125,6 +3128,7 @@ export class EngramAccessService {
3125
3128
  async codingDecision(
3126
3129
  request: DecisionSurfaceRequest,
3127
3130
  authenticatedPrincipal?: string,
3131
+ sourceConnector?: string,
3128
3132
  ): Promise<DecisionSurfaceResponse> {
3129
3133
  return handleCodingDecision(request, {
3130
3134
  codingKnowledge: this.orchestrator.config.codingKnowledge,
@@ -3146,6 +3150,7 @@ export class EngramAccessService {
3146
3150
  return Object.assign(storage, { namespace: ns });
3147
3151
  },
3148
3152
  throwInputError: (msg) => { throw new EngramAccessInputError(msg); },
3153
+ sourceConnector,
3149
3154
  });
3150
3155
  }
3151
3156
 
@@ -3171,6 +3176,7 @@ export class EngramAccessService {
3171
3176
  async codingArchitecture(
3172
3177
  request: ArchitectureSurfaceRequest,
3173
3178
  authenticatedPrincipal?: string,
3179
+ sourceConnector?: string,
3174
3180
  ): Promise<ArchitectureSurfaceResponse> {
3175
3181
  const resolvedConfig = this.orchestrator.config;
3176
3182
  return handleCodingArchitecture(request, {
@@ -3205,6 +3211,7 @@ export class EngramAccessService {
3205
3211
  createVersion,
3206
3212
  ),
3207
3213
  throwInputError: (msg) => { throw new EngramAccessInputError(msg); },
3214
+ sourceConnector,
3208
3215
  });
3209
3216
  }
3210
3217
 
@@ -4056,6 +4063,7 @@ export class EngramAccessService {
4056
4063
  cwd: request.cwd,
4057
4064
  projectTag: request.projectTag,
4058
4065
  effectiveCodingContext: effectiveCodingContext ?? null,
4066
+ sourceConnector: request.sourceConnector,
4059
4067
  },
4060
4068
  beforeExecute: hooks?.enforceWriteQuota,
4061
4069
  execute: () => this.runObserve(request),
@@ -4714,7 +4722,7 @@ export class EngramAccessService {
4714
4722
  if (!resolveCompressionCapabilities(this.orchestrator.config).compressionGuidelineLearning) {
4715
4723
  return { enabled: false, reason: "Compression guideline learning is disabled. Enable `compressionGuidelineLearningEnabled: true`." };
4716
4724
  }
4717
- return await this.orchestrator.optimizeCompressionGuidelines({
4725
+ return await this.orchestrator.compressionGuidelineCoordinator.optimizeCompressionGuidelines({
4718
4726
  dryRun: request.dryRun,
4719
4727
  eventLimit: request.eventLimit,
4720
4728
  });
@@ -4727,7 +4735,7 @@ export class EngramAccessService {
4727
4735
  if (!resolveCompressionCapabilities(this.orchestrator.config).compressionGuidelineLearning) {
4728
4736
  return { enabled: false, reason: "Compression guideline learning is disabled." };
4729
4737
  }
4730
- return await this.orchestrator.activateCompressionGuidelineDraft({
4738
+ return await this.orchestrator.compressionGuidelineCoordinator.activateCompressionGuidelineDraft({
4731
4739
  expectedContentHash: request.expectedContentHash,
4732
4740
  expectedGuidelineVersion: request.expectedGuidelineVersion,
4733
4741
  });
@@ -782,6 +782,7 @@ export interface PromotionStorageProvider {
782
782
  * back to its origin (matches the runtime extraction pipeline).
783
783
  */
784
784
  lineage: string[];
785
+ sourceConnector?: string;
785
786
  }
786
787
  ): Promise<string>;
787
788
  }
@@ -918,6 +919,7 @@ export async function promoteMemory(options: PromoteMemoryOptions): Promise<Memo
918
919
  actor: options.actor,
919
920
  validAt: sourceMemory.frontmatter.valid_at,
920
921
  lineage: [options.sourceMemoryId],
922
+ ...(sourceMemory.frontmatter.sourceConnector ? { sourceConnector: sourceMemory.frontmatter.sourceConnector } : {}),
921
923
  });
922
924
  target.promoted = true;
923
925
  target.promotedMemoryId = promotedId;
package/src/buffer.ts CHANGED
@@ -632,6 +632,7 @@ export class SmartBuffer {
632
632
  if (typeof t.persistProcessedFingerprint === "boolean") {
633
633
  copy.persistProcessedFingerprint = t.persistProcessedFingerprint;
634
634
  }
635
+ if (typeof t.sourceConnector === "string") copy.sourceConnector = t.sourceConnector;
635
636
  return copy;
636
637
  });
637
638
  }
@@ -791,6 +792,9 @@ function copyBufferTurn(turn: BufferTurn): BufferTurn {
791
792
  if (typeof turn.persistProcessedFingerprint === "boolean") {
792
793
  copy.persistProcessedFingerprint = turn.persistProcessedFingerprint;
793
794
  }
795
+ if (typeof turn.sourceConnector === "string") {
796
+ copy.sourceConnector = turn.sourceConnector;
797
+ }
794
798
  return copy;
795
799
  }
796
800
 
@@ -804,7 +808,8 @@ function bufferTurnsEqual(left: BufferTurn | undefined, right: BufferTurn): bool
804
808
  left.logicalSessionKey === right.logicalSessionKey &&
805
809
  left.providerThreadId === right.providerThreadId &&
806
810
  left.turnFingerprint === right.turnFingerprint &&
807
- left.persistProcessedFingerprint === right.persistProcessedFingerprint
811
+ left.persistProcessedFingerprint === right.persistProcessedFingerprint &&
812
+ left.sourceConnector === right.sourceConnector
808
813
  );
809
814
  }
810
815
 
@@ -3,6 +3,7 @@
3
3
  // ---------------------------------------------------------------------------
4
4
 
5
5
  import { parseIsoOffsetTimestamp } from "../utils/iso-timestamp.js";
6
+ import type { SourceConnectorProvenance } from "../types.js";
6
7
 
7
8
  export interface BulkImportSource {
8
9
  turns: ImportTurn[];
@@ -14,7 +15,7 @@ export interface BulkImportSource {
14
15
  };
15
16
  }
16
17
 
17
- export interface ImportTurn {
18
+ export interface ImportTurn extends SourceConnectorProvenance {
18
19
  role: "user" | "assistant" | "other";
19
20
  content: string;
20
21
  timestamp: string;
@@ -95,13 +95,13 @@ function makeCardMemory(overrides: {
95
95
  interface StubStorage extends ArchitectureSurfaceStorage {
96
96
  memories: MemoryFile[];
97
97
  written: Array<{ category: string; content: string; options: Record<string, unknown> }>;
98
- updated: Array<{ id: string; content: string }>;
98
+ updated: Array<{ id: string; content: string; options: Record<string, unknown> }>;
99
99
  }
100
100
 
101
101
  function makeStubStorage(initialMemories: MemoryFile[] = []): StubStorage {
102
102
  const allMemories: MemoryFile[] = [...initialMemories];
103
103
  const written: Array<{ category: string; content: string; options: Record<string, unknown> }> = [];
104
- const updated: Array<{ id: string; content: string }> = [];
104
+ const updated: Array<{ id: string; content: string; options: Record<string, unknown> }> = [];
105
105
  return {
106
106
  dir: "/synthetic/memory",
107
107
  namespace: "default",
@@ -119,10 +119,17 @@ function makeStubStorage(initialMemories: MemoryFile[] = []): StubStorage {
119
119
  });
120
120
  return { id: id, tombstoneBlocked: false };
121
121
  },
122
- async updateMemory(id, newContent) {
123
- updated.push({ id, content: newContent });
122
+ async updateMemory(id, newContent, options) {
123
+ updated.push({ id, content: newContent, options: options ?? {} });
124
124
  const m = allMemories.find((mem) => mem.frontmatter.id === id);
125
- if (m) m.content = newContent;
125
+ if (m) {
126
+ m.content = newContent;
127
+ // Apply sourceConnector backfill to the in-memory frontmatter so
128
+ // tests can verify the caller's intent matches what reaches storage.
129
+ if (options?.sourceConnector) {
130
+ (m.frontmatter as unknown as Record<string, unknown>).sourceConnector = options.sourceConnector;
131
+ }
132
+ }
126
133
  return !!m;
127
134
  },
128
135
  };
@@ -603,3 +610,70 @@ test("MCP surface: remnic.coding_architecture alias dispatches identically", asy
603
610
  assert.equal(calls.length, 1, "service.codingArchitecture called exactly once via alias");
604
611
  assert.equal(calls[0]?.subcommand, "get");
605
612
  });
613
+
614
+ // ──────────────────────────────────────────────────────────────────────────
615
+ // Regression: sourceConnector provenance through updateMemory (codex finding)
616
+ // ──────────────────────────────────────────────────────────────────────────
617
+
618
+ test("refresh: updateMemory backfills sourceConnector when connector provided", async () => {
619
+ // Seed an existing card WITHOUT sourceConnector (pre-provenance card).
620
+ const storage = makeStubStorage([
621
+ makeCardMemory({
622
+ content: "# Old card — pre-provenance",
623
+ frontmatter: { id: "old-card" },
624
+ }),
625
+ ]);
626
+ const ctx = makeContext({
627
+ resolveStorage: async () => storage,
628
+ sourceConnector: "chatgpt",
629
+ });
630
+ await handleCodingArchitecture({ subcommand: "refresh", sessionKey: "s1" }, ctx);
631
+ // updateMemory must have been called with sourceConnector in the options.
632
+ assert.equal(storage.updated.length, 1, "updateMemory called once");
633
+ assert.equal(
634
+ storage.updated[0]!.options.sourceConnector,
635
+ "chatgpt",
636
+ "sourceConnector must reach updateMemory options",
637
+ );
638
+ });
639
+
640
+ test("refresh: updateMemory omits sourceConnector when no connector in context", async () => {
641
+ // Existing card, no connector in the context — updateMemory must still
642
+ // succeed without breaking frontmatter.
643
+ const storage = makeStubStorage([
644
+ makeCardMemory({
645
+ content: "# Existing card",
646
+ frontmatter: { id: "existing-card" },
647
+ }),
648
+ ]);
649
+ const ctx = makeContext({ resolveStorage: async () => storage });
650
+ await handleCodingArchitecture({ subcommand: "refresh", sessionKey: "s1" }, ctx);
651
+ assert.equal(storage.updated.length, 1, "updateMemory called once");
652
+ assert.equal(
653
+ storage.updated[0]!.options.sourceConnector,
654
+ undefined,
655
+ "no sourceConnector when context has none",
656
+ );
657
+ });
658
+
659
+ test("refresh: updateMemory retains existing sourceConnector via frontmatter spread", async () => {
660
+ // Existing card already HAS sourceConnector — updateMemory's frontmatter
661
+ // spread preserves it even when the refresh call doesn't pass it again.
662
+ const storage = makeStubStorage([
663
+ makeCardMemory({
664
+ content: "# Card with connector",
665
+ frontmatter: { id: "connector-card", sourceConnector: "openclaw" },
666
+ }),
667
+ ]);
668
+ const ctx = makeContext({ resolveStorage: async () => storage });
669
+ const result = await handleCodingArchitecture({ subcommand: "refresh", sessionKey: "s1" }, ctx);
670
+ if (result.subcommand !== "refresh") return;
671
+ assert.equal(result.refreshed, true);
672
+ // The card memory in storage must still have its sourceConnector.
673
+ const card = storage.memories.find((m) => m.frontmatter.id === "connector-card");
674
+ assert.equal(
675
+ card?.frontmatter.sourceConnector,
676
+ "openclaw",
677
+ "existing sourceConnector preserved through updateMemory",
678
+ );
679
+ });
@@ -158,12 +158,13 @@ export interface ArchitectureSurfaceStorage {
158
158
  source?: string;
159
159
  status?: MemoryStatus;
160
160
  structuredAttributes?: Record<string, string>;
161
+ sourceConnector?: string;
161
162
  },
162
163
  ): Promise<MemoryWriteResult>;
163
164
  updateMemory(
164
165
  id: string,
165
166
  newContent: string,
166
- options?: { supersedes?: string; lineage?: string[]; actor?: string },
167
+ options?: { supersedes?: string; lineage?: string[]; actor?: string; sourceConnector?: string },
167
168
  ): Promise<boolean>;
168
169
  }
169
170
 
@@ -205,6 +206,8 @@ export interface ArchitectureSurfaceContext {
205
206
  versioning: ArchitectureVersioningHook;
206
207
  /** Throw the surface-appropriate input-validation error. */
207
208
  throwInputError(message: string): never;
209
+ /** Server-resolved connector identity for provenance. */
210
+ readonly sourceConnector?: string;
208
211
  }
209
212
 
210
213
  // ──────────────────────────────────────────────────────────────────────────
@@ -311,6 +314,7 @@ async function architectureRefresh(
311
314
  await ctx.versioning.snapshotIfExists(existing);
312
315
  const updated = await storage.updateMemory(existing.frontmatter.id, cardContent, {
313
316
  actor: "coding-architecture-refresh",
317
+ ...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
314
318
  });
315
319
  if (!updated) {
316
320
  log.warn(
@@ -320,6 +324,7 @@ async function architectureRefresh(
320
324
  confidence: 1.0,
321
325
  tags,
322
326
  source: "coding-architecture",
327
+ ...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
323
328
  structuredAttributes: { cardKind: ARCHITECTURE_CARD_KIND },
324
329
  });
325
330
  log.info(
@@ -344,6 +349,7 @@ async function architectureRefresh(
344
349
  confidence: 1.0,
345
350
  tags,
346
351
  source: "coding-architecture",
352
+ ...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
347
353
  structuredAttributes: { cardKind: ARCHITECTURE_CARD_KIND },
348
354
  });
349
355
  log.info(
@@ -73,6 +73,7 @@ function makeMockService(
73
73
  codingDecision(
74
74
  req: DecisionSurfaceRequest,
75
75
  _authenticatedPrincipal?: string,
76
+ _sourceConnector?: string,
76
77
  ): Promise<DecisionSurfaceResponse> {
77
78
  calls.push(req);
78
79
  return Promise.resolve(response);
@@ -208,6 +208,8 @@ export interface DecisionSurfaceContext {
208
208
  resolveStorage(request: DecisionSurfaceRequest): Promise<DecisionSurfaceStorage>;
209
209
  /** Throw the surface-appropriate input-validation error. */
210
210
  throwInputError(message: string): never;
211
+ /** Server-resolved connector identity for provenance stamping. */
212
+ readonly sourceConnector?: string;
211
213
  }
212
214
 
213
215
  /**
@@ -358,6 +360,7 @@ async function decisionRecord(
358
360
  // persist inactive decision statuses in frontmatter).
359
361
  structuredAttributes: { decisionStatus: status },
360
362
  status: isActive ? undefined : "archived",
363
+ ...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
361
364
  });
362
365
  log.info(
363
366
  `access-write op=coding_decision/record memoryId=${memoryId} status=${status}`,
@@ -419,6 +422,7 @@ async function decisionSupersede(
419
422
  // the replacement so list/get projection and QMD indexing see the
420
423
  // authoritative marker (review: supersede omits decisionStatus attrs).
421
424
  structuredAttributes: { decisionStatus: "accepted" },
425
+ ...(ctx.sourceConnector ? { sourceConnector: ctx.sourceConnector } : {}),
422
426
  },
423
427
  );
424
428
  if (replacementBlocked) {