@remnic/core 9.63.6 → 9.63.8

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 (304) hide show
  1. package/dist/access-admin-ops-surface.d.ts +3 -2
  2. package/dist/access-admin-ops-surface.js +31 -27
  3. package/dist/access-authorization-probe.d.ts +3 -2
  4. package/dist/access-authorization-probe.js +32 -28
  5. package/dist/access-boundary.d.ts +3 -2
  6. package/dist/access-boundary.js +31 -27
  7. package/dist/access-cli.js +98 -95
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-extraction-force-flush.d.ts +3 -2
  10. package/dist/access-extraction-force-flush.js +31 -27
  11. package/dist/access-http-lcm-compaction.d.ts +3 -2
  12. package/dist/access-http-lifecycle-flush.d.ts +3 -2
  13. package/dist/access-http-offline-stream.d.ts +3 -2
  14. package/dist/access-http-query.js +33 -29
  15. package/dist/access-http.d.ts +4 -3
  16. package/dist/access-http.js +47 -43
  17. package/dist/access-identity-continuity-surface.d.ts +2 -1
  18. package/dist/access-identity-continuity-surface.js +31 -27
  19. package/dist/access-lcm-surface.d.ts +3 -2
  20. package/dist/access-lcm-surface.js +31 -27
  21. package/dist/access-mcp-output-schemas.js +1 -1
  22. package/dist/access-mcp.d.ts +3 -2
  23. package/dist/access-mcp.js +38 -34
  24. package/dist/access-namespace-preflight.js +31 -27
  25. package/dist/access-observe-write-surface.d.ts +3 -2
  26. package/dist/access-observe-write-surface.js +31 -27
  27. package/dist/access-offline-manifest.d.ts +2 -1
  28. package/dist/access-offline-manifest.js +5 -4
  29. package/dist/access-operations-batch.js +32 -28
  30. package/dist/access-operations.d.ts +3 -2
  31. package/dist/access-operations.js +36 -32
  32. package/dist/access-recall-concurrency.d.ts +3 -2
  33. package/dist/access-recall-concurrency.js +31 -27
  34. package/dist/access-recall-response.d.ts +3 -2
  35. package/dist/access-recall-response.js +31 -27
  36. package/dist/access-recall-surface.d.ts +3 -2
  37. package/dist/access-recall-surface.js +31 -27
  38. package/dist/access-schema.js +6 -5
  39. package/dist/{access-service-cKQrte9Z.d.ts → access-service-BaPa_km6.d.ts} +1 -1
  40. package/dist/access-service-helpers.d.ts +3 -2
  41. package/dist/access-service.d.ts +3 -2
  42. package/dist/access-service.js +31 -27
  43. package/dist/access-surface-catalog.d.ts +3 -2
  44. package/dist/access-surface-catalog.js +33 -29
  45. package/dist/access-surface-catalog.js.map +1 -1
  46. package/dist/active-recall.js +4 -2
  47. package/dist/active-recall.js.map +1 -1
  48. package/dist/adapters/index.js +4 -4
  49. package/dist/adapters/registry.js +2 -2
  50. package/dist/{auto-sync-BKRJDMKX.js → auto-sync-3SHMZVQS.js} +5 -3
  51. package/dist/{auto-sync-BKRJDMKX.js.map → auto-sync-3SHMZVQS.js.map} +1 -1
  52. package/dist/bootstrap.d.ts +2 -1
  53. package/dist/briefing.js +10 -10
  54. package/dist/calibration.d.ts +2 -1
  55. package/dist/calibration.js +7 -0
  56. package/dist/calibration.js.map +1 -1
  57. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  58. package/dist/causal-consolidation.js +11 -11
  59. package/dist/census-validation.d.ts +19 -0
  60. package/dist/census-validation.js +14 -0
  61. package/dist/census-validation.js.map +1 -0
  62. package/dist/{chunk-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
  63. package/dist/chunk-2YA5N2BY.js +65 -0
  64. package/dist/chunk-2YA5N2BY.js.map +1 -0
  65. package/dist/{chunk-PB4WVYGC.js → chunk-3IMYRX3W.js} +2 -2
  66. package/dist/{chunk-R6UMNP5C.js → chunk-3T6HIIKA.js} +2 -2
  67. package/dist/{chunk-77QZW2D6.js → chunk-3TDAA7VA.js} +2 -2
  68. package/dist/{chunk-TWTUGCTY.js → chunk-3YTTAGPB.js} +6 -1
  69. package/dist/chunk-3YTTAGPB.js.map +1 -0
  70. package/dist/{chunk-DXDAQZ2K.js → chunk-42TIIO2M.js} +2 -2
  71. package/dist/{chunk-Y7COCXY2.js → chunk-4F67JJPG.js} +2 -2
  72. package/dist/{chunk-OW7NVMGQ.js → chunk-5OOTHWGJ.js} +2 -2
  73. package/dist/{chunk-KYTRF64R.js → chunk-5SCFDQEJ.js} +2 -2
  74. package/dist/{chunk-DYZR3Z6D.js → chunk-5TF5STAV.js} +4 -4
  75. package/dist/{chunk-GG4DN63W.js → chunk-62Y5AGCM.js} +2 -2
  76. package/dist/{chunk-PMVPCZJZ.js → chunk-6433HV72.js} +2 -2
  77. package/dist/{chunk-KHCUVYCY.js → chunk-6UKSOXAO.js} +3 -3
  78. package/dist/{chunk-GF7RQWXC.js → chunk-AJRJDXYR.js} +2 -2
  79. package/dist/{chunk-YEQCMA5L.js → chunk-BOSIHHOH.js} +2 -2
  80. package/dist/{chunk-IVXVLDNT.js → chunk-BPQ7L27U.js} +77 -92
  81. package/dist/chunk-BPQ7L27U.js.map +1 -0
  82. package/dist/{chunk-7LF2OHIJ.js → chunk-BRHKW7GY.js} +2 -2
  83. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  84. package/dist/{chunk-LX4TNSAE.js → chunk-CBY54QYW.js} +4 -4
  85. package/dist/{chunk-CIAI24TQ.js → chunk-DGUVXXAU.js} +3 -3
  86. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  87. package/dist/{chunk-QI5RDDEL.js → chunk-EDZNW3HE.js} +3 -3
  88. package/dist/chunk-FEHIOYML.js +168 -0
  89. package/dist/chunk-FEHIOYML.js.map +1 -0
  90. package/dist/{chunk-Z4N7SVVF.js → chunk-FZEEWOI2.js} +9 -4
  91. package/dist/chunk-FZEEWOI2.js.map +1 -0
  92. package/dist/{chunk-6YMEU6OQ.js → chunk-G72IPMR7.js} +2 -2
  93. package/dist/{chunk-7AF243WZ.js → chunk-GBVRVYF4.js} +1 -1
  94. package/dist/{chunk-FPEZ74F7.js → chunk-I2HTKOOP.js} +3 -3
  95. package/dist/{chunk-R7TZ2HCS.js → chunk-JG22O53B.js} +58 -3
  96. package/dist/chunk-JG22O53B.js.map +1 -0
  97. package/dist/{chunk-VPHSMJ2E.js → chunk-JPWSYHLB.js} +2 -2
  98. package/dist/{chunk-X7LEDA74.js → chunk-KFB4YNXM.js} +2 -2
  99. package/dist/{chunk-I5FLIB2J.js → chunk-KXWE62IH.js} +2 -2
  100. package/dist/chunk-LQWOFU6L.js +17 -0
  101. package/dist/chunk-LQWOFU6L.js.map +1 -0
  102. package/dist/{chunk-TSTI6A3A.js → chunk-LTYH2L6E.js} +13 -13
  103. package/dist/{chunk-ZUPKNWRZ.js → chunk-MIUL6AUZ.js} +3 -3
  104. package/dist/{chunk-EJY3HJMT.js → chunk-MYI3RKI6.js} +2 -2
  105. package/dist/{chunk-UCLMKNHA.js → chunk-N7V3P4V5.js} +2 -2
  106. package/dist/{chunk-NA56NSKL.js → chunk-O52TB5SL.js} +2 -2
  107. package/dist/{chunk-7KQB4EBS.js → chunk-OPPBTPUU.js} +4 -4
  108. package/dist/{chunk-ERPBRXVZ.js → chunk-PHKU6BZ2.js} +2 -2
  109. package/dist/{chunk-GTD4Q62X.js → chunk-PQHNZ63P.js} +4 -4
  110. package/dist/{chunk-FHKXVTM5.js → chunk-Q5XKKDFQ.js} +16 -16
  111. package/dist/{chunk-QRWMS6SI.js → chunk-Q6OL23WM.js} +2 -2
  112. package/dist/{chunk-V3KIRICY.js → chunk-QQYHYW2N.js} +3 -3
  113. package/dist/{chunk-YFCEBB5P.js → chunk-QTXNS3HB.js} +2 -2
  114. package/dist/{chunk-2QSZNTDO.js → chunk-RKNJBZ55.js} +4 -4
  115. package/dist/{chunk-E4KMY4KR.js → chunk-SNEUAZ6B.js} +2 -2
  116. package/dist/{chunk-F6JYBVL6.js → chunk-SY5JUJ2X.js} +52 -52
  117. package/dist/{chunk-EFKZT6AY.js → chunk-T42L3S6A.js} +6 -11
  118. package/dist/chunk-T42L3S6A.js.map +1 -0
  119. package/dist/{chunk-YXMHUBN2.js → chunk-TOP3FSDW.js} +25 -102
  120. package/dist/chunk-TOP3FSDW.js.map +1 -0
  121. package/dist/{chunk-PBRCYYO7.js → chunk-ULZFZL7K.js} +2 -2
  122. package/dist/{chunk-YYQAKIDJ.js → chunk-VD2OT77P.js} +2 -2
  123. package/dist/chunk-VD2OT77P.js.map +1 -0
  124. package/dist/{chunk-IPLYGWQF.js → chunk-VDX2J7OX.js} +6 -6
  125. package/dist/{chunk-UGHCZS6K.js → chunk-VFZQXYN5.js} +2 -2
  126. package/dist/{chunk-NKB43PGI.js → chunk-VYMICVRA.js} +2 -2
  127. package/dist/{chunk-OETHJBAL.js → chunk-WBPD6SBZ.js} +109 -116
  128. package/dist/chunk-WBPD6SBZ.js.map +1 -0
  129. package/dist/{chunk-2UM6WHME.js → chunk-XE2QCCT2.js} +2 -2
  130. package/dist/{chunk-SYVGVK4S.js → chunk-XTMYB2HY.js} +2 -2
  131. package/dist/{chunk-AYVCKGA6.js → chunk-YTXNDEUS.js} +2 -2
  132. package/dist/{chunk-3Z5TGRFA.js → chunk-ZOAAY2OE.js} +9 -9
  133. package/dist/{chunk-L3CHRBHE.js → chunk-ZRUEP4IK.js} +17 -11
  134. package/dist/chunk-ZRUEP4IK.js.map +1 -0
  135. package/dist/{chunk-PRDJMOST.js → chunk-ZVZHG7AI.js} +65 -15
  136. package/dist/chunk-ZVZHG7AI.js.map +1 -0
  137. package/dist/{chunk-RYST72N5.js → chunk-ZWYXSF2T.js} +4 -154
  138. package/dist/chunk-ZWYXSF2T.js.map +1 -0
  139. package/dist/{cli-BFBDYV0D.d.ts → cli-D0tV7eeU.d.ts} +2 -2
  140. package/dist/cli.d.ts +4 -3
  141. package/dist/cli.js +69 -65
  142. package/dist/compounding/engine.js +10 -10
  143. package/dist/config.js +4 -2
  144. package/dist/connectors/codex-materialize-runner.js +10 -10
  145. package/dist/connectors/index.js +10 -10
  146. package/dist/consolidation-provenance-check.js +2 -2
  147. package/dist/convergence-refresh.js +12 -12
  148. package/dist/conversation-index/backend.js +2 -2
  149. package/dist/corpus-watermark.js +12 -12
  150. package/dist/entity-retrieval.js +10 -10
  151. package/dist/explicit-capture.d.ts +2 -1
  152. package/dist/external-wiki-access.d.ts +3 -2
  153. package/dist/external-wiki-access.js +32 -28
  154. package/dist/external-wiki-mcp-tools.d.ts +3 -2
  155. package/dist/extraction-judge.d.ts +2 -1
  156. package/dist/extraction-judge.js +6 -1
  157. package/dist/extraction-normalization.js +2 -2
  158. package/dist/extraction-prompt.d.ts +20 -1
  159. package/dist/extraction-prompt.js +11 -1
  160. package/dist/extraction.js +13 -13
  161. package/dist/harmonic-retrieval.js +1 -1
  162. package/dist/included-memories.d.ts +11 -0
  163. package/dist/included-memories.js +14 -0
  164. package/dist/included-memories.js.map +1 -0
  165. package/dist/index.d.ts +6 -5
  166. package/dist/index.js +117 -114
  167. package/dist/lcm/index.js +3 -3
  168. package/dist/maintenance/memory-governance.js +10 -10
  169. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +10 -10
  170. package/dist/maintenance/rebuild-memory-projection.js +11 -11
  171. package/dist/mcp-memory-inspector-app.d.ts +3 -2
  172. package/dist/namespaces/migrate.js +11 -11
  173. package/dist/namespaces/search.js +4 -4
  174. package/dist/namespaces/storage.js +10 -10
  175. package/dist/offline-sync.js +2 -1
  176. package/dist/operator-doctor-corpus.js +13 -13
  177. package/dist/operator-toolkit.js +23 -21
  178. package/dist/orchestration/maintenance.js +16 -16
  179. package/dist/{orchestrator-CSc9GfQv.d.ts → orchestrator-Bay_AofR.d.ts} +2 -3
  180. package/dist/orchestrator.d.ts +2 -1
  181. package/dist/orchestrator.js +100 -97
  182. package/dist/{public-http-8PcrDIYi.d.ts → public-http-BtjiyKah.d.ts} +1 -1
  183. package/dist/recall-explain-renderer.d.ts +1 -0
  184. package/dist/recall-state.d.ts +6 -2
  185. package/dist/recall-state.js +6 -2
  186. package/dist/reconcile/cursor.js +7 -3
  187. package/dist/reconcile/cursor.js.map +1 -1
  188. package/dist/reconcile/manifest.js +3 -7
  189. package/dist/reconcile/plan.d.ts +15 -1
  190. package/dist/reconcile/plan.js +6 -10
  191. package/dist/resume-bundles.js +5 -3
  192. package/dist/search/factory.js +3 -3
  193. package/dist/search/index.js +3 -3
  194. package/dist/semantic-consolidation.js +16 -16
  195. package/dist/semantic-rule-promotion.js +10 -10
  196. package/dist/semantic-rule-verifier.js +10 -10
  197. package/dist/source-agent-qualifier.js +10 -10
  198. package/dist/storage.js +9 -9
  199. package/dist/support-passport/index.d.ts +6 -5
  200. package/dist/support-passport/index.js +34 -30
  201. package/dist/transfer/autodetect.js +1 -1
  202. package/dist/transfer/backup.js +2 -2
  203. package/dist/transfer/capsule-export.js +3 -3
  204. package/dist/transfer/capsule-import.js +2 -2
  205. package/dist/verified-recall.js +10 -10
  206. package/package.json +2 -2
  207. package/src/access-mcp-output-schemas.ts +1 -1
  208. package/src/access-recall-response.ts +4 -2
  209. package/src/access-recall-surface.ts +9 -9
  210. package/src/access-service-namespace.test.ts +9 -9
  211. package/src/access-service-raw-excerpt-read-gate.test.ts +1 -1
  212. package/src/calibration.ts +3 -1
  213. package/src/census-validation.ts +25 -0
  214. package/src/coding/architecture-surfaces.test.ts +9 -10
  215. package/src/coding/architecture-surfaces.ts +2 -35
  216. package/src/coding/codegraph-runtime-loader.test.ts +228 -0
  217. package/src/coding/codegraph-runtime.ts +30 -50
  218. package/src/coding/codegraph-surfaces.ts +2 -2
  219. package/src/coding/coding-knowledge-config.ts +35 -1
  220. package/src/coding/decision-surfaces.test.ts +9 -10
  221. package/src/coding/decision-surfaces.ts +2 -40
  222. package/src/coding/session-delta-surfaces.test.ts +9 -10
  223. package/src/coding/session-delta-surfaces.ts +2 -33
  224. package/src/extraction-judge.ts +3 -1
  225. package/src/extraction-output-language.test.ts +116 -0
  226. package/src/extraction-prompt.ts +70 -1
  227. package/src/extraction.ts +23 -95
  228. package/src/included-memories.ts +88 -0
  229. package/src/offline-sync.ts +4 -4
  230. package/src/orchestration/recall-internal-deps.ts +2 -4
  231. package/src/orchestration/recall-internal.ts +9 -13
  232. package/src/orchestration/recall-result-formatter-display-safe.test.ts +13 -16
  233. package/src/orchestration/recall-result-formatter.ts +32 -45
  234. package/src/orchestration/recall-section-coordinator.ts +20 -26
  235. package/src/orchestrator.ts +2 -4
  236. package/src/recall-explain-renderer.test.ts +4 -0
  237. package/src/recall-state.test.ts +108 -5
  238. package/src/recall-state.ts +85 -23
  239. package/src/recall-token-budget.test.ts +1 -1
  240. package/src/reconcile/census-parity.test.ts +152 -0
  241. package/src/reconcile/cursor.ts +5 -5
  242. package/src/reconcile/manifest.ts +4 -11
  243. package/src/reconcile/plan.ts +18 -15
  244. package/dist/chunk-EFKZT6AY.js.map +0 -1
  245. package/dist/chunk-IVXVLDNT.js.map +0 -1
  246. package/dist/chunk-L3CHRBHE.js.map +0 -1
  247. package/dist/chunk-OETHJBAL.js.map +0 -1
  248. package/dist/chunk-PRDJMOST.js.map +0 -1
  249. package/dist/chunk-R7TZ2HCS.js.map +0 -1
  250. package/dist/chunk-RYST72N5.js.map +0 -1
  251. package/dist/chunk-TWTUGCTY.js.map +0 -1
  252. package/dist/chunk-YXMHUBN2.js.map +0 -1
  253. package/dist/chunk-YYQAKIDJ.js.map +0 -1
  254. package/dist/chunk-Z4N7SVVF.js.map +0 -1
  255. /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  256. /package/dist/{chunk-LEPOP46W.js.map → chunk-227UFSEQ.js.map} +0 -0
  257. /package/dist/{chunk-PB4WVYGC.js.map → chunk-3IMYRX3W.js.map} +0 -0
  258. /package/dist/{chunk-R6UMNP5C.js.map → chunk-3T6HIIKA.js.map} +0 -0
  259. /package/dist/{chunk-77QZW2D6.js.map → chunk-3TDAA7VA.js.map} +0 -0
  260. /package/dist/{chunk-DXDAQZ2K.js.map → chunk-42TIIO2M.js.map} +0 -0
  261. /package/dist/{chunk-Y7COCXY2.js.map → chunk-4F67JJPG.js.map} +0 -0
  262. /package/dist/{chunk-OW7NVMGQ.js.map → chunk-5OOTHWGJ.js.map} +0 -0
  263. /package/dist/{chunk-KYTRF64R.js.map → chunk-5SCFDQEJ.js.map} +0 -0
  264. /package/dist/{chunk-DYZR3Z6D.js.map → chunk-5TF5STAV.js.map} +0 -0
  265. /package/dist/{chunk-GG4DN63W.js.map → chunk-62Y5AGCM.js.map} +0 -0
  266. /package/dist/{chunk-PMVPCZJZ.js.map → chunk-6433HV72.js.map} +0 -0
  267. /package/dist/{chunk-KHCUVYCY.js.map → chunk-6UKSOXAO.js.map} +0 -0
  268. /package/dist/{chunk-GF7RQWXC.js.map → chunk-AJRJDXYR.js.map} +0 -0
  269. /package/dist/{chunk-YEQCMA5L.js.map → chunk-BOSIHHOH.js.map} +0 -0
  270. /package/dist/{chunk-7LF2OHIJ.js.map → chunk-BRHKW7GY.js.map} +0 -0
  271. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  272. /package/dist/{chunk-LX4TNSAE.js.map → chunk-CBY54QYW.js.map} +0 -0
  273. /package/dist/{chunk-CIAI24TQ.js.map → chunk-DGUVXXAU.js.map} +0 -0
  274. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  275. /package/dist/{chunk-QI5RDDEL.js.map → chunk-EDZNW3HE.js.map} +0 -0
  276. /package/dist/{chunk-6YMEU6OQ.js.map → chunk-G72IPMR7.js.map} +0 -0
  277. /package/dist/{chunk-7AF243WZ.js.map → chunk-GBVRVYF4.js.map} +0 -0
  278. /package/dist/{chunk-FPEZ74F7.js.map → chunk-I2HTKOOP.js.map} +0 -0
  279. /package/dist/{chunk-VPHSMJ2E.js.map → chunk-JPWSYHLB.js.map} +0 -0
  280. /package/dist/{chunk-X7LEDA74.js.map → chunk-KFB4YNXM.js.map} +0 -0
  281. /package/dist/{chunk-I5FLIB2J.js.map → chunk-KXWE62IH.js.map} +0 -0
  282. /package/dist/{chunk-TSTI6A3A.js.map → chunk-LTYH2L6E.js.map} +0 -0
  283. /package/dist/{chunk-ZUPKNWRZ.js.map → chunk-MIUL6AUZ.js.map} +0 -0
  284. /package/dist/{chunk-EJY3HJMT.js.map → chunk-MYI3RKI6.js.map} +0 -0
  285. /package/dist/{chunk-UCLMKNHA.js.map → chunk-N7V3P4V5.js.map} +0 -0
  286. /package/dist/{chunk-NA56NSKL.js.map → chunk-O52TB5SL.js.map} +0 -0
  287. /package/dist/{chunk-7KQB4EBS.js.map → chunk-OPPBTPUU.js.map} +0 -0
  288. /package/dist/{chunk-ERPBRXVZ.js.map → chunk-PHKU6BZ2.js.map} +0 -0
  289. /package/dist/{chunk-GTD4Q62X.js.map → chunk-PQHNZ63P.js.map} +0 -0
  290. /package/dist/{chunk-FHKXVTM5.js.map → chunk-Q5XKKDFQ.js.map} +0 -0
  291. /package/dist/{chunk-QRWMS6SI.js.map → chunk-Q6OL23WM.js.map} +0 -0
  292. /package/dist/{chunk-V3KIRICY.js.map → chunk-QQYHYW2N.js.map} +0 -0
  293. /package/dist/{chunk-YFCEBB5P.js.map → chunk-QTXNS3HB.js.map} +0 -0
  294. /package/dist/{chunk-2QSZNTDO.js.map → chunk-RKNJBZ55.js.map} +0 -0
  295. /package/dist/{chunk-E4KMY4KR.js.map → chunk-SNEUAZ6B.js.map} +0 -0
  296. /package/dist/{chunk-F6JYBVL6.js.map → chunk-SY5JUJ2X.js.map} +0 -0
  297. /package/dist/{chunk-PBRCYYO7.js.map → chunk-ULZFZL7K.js.map} +0 -0
  298. /package/dist/{chunk-IPLYGWQF.js.map → chunk-VDX2J7OX.js.map} +0 -0
  299. /package/dist/{chunk-UGHCZS6K.js.map → chunk-VFZQXYN5.js.map} +0 -0
  300. /package/dist/{chunk-NKB43PGI.js.map → chunk-VYMICVRA.js.map} +0 -0
  301. /package/dist/{chunk-2UM6WHME.js.map → chunk-XE2QCCT2.js.map} +0 -0
  302. /package/dist/{chunk-SYVGVK4S.js.map → chunk-XTMYB2HY.js.map} +0 -0
  303. /package/dist/{chunk-AYVCKGA6.js.map → chunk-YTXNDEUS.js.map} +0 -0
  304. /package/dist/{chunk-3Z5TGRFA.js.map → chunk-ZOAAY2OE.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  SUPPORT_PASSPORT_MODEL_RESULT_PATH,
5
5
  SupportPassportModelBridge,
6
6
  parseSupportPassportModelJob
7
- } from "../chunk-PB4WVYGC.js";
7
+ } from "../chunk-3IMYRX3W.js";
8
8
  import {
9
9
  DEFAULT_SUPPORT_PASSPORT_CONFIG,
10
10
  parseSupportPassportConfig
@@ -14,8 +14,8 @@ import {
14
14
  buildSupportPassportPublicRequestHandler,
15
15
  composeSupportPassportExternalRequestHandlers,
16
16
  normalizeSupportPassportNetworkAddress
17
- } from "../chunk-UCLMKNHA.js";
18
- import "../chunk-NKB43PGI.js";
17
+ } from "../chunk-N7V3P4V5.js";
18
+ import "../chunk-VYMICVRA.js";
19
19
  import {
20
20
  SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
21
21
  SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES,
@@ -56,28 +56,30 @@ import {
56
56
  notifySupportPassportCommitted,
57
57
  resolveSupportPassportModelRoutePlan,
58
58
  syncDirectoryForDurability
59
- } from "../chunk-IVXVLDNT.js";
59
+ } from "../chunk-BPQ7L27U.js";
60
60
  import "../chunk-GDASG7NC.js";
61
61
  import "../chunk-GDB4J2H3.js";
62
- import "../chunk-PMVPCZJZ.js";
62
+ import "../chunk-6433HV72.js";
63
63
  import "../chunk-VQ7B2Q6M.js";
64
64
  import "../chunk-PJSK6OJM.js";
65
- import "../chunk-5QZR2RA3.js";
66
65
  import "../chunk-GNVZQ5JN.js";
67
66
  import "../chunk-YN2UN7N3.js";
67
+ import "../chunk-5QZR2RA3.js";
68
68
  import "../chunk-P5FPO2BR.js";
69
69
  import "../chunk-S4DDLTPX.js";
70
+ import "../chunk-ZVZHG7AI.js";
70
71
  import "../chunk-H7XKCNR6.js";
71
72
  import "../chunk-3F3CVVDS.js";
72
73
  import "../chunk-SOBJ6NEY.js";
73
74
  import "../chunk-QICOU4RY.js";
74
- import "../chunk-YFCEBB5P.js";
75
+ import "../chunk-QTXNS3HB.js";
75
76
  import "../chunk-CVILPI77.js";
77
+ import "../chunk-EIR5VLIH.js";
76
78
  import "../chunk-2HIJHXB3.js";
77
79
  import "../chunk-AQEJKOKI.js";
78
80
  import "../chunk-HTP6XRUI.js";
79
- import "../chunk-EIR5VLIH.js";
80
81
  import "../chunk-IISBCCWR.js";
82
+ import "../chunk-2YA5N2BY.js";
81
83
  import "../chunk-PD66CVSD.js";
82
84
  import "../chunk-LTHVM4XN.js";
83
85
  import "../chunk-EI6V5UXY.js";
@@ -92,10 +94,10 @@ import "../chunk-QDW3E4RD.js";
92
94
  import "../chunk-NS5ETDYD.js";
93
95
  import "../chunk-C37ZRXX7.js";
94
96
  import "../chunk-7ZNJN5WZ.js";
95
- import "../chunk-77QZW2D6.js";
96
- import "../chunk-EJY3HJMT.js";
97
- import "../chunk-ZUPKNWRZ.js";
98
- import "../chunk-KYTRF64R.js";
97
+ import "../chunk-3TDAA7VA.js";
98
+ import "../chunk-MYI3RKI6.js";
99
+ import "../chunk-MIUL6AUZ.js";
100
+ import "../chunk-5SCFDQEJ.js";
99
101
  import "../chunk-UFGFMWAD.js";
100
102
  import "../chunk-YMOPYG3K.js";
101
103
  import "../chunk-2LSZVONP.js";
@@ -106,16 +108,16 @@ import "../chunk-CSAKJVXW.js";
106
108
  import "../chunk-K2XUWZBM.js";
107
109
  import "../chunk-OD4FM2U7.js";
108
110
  import "../chunk-ZY2MNJR6.js";
109
- import "../chunk-YEQCMA5L.js";
111
+ import "../chunk-BOSIHHOH.js";
110
112
  import "../chunk-RDFF2NAU.js";
111
113
  import "../chunk-GPFZFCRN.js";
112
- import "../chunk-AYVCKGA6.js";
113
- import "../chunk-FHKXVTM5.js";
114
- import "../chunk-46WM6JX2.js";
114
+ import "../chunk-YTXNDEUS.js";
115
+ import "../chunk-Q5XKKDFQ.js";
115
116
  import "../chunk-UHVXE24Y.js";
117
+ import "../chunk-46WM6JX2.js";
116
118
  import "../chunk-SXIMQLGV.js";
117
- import "../chunk-GF7RQWXC.js";
118
- import "../chunk-GG4DN63W.js";
119
+ import "../chunk-AJRJDXYR.js";
120
+ import "../chunk-62Y5AGCM.js";
119
121
  import "../chunk-OQIRBGUU.js";
120
122
  import "../chunk-VANZKHTN.js";
121
123
  import "../chunk-CYEPCZN5.js";
@@ -124,15 +126,15 @@ import "../chunk-VYISFWVX.js";
124
126
  import "../chunk-W7IGLX4G.js";
125
127
  import "../chunk-6KTXE6A3.js";
126
128
  import "../chunk-GUMZC2BO.js";
127
- import "../chunk-LEPOP46W.js";
129
+ import "../chunk-227UFSEQ.js";
130
+ import "../chunk-ET356KSB.js";
128
131
  import "../chunk-72A4L5JJ.js";
129
132
  import "../chunk-A7Q43EUZ.js";
130
- import "../chunk-ET356KSB.js";
131
133
  import "../chunk-S2V7RUCL.js";
132
134
  import "../chunk-AR253JBM.js";
135
+ import "../chunk-SCU65EZI.js";
133
136
  import "../chunk-PO7NXBG2.js";
134
137
  import "../chunk-S2HLHAZ4.js";
135
- import "../chunk-SCU65EZI.js";
136
138
  import "../chunk-DM2T26WE.js";
137
139
  import "../chunk-LDXUBPMO.js";
138
140
  import "../chunk-UG6VXIOK.js";
@@ -140,16 +142,16 @@ import "../chunk-AAD2ZS6P.js";
140
142
  import "../chunk-MUJ4QFUQ.js";
141
143
  import "../chunk-LCU5R6TQ.js";
142
144
  import "../chunk-BT7NVCML.js";
143
- import "../chunk-YXZG5TVN.js";
144
145
  import "../chunk-3ONXXHQO.js";
146
+ import "../chunk-YXZG5TVN.js";
145
147
  import "../chunk-5GINB5LC.js";
146
- import "../chunk-G7D6GZ5J.js";
147
148
  import "../chunk-UFKPQBXH.js";
148
149
  import "../chunk-XCB6QDL6.js";
149
150
  import "../chunk-RBOJCG4T.js";
150
151
  import "../chunk-ZVPVTPGI.js";
151
152
  import "../chunk-5WITETWU.js";
152
153
  import "../chunk-6CIAGZ6X.js";
154
+ import "../chunk-G7D6GZ5J.js";
153
155
  import "../chunk-VYEPACWY.js";
154
156
  import "../chunk-URS5GSM7.js";
155
157
  import "../chunk-ZLQ37WJX.js";
@@ -164,6 +166,7 @@ import "../chunk-RGMVMVMF.js";
164
166
  import "../chunk-N7RWREIQ.js";
165
167
  import "../chunk-UBCBDJOB.js";
166
168
  import "../chunk-TOTT6S2V.js";
169
+ import "../chunk-FEHIOYML.js";
167
170
  import "../chunk-P32IDSHD.js";
168
171
  import "../chunk-WNIUPHWV.js";
169
172
  import "../chunk-IJ6WHMFB.js";
@@ -180,10 +183,10 @@ import "../chunk-Z7L72ZHL.js";
180
183
  import "../chunk-4O4TKIXQ.js";
181
184
  import "../chunk-TBBDFYXW.js";
182
185
  import "../chunk-YCVB7X56.js";
183
- import "../chunk-IPLYGWQF.js";
184
- import "../chunk-J4EB7DNW.js";
186
+ import "../chunk-VDX2J7OX.js";
185
187
  import "../chunk-WEHSQBFR.js";
186
- import "../chunk-X7Y7WX73.js";
188
+ import "../chunk-DQEMWVMT.js";
189
+ import "../chunk-J4EB7DNW.js";
187
190
  import "../chunk-BJMBJZ2Y.js";
188
191
  import "../chunk-UKJAGEXH.js";
189
192
  import "../chunk-FP2373TW.js";
@@ -194,9 +197,9 @@ import "../chunk-3QL24R5Y.js";
194
197
  import "../chunk-SYOIVK7K.js";
195
198
  import "../chunk-ZN7SMKAK.js";
196
199
  import "../chunk-LNEWDF2A.js";
197
- import "../chunk-FPEZ74F7.js";
198
- import "../chunk-EFKZT6AY.js";
199
- import "../chunk-L3CHRBHE.js";
200
+ import "../chunk-I2HTKOOP.js";
201
+ import "../chunk-T42L3S6A.js";
202
+ import "../chunk-ZRUEP4IK.js";
200
203
  import "../chunk-HZNYJN77.js";
201
204
  import "../chunk-Q57GOHLF.js";
202
205
  import "../chunk-AW4QUFQF.js";
@@ -245,11 +248,12 @@ import "../chunk-JDSVLVCG.js";
245
248
  import "../chunk-HBVPYRDW.js";
246
249
  import "../chunk-5GKPFL3S.js";
247
250
  import "../chunk-JAKIDQB2.js";
248
- import "../chunk-Z4N7SVVF.js";
251
+ import "../chunk-FZEEWOI2.js";
249
252
  import "../chunk-UI3NYK34.js";
250
253
  import "../chunk-GCGJW34D.js";
251
254
  import "../chunk-AREGMX2J.js";
252
255
  import "../chunk-LC2BDILZ.js";
256
+ import "../chunk-LQWOFU6L.js";
253
257
  import "../chunk-P7FMDTKL.js";
254
258
  import "../chunk-MZWSOLMT.js";
255
259
  import "../chunk-MRV7VSQK.js";
@@ -4,8 +4,8 @@ import {
4
4
  import "../chunk-2DL3OFLD.js";
5
5
  import "../chunk-G4IAEX6D.js";
6
6
  import "../chunk-765K3SAT.js";
7
- import "../chunk-J4EB7DNW.js";
8
7
  import "../chunk-WEHSQBFR.js";
8
+ import "../chunk-J4EB7DNW.js";
9
9
  import "../chunk-UI3NYK34.js";
10
10
  import "../chunk-GCGJW34D.js";
11
11
  import "../chunk-PZ5AY32C.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  backupMemoryDir
3
- } from "../chunk-2NLLXCJG.js";
3
+ } from "../chunk-BXLOS5AJ.js";
4
4
  import "../chunk-765K3SAT.js";
5
+ import "../chunk-DQEMWVMT.js";
5
6
  import "../chunk-J4EB7DNW.js";
6
- import "../chunk-X7Y7WX73.js";
7
7
  import "../chunk-BJMBJZ2Y.js";
8
8
  import "../chunk-UKJAGEXH.js";
9
9
  import "../chunk-FP2373TW.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  exportCapsule,
3
3
  isValidCapsuleSince
4
- } from "../chunk-IPLYGWQF.js";
5
- import "../chunk-J4EB7DNW.js";
4
+ } from "../chunk-VDX2J7OX.js";
6
5
  import "../chunk-WEHSQBFR.js";
7
- import "../chunk-X7Y7WX73.js";
6
+ import "../chunk-DQEMWVMT.js";
7
+ import "../chunk-J4EB7DNW.js";
8
8
  import "../chunk-BJMBJZ2Y.js";
9
9
  import "../chunk-UKJAGEXH.js";
10
10
  import "../chunk-FP2373TW.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  importCapsule
3
- } from "../chunk-PMVPCZJZ.js";
3
+ } from "../chunk-6433HV72.js";
4
4
  import "../chunk-UFKPQBXH.js";
5
5
  import "../chunk-XCB6QDL6.js";
6
6
  import "../chunk-RBOJCG4T.js";
@@ -10,7 +10,7 @@ import "../chunk-6CIAGZ6X.js";
10
10
  import "../chunk-C64XATK7.js";
11
11
  import "../chunk-42JKGUFJ.js";
12
12
  import "../chunk-WEHSQBFR.js";
13
- import "../chunk-X7Y7WX73.js";
13
+ import "../chunk-DQEMWVMT.js";
14
14
  import "../chunk-BJMBJZ2Y.js";
15
15
  import "../chunk-UKJAGEXH.js";
16
16
  import "../chunk-FP2373TW.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  compareVerifiedEpisodeResults,
3
3
  searchVerifiedEpisodes
4
- } from "./chunk-2UM6WHME.js";
4
+ } from "./chunk-XE2QCCT2.js";
5
5
  import "./chunk-B7RWBZXW.js";
6
- import "./chunk-FHKXVTM5.js";
7
- import "./chunk-46WM6JX2.js";
6
+ import "./chunk-Q5XKKDFQ.js";
8
7
  import "./chunk-UHVXE24Y.js";
8
+ import "./chunk-46WM6JX2.js";
9
9
  import "./chunk-SXIMQLGV.js";
10
- import "./chunk-GF7RQWXC.js";
11
- import "./chunk-GG4DN63W.js";
10
+ import "./chunk-AJRJDXYR.js";
11
+ import "./chunk-62Y5AGCM.js";
12
12
  import "./chunk-OQIRBGUU.js";
13
13
  import "./chunk-VANZKHTN.js";
14
14
  import "./chunk-CYEPCZN5.js";
@@ -17,15 +17,15 @@ import "./chunk-VYISFWVX.js";
17
17
  import "./chunk-W7IGLX4G.js";
18
18
  import "./chunk-6KTXE6A3.js";
19
19
  import "./chunk-GUMZC2BO.js";
20
- import "./chunk-LEPOP46W.js";
20
+ import "./chunk-227UFSEQ.js";
21
+ import "./chunk-ET356KSB.js";
21
22
  import "./chunk-72A4L5JJ.js";
22
23
  import "./chunk-A7Q43EUZ.js";
23
- import "./chunk-ET356KSB.js";
24
24
  import "./chunk-S2V7RUCL.js";
25
25
  import "./chunk-AR253JBM.js";
26
+ import "./chunk-SCU65EZI.js";
26
27
  import "./chunk-PO7NXBG2.js";
27
28
  import "./chunk-S2HLHAZ4.js";
28
- import "./chunk-SCU65EZI.js";
29
29
  import "./chunk-DM2T26WE.js";
30
30
  import "./chunk-LDXUBPMO.js";
31
31
  import "./chunk-UG6VXIOK.js";
@@ -33,16 +33,16 @@ import "./chunk-AAD2ZS6P.js";
33
33
  import "./chunk-MUJ4QFUQ.js";
34
34
  import "./chunk-LCU5R6TQ.js";
35
35
  import "./chunk-BT7NVCML.js";
36
- import "./chunk-YXZG5TVN.js";
37
36
  import "./chunk-3ONXXHQO.js";
37
+ import "./chunk-YXZG5TVN.js";
38
38
  import "./chunk-5GINB5LC.js";
39
- import "./chunk-G7D6GZ5J.js";
40
39
  import "./chunk-UFKPQBXH.js";
41
40
  import "./chunk-XCB6QDL6.js";
42
41
  import "./chunk-RBOJCG4T.js";
43
42
  import "./chunk-ZVPVTPGI.js";
44
43
  import "./chunk-5WITETWU.js";
45
44
  import "./chunk-6CIAGZ6X.js";
45
+ import "./chunk-G7D6GZ5J.js";
46
46
  import "./chunk-VYEPACWY.js";
47
47
  import "./chunk-URS5GSM7.js";
48
48
  import "./chunk-ZLQ37WJX.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.63.6",
3
+ "version": "9.63.8",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3156,7 +3156,7 @@
3156
3156
  "core"
3157
3157
  ],
3158
3158
  "peerDependencies": {
3159
- "@remnic/coding-graph": "^9.63.6"
3159
+ "@remnic/coding-graph": "^9.63.8"
3160
3160
  },
3161
3161
  "peerDependenciesMeta": {
3162
3162
  "@remnic/coding-graph": {
@@ -313,7 +313,7 @@ const TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {
313
313
  fallbackUsed: T_BOOLEAN,
314
314
  sourcesUsed: T_ARRAY,
315
315
  latencyMs: T_NUMBER,
316
- resultPaths: T_ARRAY,
316
+ includedMemories: T_ARRAY,
317
317
  message: T_NULLABLE_STRING,
318
318
  }),
319
319
  memory_intent_debug: objectSchema({
@@ -15,7 +15,7 @@ import { type BudgetDecision, toBudgetWarning } from "./cross-namespace-budget.j
15
15
  import { decideDisclosureEscalation } from "./recall-disclosure-escalation.js";
16
16
  import { type TagMatchMode, applyTagFilter, normalizeTags, parseTagMatch } from "./recall-tag-filter.js";
17
17
  import type { RecallDisclosure, RecallPlanMode } from "./types.js";
18
- import { displaySafeBudgetsApplied, displaySafeRecallSnapshot } from "./orchestration/recall-result-formatter.js";
18
+ import { displaySafeRecallSnapshot } from "./orchestration/recall-result-formatter.js";
19
19
  import {
20
20
  boundRecallContextComposition,
21
21
  composeRecallContext,
@@ -305,7 +305,9 @@ export async function assembleRecallResponse(
305
305
  fallbackUsed: snapshot?.fallbackUsed ?? false,
306
306
  sourcesUsed: snapshot?.sourcesUsed ?? [],
307
307
  disclosure,
308
- budgetsApplied: displaySafeBudgetsApplied(snapshot?.budgetsApplied, deps.orchestrator.config.memoryDir),
308
+ budgetsApplied: snapshot
309
+ ? displaySafeRecallSnapshot(snapshot, deps.orchestrator.config.memoryDir).budgetsApplied
310
+ : undefined,
309
311
  auditAnomalies,
310
312
  budgetWarning: toBudgetWarning(budgetDecision),
311
313
  latencyMs: snapshot?.latencyMs ?? (Date.now() - startedAt),
@@ -26,7 +26,7 @@ import { expandScopeProfileReadNamespaces, resolveScopeProfilePlan } from "./nam
26
26
  import type { Orchestrator, RecallInvocationOptions } from "./orchestrator.js";
27
27
  import { decideDisclosureEscalation } from "./recall-disclosure-escalation.js";
28
28
  import { assembleRecallResponse } from "./access-recall-response.js";
29
- import type { LastRecallSnapshot } from "./recall-state.js";
29
+ import { coerceIncludedMemories, type LastRecallSnapshot } from "./recall-state.js";
30
30
  import type { RecallContextComposition } from "./recall-context-composition.js";
31
31
  import { type TagMatchMode, applyTagFilter, normalizeTags, parseTagMatch } from "./recall-tag-filter.js";
32
32
  import { type RecallXraySnapshot, estimateRecallTokens } from "./recall-xray.js";
@@ -44,7 +44,6 @@ import {
44
44
  // Canonical copies (access-service.ts still carries private duplicates for
45
45
  // its remaining callers; dedupe tracked separately).
46
46
  import { qmdCollectionPathParts, qmdResultPathCandidates } from "./orchestration/qmd-result-resolver.js";
47
-
48
47
  export interface AccessRecallSurfaceDeps {
49
48
  readonly auditAdapter: AccessAuditAdapter | null;
50
49
  readonly budget: CrossNamespaceBudget;
@@ -214,7 +213,10 @@ export class AccessRecallSurface {
214
213
  rawExcerptsSuppressed?: boolean;
215
214
  }): Promise<EngramAccessRecallResponse> {
216
215
  const memoryIds = options.snapshot.results.map((result) => result.memoryId);
217
- const resultPaths = options.snapshot.results.map((result) => result.path);
216
+ const includedMemories = options.snapshot.results.map((result) => ({
217
+ id: result.memoryId,
218
+ path: result.path,
219
+ }));
218
220
  const namespace = options.snapshot.namespace
219
221
  ? this.deps.resolveNamespace(options.snapshot.namespace)
220
222
  : this.deps.orchestrator.config.defaultNamespace;
@@ -243,7 +245,7 @@ export class AccessRecallSurface {
243
245
  finalContextChars: options.snapshot.budget.used,
244
246
  },
245
247
  latencyMs: Date.now() - options.startedAt,
246
- resultPaths,
248
+ includedMemories,
247
249
  };
248
250
  const results = await this.deps.serializeRecallResults(
249
251
  snapshotForSerialization,
@@ -515,12 +517,10 @@ export class AccessRecallSurface {
515
517
  : null,
516
518
  );
517
519
  const rawExcerpts = rawExcerptsResult ?? undefined;
518
-
519
- const resultNamespaces = snapshot.resultNamespaces ?? [];
520
- for (let index = 0; index < (snapshot.resultPaths ?? []).length; index += 1) {
521
- const memoryPath = snapshot.resultPaths?.[index];
522
- const memoryNamespace = resultNamespaces[index];
520
+ for (const included of coerceIncludedMemories(snapshot)) {
521
+ const memoryPath = included.path;
523
522
  if (!memoryPath) continue;
523
+ const memoryNamespace = included.namespace;
524
524
  const seenKey = `${memoryNamespace ?? ""}\0${memoryPath}`;
525
525
  if (seen.has(seenKey)) continue;
526
526
  const resolved = await readResultPath(memoryPath, memoryNamespace);
@@ -259,7 +259,7 @@ test("last recall serialization resolves namespace collection-prefixed result pa
259
259
  queryLen: 4,
260
260
  memoryIds: [],
261
261
  namespace: "default",
262
- resultPaths: [`${collection}/archive/facts/2026-06-16/fact-001.md`],
262
+ includedMemories: [{ id: "", path: `${collection}/archive/facts/2026-06-16/fact-001.md` }],
263
263
  },
264
264
  "summary",
265
265
  );
@@ -355,7 +355,7 @@ test("last recall serialization does not fall back after namespace collection mi
355
355
  queryLen: 4,
356
356
  memoryIds: [],
357
357
  namespace: "default",
358
- resultPaths: [`${collection}/2026-06-16/fact-001.md`],
358
+ includedMemories: [{ id: "", path: `${collection}/2026-06-16/fact-001.md` }],
359
359
  },
360
360
  "summary",
361
361
  );
@@ -428,7 +428,7 @@ test("last recall serialization resolves cold collection paths through snapshot
428
428
  queryLen: 4,
429
429
  memoryIds: [],
430
430
  namespace: "default",
431
- resultPaths: ["test-memory-cold/facts/2026-06-16/fact-001.md"],
431
+ includedMemories: [{ id: "", path: "test-memory-cold/facts/2026-06-16/fact-001.md" }],
432
432
  },
433
433
  "summary",
434
434
  );
@@ -503,7 +503,7 @@ test("last recall serialization propagates locked namespace collection errors",
503
503
  queryLen: 4,
504
504
  memoryIds: [],
505
505
  namespace: "default",
506
- resultPaths: [`${collection}/2026-06-16/fact-001.md`],
506
+ includedMemories: [{ id: "", path: `${collection}/2026-06-16/fact-001.md` }],
507
507
  },
508
508
  "summary",
509
509
  ),
@@ -563,7 +563,7 @@ test("last recall serialization does not treat date paths as collection prefixes
563
563
  queryLen: 4,
564
564
  memoryIds: [],
565
565
  namespace: "default",
566
- resultPaths: ["2026-06-16/fact-001.md"],
566
+ includedMemories: [{ id: "", path: "2026-06-16/fact-001.md" }],
567
567
  },
568
568
  "summary",
569
569
  );
@@ -632,7 +632,7 @@ test("last recall serialization does not strip invalid collection prefixes", asy
632
632
  queryLen: 4,
633
633
  memoryIds: [],
634
634
  namespace: "default",
635
- resultPaths: ["test-memory--not-a-token/2026-06-16/fact-001.md"],
635
+ includedMemories: [{ id: "", path: "test-memory--not-a-token/2026-06-16/fact-001.md" }],
636
636
  },
637
637
  "summary",
638
638
  );
@@ -733,7 +733,7 @@ test("last recall serialization preserves absolute paths from readable namespace
733
733
  queryLen: 4,
734
734
  memoryIds: [],
735
735
  namespace: "team",
736
- resultPaths: [sharedMemoryPath],
736
+ includedMemories: [{ id: "", path: sharedMemoryPath }],
737
737
  },
738
738
  "summary",
739
739
  );
@@ -817,7 +817,7 @@ test("last recall serialization preserves absolute paths from dynamic namespace
817
817
  queryLen: 4,
818
818
  memoryIds: [],
819
819
  namespace: "team",
820
- resultPaths: [dynamicMemoryPath],
820
+ includedMemories: [{ id: "", path: dynamicMemoryPath }],
821
821
  },
822
822
  "summary",
823
823
  );
@@ -905,7 +905,7 @@ test("last recall serialization rejects traversing collection paths", async () =
905
905
  queryLen: 4,
906
906
  memoryIds: [],
907
907
  namespace: "default",
908
- resultPaths: [`${collection}/../../facts/2026-06-16/fact-001.md`],
908
+ includedMemories: [{ id: "", path: `${collection}/../../facts/2026-06-16/fact-001.md` }],
909
909
  },
910
910
  "summary",
911
911
  );
@@ -92,7 +92,7 @@ function makeRawExcerptProbe(options: {
92
92
  memoryIds: [],
93
93
  namespace: options.snapshotNamespace,
94
94
  recallNamespaces: [options.snapshotNamespace],
95
- resultPaths: [],
95
+ includedMemories: [],
96
96
  };
97
97
 
98
98
  const storage = {
@@ -20,6 +20,7 @@ import type { AgentPersonaModelConfig, GatewayConfig, MemoryFile } from "./types
20
20
  import { listJsonFiles, readJsonFile } from "./json-store.js";
21
21
  import { isRecord } from "./store-contract.js";
22
22
  import { log } from "./logger.js";
23
+ import { OUTPUT_LANGUAGE_POLICY } from "./extraction-prompt.js";
23
24
 
24
25
  // ─── Types ───────────────────────────────────────────────────────────────────
25
26
 
@@ -193,7 +194,7 @@ async function readCorrectionsImpl(memoryDir: string): Promise<CorrectionMemory[
193
194
 
194
195
  // ─── LLM-Assisted Clustering and Replay ──────────────────────────────────────
195
196
 
196
- const CLUSTER_PROMPT = `You are analyzing user corrections to an AI assistant. Each correction represents a moment where the assistant's prediction of what the user wanted was WRONG.
197
+ export const CLUSTER_PROMPT = `You are analyzing user corrections to an AI assistant. Each correction represents a moment where the assistant's prediction of what the user wanted was WRONG.
197
198
 
198
199
  Your job: Group these corrections into clusters where the SAME TYPE of misunderstanding is happening. Then for each cluster, synthesize a CalibrationRule.
199
200
 
@@ -205,6 +206,7 @@ A CalibrationRule describes:
205
206
  - ruleType: One of "model_tendency", "user_expectation", "scope_boundary", "verification_required"
206
207
 
207
208
  Focus on PATTERNS, not individual corrections. A cluster needs at least 2 corrections to be worth a rule.
209
+ ${OUTPUT_LANGUAGE_POLICY}
208
210
 
209
211
  Output valid JSON only:
210
212
  {
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Census field acceptance shared by offline-sync and the reconcile planner
3
+ * (issue #2477). Both surfaces parse untrusted peer censuses and must accept
4
+ * and reject exactly the same values; when these checks lived as two copies
5
+ * they could drift silently and break convergence. Each surface keeps only a
6
+ * thin wrapper that picks its own error type and message.
7
+ */
8
+
9
+ /** 64-character sha256 hex, either case; the canonical stored form is lowercase. */
10
+ export const SHA256_HEX_PATTERN = /^[a-f0-9]{64}$/i;
11
+
12
+ /** Largest `mtimeMs` a census may carry: `new Date(ms)` must stay a valid Date. */
13
+ export const CENSUS_MAX_MTIME_MS = 8_640_000_000_000_000;
14
+
15
+ export function isSha256Hex(value: unknown): value is string {
16
+ return typeof value === "string" && SHA256_HEX_PATTERN.test(value);
17
+ }
18
+
19
+ /**
20
+ * Fractional values are valid: `fs.stat()` reports sub-millisecond mtimes on
21
+ * common filesystems, so this deliberately does not require an integer.
22
+ */
23
+ export function isCensusMtimeMs(value: unknown): value is number {
24
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= CENSUS_MAX_MTIME_MS;
25
+ }
@@ -22,8 +22,6 @@ import {
22
22
  ARCHITECTURE_CARD_TAG,
23
23
  ARCHITECTURE_CARD_KIND,
24
24
  handleCodingArchitecture,
25
- isArchitectureCardSurfaceEnabled,
26
- isArchitectureCardSurfaceVisible,
27
25
  isArchitectureSubcommand,
28
26
  formatArchitectureSubcommands,
29
27
  findArchitectureCardMemory,
@@ -31,6 +29,7 @@ import {
31
29
  type ArchitectureSurfaceRequest,
32
30
  type ArchitectureSurfaceStorage,
33
31
  } from "./architecture-surfaces.js";
32
+ import { isCodingKnowledgeFeatureEnabled, isCodingKnowledgeFeatureVisible } from "./coding-knowledge-config.js";
34
33
  import { sealedWriteToLegacyArgs } from "../write-envelope.js";
35
34
  import type { ArchitectureCardBuildResult } from "./architecture-card.js";
36
35
  import type {
@@ -183,28 +182,28 @@ test("subcommands: formatArchitectureSubcommands lists valid options", () => {
183
182
  // ──────────────────────────────────────────────────────────────────────────
184
183
 
185
184
  test("gate: surface enabled when config + architectureCard + coding context all true", () => {
186
- assert.equal(isArchitectureCardSurfaceEnabled(DEFAULT_CONFIG, CODING_CONTEXT), true);
185
+ assert.equal(isCodingKnowledgeFeatureEnabled(DEFAULT_CONFIG, "architectureCard", CODING_CONTEXT), true);
187
186
  });
188
187
 
189
188
  test("gate: surface disabled when master gate off", () => {
190
189
  const config: CodingKnowledgeConfig = { ...DEFAULT_CONFIG, enabled: false };
191
- assert.equal(isArchitectureCardSurfaceEnabled(config, CODING_CONTEXT), false);
190
+ assert.equal(isCodingKnowledgeFeatureEnabled(config, "architectureCard", CODING_CONTEXT), false);
192
191
  });
193
192
 
194
193
  test("gate: surface disabled when architectureCard off", () => {
195
194
  const config: CodingKnowledgeConfig = { ...DEFAULT_CONFIG, architectureCard: false };
196
- assert.equal(isArchitectureCardSurfaceEnabled(config, CODING_CONTEXT), false);
195
+ assert.equal(isCodingKnowledgeFeatureEnabled(config, "architectureCard", CODING_CONTEXT), false);
197
196
  });
198
197
 
199
198
  test("gate: surface disabled when no coding context", () => {
200
- assert.equal(isArchitectureCardSurfaceEnabled(DEFAULT_CONFIG, null), false);
201
- assert.equal(isArchitectureCardSurfaceEnabled(DEFAULT_CONFIG, undefined), false);
199
+ assert.equal(isCodingKnowledgeFeatureEnabled(DEFAULT_CONFIG, "architectureCard", null), false);
200
+ assert.equal(isCodingKnowledgeFeatureEnabled(DEFAULT_CONFIG, "architectureCard", undefined), false);
202
201
  });
203
202
 
204
203
  test("gate: visibility (tools/list) matches config-only check", () => {
205
- assert.equal(isArchitectureCardSurfaceVisible(DEFAULT_CONFIG), true);
206
- assert.equal(isArchitectureCardSurfaceVisible({ ...DEFAULT_CONFIG, enabled: false }), false);
207
- assert.equal(isArchitectureCardSurfaceVisible({ ...DEFAULT_CONFIG, architectureCard: false }), false);
204
+ assert.equal(isCodingKnowledgeFeatureVisible(DEFAULT_CONFIG, "architectureCard"), true);
205
+ assert.equal(isCodingKnowledgeFeatureVisible({ ...DEFAULT_CONFIG, enabled: false }, "architectureCard"), false);
206
+ assert.equal(isCodingKnowledgeFeatureVisible({ ...DEFAULT_CONFIG, architectureCard: false }, "architectureCard"), false);
208
207
  });
209
208
 
210
209
  // ──────────────────────────────────────────────────────────────────────────
@@ -35,6 +35,7 @@ import { stripAttributesSuffix } from "../structured-attributes.js";
35
35
  import { ARCHITECTURE_CARD_TRUNCATION_MARKER, type ArchitectureCardBuildResult } from "./architecture-card.js";
36
36
  import { log } from "../logger.js";
37
37
  import { composeMemoryEnvelope, type SealedMemoryEnvelope } from "../write-envelope.js";
38
+ import { isCodingKnowledgeFeatureEnabled } from "./coding-knowledge-config.js";
38
39
 
39
40
  // ──────────────────────────────────────────────────────────────────────────
40
41
  // Subcommands
@@ -56,40 +57,6 @@ export function formatArchitectureSubcommands(): string {
56
57
  return ARCHITECTURE_SUBCOMMANDS.join(", ");
57
58
  }
58
59
 
59
- // ──────────────────────────────────────────────────────────────────────────
60
- // Gate predicates — rule 39: one predicate, identical on every surface
61
- // ──────────────────────────────────────────────────────────────────────────
62
-
63
- /**
64
- * The single architecture-card surface gate. Returns `true` only when:
65
- * 1. `codingKnowledge.enabled` is true,
66
- * 2. `codingKnowledge.architectureCard` is true,
67
- * 3. a coding context is attached (so a repo root is available).
68
- */
69
- export function isArchitectureCardSurfaceEnabled(
70
- config: CodingKnowledgeConfig,
71
- codingContext: CodingContext | null | undefined,
72
- ): boolean {
73
- return (
74
- config.enabled === true &&
75
- config.architectureCard === true &&
76
- codingContext !== null &&
77
- codingContext !== undefined
78
- );
79
- }
80
-
81
- /**
82
- * Config-only visibility gate — used by the MCP constructor to decide
83
- * whether to advertise `engram.coding_architecture` in `tools/list`.
84
- * When this returns `false` the tools array is byte-identical to
85
- * pre-feature (rule 39).
86
- */
87
- export function isArchitectureCardSurfaceVisible(
88
- config: CodingKnowledgeConfig,
89
- ): boolean {
90
- return config.enabled === true && config.architectureCard === true;
91
- }
92
-
93
60
  // ──────────────────────────────────────────────────────────────────────────
94
61
  // Surface request / response shapes
95
62
  // ──────────────────────────────────────────────────────────────────────────
@@ -228,7 +195,7 @@ export async function handleCodingArchitecture(
228
195
  // narrows it to CodingContext here, with no non-null assertion cast.
229
196
  if (
230
197
  codingContext === null ||
231
- !isArchitectureCardSurfaceEnabled(ctx.codingKnowledge, codingContext)
198
+ !isCodingKnowledgeFeatureEnabled(ctx.codingKnowledge, "architectureCard", codingContext)
232
199
  ) {
233
200
  ctx.throwInputError(
234
201
  "coding_architecture requires codingKnowledge.enabled, codingKnowledge.architectureCard, and an attached coding context",