@remnic/core 9.69.48 → 9.69.49

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 (511) hide show
  1. package/dist/access-admin-ops-surface.d.ts +14 -14
  2. package/dist/access-admin-ops-surface.js +31 -29
  3. package/dist/access-authorization-probe.d.ts +14 -14
  4. package/dist/access-authorization-probe.js +32 -30
  5. package/dist/access-boundary.d.ts +14 -14
  6. package/dist/access-boundary.js +31 -29
  7. package/dist/access-cli.js +98 -97
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +1 -1
  10. package/dist/access-extraction-force-flush.d.ts +14 -14
  11. package/dist/access-extraction-force-flush.js +31 -29
  12. package/dist/access-health-types.d.ts +1 -1
  13. package/dist/access-http-briefing.d.ts +14 -14
  14. package/dist/access-http-briefing.js +32 -30
  15. package/dist/access-http-lcm-compaction.d.ts +14 -14
  16. package/dist/access-http-lifecycle-flush.d.ts +14 -14
  17. package/dist/access-http-offline-stream.d.ts +14 -14
  18. package/dist/access-http-query.d.ts +2 -2
  19. package/dist/access-http-query.js +33 -31
  20. package/dist/access-http.d.ts +15 -15
  21. package/dist/access-http.js +51 -49
  22. package/dist/access-identity-continuity-surface.d.ts +11 -11
  23. package/dist/access-identity-continuity-surface.js +31 -29
  24. package/dist/access-lcm-surface.d.ts +14 -14
  25. package/dist/access-lcm-surface.js +31 -29
  26. package/dist/access-mcp-shared-context-tools.d.ts +14 -14
  27. package/dist/access-mcp.d.ts +14 -14
  28. package/dist/access-mcp.js +41 -39
  29. package/dist/access-memory-search-fanout.d.ts +2 -2
  30. package/dist/{access-namespace-preflight-CetF9ziA.d.ts → access-namespace-preflight-DqRw_g-8.d.ts} +1 -1
  31. package/dist/access-namespace-preflight.d.ts +3 -3
  32. package/dist/access-namespace-preflight.js +31 -29
  33. package/dist/access-observe-transcript.d.ts +11 -11
  34. package/dist/access-observe-write-category.d.ts +3 -3
  35. package/dist/access-observe-write-surface.d.ts +14 -14
  36. package/dist/access-observe-write-surface.js +31 -29
  37. package/dist/access-offline-manifest.d.ts +11 -11
  38. package/dist/access-operations-batch.js +33 -31
  39. package/dist/access-operations.d.ts +14 -14
  40. package/dist/access-operations.js +40 -38
  41. package/dist/access-recall-concurrency.d.ts +14 -14
  42. package/dist/access-recall-concurrency.js +31 -29
  43. package/dist/access-recall-response.d.ts +14 -14
  44. package/dist/access-recall-response.js +31 -29
  45. package/dist/access-recall-surface.d.ts +14 -14
  46. package/dist/access-recall-surface.js +31 -29
  47. package/dist/access-schema.d.ts +1 -1
  48. package/dist/{access-service-DUkTWyZS.d.ts → access-service-70VHaltr.d.ts} +9 -9
  49. package/dist/access-service-helpers.d.ts +14 -14
  50. package/dist/access-service.d.ts +14 -14
  51. package/dist/access-service.js +31 -29
  52. package/dist/access-surface-catalog.d.ts +14 -14
  53. package/dist/access-surface-catalog.js +33 -31
  54. package/dist/access-surface-catalog.js.map +1 -1
  55. package/dist/access-wearables-meetings-surface.d.ts +4 -4
  56. package/dist/action-confidence.d.ts +1 -1
  57. package/dist/active-memory-bridge.d.ts +1 -1
  58. package/dist/active-recall.d.ts +1 -1
  59. package/dist/active-recall.js +2 -2
  60. package/dist/activity/digest.d.ts +1 -1
  61. package/dist/adapters/index.js +4 -4
  62. package/dist/adapters/registry.js +2 -2
  63. package/dist/ambient-provenance.d.ts +1 -1
  64. package/dist/artifact-search.d.ts +1 -1
  65. package/dist/background-generation.d.ts +1 -1
  66. package/dist/behavior-learner.d.ts +1 -1
  67. package/dist/behavior-signals.d.ts +1 -1
  68. package/dist/bootstrap.d.ts +11 -11
  69. package/dist/briefing-window.d.ts +2 -2
  70. package/dist/briefing.d.ts +2 -2
  71. package/dist/briefing.js +11 -11
  72. package/dist/buffer-surprise-report.d.ts +1 -1
  73. package/dist/buffer-turn-helpers.d.ts +1 -1
  74. package/dist/buffer.d.ts +2 -2
  75. package/dist/buffer.js +5 -5
  76. package/dist/bulk-import/index.d.ts +3 -3
  77. package/dist/calibration.d.ts +1 -1
  78. package/dist/capabilities.d.ts +1 -1
  79. package/dist/{catalog-Bns9zpl3.d.ts → catalog-Byi9prz9.d.ts} +1 -1
  80. package/dist/causal-behavior.d.ts +1 -1
  81. package/dist/causal-consolidation.d.ts +1 -1
  82. package/dist/causal-consolidation.js +12 -12
  83. package/dist/causal-trajectory-graph.d.ts +1 -1
  84. package/dist/{chunk-DE4ZGH2N.js → chunk-2IVHOQRY.js} +8 -3
  85. package/dist/chunk-2IVHOQRY.js.map +1 -0
  86. package/dist/{chunk-MQT3WP3F.js → chunk-3MX4GWJO.js} +2 -2
  87. package/dist/{chunk-PXJ6HE2W.js → chunk-3RABJOGD.js} +2 -2
  88. package/dist/{chunk-NNFB4CU4.js → chunk-4WSR7MYV.js} +2 -2
  89. package/dist/{chunk-6A6HSXWV.js → chunk-5WIGM42T.js} +2 -2
  90. package/dist/{chunk-GGROFIYX.js → chunk-6DYCSSHN.js} +2 -2
  91. package/dist/{chunk-55XWRL6F.js → chunk-6VLOKESS.js} +2 -2
  92. package/dist/{chunk-OS4JVTHR.js → chunk-76RTJ533.js} +3 -3
  93. package/dist/{chunk-4LPIVP77.js → chunk-7VTQETLT.js} +2 -2
  94. package/dist/{chunk-X2NFFBTO.js → chunk-A7GQBJP5.js} +4 -4
  95. package/dist/{chunk-JIURESYF.js → chunk-AIKUSXIS.js} +6 -6
  96. package/dist/{chunk-MNG536IS.js → chunk-AJLQH4RO.js} +13 -13
  97. package/dist/{chunk-XEHLYA5Z.js → chunk-AOMVOC2E.js} +3 -3
  98. package/dist/{chunk-XXLH6KFO.js → chunk-BHXY5FXL.js} +2 -2
  99. package/dist/{chunk-PA67GXYJ.js → chunk-C3YEB7CR.js} +5 -5
  100. package/dist/{chunk-SK6HEQTW.js → chunk-DHTOYRDE.js} +2 -2
  101. package/dist/{chunk-WQW6KPVC.js → chunk-DNAD57VY.js} +1 -1
  102. package/dist/chunk-DNAD57VY.js.map +1 -0
  103. package/dist/{chunk-P3YNEMYY.js → chunk-E64HBW7M.js} +2 -2
  104. package/dist/{chunk-2B2RHLHI.js → chunk-EBLKS57G.js} +2 -2
  105. package/dist/{chunk-MUNR43V3.js → chunk-EHUUXLLA.js} +2 -2
  106. package/dist/{chunk-LYMJ36UI.js → chunk-EST3J4LX.js} +2 -2
  107. package/dist/{chunk-B6VDWDFN.js → chunk-EUP4AXIW.js} +2 -2
  108. package/dist/{chunk-XZUHXKM3.js → chunk-FLZJMXFV.js} +2 -2
  109. package/dist/{chunk-XYGINDIJ.js → chunk-FVRZDZ7J.js} +2 -2
  110. package/dist/{chunk-645WOU5I.js → chunk-H7BZBSP6.js} +4 -4
  111. package/dist/{chunk-TW4MXM7H.js → chunk-HIBNECBQ.js} +5 -5
  112. package/dist/{chunk-QLCMOHRE.js → chunk-IIDXU2CY.js} +2 -2
  113. package/dist/{chunk-JYXLW22X.js → chunk-JG4AP36X.js} +2 -2
  114. package/dist/{chunk-3RKVSECD.js → chunk-JI5Q6EOY.js} +7 -7
  115. package/dist/{chunk-XKHRNAK7.js → chunk-JIWZVOQM.js} +2 -2
  116. package/dist/{chunk-7YUX52XZ.js → chunk-JVM3CEGL.js} +3 -3
  117. package/dist/{chunk-QB4VXCFN.js → chunk-K26LFJE4.js} +2 -2
  118. package/dist/{chunk-Y5VT7BIT.js → chunk-K4KE5MYE.js} +2 -2
  119. package/dist/{chunk-TQSCR5DU.js → chunk-KG2OOAFF.js} +6 -6
  120. package/dist/{chunk-VV5GCNKG.js → chunk-KHLNIDWB.js} +2 -2
  121. package/dist/{chunk-LIAM7U2J.js → chunk-LE2UESGS.js} +2 -2
  122. package/dist/{chunk-YXWMZAAN.js → chunk-LLFMZYFS.js} +2 -2
  123. package/dist/{chunk-PPJLJD2D.js → chunk-LX32KV2C.js} +2 -2
  124. package/dist/{chunk-MKJFPIVG.js → chunk-N57PUWUE.js} +39 -39
  125. package/dist/{chunk-V7IONNTJ.js → chunk-NDWBT2VV.js} +2 -2
  126. package/dist/{chunk-DRLZB3CN.js → chunk-OTGIAJQ2.js} +2 -2
  127. package/dist/{chunk-T3T5HTZZ.js → chunk-P36WML7L.js} +2 -2
  128. package/dist/{chunk-B4WI7OF2.js → chunk-PAQ7YGJY.js} +2 -2
  129. package/dist/{chunk-BIXELUIR.js → chunk-PSQRBCGR.js} +2 -2
  130. package/dist/{chunk-FGRJJBFO.js → chunk-PZHN7R35.js} +2 -2
  131. package/dist/{chunk-QMWKENNK.js → chunk-Q4AUIFUA.js} +4 -4
  132. package/dist/{chunk-CD7VTZIG.js → chunk-QQA6VTOY.js} +2 -2
  133. package/dist/{chunk-R32AEEU3.js → chunk-RBHQA2UU.js} +49 -49
  134. package/dist/{chunk-HG74GEVY.js → chunk-RS53SDCA.js} +2 -2
  135. package/dist/{chunk-SS33RR4F.js → chunk-SKYYPVBW.js} +8 -8
  136. package/dist/{chunk-OSTXIFZW.js → chunk-SNOAFXKX.js} +38 -4
  137. package/dist/chunk-SNOAFXKX.js.map +1 -0
  138. package/dist/{chunk-EWBDJQ5Y.js → chunk-SYJZUVTN.js} +3 -3
  139. package/dist/{chunk-IO7K7GES.js → chunk-T3F2HWIG.js} +2 -2
  140. package/dist/{chunk-KVIMQAER.js → chunk-T3OLYUU6.js} +2 -2
  141. package/dist/{chunk-KPYMORPQ.js → chunk-TUSY4KRE.js} +206 -43
  142. package/dist/chunk-TUSY4KRE.js.map +1 -0
  143. package/dist/{chunk-QGAKUOKU.js → chunk-U3ZRHNNG.js} +2 -2
  144. package/dist/{chunk-LIDJWAQV.js → chunk-UB4UVALS.js} +2 -2
  145. package/dist/chunk-UD6W67JM.js +260 -0
  146. package/dist/chunk-UD6W67JM.js.map +1 -0
  147. package/dist/{chunk-WYU66IVZ.js → chunk-UE7L4EDU.js} +3 -3
  148. package/dist/{chunk-I6IJDTRP.js → chunk-VBRS7Z3O.js} +2 -2
  149. package/dist/{chunk-EGOWY342.js → chunk-WGCASEEQ.js} +2 -2
  150. package/dist/{chunk-BNX2TUSF.js → chunk-WHSNLCRO.js} +2 -2
  151. package/dist/{chunk-7DU2F7LM.js → chunk-XQFHKPNB.js} +6 -6
  152. package/dist/{chunk-MKLDZNBD.js → chunk-YA5M7OC4.js} +2 -2
  153. package/dist/{chunk-WL3PGPGU.js → chunk-YKWWG3CM.js} +2 -2
  154. package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
  155. package/dist/{chunk-32ZBIGID.js → chunk-YOC3EEZH.js} +12 -12
  156. package/dist/{chunk-ZEIJQ4I3.js → chunk-Z2OKRO3E.js} +2 -2
  157. package/dist/{chunk-5KBI2MOC.js → chunk-ZDGSHXJU.js} +1 -1
  158. package/dist/{chunk-BMBAA2M5.js → chunk-ZYZW46HZ.js} +3 -3
  159. package/dist/{cli-Bbndoc6k.d.ts → cli-CdJiBilM.d.ts} +5 -5
  160. package/dist/cli.d.ts +16 -16
  161. package/dist/cli.js +70 -68
  162. package/dist/coding/export-okf-codegraph.d.ts +1 -1
  163. package/dist/coding/export-okf-codegraph.js +13 -13
  164. package/dist/coding/pre-action-gate.d.ts +1 -1
  165. package/dist/compounding/engine.d.ts +2 -2
  166. package/dist/compounding/engine.js +12 -12
  167. package/dist/compounding/preference-consolidator.d.ts +1 -1
  168. package/dist/compression-optimizer.d.ts +1 -1
  169. package/dist/config.d.ts +1 -1
  170. package/dist/config.js +2 -2
  171. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  172. package/dist/connectors/codex-materialize-runner.js +11 -11
  173. package/dist/connectors/codex-materialize.d.ts +1 -1
  174. package/dist/connectors/index.d.ts +1 -1
  175. package/dist/connectors/index.js +11 -11
  176. package/dist/consolidation-provenance-check.d.ts +2 -2
  177. package/dist/consolidation-undo.d.ts +2 -2
  178. package/dist/contradiction/index.d.ts +4 -4
  179. package/dist/converge-config.d.ts +1 -1
  180. package/dist/convergence-refresh.d.ts +2 -2
  181. package/dist/convergence-refresh.js +13 -13
  182. package/dist/conversation-index/backend.d.ts +1 -1
  183. package/dist/conversation-index/chunker.d.ts +1 -1
  184. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  185. package/dist/conversation-index/indexer.d.ts +1 -1
  186. package/dist/conversation-index/search.d.ts +1 -1
  187. package/dist/corpus-watermark.d.ts +1 -1
  188. package/dist/corpus-watermark.js +13 -13
  189. package/dist/cross-lingual-recall.d.ts +1 -1
  190. package/dist/dashboard-runtime.js +2 -2
  191. package/dist/day-summary.d.ts +1 -1
  192. package/dist/deep-recall-http-glue.d.ts +14 -14
  193. package/dist/deep-recall-mcp-tools.d.ts +14 -14
  194. package/dist/deep-recall-policy-llm.d.ts +2 -2
  195. package/dist/deep-recall-seeds.d.ts +1 -1
  196. package/dist/delinearize.d.ts +1 -1
  197. package/dist/dependency-propagation-config.d.ts +1 -1
  198. package/dist/{dependency-propagation-delivery-B-LvcDaq.d.ts → dependency-propagation-delivery-BgHy44WX.d.ts} +1 -1
  199. package/dist/direct-answer-wiring.d.ts +1 -1
  200. package/dist/direct-answer.d.ts +1 -1
  201. package/dist/directory-sidecars.d.ts +87 -0
  202. package/dist/directory-sidecars.js +22 -0
  203. package/dist/directory-sidecars.js.map +1 -0
  204. package/dist/embedding-fallback.d.ts +1 -1
  205. package/dist/enrichment/index.d.ts +1 -1
  206. package/dist/entity-origin-fields.d.ts +1 -1
  207. package/dist/entity-retrieval.d.ts +2 -2
  208. package/dist/entity-retrieval.js +12 -12
  209. package/dist/entity-schema.d.ts +1 -1
  210. package/dist/episodic-context.d.ts +1 -1
  211. package/dist/eval-trajectory-contracts.d.ts +1 -1
  212. package/dist/eval-trajectory-store.d.ts +1 -1
  213. package/dist/eval-trajectory.d.ts +1 -1
  214. package/dist/event-order-recall.js +2 -2
  215. package/dist/explicit-capture.d.ts +11 -11
  216. package/dist/external-wiki-access.d.ts +14 -14
  217. package/dist/external-wiki-access.js +32 -30
  218. package/dist/external-wiki-collection-registration.d.ts +1 -1
  219. package/dist/external-wiki-collection.d.ts +1 -1
  220. package/dist/external-wiki-mcp-tools.d.ts +14 -14
  221. package/dist/extraction-error-classification.d.ts +1 -1
  222. package/dist/extraction-evidence-class.d.ts +1 -1
  223. package/dist/extraction-faithfulness.d.ts +2 -2
  224. package/dist/extraction-judge-telemetry.d.ts +2 -2
  225. package/dist/extraction-judge-training.d.ts +2 -2
  226. package/dist/extraction-judge.d.ts +2 -2
  227. package/dist/extraction-liveness.d.ts +1 -1
  228. package/dist/extraction-normalization.d.ts +1 -1
  229. package/dist/extraction-prompt.d.ts +1 -1
  230. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  231. package/dist/extraction-source-grounding.d.ts +1 -1
  232. package/dist/extraction-span-config.d.ts +1 -1
  233. package/dist/extraction-span-materialize.d.ts +1 -1
  234. package/dist/extraction-span-wire.d.ts +1 -1
  235. package/dist/extraction.d.ts +2 -2
  236. package/dist/extraction.js +15 -15
  237. package/dist/fallback-llm-codex-subscription.d.ts +1 -1
  238. package/dist/fallback-llm.d.ts +1 -1
  239. package/dist/{generic-recall-paths-Bfc7zigS.d.ts → generic-recall-paths-BoueWXYr.d.ts} +1 -1
  240. package/dist/graph-append-error.d.ts +1 -1
  241. package/dist/graph-dashboard-diff.d.ts +1 -1
  242. package/dist/graph-dashboard-key.d.ts +1 -1
  243. package/dist/graph-dashboard-parser.d.ts +1 -1
  244. package/dist/graph-edge-reinforcement.d.ts +1 -1
  245. package/dist/graph-jsonl.d.ts +1 -1
  246. package/dist/graph-path-reconstruction.d.ts +1 -1
  247. package/dist/graph-path-scoring.d.ts +1 -1
  248. package/dist/graph-snapshot.d.ts +1 -1
  249. package/dist/graph.d.ts +1 -1
  250. package/dist/harmonic-retrieval.js +1 -1
  251. package/dist/importance.d.ts +1 -1
  252. package/dist/importers/index.d.ts +1 -1
  253. package/dist/importers/test-utils.d.ts +1 -1
  254. package/dist/in-flight-reads.d.ts +1 -1
  255. package/dist/{index-C7IA1DxB.d.ts → index-cwbrXoxe.d.ts} +3 -3
  256. package/dist/index.d.ts +42 -42
  257. package/dist/index.js +127 -126
  258. package/dist/intent.d.ts +1 -1
  259. package/dist/lcm/engine.d.ts +1 -1
  260. package/dist/lcm/engine.js +2 -2
  261. package/dist/lcm/index.d.ts +1 -1
  262. package/dist/lcm/index.js +4 -4
  263. package/dist/lcm/tools.d.ts +1 -1
  264. package/dist/lifecycle.d.ts +1 -1
  265. package/dist/live-connectors-runner.d.ts +1 -1
  266. package/dist/{local-llm-DH4tWtck.d.ts → local-llm-B0vd_rp9.d.ts} +1 -1
  267. package/dist/local-llm-helpers.d.ts +2 -2
  268. package/dist/local-llm.d.ts +2 -2
  269. package/dist/local-model-endpoint.d.ts +1 -1
  270. package/dist/location/index.d.ts +5 -5
  271. package/dist/location/index.js +13 -13
  272. package/dist/maintenance/memory-governance.d.ts +1 -1
  273. package/dist/maintenance/memory-governance.js +11 -11
  274. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  275. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +11 -11
  276. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  277. package/dist/maintenance/rebuild-memory-projection.js +12 -12
  278. package/dist/{maintenance-n6yeTQhR.d.ts → maintenance-DJgQkoLh.d.ts} +3 -3
  279. package/dist/mcp-memory-inspector-app.d.ts +14 -14
  280. package/dist/memory-action-policy.d.ts +1 -1
  281. package/dist/memory-browse-http-glue.d.ts +14 -14
  282. package/dist/memory-browse-mcp-tools.d.ts +14 -14
  283. package/dist/memory-browse-operations.js +32 -30
  284. package/dist/memory-browse.d.ts +1 -1
  285. package/dist/memory-browse.js +7 -5
  286. package/dist/memory-cache.d.ts +1 -1
  287. package/dist/memory-controller.d.ts +1 -1
  288. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  289. package/dist/memory-projection-store.d.ts +1 -1
  290. package/dist/memory-provenance.d.ts +1 -1
  291. package/dist/memory-snapshot.d.ts +1 -1
  292. package/dist/memory-subject-cli.d.ts +14 -14
  293. package/dist/memory-subject.d.ts +14 -14
  294. package/dist/memory-worth-outcomes.d.ts +2 -2
  295. package/dist/models-json.d.ts +1 -1
  296. package/dist/namespaces/migrate.d.ts +3 -3
  297. package/dist/namespaces/migrate.js +12 -12
  298. package/dist/namespaces/principal.d.ts +1 -1
  299. package/dist/namespaces/search.d.ts +1 -1
  300. package/dist/namespaces/search.js +6 -6
  301. package/dist/namespaces/storage.d.ts +3 -3
  302. package/dist/namespaces/storage.js +11 -11
  303. package/dist/native-knowledge.d.ts +1 -1
  304. package/dist/offline-sync-impression-drain.d.ts +1 -1
  305. package/dist/operator-doctor-corpus.d.ts +1 -1
  306. package/dist/operator-doctor-corpus.js +14 -14
  307. package/dist/operator-doctor-replica.d.ts +1 -1
  308. package/dist/operator-toolkit.d.ts +3 -3
  309. package/dist/operator-toolkit.js +21 -21
  310. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  311. package/dist/orchestration/maintenance.d.ts +4 -4
  312. package/dist/orchestration/maintenance.js +19 -19
  313. package/dist/{orchestrator-Cirjo3ZB.d.ts → orchestrator-Kx5zwNUm.d.ts} +10 -10
  314. package/dist/orchestrator.d.ts +11 -11
  315. package/dist/orchestrator.js +98 -97
  316. package/dist/patterns-cli.d.ts +1 -1
  317. package/dist/{pipeline-DK79FrgH.d.ts → pipeline-9SYxxign.d.ts} +1 -1
  318. package/dist/policy-runtime.d.ts +1 -1
  319. package/dist/proactive-contention.d.ts +2 -2
  320. package/dist/provenance.d.ts +1 -1
  321. package/dist/{public-http-DaHHhWRR.d.ts → public-http-Bvol6Jr4.d.ts} +1 -1
  322. package/dist/{qmd-BT0ErlRS.d.ts → qmd-DjwuG9Xa.d.ts} +1 -1
  323. package/dist/qmd-preflight.d.ts +2 -2
  324. package/dist/qmd-recall-cache.d.ts +1 -1
  325. package/dist/qmd.d.ts +2 -2
  326. package/dist/qmd.js +4 -4
  327. package/dist/recall-concurrency-config.d.ts +1 -1
  328. package/dist/recall-disclosure-escalation.d.ts +1 -1
  329. package/dist/recall-explain-renderer.d.ts +1 -1
  330. package/dist/recall-explain-renderer.js +3 -3
  331. package/dist/recall-memory-map.d.ts +1 -1
  332. package/dist/recall-navigate-access.d.ts +1 -1
  333. package/dist/recall-navigate-access.js +2 -2
  334. package/dist/recall-navigate-disclosure.d.ts +1 -1
  335. package/dist/recall-navigate-disclosure.js +2 -2
  336. package/dist/recall-navigate.d.ts +1 -1
  337. package/dist/recall-navigate.js +2 -2
  338. package/dist/recall-navigation-http-glue.d.ts +14 -14
  339. package/dist/recall-navigation-mcp-tools.d.ts +14 -14
  340. package/dist/recall-navigation-operations.js +32 -30
  341. package/dist/recall-navigation-renderer.d.ts +1 -1
  342. package/dist/recall-navigation.d.ts +1 -1
  343. package/dist/recall-navigation.js +31 -29
  344. package/dist/recall-planner-llm.d.ts +1 -1
  345. package/dist/recall-state-view-admission.d.ts +2 -2
  346. package/dist/recall-state-view-admission.js +8 -5
  347. package/dist/recall-state-view-anchors.d.ts +1 -1
  348. package/dist/recall-state.d.ts +1 -1
  349. package/dist/recall-tag-filter.d.ts +1 -1
  350. package/dist/recall-timings.d.ts +1 -1
  351. package/dist/recall-xray-cli.d.ts +1 -1
  352. package/dist/recall-xray-cli.js +4 -4
  353. package/dist/recall-xray-renderer.d.ts +1 -1
  354. package/dist/recall-xray-renderer.js +3 -3
  355. package/dist/recall-xray.d.ts +1 -1
  356. package/dist/recall-xray.js +2 -2
  357. package/dist/reconcile/cursor.d.ts +1 -1
  358. package/dist/reconcile/manifest.d.ts +1 -1
  359. package/dist/reconcile/plan.d.ts +1 -1
  360. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  361. package/dist/replay/normalizers/claude.d.ts +1 -1
  362. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  363. package/dist/replay/normalizers/shared.d.ts +1 -1
  364. package/dist/replay/runner.d.ts +1 -1
  365. package/dist/replay/types.d.ts +1 -1
  366. package/dist/replica-divergence.d.ts +1 -1
  367. package/dist/replica-peers-config.d.ts +1 -1
  368. package/dist/resolve-auth-token.d.ts +1 -1
  369. package/dist/resume-bundles.js +3 -3
  370. package/dist/retrieval-agents.d.ts +2 -2
  371. package/dist/retrieval-tiers.d.ts +1 -1
  372. package/dist/routing/engine.d.ts +1 -1
  373. package/dist/routing/store.d.ts +1 -1
  374. package/dist/salvage-envelope.d.ts +1 -1
  375. package/dist/{scope-profiles-BgPQx9iE.d.ts → scope-profiles-DPegZtRf.d.ts} +1 -1
  376. package/dist/search/embed-helper.d.ts +1 -1
  377. package/dist/search/factory.d.ts +1 -1
  378. package/dist/search/factory.js +5 -5
  379. package/dist/search/index.d.ts +1 -1
  380. package/dist/search/index.js +9 -9
  381. package/dist/search/lancedb-backend.d.ts +1 -1
  382. package/dist/search/meilisearch-backend.d.ts +1 -1
  383. package/dist/search/noop-backend.d.ts +1 -1
  384. package/dist/search/orama-backend.d.ts +1 -1
  385. package/dist/search/port.d.ts +1 -1
  386. package/dist/search/remote-backend.d.ts +1 -1
  387. package/dist/{semantic-consolidation-BrAWKVcm.d.ts → semantic-consolidation-DMzhKRYl.d.ts} +1 -1
  388. package/dist/semantic-consolidation.d.ts +2 -2
  389. package/dist/semantic-consolidation.js +12 -12
  390. package/dist/semantic-rule-promotion.js +11 -11
  391. package/dist/semantic-rule-verifier.d.ts +1 -1
  392. package/dist/semantic-rule-verifier.js +11 -11
  393. package/dist/{service-CqHOTg87.d.ts → service-E99KuPvi.d.ts} +2 -2
  394. package/dist/session-observer-bands.d.ts +1 -1
  395. package/dist/session-observer-state.d.ts +1 -1
  396. package/dist/shared-context/manager.d.ts +1 -1
  397. package/dist/signal.d.ts +1 -1
  398. package/dist/source-agent-qualifier.d.ts +1 -1
  399. package/dist/source-agent-qualifier.js +14 -14
  400. package/dist/standup/build.js +11 -11
  401. package/dist/{storage-mD2YQ8_2.d.ts → storage-BS7ux8F7.d.ts} +1 -1
  402. package/dist/storage.d.ts +2 -2
  403. package/dist/storage.js +10 -10
  404. package/dist/subject-config.d.ts +1 -1
  405. package/dist/summarizer.d.ts +1 -1
  406. package/dist/summary-snapshot.d.ts +1 -1
  407. package/dist/support-passport/index.d.ts +17 -17
  408. package/dist/support-passport/index.js +34 -32
  409. package/dist/{tagging-CiAVA-ID.d.ts → tagging-BhOEcSXP.d.ts} +2 -2
  410. package/dist/temporal-supersession.d.ts +2 -2
  411. package/dist/temporal-timeline-recall.d.ts +1 -1
  412. package/dist/temporal-validity.d.ts +1 -1
  413. package/dist/threading.d.ts +1 -1
  414. package/dist/tier-migration.d.ts +2 -2
  415. package/dist/tier-routing.d.ts +1 -1
  416. package/dist/topics.d.ts +1 -1
  417. package/dist/transcript.d.ts +1 -1
  418. package/dist/transfer/export-okf.d.ts +1 -1
  419. package/dist/transfer/export-okf.js +11 -11
  420. package/dist/trust-score-stage.d.ts +1 -1
  421. package/dist/trust-score.d.ts +1 -1
  422. package/dist/{types-DgDaoY61.d.ts → types-DQ2H8gAC.d.ts} +19 -0
  423. package/dist/types.d.ts +1 -1
  424. package/dist/types.js +1 -1
  425. package/dist/utility-runtime.d.ts +1 -1
  426. package/dist/verified-recall.js +11 -11
  427. package/dist/who-knows-cli.d.ts +14 -14
  428. package/dist/who-knows-cli.js +12 -12
  429. package/dist/who-knows.d.ts +14 -14
  430. package/dist/who-knows.js +11 -11
  431. package/dist/write-envelope.d.ts +1 -1
  432. package/package.json +2 -2
  433. package/src/config.ts +4 -0
  434. package/src/directory-sidecars.test.ts +268 -0
  435. package/src/directory-sidecars.ts +383 -0
  436. package/src/experience/session-experience-config.ts +51 -0
  437. package/src/experience/session-experience-lifecycle.test.ts +139 -0
  438. package/src/experience/session-experience.test.ts +233 -0
  439. package/src/experience/session-experience.ts +240 -0
  440. package/src/orchestration/generic-recall-paths.ts +5 -1
  441. package/src/orchestration/session-context.ts +50 -0
  442. package/src/types.ts +3 -0
  443. package/dist/chunk-DE4ZGH2N.js.map +0 -1
  444. package/dist/chunk-KPYMORPQ.js.map +0 -1
  445. package/dist/chunk-OSTXIFZW.js.map +0 -1
  446. package/dist/chunk-WQW6KPVC.js.map +0 -1
  447. /package/dist/{chunk-MQT3WP3F.js.map → chunk-3MX4GWJO.js.map} +0 -0
  448. /package/dist/{chunk-PXJ6HE2W.js.map → chunk-3RABJOGD.js.map} +0 -0
  449. /package/dist/{chunk-NNFB4CU4.js.map → chunk-4WSR7MYV.js.map} +0 -0
  450. /package/dist/{chunk-6A6HSXWV.js.map → chunk-5WIGM42T.js.map} +0 -0
  451. /package/dist/{chunk-GGROFIYX.js.map → chunk-6DYCSSHN.js.map} +0 -0
  452. /package/dist/{chunk-55XWRL6F.js.map → chunk-6VLOKESS.js.map} +0 -0
  453. /package/dist/{chunk-OS4JVTHR.js.map → chunk-76RTJ533.js.map} +0 -0
  454. /package/dist/{chunk-4LPIVP77.js.map → chunk-7VTQETLT.js.map} +0 -0
  455. /package/dist/{chunk-X2NFFBTO.js.map → chunk-A7GQBJP5.js.map} +0 -0
  456. /package/dist/{chunk-JIURESYF.js.map → chunk-AIKUSXIS.js.map} +0 -0
  457. /package/dist/{chunk-MNG536IS.js.map → chunk-AJLQH4RO.js.map} +0 -0
  458. /package/dist/{chunk-XEHLYA5Z.js.map → chunk-AOMVOC2E.js.map} +0 -0
  459. /package/dist/{chunk-XXLH6KFO.js.map → chunk-BHXY5FXL.js.map} +0 -0
  460. /package/dist/{chunk-PA67GXYJ.js.map → chunk-C3YEB7CR.js.map} +0 -0
  461. /package/dist/{chunk-SK6HEQTW.js.map → chunk-DHTOYRDE.js.map} +0 -0
  462. /package/dist/{chunk-P3YNEMYY.js.map → chunk-E64HBW7M.js.map} +0 -0
  463. /package/dist/{chunk-2B2RHLHI.js.map → chunk-EBLKS57G.js.map} +0 -0
  464. /package/dist/{chunk-MUNR43V3.js.map → chunk-EHUUXLLA.js.map} +0 -0
  465. /package/dist/{chunk-LYMJ36UI.js.map → chunk-EST3J4LX.js.map} +0 -0
  466. /package/dist/{chunk-B6VDWDFN.js.map → chunk-EUP4AXIW.js.map} +0 -0
  467. /package/dist/{chunk-XZUHXKM3.js.map → chunk-FLZJMXFV.js.map} +0 -0
  468. /package/dist/{chunk-XYGINDIJ.js.map → chunk-FVRZDZ7J.js.map} +0 -0
  469. /package/dist/{chunk-645WOU5I.js.map → chunk-H7BZBSP6.js.map} +0 -0
  470. /package/dist/{chunk-TW4MXM7H.js.map → chunk-HIBNECBQ.js.map} +0 -0
  471. /package/dist/{chunk-QLCMOHRE.js.map → chunk-IIDXU2CY.js.map} +0 -0
  472. /package/dist/{chunk-JYXLW22X.js.map → chunk-JG4AP36X.js.map} +0 -0
  473. /package/dist/{chunk-3RKVSECD.js.map → chunk-JI5Q6EOY.js.map} +0 -0
  474. /package/dist/{chunk-XKHRNAK7.js.map → chunk-JIWZVOQM.js.map} +0 -0
  475. /package/dist/{chunk-7YUX52XZ.js.map → chunk-JVM3CEGL.js.map} +0 -0
  476. /package/dist/{chunk-QB4VXCFN.js.map → chunk-K26LFJE4.js.map} +0 -0
  477. /package/dist/{chunk-Y5VT7BIT.js.map → chunk-K4KE5MYE.js.map} +0 -0
  478. /package/dist/{chunk-TQSCR5DU.js.map → chunk-KG2OOAFF.js.map} +0 -0
  479. /package/dist/{chunk-VV5GCNKG.js.map → chunk-KHLNIDWB.js.map} +0 -0
  480. /package/dist/{chunk-LIAM7U2J.js.map → chunk-LE2UESGS.js.map} +0 -0
  481. /package/dist/{chunk-YXWMZAAN.js.map → chunk-LLFMZYFS.js.map} +0 -0
  482. /package/dist/{chunk-PPJLJD2D.js.map → chunk-LX32KV2C.js.map} +0 -0
  483. /package/dist/{chunk-MKJFPIVG.js.map → chunk-N57PUWUE.js.map} +0 -0
  484. /package/dist/{chunk-V7IONNTJ.js.map → chunk-NDWBT2VV.js.map} +0 -0
  485. /package/dist/{chunk-DRLZB3CN.js.map → chunk-OTGIAJQ2.js.map} +0 -0
  486. /package/dist/{chunk-T3T5HTZZ.js.map → chunk-P36WML7L.js.map} +0 -0
  487. /package/dist/{chunk-B4WI7OF2.js.map → chunk-PAQ7YGJY.js.map} +0 -0
  488. /package/dist/{chunk-BIXELUIR.js.map → chunk-PSQRBCGR.js.map} +0 -0
  489. /package/dist/{chunk-FGRJJBFO.js.map → chunk-PZHN7R35.js.map} +0 -0
  490. /package/dist/{chunk-QMWKENNK.js.map → chunk-Q4AUIFUA.js.map} +0 -0
  491. /package/dist/{chunk-CD7VTZIG.js.map → chunk-QQA6VTOY.js.map} +0 -0
  492. /package/dist/{chunk-R32AEEU3.js.map → chunk-RBHQA2UU.js.map} +0 -0
  493. /package/dist/{chunk-HG74GEVY.js.map → chunk-RS53SDCA.js.map} +0 -0
  494. /package/dist/{chunk-SS33RR4F.js.map → chunk-SKYYPVBW.js.map} +0 -0
  495. /package/dist/{chunk-EWBDJQ5Y.js.map → chunk-SYJZUVTN.js.map} +0 -0
  496. /package/dist/{chunk-IO7K7GES.js.map → chunk-T3F2HWIG.js.map} +0 -0
  497. /package/dist/{chunk-KVIMQAER.js.map → chunk-T3OLYUU6.js.map} +0 -0
  498. /package/dist/{chunk-QGAKUOKU.js.map → chunk-U3ZRHNNG.js.map} +0 -0
  499. /package/dist/{chunk-LIDJWAQV.js.map → chunk-UB4UVALS.js.map} +0 -0
  500. /package/dist/{chunk-WYU66IVZ.js.map → chunk-UE7L4EDU.js.map} +0 -0
  501. /package/dist/{chunk-I6IJDTRP.js.map → chunk-VBRS7Z3O.js.map} +0 -0
  502. /package/dist/{chunk-EGOWY342.js.map → chunk-WGCASEEQ.js.map} +0 -0
  503. /package/dist/{chunk-BNX2TUSF.js.map → chunk-WHSNLCRO.js.map} +0 -0
  504. /package/dist/{chunk-7DU2F7LM.js.map → chunk-XQFHKPNB.js.map} +0 -0
  505. /package/dist/{chunk-MKLDZNBD.js.map → chunk-YA5M7OC4.js.map} +0 -0
  506. /package/dist/{chunk-WL3PGPGU.js.map → chunk-YKWWG3CM.js.map} +0 -0
  507. /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
  508. /package/dist/{chunk-32ZBIGID.js.map → chunk-YOC3EEZH.js.map} +0 -0
  509. /package/dist/{chunk-ZEIJQ4I3.js.map → chunk-Z2OKRO3E.js.map} +0 -0
  510. /package/dist/{chunk-5KBI2MOC.js.map → chunk-ZDGSHXJU.js.map} +0 -0
  511. /package/dist/{chunk-BMBAA2M5.js.map → chunk-ZYZW46HZ.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RECALL_DISCLOSURE_LEVELS
3
- } from "./chunk-WQW6KPVC.js";
3
+ } from "./chunk-DNAD57VY.js";
4
4
 
5
5
  // src/recall-navigate.ts
6
6
  var RECALL_NAV_LINK_TYPES = [
@@ -48,4 +48,4 @@ export {
48
48
  expandRecallNode,
49
49
  traverseRecallLink
50
50
  };
51
- //# sourceMappingURL=chunk-QGAKUOKU.js.map
51
+ //# sourceMappingURL=chunk-U3ZRHNNG.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  computeCorpusWatermarks,
6
6
  resolveCorpusNamespaceRoots
7
- } from "./chunk-MQT3WP3F.js";
7
+ } from "./chunk-3MX4GWJO.js";
8
8
 
9
9
  // src/operator-doctor-corpus.ts
10
10
  var DIGEST_PREFIX_LENGTH = 12;
@@ -78,4 +78,4 @@ export {
78
78
  corpusWatermarksFromCheck,
79
79
  summarizeCorpusAndReplica
80
80
  };
81
- //# sourceMappingURL=chunk-LIDJWAQV.js.map
81
+ //# sourceMappingURL=chunk-UB4UVALS.js.map
@@ -0,0 +1,260 @@
1
+ import {
2
+ OKF_RESERVED_BASENAMES
3
+ } from "./chunk-PCEYGOSL.js";
4
+ import {
5
+ normalizeProjectionPreview
6
+ } from "./chunk-SCU65EZI.js";
7
+ import {
8
+ writeFileAtomically
9
+ } from "./chunk-AW4QUFQF.js";
10
+ import {
11
+ RECALL_FALLBACK_DIRS
12
+ } from "./chunk-VS2IYZRU.js";
13
+
14
+ // src/directory-sidecars.ts
15
+ import { createHash } from "crypto";
16
+ import { lstatSync, readFileSync, readdirSync, statSync, unlinkSync } from "fs";
17
+ import path from "path";
18
+ var DIRECTORY_SIDECAR_BASENAME = "overview.md";
19
+ var DIRECTORY_SIDECAR_MARKER = "<!-- remnic-directory-sidecar -->";
20
+ var ABSTRACT_MAX_CHARS = 256;
21
+ var OVERVIEW_MAX_CHARS = 4e3;
22
+ var DEFAULT_QUERY_LIMIT = 5;
23
+ var RESERVED_CHILD_BASENAMES = Object.freeze({
24
+ ...OKF_RESERVED_BASENAMES,
25
+ [DIRECTORY_SIDECAR_BASENAME]: true
26
+ });
27
+ function listEntries(dir) {
28
+ try {
29
+ return readdirSync(dir, { withFileTypes: true });
30
+ } catch {
31
+ return [];
32
+ }
33
+ }
34
+ function isRealDirectory(entryPath) {
35
+ try {
36
+ const stats = lstatSync(entryPath);
37
+ return !stats.isSymbolicLink() && stats.isDirectory();
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+ function memoryChildren(dir) {
43
+ return listEntries(dir).filter((entry) => entry.isFile() && !RESERVED_CHILD_BASENAMES[entry.name] && entry.name.endsWith(".md")).map((entry) => entry.name).sort((a, b) => a.localeCompare(b));
44
+ }
45
+ function directoryChildren(dir) {
46
+ return listEntries(dir).filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((a, b) => a.localeCompare(b));
47
+ }
48
+ function directoryFingerprint(dir) {
49
+ const hash = createHash("sha256");
50
+ for (const name of memoryChildren(dir)) {
51
+ try {
52
+ const stats = statSync(path.join(dir, name));
53
+ hash.update(`f|${name}|${stats.size}|${Math.trunc(stats.mtimeMs)}
54
+ `);
55
+ } catch {
56
+ hash.update(`f|${name}|missing
57
+ `);
58
+ }
59
+ }
60
+ for (const name of directoryChildren(dir)) {
61
+ hash.update(`d|${name}|${directoryFingerprint(path.join(dir, name))}
62
+ `);
63
+ }
64
+ return hash.digest("hex");
65
+ }
66
+ function readFileOrNull(target) {
67
+ try {
68
+ return readFileSync(target, "utf8");
69
+ } catch {
70
+ return null;
71
+ }
72
+ }
73
+ function parseSidecar(content) {
74
+ if (!content.startsWith(DIRECTORY_SIDECAR_MARKER)) return null;
75
+ const fingerprint = /^fingerprint: ([0-9a-f]{64})$/m.exec(content)?.[1];
76
+ if (!fingerprint) return null;
77
+ const abstract = /^## Abstract\n([^\n]+)$/m.exec(content)?.[1] ?? "";
78
+ const overviewStart = content.indexOf("## Abstract");
79
+ const overview = overviewStart === -1 ? "" : content.slice(overviewStart, overviewStart + OVERVIEW_MAX_CHARS).trim();
80
+ const childCount = (content.match(/^\* .+$/gm) ?? []).length;
81
+ return { abstract, overview, childCount, fingerprint };
82
+ }
83
+ function sidecarPath(dir) {
84
+ return path.join(dir, DIRECTORY_SIDECAR_BASENAME);
85
+ }
86
+ function renderSidecar(dir, fingerprint, childAbstracts) {
87
+ const children = memoryChildren(dir);
88
+ const childDirs = directoryChildren(dir).filter((name) => childAbstracts.has(path.join(dir, name)));
89
+ if (children.length === 0 && childDirs.length === 0) return null;
90
+ const previews = children.map((name) => {
91
+ try {
92
+ return normalizeProjectionPreview(readFileSync(path.join(dir, name), "utf8"), 120);
93
+ } catch {
94
+ return "";
95
+ }
96
+ });
97
+ const titles = children.map(
98
+ (name, index) => previews[index].split(" ").slice(0, 8).join(" ") || name.replace(/\.md$/, "")
99
+ );
100
+ const abstract = normalizeProjectionPreview(
101
+ `${path.basename(dir)}/ \u2014 ${children.length} memories: ${titles.slice(0, 5).join(" \xB7 ")}`,
102
+ ABSTRACT_MAX_CHARS
103
+ );
104
+ const lines = [
105
+ DIRECTORY_SIDECAR_MARKER,
106
+ `fingerprint: ${fingerprint}`,
107
+ `# ${path.basename(dir)}/ overview`,
108
+ "",
109
+ "## Abstract",
110
+ abstract,
111
+ "",
112
+ "## Children"
113
+ ];
114
+ for (const [index, name] of children.entries()) {
115
+ lines.push(`* ${name} \u2014 ${previews[index]}`);
116
+ }
117
+ for (const name of childDirs) {
118
+ lines.push(`### ${name}/`);
119
+ lines.push(childAbstracts.get(path.join(dir, name)) ?? "");
120
+ }
121
+ lines.push("");
122
+ return lines.join("\n");
123
+ }
124
+ function scopeRoots(memoryDir) {
125
+ const roots = [memoryDir];
126
+ const namespacesRoot = path.join(memoryDir, "namespaces");
127
+ for (const entry of listEntries(namespacesRoot)) {
128
+ if (entry.isDirectory() && isRealDirectory(path.join(namespacesRoot, entry.name))) {
129
+ roots.push(path.join(namespacesRoot, entry.name));
130
+ }
131
+ }
132
+ return roots;
133
+ }
134
+ function collectSidecarDirs(scopeRoot) {
135
+ const dirs = [];
136
+ const walk = (dir, isCategoryRoot) => {
137
+ let carries = memoryChildren(dir).length > 0;
138
+ for (const name of directoryChildren(dir)) {
139
+ carries = walk(path.join(dir, name), false) || carries;
140
+ }
141
+ const hasSidecar = readFileOrNull(sidecarPath(dir))?.startsWith(DIRECTORY_SIDECAR_MARKER) === true;
142
+ if (isCategoryRoot || carries || hasSidecar) dirs.push(dir);
143
+ return carries;
144
+ };
145
+ for (const category of RECALL_FALLBACK_DIRS) {
146
+ const categoryDir = path.join(scopeRoot, category);
147
+ if (!isRealDirectory(categoryDir)) continue;
148
+ walk(categoryDir, true);
149
+ }
150
+ return dirs;
151
+ }
152
+ async function runDirectorySidecarMaintenance(memoryDir, enabled) {
153
+ const written = [];
154
+ const removed = [];
155
+ for (const scope of scopeRoots(memoryDir)) {
156
+ const childAbstracts = /* @__PURE__ */ new Map();
157
+ for (const dir of collectSidecarDirs(scope)) {
158
+ const target = sidecarPath(dir);
159
+ const raw = readFileOrNull(target);
160
+ const existing = raw !== null && raw.startsWith(DIRECTORY_SIDECAR_MARKER) ? raw : null;
161
+ if (!enabled) {
162
+ if (existing !== null) {
163
+ unlinkSync(target);
164
+ removed.push(target);
165
+ }
166
+ continue;
167
+ }
168
+ const next = renderSidecar(dir, directoryFingerprint(dir), childAbstracts);
169
+ if (next === null) {
170
+ if (existing !== null) {
171
+ unlinkSync(target);
172
+ removed.push(target);
173
+ }
174
+ continue;
175
+ }
176
+ const parsedNext = parseSidecar(next);
177
+ if (parsedNext) childAbstracts.set(dir, parsedNext.abstract);
178
+ if (raw === next) continue;
179
+ if (existing === null && raw !== null) continue;
180
+ await writeFileAtomically(target, next);
181
+ written.push(target);
182
+ }
183
+ }
184
+ return { written, removed };
185
+ }
186
+ async function loadDirectorySidecar(dir, options = {}) {
187
+ const refresh = options.refresh !== false;
188
+ const target = sidecarPath(dir);
189
+ const stored = readFileOrNull(target);
190
+ const generated = stored !== null && stored.startsWith(DIRECTORY_SIDECAR_MARKER);
191
+ const parsed = generated ? parseSidecar(stored) : null;
192
+ const fingerprint = directoryFingerprint(dir);
193
+ if (parsed !== null && (parsed.fingerprint === fingerprint || !refresh)) {
194
+ return {
195
+ dir,
196
+ abstract: parsed.abstract,
197
+ overview: parsed.overview,
198
+ childCount: parsed.childCount,
199
+ fresh: parsed.fingerprint === fingerprint
200
+ };
201
+ }
202
+ if (!refresh) return null;
203
+ const childAbstracts = /* @__PURE__ */ new Map();
204
+ for (const name of directoryChildren(dir)) {
205
+ const child = await loadDirectorySidecar(path.join(dir, name));
206
+ if (child) childAbstracts.set(path.join(dir, name), child.abstract);
207
+ }
208
+ const next = renderSidecar(dir, directoryFingerprint(dir), childAbstracts);
209
+ if (next === null) {
210
+ if (generated) unlinkSync(target);
211
+ return null;
212
+ }
213
+ if (readFileOrNull(target) !== next) {
214
+ if (stored !== null && !generated) {
215
+ return null;
216
+ }
217
+ await writeFileAtomically(target, next);
218
+ }
219
+ const refreshed = parseSidecar(next);
220
+ return refreshed ? {
221
+ dir,
222
+ abstract: refreshed.abstract,
223
+ overview: refreshed.overview,
224
+ childCount: refreshed.childCount,
225
+ fresh: true
226
+ } : null;
227
+ }
228
+ async function findDirectorySidecarsForQuery(memoryDir, query, options = {}) {
229
+ const scope = options.namespace ? path.join(memoryDir, "namespaces", options.namespace) : memoryDir;
230
+ if (!isRealDirectory(scope)) return [];
231
+ const terms = query.toLowerCase().split(/[^a-z0-9]+/).filter((term) => term.length >= 2);
232
+ const matches = [];
233
+ for (const root of scopeRoots(scope)) {
234
+ for (const dir of collectSidecarDirs(root)) {
235
+ const sidecar = await loadDirectorySidecar(dir);
236
+ if (!sidecar) continue;
237
+ const abstractLower = sidecar.abstract.toLowerCase();
238
+ const overviewLower = sidecar.overview.toLowerCase();
239
+ let score = 0;
240
+ for (const term of terms) {
241
+ if (abstractLower.includes(term)) score += 3;
242
+ else if (overviewLower.includes(term)) score += 1;
243
+ }
244
+ if (score > 0) matches.push({ ...sidecar, score });
245
+ }
246
+ }
247
+ matches.sort((a, b) => b.score - a.score || a.dir.localeCompare(b.dir));
248
+ const limit = options.limit ?? DEFAULT_QUERY_LIMIT;
249
+ return matches.filter((candidate) => !matches.some((other) => other.dir.startsWith(`${candidate.dir}${path.sep}`))).slice(0, limit);
250
+ }
251
+
252
+ export {
253
+ DIRECTORY_SIDECAR_BASENAME,
254
+ DIRECTORY_SIDECAR_MARKER,
255
+ directoryFingerprint,
256
+ runDirectorySidecarMaintenance,
257
+ loadDirectorySidecar,
258
+ findDirectorySidecarsForQuery
259
+ };
260
+ //# sourceMappingURL=chunk-UD6W67JM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/directory-sidecars.ts"],"sourcesContent":["/**\n * @remnic/core — per-directory abstract/overview sidecars (issue #2977).\n *\n * One derived `overview.md` per memory directory (category roots and every\n * directory beneath them, including `namespaces/<ns>/` subtrees), rendered\n * bottom-up from existing memory content:\n *\n * - the ABSTRACT is a single line (<=256 chars) composed from child titles;\n * - the OVERVIEW body lists one preview line per child memory and embeds\n * each child DIRECTORY's abstract, so a parent summarizes its subtree\n * without embedding full child overviews.\n *\n * Determinism: no LLM, no embeddings. Content is assembled with the same\n * preview machinery the OKF index files use (`normalizeProjectionPreview`).\n *\n * Invalidation: each sidecar stores a content-free fingerprint of its subtree\n * (child name|size|mtime for files, recursive fingerprints for child dirs).\n * Any add/edit/delete anywhere below a directory changes its fingerprint, so\n * `loadDirectorySidecar` can detect staleness with `readdir`+`stat` alone and\n * refresh without reading child memory files first. Eager regeneration runs\n * through {@link runDirectorySidecarMaintenance}; lazy refresh on read covers\n * direct-write paths that bypass scheduled maintenance (Gotcha #43).\n *\n * Isolation: sidecars are derived artifacts, excluded from generic recall via\n * `isGenericRecallExcludedPath` (basename match, the same tradeoff OKF makes\n * for `index.md`/`log.md`) while staying full-text searchable. Files at the\n * sidecar path WITHOUT the marker are user content: never overwritten, never\n * removed.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { lstatSync, readFileSync, readdirSync, statSync, unlinkSync } from \"node:fs\";\nimport path from \"node:path\";\n\nimport { writeFileAtomically } from \"./maintenance/atomic-file.js\";\nimport { normalizeProjectionPreview } from \"./memory-projection-format.js\";\nimport { OKF_RESERVED_BASENAMES } from \"./okf/type-mapping.js\";\nimport { RECALL_FALLBACK_DIRS } from \"./utils/category-dir.js\";\n\nexport const DIRECTORY_SIDECAR_BASENAME = \"overview.md\";\nexport const DIRECTORY_SIDECAR_MARKER = \"<!-- remnic-directory-sidecar -->\";\n\nconst ABSTRACT_MAX_CHARS = 256;\nconst OVERVIEW_MAX_CHARS = 4000;\nconst DEFAULT_QUERY_LIMIT = 5;\n\n/** Basenames never treated as child memories (ours plus OKF's reserved ones). */\nconst RESERVED_CHILD_BASENAMES: Readonly<Record<string, true>> = Object.freeze({\n ...OKF_RESERVED_BASENAMES,\n [DIRECTORY_SIDECAR_BASENAME]: true,\n});\n\nexport interface DirectorySidecar {\n /** Absolute directory the sidecar describes. */\n readonly dir: string;\n /** Single-line L0 abstract (<=256 chars). */\n readonly abstract: string;\n /** Abstract plus the per-child preview body (<=4000 chars). */\n readonly overview: string;\n /** Number of memory `.md` children in this directory. */\n readonly childCount: number;\n /** False when the stored fingerprint no longer matches the subtree. */\n readonly fresh: boolean;\n}\n\nexport interface DirectorySidecarMatch extends DirectorySidecar {\n readonly score: number;\n}\n\nexport interface DirectorySidecarReport {\n written: string[];\n removed: string[];\n}\n\ninterface ParsedSidecar {\n abstract: string;\n overview: string;\n childCount: number;\n fingerprint: string;\n}\n\nfunction listEntries(dir: string) {\n try {\n return readdirSync(dir, { withFileTypes: true });\n } catch {\n return [];\n }\n}\n\n/** Root check that refuses symlinks (fs-boundary rule, PRs #1938/#1999). */\nfunction isRealDirectory(entryPath: string): boolean {\n try {\n const stats = lstatSync(entryPath);\n return !stats.isSymbolicLink() && stats.isDirectory();\n } catch {\n return false;\n }\n}\n\nfunction memoryChildren(dir: string): string[] {\n // Dirent.isFile() is false for symlinks, so a linked memory never enters the corpus.\n return listEntries(dir)\n .filter((entry) => entry.isFile() && !RESERVED_CHILD_BASENAMES[entry.name] && entry.name.endsWith(\".md\"))\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n}\n\nfunction directoryChildren(dir: string): string[] {\n // Dirent.isDirectory() is false for symlinks (fs-boundary rule, PRs #1938/#1999).\n return listEntries(dir)\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Content-free subtree fingerprint: sha256 over sorted child descriptors.\n * Files contribute `name|size|mtimeMs`; directories contribute their own\n * recursive fingerprint, so any change below a directory invalidates every\n * ancestor. Reads no file contents.\n */\nexport function directoryFingerprint(dir: string): string {\n const hash = createHash(\"sha256\");\n for (const name of memoryChildren(dir)) {\n try {\n const stats = statSync(path.join(dir, name));\n hash.update(`f|${name}|${stats.size}|${Math.trunc(stats.mtimeMs)}\\n`);\n } catch {\n hash.update(`f|${name}|missing\\n`);\n }\n }\n for (const name of directoryChildren(dir)) {\n hash.update(`d|${name}|${directoryFingerprint(path.join(dir, name))}\\n`);\n }\n return hash.digest(\"hex\");\n}\n\nfunction readFileOrNull(target: string): string | null {\n try {\n return readFileSync(target, \"utf8\");\n } catch {\n return null;\n }\n}\n\nfunction parseSidecar(content: string): ParsedSidecar | null {\n if (!content.startsWith(DIRECTORY_SIDECAR_MARKER)) return null;\n const fingerprint = /^fingerprint: ([0-9a-f]{64})$/m.exec(content)?.[1];\n if (!fingerprint) return null;\n const abstract = /^## Abstract\\n([^\\n]+)$/m.exec(content)?.[1] ?? \"\";\n const overviewStart = content.indexOf(\"## Abstract\");\n const overview =\n overviewStart === -1 ? \"\" : content.slice(overviewStart, overviewStart + OVERVIEW_MAX_CHARS).trim();\n // The `* name — preview` child bullets are the rendered child count.\n const childCount = (content.match(/^\\* .+$/gm) ?? []).length;\n return { abstract, overview, childCount, fingerprint };\n}\n\nfunction sidecarPath(dir: string): string {\n return path.join(dir, DIRECTORY_SIDECAR_BASENAME);\n}\n\nfunction renderSidecar(dir: string, fingerprint: string, childAbstracts: Map<string, string>): string | null {\n const children = memoryChildren(dir);\n const childDirs = directoryChildren(dir).filter((name) => childAbstracts.has(path.join(dir, name)));\n if (children.length === 0 && childDirs.length === 0) return null;\n\n const previews = children.map((name) => {\n try {\n return normalizeProjectionPreview(readFileSync(path.join(dir, name), \"utf8\"), 120);\n } catch {\n return \"\";\n }\n });\n const titles = children.map(\n (name, index) => previews[index].split(\" \").slice(0, 8).join(\" \") || name.replace(/\\.md$/, \"\"),\n );\n const abstract = normalizeProjectionPreview(\n `${path.basename(dir)}/ — ${children.length} memories: ${titles.slice(0, 5).join(\" · \")}`,\n ABSTRACT_MAX_CHARS,\n );\n\n const lines = [\n DIRECTORY_SIDECAR_MARKER,\n `fingerprint: ${fingerprint}`,\n `# ${path.basename(dir)}/ overview`,\n \"\",\n \"## Abstract\",\n abstract,\n \"\",\n \"## Children\",\n ];\n for (const [index, name] of children.entries()) {\n lines.push(`* ${name} — ${previews[index]}`);\n }\n for (const name of childDirs) {\n lines.push(`### ${name}/`);\n lines.push(childAbstracts.get(path.join(dir, name)) ?? \"\");\n }\n lines.push(\"\");\n return lines.join(\"\\n\");\n}\n\n/** Scope roots whose category subtrees carry sidecars: the memory root plus every namespace root. */\nfunction scopeRoots(memoryDir: string): string[] {\n const roots = [memoryDir];\n const namespacesRoot = path.join(memoryDir, \"namespaces\");\n for (const entry of listEntries(namespacesRoot)) {\n if (entry.isDirectory() && isRealDirectory(path.join(namespacesRoot, entry.name))) {\n roots.push(path.join(namespacesRoot, entry.name));\n }\n }\n return roots;\n}\n\n/**\n * Every directory that should carry a sidecar, deepest first (post-order) so\n * parents render after their children and can embed child abstracts.\n */\nfunction collectSidecarDirs(scopeRoot: string): string[] {\n const dirs: string[] = [];\n const walk = (dir: string, isCategoryRoot: boolean): boolean => {\n let carries = memoryChildren(dir).length > 0;\n for (const name of directoryChildren(dir)) {\n carries = walk(path.join(dir, name), false) || carries;\n }\n // A directory that stopped carrying memories must still be visited so its\n // orphaned sidecar can be pruned or rewritten (cache-invalidation completeness).\n const hasSidecar = readFileOrNull(sidecarPath(dir))?.startsWith(DIRECTORY_SIDECAR_MARKER) === true;\n if (isCategoryRoot || carries || hasSidecar) dirs.push(dir);\n return carries;\n };\n for (const category of RECALL_FALLBACK_DIRS) {\n const categoryDir = path.join(scopeRoot, category);\n if (!isRealDirectory(categoryDir)) continue;\n walk(categoryDir, true);\n }\n return dirs;\n}\n\n/**\n * Regenerate directory sidecars incrementally. Unchanged sidecars are left\n * untouched; emptied directories lose theirs; user files at the sidecar path\n * (no marker) are never written or removed. With `enabled: false` every\n * generated sidecar is removed — the OKF index-maintenance contract.\n */\nexport async function runDirectorySidecarMaintenance(\n memoryDir: string,\n enabled: boolean,\n): Promise<DirectorySidecarReport> {\n const written: string[] = [];\n const removed: string[] = [];\n for (const scope of scopeRoots(memoryDir)) {\n const childAbstracts = new Map<string, string>();\n for (const dir of collectSidecarDirs(scope)) {\n const target = sidecarPath(dir);\n const raw = readFileOrNull(target);\n const existing = raw !== null && raw.startsWith(DIRECTORY_SIDECAR_MARKER) ? raw : null;\n if (!enabled) {\n if (existing !== null) {\n unlinkSync(target);\n removed.push(target);\n }\n continue;\n }\n const next = renderSidecar(dir, directoryFingerprint(dir), childAbstracts);\n if (next === null) {\n if (existing !== null) {\n unlinkSync(target);\n removed.push(target);\n }\n continue;\n }\n const parsedNext = parseSidecar(next);\n if (parsedNext) childAbstracts.set(dir, parsedNext.abstract);\n if (raw === next) continue;\n if (existing === null && raw !== null) continue; // user-authored file: hands off\n await writeFileAtomically(target, next);\n written.push(target);\n }\n }\n return { written, removed };\n}\n\n/**\n * Read a directory's sidecar for retrieval. By default a stale sidecar is\n * refreshed in place (child directories first), which is what makes direct\n * writes that bypass maintenance still converge. With `{ refresh: false }`\n * the stored sidecar is returned as-is with `fresh: false` so callers can\n * observe staleness without writes.\n */\nexport async function loadDirectorySidecar(\n dir: string,\n options: { refresh?: boolean } = {},\n): Promise<DirectorySidecar | null> {\n const refresh = options.refresh !== false;\n const target = sidecarPath(dir);\n const stored = readFileOrNull(target);\n const generated = stored !== null && stored.startsWith(DIRECTORY_SIDECAR_MARKER);\n const parsed = generated ? parseSidecar(stored) : null;\n const fingerprint = directoryFingerprint(dir);\n if (parsed !== null && (parsed.fingerprint === fingerprint || !refresh)) {\n return {\n dir,\n abstract: parsed.abstract,\n overview: parsed.overview,\n childCount: parsed.childCount,\n fresh: parsed.fingerprint === fingerprint,\n };\n }\n if (!refresh) return null;\n\n // Refresh bottom-up so this directory's body embeds current child abstracts.\n const childAbstracts = new Map<string, string>();\n for (const name of directoryChildren(dir)) {\n const child = await loadDirectorySidecar(path.join(dir, name));\n if (child) childAbstracts.set(path.join(dir, name), child.abstract);\n }\n const next = renderSidecar(dir, directoryFingerprint(dir), childAbstracts);\n if (next === null) {\n if (generated) unlinkSync(target);\n return null;\n }\n if (readFileOrNull(target) !== next) {\n if (stored !== null && !generated) {\n // User-authored file at the sidecar path: serve nothing rather than clobber it.\n return null;\n }\n await writeFileAtomically(target, next);\n }\n const refreshed = parseSidecar(next);\n return refreshed\n ? {\n dir,\n abstract: refreshed.abstract,\n overview: refreshed.overview,\n childCount: refreshed.childCount,\n fresh: true,\n }\n : null;\n}\n\n/**\n * Overview-query primitive for hierarchical retrieval (layer 1 of #2977):\n * score every sidecar's abstract (+3 per query term) and overview (+1 per\n * term) lexically, then return the most specific matches — when both a\n * directory and its descendant match, only the descendant is kept, matching\n * the drill-down semantics the full retrieval mode will build on.\n */\nexport async function findDirectorySidecarsForQuery(\n memoryDir: string,\n query: string,\n options: { namespace?: string; limit?: number } = {},\n): Promise<DirectorySidecarMatch[]> {\n const scope = options.namespace ? path.join(memoryDir, \"namespaces\", options.namespace) : memoryDir;\n if (!isRealDirectory(scope)) return [];\n const terms = query\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter((term) => term.length >= 2);\n\n const matches: DirectorySidecarMatch[] = [];\n for (const root of scopeRoots(scope)) {\n for (const dir of collectSidecarDirs(root)) {\n const sidecar = await loadDirectorySidecar(dir);\n if (!sidecar) continue;\n const abstractLower = sidecar.abstract.toLowerCase();\n const overviewLower = sidecar.overview.toLowerCase();\n let score = 0;\n for (const term of terms) {\n if (abstractLower.includes(term)) score += 3;\n else if (overviewLower.includes(term)) score += 1;\n }\n if (score > 0) matches.push({ ...sidecar, score });\n }\n }\n matches.sort((a, b) => b.score - a.score || a.dir.localeCompare(b.dir));\n\n const limit = options.limit ?? DEFAULT_QUERY_LIMIT;\n return matches\n .filter((candidate) => !matches.some((other) => other.dir.startsWith(`${candidate.dir}${path.sep}`)))\n .slice(0, limit);\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  hasMemoryData
3
- } from "./chunk-SK6HEQTW.js";
3
+ } from "./chunk-DHTOYRDE.js";
4
4
  import {
5
5
  resolveNamespaceStorageRoot
6
- } from "./chunk-XZUHXKM3.js";
6
+ } from "./chunk-FLZJMXFV.js";
7
7
  import {
8
8
  getConfiguredNamespaces
9
9
  } from "./chunk-OQQXGYMX.js";
@@ -724,4 +724,4 @@ export {
724
724
  runNamespaceMaintenancePlan,
725
725
  runNamespaceMaintenanceBatchPlan
726
726
  };
727
- //# sourceMappingURL=chunk-WYU66IVZ.js.map
727
+ //# sourceMappingURL=chunk-UE7L4EDU.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-DBB5JPSL.js";
4
4
  import {
5
5
  isGenericRecallExcludedPath
6
- } from "./chunk-DE4ZGH2N.js";
6
+ } from "./chunk-2IVHOQRY.js";
7
7
  import {
8
8
  shouldFilterSupersededFromRecall
9
9
  } from "./chunk-5WITETWU.js";
@@ -69,4 +69,4 @@ export {
69
69
  filterRecentScanMemoriesForStateView,
70
70
  indexStateViewAnnotatedResults
71
71
  };
72
- //# sourceMappingURL=chunk-I6IJDTRP.js.map
72
+ //# sourceMappingURL=chunk-VBRS7Z3O.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KJTKLXTH.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-MNG536IS.js";
6
+ } from "./chunk-AJLQH4RO.js";
7
7
  import {
8
8
  assertInjectedStorageRooted
9
9
  } from "./chunk-SGHGCFVV.js";
@@ -260,4 +260,4 @@ export {
260
260
  backupExistingLedger,
261
261
  rebuildMemoryLifecycleLedger
262
262
  };
263
- //# sourceMappingURL=chunk-EGOWY342.js.map
263
+ //# sourceMappingURL=chunk-WGCASEEQ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  getOperation,
4
4
  operationRequiresAuthorizedNamespace,
5
5
  operationUsesPrincipalNamespace
6
- } from "./chunk-KPYMORPQ.js";
6
+ } from "./chunk-TUSY4KRE.js";
7
7
  import {
8
8
  assertOperationAuthorizationAllowed
9
9
  } from "./chunk-MZWSOLMT.js";
@@ -60,4 +60,4 @@ export {
60
60
  authorizationProbeNamespaces,
61
61
  authorizationProbeRequiresPrincipalNamespace
62
62
  };
63
- //# sourceMappingURL=chunk-BNX2TUSF.js.map
63
+ //# sourceMappingURL=chunk-WHSNLCRO.js.map
@@ -1,3 +1,7 @@
1
+ import {
2
+ buildOriginStructuredSections,
3
+ sanitizeOriginatedFacts
4
+ } from "./chunk-GKUA4MGB.js";
1
5
  import {
2
6
  checkEntityRecallAbort,
3
7
  entityRecallSectionAbsent,
@@ -11,10 +15,6 @@ import {
11
15
  detectEntityQueryMode,
12
16
  isStructuralEntityFollowUpQuery
13
17
  } from "./chunk-MKYRCCSN.js";
14
- import {
15
- buildOriginStructuredSections,
16
- sanitizeOriginatedFacts
17
- } from "./chunk-GKUA4MGB.js";
18
18
  import {
19
19
  collectNativeKnowledgeChunks
20
20
  } from "./chunk-2DQ2XREU.js";
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-IHOXK2I6.js";
24
24
  import {
25
25
  compareEntityTimestamps
26
- } from "./chunk-MNG536IS.js";
26
+ } from "./chunk-AJLQH4RO.js";
27
27
  import {
28
28
  normalizeEntityName
29
29
  } from "./chunk-YXZG5TVN.js";
@@ -918,4 +918,4 @@ export {
918
918
  entityIndexVersion,
919
919
  entityRecentTranscriptLookbackHours
920
920
  };
921
- //# sourceMappingURL=chunk-7DU2F7LM.js.map
921
+ //# sourceMappingURL=chunk-XQFHKPNB.js.map
@@ -2,7 +2,7 @@ import {
2
2
  SupportPassportError,
3
3
  SupportPassportOwnerCreateGrantRequestSchema,
4
4
  getOperation
5
- } from "./chunk-KPYMORPQ.js";
5
+ } from "./chunk-TUSY4KRE.js";
6
6
 
7
7
  // src/support-passport/access-http.ts
8
8
  var OWNER_ROOT = "/engram/v1/support-passport";
@@ -137,4 +137,4 @@ export {
137
137
  SUPPORT_PASSPORT_OWNER_HTTP_ROUTES,
138
138
  handleSupportPassportOwnerHttp
139
139
  };
140
- //# sourceMappingURL=chunk-MKLDZNBD.js.map
140
+ //# sourceMappingURL=chunk-YA5M7OC4.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-PIWFNPQT.js";
8
8
  import {
9
9
  StorageManager
10
- } from "./chunk-MNG536IS.js";
10
+ } from "./chunk-AJLQH4RO.js";
11
11
  import {
12
12
  projectProceduresToSkills
13
13
  } from "./chunk-236PXYG7.js";
@@ -134,4 +134,4 @@ export {
134
134
  runCodexMaterialize,
135
135
  runPostConsolidationMaterialize
136
136
  };
137
- //# sourceMappingURL=chunk-WL3PGPGU.js.map
137
+ //# sourceMappingURL=chunk-YKWWG3CM.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- graphSnapshotFromMemoryDir
3
- } from "./chunk-44442YCH.js";
4
1
  import {
5
2
  diffGraphSnapshots
6
3
  } from "./chunk-AUDJPF4N.js";
4
+ import {
5
+ graphSnapshotFromMemoryDir
6
+ } from "./chunk-44442YCH.js";
7
7
 
8
8
  // src/dashboard-runtime.ts
9
9
  import { createHash, timingSafeEqual } from "crypto";
@@ -370,4 +370,4 @@ var GraphDashboardServer = class {
370
370
  export {
371
371
  GraphDashboardServer
372
372
  };
373
- //# sourceMappingURL=chunk-EZ25VE3G.js.map
373
+ //# sourceMappingURL=chunk-YNDLCWXS.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-V7IZKJI3.js";
4
4
  import {
5
5
  AdapterRegistry
6
- } from "./chunk-QMWKENNK.js";
6
+ } from "./chunk-Q4AUIFUA.js";
7
7
  import {
8
8
  WriteRateLimiter
9
9
  } from "./chunk-TB6CBZ5V.js";
@@ -21,10 +21,10 @@ import {
21
21
  } from "./chunk-WNMVUWI7.js";
22
22
  import {
23
23
  handleSupportPassportOwnerHttp
24
- } from "./chunk-MKLDZNBD.js";
24
+ } from "./chunk-YA5M7OC4.js";
25
25
  import {
26
26
  buildSupportPassportPublicRequestHandler
27
- } from "./chunk-NNFB4CU4.js";
27
+ } from "./chunk-4WSR7MYV.js";
28
28
  import {
29
29
  handleMcpGetSse
30
30
  } from "./chunk-SRT6SHVZ.js";
@@ -37,10 +37,10 @@ import {
37
37
  processChatMessage,
38
38
  sessionBelongsToPrincipal,
39
39
  subscribeChatTranscript
40
- } from "./chunk-BMBAA2M5.js";
40
+ } from "./chunk-ZYZW46HZ.js";
41
41
  import {
42
42
  RelayMissionStoreError
43
- } from "./chunk-TW4MXM7H.js";
43
+ } from "./chunk-HIBNECBQ.js";
44
44
  import {
45
45
  executeResolution,
46
46
  isValidResolutionVerb
@@ -62,10 +62,10 @@ import {
62
62
  optionalNamespaceKindQueryParam,
63
63
  optionalQueryString,
64
64
  positiveIntQueryParam
65
- } from "./chunk-DRLZB3CN.js";
65
+ } from "./chunk-OTGIAJQ2.js";
66
66
  import {
67
67
  respondBriefingHttp
68
- } from "./chunk-MUNR43V3.js";
68
+ } from "./chunk-EHUUXLLA.js";
69
69
  import {
70
70
  maybeHandleLifecycleFlush
71
71
  } from "./chunk-TIDEL77O.js";
@@ -76,14 +76,14 @@ import {
76
76
  authorizationProbeNamespaces,
77
77
  authorizationProbeRequiresPrincipalNamespace,
78
78
  probeOperationAuthorization
79
- } from "./chunk-BNX2TUSF.js";
79
+ } from "./chunk-WHSNLCRO.js";
80
80
  import {
81
81
  getOperation,
82
82
  resolveQueryNamespaceWritablePreflight
83
- } from "./chunk-KPYMORPQ.js";
83
+ } from "./chunk-TUSY4KRE.js";
84
84
  import {
85
85
  handleWhoKnowsHttpQuery
86
- } from "./chunk-PPJLJD2D.js";
86
+ } from "./chunk-LX32KV2C.js";
87
87
  import {
88
88
  isTrustZoneName
89
89
  } from "./chunk-ROBHL3GL.js";
@@ -92,7 +92,7 @@ import {
92
92
  } from "./chunk-DEUNUKTD.js";
93
93
  import {
94
94
  isRecallDisclosure
95
- } from "./chunk-WQW6KPVC.js";
95
+ } from "./chunk-DNAD57VY.js";
96
96
  import {
97
97
  CorrectionContractError
98
98
  } from "./chunk-QLK3SL7Q.js";
@@ -3599,4 +3599,4 @@ export {
3599
3599
  resolveDefaultAdminConsolePublicDir,
3600
3600
  EngramAccessHttpServer
3601
3601
  };
3602
- //# sourceMappingURL=chunk-32ZBIGID.js.map
3602
+ //# sourceMappingURL=chunk-YOC3EEZH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runLocationSync
3
- } from "./chunk-7YUX52XZ.js";
3
+ } from "./chunk-JVM3CEGL.js";
4
4
  import {
5
5
  log
6
6
  } from "./chunk-3WCASNQZ.js";
@@ -58,4 +58,4 @@ export {
58
58
  LOCATION_SYNC_DEFAULT_INTERVAL_MS,
59
59
  startLocationAutoSync
60
60
  };
61
- //# sourceMappingURL=chunk-ZEIJQ4I3.js.map
61
+ //# sourceMappingURL=chunk-Z2OKRO3E.js.map
@@ -318,4 +318,4 @@ export {
318
318
  readProjectedHarmonicGraph,
319
319
  searchHarmonicRetrieval
320
320
  };
321
- //# sourceMappingURL=chunk-5KBI2MOC.js.map
321
+ //# sourceMappingURL=chunk-ZDGSHXJU.js.map
@@ -43,10 +43,10 @@ import {
43
43
  } from "./chunk-WVI43D54.js";
44
44
  import {
45
45
  getOperation
46
- } from "./chunk-KPYMORPQ.js";
46
+ } from "./chunk-TUSY4KRE.js";
47
47
  import {
48
48
  WHO_KNOWS_MCP_TOOLS
49
- } from "./chunk-PPJLJD2D.js";
49
+ } from "./chunk-LX32KV2C.js";
50
50
  import {
51
51
  PROMOTION_CANDIDATES_MCP_TOOLS
52
52
  } from "./chunk-VYCOJKSX.js";
@@ -3994,4 +3994,4 @@ export {
3994
3994
  MCP_MIGRATED_OPERATIONS,
3995
3995
  EngramMcpServer
3996
3996
  };
3997
- //# sourceMappingURL=chunk-BMBAA2M5.js.map
3997
+ //# sourceMappingURL=chunk-ZYZW46HZ.js.map
@@ -1,16 +1,16 @@
1
1
  import { CompoundingPromotionReport } from './compounding/engine.js';
2
2
  import { ConversationIndexBackendInspection } from './conversation-index/backend.js';
3
3
  import { MigrateObservationsResult } from './maintenance/migrate-observations.js';
4
- import { M as MemoryFile, m as MemoryFrontmatter, x as MemoryStatus, ad as BehaviorSignalEvent, Q as QmdSearchResult, ai as BulkImportResult, an as MemoryActionEvent, K as MemoryLifecycleEvent } from './types-DgDaoY61.js';
5
- import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-Cirjo3ZB.js';
6
- import { S as StorageManager } from './storage-mD2YQ8_2.js';
4
+ import { M as MemoryFile, m as MemoryFrontmatter, x as MemoryStatus, ad as BehaviorSignalEvent, Q as QmdSearchResult, ai as BulkImportResult, an as MemoryActionEvent, K as MemoryLifecycleEvent } from './types-DQ2H8gAC.js';
5
+ import { C as ConversationIndexCoordinator, T as TierMigrationCoordinator, O as Orchestrator } from './orchestrator-Kx5zwNUm.js';
6
+ import { S as StorageManager } from './storage-BS7ux8F7.js';
7
7
  import { TrustZoneDemoSeedResult, TrustZoneName, TrustZonePromotionResult, TrustZoneStoreStatus } from './trust-zones.js';
8
- import { f as EngramAccessService } from './access-service-DUkTWyZS.js';
8
+ import { f as EngramAccessService } from './access-service-70VHaltr.js';
9
9
  import { Writable, Readable } from 'node:stream';
10
10
  import { ResolveSecretRefFn } from './resolve-auth-token.js';
11
11
  import { CausalTrajectoryStoreStatus } from './causal-trajectory.js';
12
12
  import { C as ConnectorRunResult, a as ConnectorsOutputFormat } from './connectors-cli-2iaQ5tX2.js';
13
- import { P as ProcessBatchFn } from './pipeline-DK79FrgH.js';
13
+ import { P as ProcessBatchFn } from './pipeline-9SYxxign.js';
14
14
  import { RuntimePolicyValues } from './policy-runtime.js';
15
15
  import { MemoryGovernanceRunResult, MemoryGovernanceSummary, MemoryGovernanceMetrics, MemoryGovernanceQualityScore, MemoryGovernanceReviewQueueEntry, MemoryGovernanceAppliedAction, MemoryGovernanceTransitionReport, MemoryGovernanceManifest, MemoryGovernanceRestoreManifest, RestoreMemoryGovernanceRunResult } from './maintenance/memory-governance.js';
16
16
  import { RebuildMemoryProjectionResult, RepairMemoryProjectionResult, VerifyMemoryProjectionResult } from './maintenance/rebuild-memory-projection.js';