@remnic/core 9.69.6 → 9.69.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 (250) hide show
  1. package/dist/access-admin-ops-surface.js +26 -26
  2. package/dist/access-authorization-probe.js +27 -27
  3. package/dist/access-boundary.js +26 -26
  4. package/dist/access-cli.js +84 -84
  5. package/dist/access-extraction-force-flush.js +26 -26
  6. package/dist/access-http-query.js +28 -28
  7. package/dist/access-http.js +44 -44
  8. package/dist/access-identity-continuity-surface.js +26 -26
  9. package/dist/access-lcm-surface.js +26 -26
  10. package/dist/access-mcp.js +35 -35
  11. package/dist/access-namespace-preflight.js +26 -26
  12. package/dist/access-observe-write-surface.js +26 -26
  13. package/dist/access-offline-manifest.js +3 -3
  14. package/dist/access-operations-batch.js +29 -29
  15. package/dist/access-operations.js +34 -34
  16. package/dist/access-recall-concurrency.js +26 -26
  17. package/dist/access-recall-response.js +26 -26
  18. package/dist/access-recall-surface.js +26 -26
  19. package/dist/access-schema.js +5 -5
  20. package/dist/access-service.js +26 -26
  21. package/dist/access-surface-catalog.js +28 -28
  22. package/dist/active-recall.js +5 -5
  23. package/dist/adapters/index.js +7 -7
  24. package/dist/adapters/registry.js +3 -3
  25. package/dist/briefing.js +6 -6
  26. package/dist/buffer.js +3 -3
  27. package/dist/{capsule-crypto-YO5QJ6L3.js → capsule-crypto-7FJQINUR.js} +2 -2
  28. package/dist/causal-behavior.js +2 -2
  29. package/dist/causal-chain.js +2 -2
  30. package/dist/causal-consolidation.js +9 -9
  31. package/dist/causal-retrieval.js +2 -2
  32. package/dist/causal-trajectory-graph.js +2 -2
  33. package/dist/causal-trajectory.js +1 -1
  34. package/dist/{chunk-7RZJWZ46.js → chunk-227UFSEQ.js} +5 -5
  35. package/dist/{chunk-QA6H4PIO.js → chunk-26JWBSWD.js} +3 -3
  36. package/dist/{chunk-7VA7PARC.js → chunk-2MW3UQNX.js} +2 -2
  37. package/dist/{chunk-BXLOS5AJ.js → chunk-2NLLXCJG.js} +2 -2
  38. package/dist/{chunk-JBPKEARU.js → chunk-2QSZNTDO.js} +7 -7
  39. package/dist/{chunk-P6GKRT2H.js → chunk-2Z3DG5CQ.js} +1 -1
  40. package/dist/{chunk-6EXRODDF.js → chunk-3FXXFLVK.js} +2 -2
  41. package/dist/{chunk-XOGYSWQZ.js → chunk-3QWF54M4.js} +18 -18
  42. package/dist/{chunk-YTCE2JQL.js → chunk-44HBCMOA.js} +99 -48
  43. package/dist/chunk-44HBCMOA.js.map +1 -0
  44. package/dist/{chunk-IE7N2YK6.js → chunk-4PJYD2L3.js} +2 -2
  45. package/dist/{chunk-MWLBRFLY.js → chunk-5PTS43CH.js} +2 -2
  46. package/dist/{chunk-NM5EOKN7.js → chunk-6C57JBJ3.js} +2 -2
  47. package/dist/{chunk-WTWHORVW.js → chunk-754GA2UE.js} +5 -5
  48. package/dist/{chunk-VDX2J7OX.js → chunk-7LCGFUMB.js} +4 -4
  49. package/dist/{chunk-YPNTBYEV.js → chunk-A3WMMQAH.js} +3 -3
  50. package/dist/{chunk-SZZGVXKC.js → chunk-ANN5VMHT.js} +2 -2
  51. package/dist/{chunk-OLBZ2WGG.js → chunk-C2JCVZWX.js} +2 -2
  52. package/dist/{chunk-7DXW5V2W.js → chunk-CTCGHNWN.js} +5 -5
  53. package/dist/{chunk-JJAOVJ3E.js → chunk-DJZWNKFO.js} +2 -2
  54. package/dist/{chunk-PY5E3UOD.js → chunk-DKZR56A3.js} +2 -2
  55. package/dist/{chunk-6JYTP3JP.js → chunk-E5WTGEWX.js} +3 -3
  56. package/dist/{chunk-WAPSYHNR.js → chunk-EN75MUTO.js} +5 -5
  57. package/dist/{chunk-OMA2B7GY.js → chunk-G4MCAHMF.js} +2 -2
  58. package/dist/{chunk-EJJ57PTY.js → chunk-GD7D7WP2.js} +2 -2
  59. package/dist/{chunk-X3DTN2RC.js → chunk-GFGQOZGG.js} +10 -10
  60. package/dist/{chunk-EVLHZ6F3.js → chunk-GISV63M2.js} +2 -2
  61. package/dist/{chunk-YERBUSU2.js → chunk-H3HOC6UT.js} +2 -2
  62. package/dist/{chunk-AJFKQJQK.js → chunk-HINMCD7V.js} +2 -2
  63. package/dist/{chunk-ISDSX7GW.js → chunk-IGUWU5BD.js} +1 -1
  64. package/dist/{chunk-W6V2XVUO.js → chunk-IIO4C3YL.js} +4 -4
  65. package/dist/{chunk-SKVSBTFQ.js → chunk-IWO4HEOL.js} +2 -2
  66. package/dist/{chunk-TB2MJRI6.js → chunk-J3NGQ5SC.js} +2 -2
  67. package/dist/chunk-J3NGQ5SC.js.map +1 -0
  68. package/dist/{chunk-ZIZUB6VB.js → chunk-J55NAXDH.js} +34 -34
  69. package/dist/{chunk-3X7Z467X.js → chunk-JAU4MRKB.js} +2 -2
  70. package/dist/{chunk-XJJYSX6F.js → chunk-JCUG7AXZ.js} +4 -4
  71. package/dist/{chunk-BX6GW4KC.js → chunk-JMAG7WZ7.js} +2 -2
  72. package/dist/{chunk-NAB4MKTJ.js → chunk-KAVQ5GYY.js} +6 -5
  73. package/dist/{chunk-NAB4MKTJ.js.map → chunk-KAVQ5GYY.js.map} +1 -1
  74. package/dist/{chunk-MDQXW235.js → chunk-KLL5SPER.js} +2 -2
  75. package/dist/{chunk-DD2BKHSD.js → chunk-KZMFU7YL.js} +2 -2
  76. package/dist/{chunk-C5FRCM4B.js → chunk-LHGIBXVX.js} +2 -2
  77. package/dist/{chunk-CGFDT752.js → chunk-LVYO2HZJ.js} +4 -4
  78. package/dist/{chunk-TP3N5364.js → chunk-M5GBTETG.js} +2 -2
  79. package/dist/{chunk-PGD3DXZP.js → chunk-M5UJJUON.js} +3 -3
  80. package/dist/{chunk-HDEQRI2O.js → chunk-NAZROP6I.js} +2 -2
  81. package/dist/{chunk-R3YVNAJB.js → chunk-NDE7CH6C.js} +2 -2
  82. package/dist/{chunk-BIJAWZYW.js → chunk-OLT3YTDH.js} +4 -4
  83. package/dist/{chunk-4OH6FGAO.js → chunk-PEOFTEUC.js} +12 -12
  84. package/dist/{chunk-GM35IHF7.js → chunk-PRK4WTPU.js} +2 -2
  85. package/dist/{chunk-MOUCCUET.js → chunk-QGUFN25Q.js} +2 -2
  86. package/dist/{chunk-5HP6LVWU.js → chunk-QHYSECIG.js} +2 -2
  87. package/dist/{chunk-SZ3SRRYZ.js → chunk-RXS4SQ5S.js} +2 -2
  88. package/dist/{chunk-6KQLDPKA.js → chunk-S6AHHQ6C.js} +2 -2
  89. package/dist/{chunk-R4FPBSFD.js → chunk-SO73GYOZ.js} +2 -2
  90. package/dist/{chunk-M4MNLPO7.js → chunk-SXQZMC7R.js} +2 -2
  91. package/dist/{chunk-JHTF22NQ.js → chunk-TA7UZZMW.js} +2 -2
  92. package/dist/{chunk-UJICQ77Y.js → chunk-UCNQV43K.js} +2 -2
  93. package/dist/{chunk-OUAK37ID.js → chunk-VGTXHTWU.js} +2 -2
  94. package/dist/{chunk-TGDFKC7X.js → chunk-VOPOPTZ7.js} +2 -2
  95. package/dist/{chunk-IFHT77WK.js → chunk-WF2WCZCR.js} +2 -2
  96. package/dist/{chunk-6F5WBXE2.js → chunk-X2NFFBTO.js} +4 -4
  97. package/dist/{chunk-IHFN3JTR.js → chunk-X5TGZAP2.js} +3 -3
  98. package/dist/{chunk-RJ57OOCD.js → chunk-X66BHMAU.js} +2 -2
  99. package/dist/{chunk-DQEMWVMT.js → chunk-X7Y7WX73.js} +1 -1
  100. package/dist/{chunk-FGV7V2N4.js → chunk-Y3WMJAZ3.js} +2 -2
  101. package/dist/{chunk-ZET6A3OF.js → chunk-YHCBJULX.js} +2 -2
  102. package/dist/{chunk-LGVIKA7O.js → chunk-YJPFTF57.js} +6 -6
  103. package/dist/{chunk-EAG7YMIS.js → chunk-YVMTXBJJ.js} +2 -2
  104. package/dist/{chunk-OUKBMQ2O.js → chunk-Z3SQEEB6.js} +2 -2
  105. package/dist/{chunk-MVH7YAWY.js → chunk-ZPN6SSWA.js} +2 -2
  106. package/dist/cli.js +62 -62
  107. package/dist/coding/export-okf-codegraph.js +6 -6
  108. package/dist/coding/pre-action-gate.js +2 -2
  109. package/dist/compounding/engine.js +6 -6
  110. package/dist/config.js +5 -5
  111. package/dist/connectors/codex-materialize-runner.js +6 -6
  112. package/dist/connectors/index.js +6 -6
  113. package/dist/convergence-refresh.js +8 -8
  114. package/dist/conversation-index/backend.js +2 -2
  115. package/dist/corpus-watermark.js +8 -8
  116. package/dist/entity-retrieval.js +6 -6
  117. package/dist/external-wiki-access.js +27 -27
  118. package/dist/extraction-span-source-hash.d.ts +45 -0
  119. package/dist/extraction-span-source-hash.js +52 -0
  120. package/dist/extraction-span-source-hash.js.map +1 -0
  121. package/dist/extraction.js +10 -10
  122. package/dist/{graph-edge-decay-FXGELBFA.js → graph-edge-decay-DGTBFALQ.js} +4 -4
  123. package/dist/graph-snapshot.js +3 -3
  124. package/dist/graph.js +2 -2
  125. package/dist/harmonic-retrieval.js +1 -1
  126. package/dist/index.d.ts +14 -1
  127. package/dist/index.js +94 -90
  128. package/dist/lcm/engine.js +2 -2
  129. package/dist/lcm/index.js +2 -2
  130. package/dist/location/index.js +9 -9
  131. package/dist/maintenance/memory-governance.js +6 -6
  132. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +6 -6
  133. package/dist/maintenance/rebuild-memory-projection.js +7 -7
  134. package/dist/namespaces/migrate.js +7 -7
  135. package/dist/namespaces/search.js +4 -4
  136. package/dist/namespaces/storage.js +6 -6
  137. package/dist/offline-sync.js +2 -2
  138. package/dist/operator-doctor-corpus.js +9 -9
  139. package/dist/operator-toolkit.js +21 -21
  140. package/dist/orchestration/maintenance.js +15 -15
  141. package/dist/orchestrator.js +86 -86
  142. package/dist/recall-state-view-zero-diff.d.ts +23 -0
  143. package/dist/recall-state-view-zero-diff.js +84 -0
  144. package/dist/recall-state-view-zero-diff.js.map +1 -0
  145. package/dist/reconcile/cursor.js +7 -2
  146. package/dist/reconcile/cursor.js.map +1 -1
  147. package/dist/resume-bundles.js +6 -6
  148. package/dist/search/factory.js +3 -3
  149. package/dist/search/index.js +3 -3
  150. package/dist/semantic-consolidation.js +7 -7
  151. package/dist/semantic-rule-promotion.js +6 -6
  152. package/dist/semantic-rule-verifier.js +6 -6
  153. package/dist/source-agent-qualifier.js +9 -9
  154. package/dist/standup/build.js +6 -6
  155. package/dist/storage.js +5 -5
  156. package/dist/support-passport/index.js +29 -29
  157. package/dist/transfer/backup.js +2 -2
  158. package/dist/transfer/capsule-export.js +2 -2
  159. package/dist/transfer/capsule-import.js +2 -2
  160. package/dist/transfer/export-okf.d.ts +2 -1
  161. package/dist/transfer/export-okf.js +9 -7
  162. package/dist/verified-recall.js +6 -6
  163. package/dist/who-knows-cli.js +7 -7
  164. package/dist/who-knows.js +6 -6
  165. package/package.json +2 -2
  166. package/src/activity/timeline/index.ts +1 -0
  167. package/src/activity/timeline/week-config-hash.test.ts +207 -0
  168. package/src/activity/timeline/week-config-hash.ts +83 -0
  169. package/src/extraction-span-source-hash.test.ts +165 -0
  170. package/src/extraction-span-source-hash.ts +100 -0
  171. package/src/location/matching.test.ts +31 -1
  172. package/src/location/matching.ts +6 -1
  173. package/src/recall-state-view-zero-diff.test.ts +282 -0
  174. package/src/recall-state-view-zero-diff.ts +125 -0
  175. package/src/reconcile/cursor.test.ts +18 -0
  176. package/src/reconcile/cursor.ts +13 -2
  177. package/src/shared-context/authority-precedence.test.ts +127 -0
  178. package/src/shared-context/authority-precedence.ts +68 -0
  179. package/src/transfer/export-okf.test.ts +22 -0
  180. package/src/transfer/export-okf.ts +6 -2
  181. package/dist/chunk-TB2MJRI6.js.map +0 -1
  182. package/dist/chunk-YTCE2JQL.js.map +0 -1
  183. /package/dist/{capsule-crypto-YO5QJ6L3.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
  184. /package/dist/{chunk-7RZJWZ46.js.map → chunk-227UFSEQ.js.map} +0 -0
  185. /package/dist/{chunk-QA6H4PIO.js.map → chunk-26JWBSWD.js.map} +0 -0
  186. /package/dist/{chunk-7VA7PARC.js.map → chunk-2MW3UQNX.js.map} +0 -0
  187. /package/dist/{chunk-BXLOS5AJ.js.map → chunk-2NLLXCJG.js.map} +0 -0
  188. /package/dist/{chunk-JBPKEARU.js.map → chunk-2QSZNTDO.js.map} +0 -0
  189. /package/dist/{chunk-P6GKRT2H.js.map → chunk-2Z3DG5CQ.js.map} +0 -0
  190. /package/dist/{chunk-6EXRODDF.js.map → chunk-3FXXFLVK.js.map} +0 -0
  191. /package/dist/{chunk-XOGYSWQZ.js.map → chunk-3QWF54M4.js.map} +0 -0
  192. /package/dist/{chunk-IE7N2YK6.js.map → chunk-4PJYD2L3.js.map} +0 -0
  193. /package/dist/{chunk-MWLBRFLY.js.map → chunk-5PTS43CH.js.map} +0 -0
  194. /package/dist/{chunk-NM5EOKN7.js.map → chunk-6C57JBJ3.js.map} +0 -0
  195. /package/dist/{chunk-WTWHORVW.js.map → chunk-754GA2UE.js.map} +0 -0
  196. /package/dist/{chunk-VDX2J7OX.js.map → chunk-7LCGFUMB.js.map} +0 -0
  197. /package/dist/{chunk-YPNTBYEV.js.map → chunk-A3WMMQAH.js.map} +0 -0
  198. /package/dist/{chunk-SZZGVXKC.js.map → chunk-ANN5VMHT.js.map} +0 -0
  199. /package/dist/{chunk-OLBZ2WGG.js.map → chunk-C2JCVZWX.js.map} +0 -0
  200. /package/dist/{chunk-7DXW5V2W.js.map → chunk-CTCGHNWN.js.map} +0 -0
  201. /package/dist/{chunk-JJAOVJ3E.js.map → chunk-DJZWNKFO.js.map} +0 -0
  202. /package/dist/{chunk-PY5E3UOD.js.map → chunk-DKZR56A3.js.map} +0 -0
  203. /package/dist/{chunk-6JYTP3JP.js.map → chunk-E5WTGEWX.js.map} +0 -0
  204. /package/dist/{chunk-WAPSYHNR.js.map → chunk-EN75MUTO.js.map} +0 -0
  205. /package/dist/{chunk-OMA2B7GY.js.map → chunk-G4MCAHMF.js.map} +0 -0
  206. /package/dist/{chunk-EJJ57PTY.js.map → chunk-GD7D7WP2.js.map} +0 -0
  207. /package/dist/{chunk-X3DTN2RC.js.map → chunk-GFGQOZGG.js.map} +0 -0
  208. /package/dist/{chunk-EVLHZ6F3.js.map → chunk-GISV63M2.js.map} +0 -0
  209. /package/dist/{chunk-YERBUSU2.js.map → chunk-H3HOC6UT.js.map} +0 -0
  210. /package/dist/{chunk-AJFKQJQK.js.map → chunk-HINMCD7V.js.map} +0 -0
  211. /package/dist/{chunk-ISDSX7GW.js.map → chunk-IGUWU5BD.js.map} +0 -0
  212. /package/dist/{chunk-W6V2XVUO.js.map → chunk-IIO4C3YL.js.map} +0 -0
  213. /package/dist/{chunk-SKVSBTFQ.js.map → chunk-IWO4HEOL.js.map} +0 -0
  214. /package/dist/{chunk-ZIZUB6VB.js.map → chunk-J55NAXDH.js.map} +0 -0
  215. /package/dist/{chunk-3X7Z467X.js.map → chunk-JAU4MRKB.js.map} +0 -0
  216. /package/dist/{chunk-XJJYSX6F.js.map → chunk-JCUG7AXZ.js.map} +0 -0
  217. /package/dist/{chunk-BX6GW4KC.js.map → chunk-JMAG7WZ7.js.map} +0 -0
  218. /package/dist/{chunk-MDQXW235.js.map → chunk-KLL5SPER.js.map} +0 -0
  219. /package/dist/{chunk-DD2BKHSD.js.map → chunk-KZMFU7YL.js.map} +0 -0
  220. /package/dist/{chunk-C5FRCM4B.js.map → chunk-LHGIBXVX.js.map} +0 -0
  221. /package/dist/{chunk-CGFDT752.js.map → chunk-LVYO2HZJ.js.map} +0 -0
  222. /package/dist/{chunk-TP3N5364.js.map → chunk-M5GBTETG.js.map} +0 -0
  223. /package/dist/{chunk-PGD3DXZP.js.map → chunk-M5UJJUON.js.map} +0 -0
  224. /package/dist/{chunk-HDEQRI2O.js.map → chunk-NAZROP6I.js.map} +0 -0
  225. /package/dist/{chunk-R3YVNAJB.js.map → chunk-NDE7CH6C.js.map} +0 -0
  226. /package/dist/{chunk-BIJAWZYW.js.map → chunk-OLT3YTDH.js.map} +0 -0
  227. /package/dist/{chunk-4OH6FGAO.js.map → chunk-PEOFTEUC.js.map} +0 -0
  228. /package/dist/{chunk-GM35IHF7.js.map → chunk-PRK4WTPU.js.map} +0 -0
  229. /package/dist/{chunk-MOUCCUET.js.map → chunk-QGUFN25Q.js.map} +0 -0
  230. /package/dist/{chunk-5HP6LVWU.js.map → chunk-QHYSECIG.js.map} +0 -0
  231. /package/dist/{chunk-SZ3SRRYZ.js.map → chunk-RXS4SQ5S.js.map} +0 -0
  232. /package/dist/{chunk-6KQLDPKA.js.map → chunk-S6AHHQ6C.js.map} +0 -0
  233. /package/dist/{chunk-R4FPBSFD.js.map → chunk-SO73GYOZ.js.map} +0 -0
  234. /package/dist/{chunk-M4MNLPO7.js.map → chunk-SXQZMC7R.js.map} +0 -0
  235. /package/dist/{chunk-JHTF22NQ.js.map → chunk-TA7UZZMW.js.map} +0 -0
  236. /package/dist/{chunk-UJICQ77Y.js.map → chunk-UCNQV43K.js.map} +0 -0
  237. /package/dist/{chunk-OUAK37ID.js.map → chunk-VGTXHTWU.js.map} +0 -0
  238. /package/dist/{chunk-TGDFKC7X.js.map → chunk-VOPOPTZ7.js.map} +0 -0
  239. /package/dist/{chunk-IFHT77WK.js.map → chunk-WF2WCZCR.js.map} +0 -0
  240. /package/dist/{chunk-6F5WBXE2.js.map → chunk-X2NFFBTO.js.map} +0 -0
  241. /package/dist/{chunk-IHFN3JTR.js.map → chunk-X5TGZAP2.js.map} +0 -0
  242. /package/dist/{chunk-RJ57OOCD.js.map → chunk-X66BHMAU.js.map} +0 -0
  243. /package/dist/{chunk-DQEMWVMT.js.map → chunk-X7Y7WX73.js.map} +0 -0
  244. /package/dist/{chunk-FGV7V2N4.js.map → chunk-Y3WMJAZ3.js.map} +0 -0
  245. /package/dist/{chunk-ZET6A3OF.js.map → chunk-YHCBJULX.js.map} +0 -0
  246. /package/dist/{chunk-LGVIKA7O.js.map → chunk-YJPFTF57.js.map} +0 -0
  247. /package/dist/{chunk-EAG7YMIS.js.map → chunk-YVMTXBJJ.js.map} +0 -0
  248. /package/dist/{chunk-OUKBMQ2O.js.map → chunk-Z3SQEEB6.js.map} +0 -0
  249. /package/dist/{chunk-MVH7YAWY.js.map → chunk-ZPN6SSWA.js.map} +0 -0
  250. /package/dist/{graph-edge-decay-FXGELBFA.js.map → graph-edge-decay-DGTBFALQ.js.map} +0 -0
@@ -13,13 +13,16 @@ import {
13
13
  import {
14
14
  importSqlite
15
15
  } from "./chunk-PYHOAXTI.js";
16
+ import {
17
+ backupMemoryDir
18
+ } from "./chunk-2NLLXCJG.js";
16
19
  import {
17
20
  exportJsonBundle
18
21
  } from "./chunk-UP6MOYCB.js";
19
22
  import {
20
23
  exportOkfBundle,
21
24
  parseIncludeStatus
22
- } from "./chunk-NAB4MKTJ.js";
25
+ } from "./chunk-KAVQ5GYY.js";
23
26
  import {
24
27
  exportSqlite
25
28
  } from "./chunk-BV2TIZ4F.js";
@@ -29,15 +32,15 @@ import {
29
32
  import {
30
33
  importJsonBundle
31
34
  } from "./chunk-2DL3OFLD.js";
32
- import {
33
- backupMemoryDir
34
- } from "./chunk-BXLOS5AJ.js";
35
35
  import {
36
36
  exportMarkdownBundle
37
37
  } from "./chunk-765K3SAT.js";
38
38
  import {
39
39
  RoutingRulesStore
40
40
  } from "./chunk-TBUEE7XF.js";
41
+ import {
42
+ WebDavServer
43
+ } from "./chunk-PYIFUBRK.js";
41
44
  import {
42
45
  buildReplayNormalizerRegistry,
43
46
  clampBatchSize,
@@ -47,24 +50,24 @@ import {
47
50
  isReplaySource,
48
51
  normalizeReplaySessionKey
49
52
  } from "./chunk-AJVLDJU6.js";
53
+ import {
54
+ rebuildObservations
55
+ } from "./chunk-DQTCGVFK.js";
50
56
  import {
51
57
  TailscaleHelper
52
58
  } from "./chunk-EEC4PCG5.js";
53
- import {
54
- WebDavServer
55
- } from "./chunk-PYIFUBRK.js";
56
59
  import {
57
60
  migrateObservations
58
61
  } from "./chunk-IIFFC3RL.js";
59
62
  import {
60
63
  rebuildMemoryLifecycleLedger
61
- } from "./chunk-7VA7PARC.js";
62
- import {
63
- rebuildObservations
64
- } from "./chunk-DQTCGVFK.js";
64
+ } from "./chunk-2MW3UQNX.js";
65
65
  import {
66
66
  archiveObservations
67
67
  } from "./chunk-YLBE6PLR.js";
68
+ import {
69
+ lintOkfDir
70
+ } from "./chunk-IWO4HEOL.js";
68
71
  import {
69
72
  runCompatChecks
70
73
  } from "./chunk-CDKHKZL5.js";
@@ -74,9 +77,6 @@ import {
74
77
  registerBulkImportSource,
75
78
  runBulkImportPipeline
76
79
  } from "./chunk-HSSERO3E.js";
77
- import {
78
- lintOkfDir
79
- } from "./chunk-SKVSBTFQ.js";
80
80
  import {
81
81
  getUtilityLearningStatus,
82
82
  learnUtilityPromotionWeights
@@ -87,21 +87,21 @@ import {
87
87
  } from "./chunk-6FC3IZ26.js";
88
88
  import {
89
89
  searchVerifiedEpisodes
90
- } from "./chunk-MOUCCUET.js";
90
+ } from "./chunk-QGUFN25Q.js";
91
91
  import {
92
92
  ThreadingManager
93
93
  } from "./chunk-OJP3N7UK.js";
94
94
  import {
95
95
  promoteSemanticRuleFromMemory
96
- } from "./chunk-R4FPBSFD.js";
96
+ } from "./chunk-SO73GYOZ.js";
97
97
  import {
98
98
  searchVerifiedSemanticRules
99
- } from "./chunk-EVLHZ6F3.js";
99
+ } from "./chunk-GISV63M2.js";
100
100
  import {
101
101
  buildResumeBundleFromState,
102
102
  getResumeBundleStatus,
103
103
  recordResumeBundle
104
- } from "./chunk-M4MNLPO7.js";
104
+ } from "./chunk-SXQZMC7R.js";
105
105
  import {
106
106
  getWorkProductLedgerStatus,
107
107
  recordWorkProductLedgerEntry,
@@ -134,7 +134,7 @@ import {
134
134
  runOperatorInventory,
135
135
  runOperatorRepair,
136
136
  runOperatorSetup
137
- } from "./chunk-X3DTN2RC.js";
137
+ } from "./chunk-GFGQOZGG.js";
138
138
  import {
139
139
  analyzeSessionIntegrity,
140
140
  applySessionRepair,
@@ -159,7 +159,7 @@ import {
159
159
  } from "./chunk-6GUG4YNM.js";
160
160
  import {
161
161
  searchHarmonicRetrieval
162
- } from "./chunk-ISDSX7GW.js";
162
+ } from "./chunk-IGUWU5BD.js";
163
163
  import {
164
164
  rescoreMemoryImportance
165
165
  } from "./chunk-UOBPK2OS.js";
@@ -176,7 +176,7 @@ import {
176
176
  rebuildMemoryProjection,
177
177
  repairMemoryProjection,
178
178
  verifyMemoryProjection
179
- } from "./chunk-6JYTP3JP.js";
179
+ } from "./chunk-E5WTGEWX.js";
180
180
  import {
181
181
  getCueAnchorStoreStatus
182
182
  } from "./chunk-ACPCA4NO.js";
@@ -203,11 +203,11 @@ import {
203
203
  } from "./chunk-6TBIWIAG.js";
204
204
  import {
205
205
  parseConfig
206
- } from "./chunk-QA6H4PIO.js";
206
+ } from "./chunk-26JWBSWD.js";
207
207
  import {
208
208
  EngramAccessHttpServer,
209
209
  MeetingsInputError
210
- } from "./chunk-4OH6FGAO.js";
210
+ } from "./chunk-PEOFTEUC.js";
211
211
  import {
212
212
  WearablesInputError
213
213
  } from "./chunk-V7IZKJI3.js";
@@ -217,13 +217,13 @@ import {
217
217
  loadChatSession,
218
218
  processChatMessage,
219
219
  sessionBelongsToPrincipal
220
- } from "./chunk-CGFDT752.js";
220
+ } from "./chunk-LVYO2HZJ.js";
221
221
  import {
222
222
  getAbstractionNodeStoreStatus
223
223
  } from "./chunk-DJUKBGAD.js";
224
224
  import {
225
225
  EngramAccessService
226
- } from "./chunk-XOGYSWQZ.js";
226
+ } from "./chunk-3QWF54M4.js";
227
227
  import {
228
228
  WorkStorage
229
229
  } from "./chunk-GDB4J2H3.js";
@@ -243,7 +243,7 @@ import {
243
243
  } from "./chunk-H6RSANGQ.js";
244
244
  import {
245
245
  readAggregateExtractionWatermark
246
- } from "./chunk-R3YVNAJB.js";
246
+ } from "./chunk-NDE7CH6C.js";
247
247
  import {
248
248
  getObjectiveStateStoreStatus
249
249
  } from "./chunk-HTP6XRUI.js";
@@ -252,23 +252,23 @@ import {
252
252
  readMemoryGovernanceRunArtifact,
253
253
  restoreMemoryGovernanceRun,
254
254
  runMemoryGovernance
255
- } from "./chunk-SZZGVXKC.js";
255
+ } from "./chunk-ANN5VMHT.js";
256
256
  import {
257
257
  listNamespaces,
258
258
  runNamespaceMigration,
259
259
  verifyNamespaces
260
- } from "./chunk-YPNTBYEV.js";
260
+ } from "./chunk-A3WMMQAH.js";
261
261
  import {
262
262
  resolveNamespaceChildRoot
263
263
  } from "./chunk-3UXOZBHV.js";
264
264
  import {
265
265
  analyzeGraphHealth
266
- } from "./chunk-BIJAWZYW.js";
266
+ } from "./chunk-OLT3YTDH.js";
267
267
  import {
268
268
  OKF_RESERVED_BASENAMES,
269
269
  meetingIdDate,
270
270
  okfTypeForCategory
271
- } from "./chunk-IFHT77WK.js";
271
+ } from "./chunk-WF2WCZCR.js";
272
272
  import {
273
273
  isValidTranscriptDate
274
274
  } from "./chunk-UHVXE24Y.js";
@@ -312,7 +312,7 @@ import {
312
312
  } from "./chunk-QDW3E4RD.js";
313
313
  import {
314
314
  getCausalTrajectoryStoreStatus
315
- } from "./chunk-P6GKRT2H.js";
315
+ } from "./chunk-2Z3DG5CQ.js";
316
316
  import {
317
317
  padEndDisplay,
318
318
  truncateGraphemeSafe
@@ -5445,7 +5445,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
5445
5445
  }
5446
5446
  }
5447
5447
  if (sourceArchive.endsWith(".enc")) {
5448
- const { isEncryptedCapsuleFile } = await import("./capsule-crypto-YO5QJ6L3.js");
5448
+ const { isEncryptedCapsuleFile } = await import("./capsule-crypto-7FJQINUR.js");
5449
5449
  const encDetected = await isEncryptedCapsuleFile(sourceArchive).catch(() => true);
5450
5450
  if (encDetected) {
5451
5451
  throw new Error(
@@ -5608,7 +5608,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
5608
5608
  const { parseExportBundle } = await import("./transfer/types.js");
5609
5609
  let decryptedBuf;
5610
5610
  try {
5611
- const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-YO5QJ6L3.js");
5611
+ const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-7FJQINUR.js");
5612
5612
  decryptedBuf = await decryptCapsuleFileInMemory(archivePath, memoryDir);
5613
5613
  } catch (decErr) {
5614
5614
  const msg = decErr instanceof Error ? decErr.message : String(decErr);
@@ -8862,4 +8862,4 @@ export {
8862
8862
  listMemoryMarkdownFilePaths,
8863
8863
  registerCli
8864
8864
  };
8865
- //# sourceMappingURL=chunk-ZIZUB6VB.js.map
8865
+ //# sourceMappingURL=chunk-J55NAXDH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runLocationSync
3
- } from "./chunk-W6V2XVUO.js";
3
+ } from "./chunk-IIO4C3YL.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-3X7Z467X.js.map
61
+ //# sourceMappingURL=chunk-JAU4MRKB.js.map
@@ -7,15 +7,15 @@ import {
7
7
  sha256Bytes,
8
8
  validateArchiveRelativePath
9
9
  } from "./chunk-GCGJW34D.js";
10
- import {
11
- DEFAULT_OFFLINE_SYNC_EXCLUDE_GLOBS
12
- } from "./chunk-AREGMX2J.js";
13
10
  import {
14
11
  isEncryptedOfflineSyncFile,
15
12
  readPlainOfflineSyncFileChunk,
16
13
  sha256OfflineSyncFile,
17
14
  shouldExcludeOfflineSyncFile
18
15
  } from "./chunk-NBP4EX5N.js";
16
+ import {
17
+ DEFAULT_OFFLINE_SYNC_EXCLUDE_GLOBS
18
+ } from "./chunk-AREGMX2J.js";
19
19
  import {
20
20
  CENSUS_MAX_MTIME_MS,
21
21
  isCensusMtimeMs,
@@ -1894,4 +1894,4 @@ export {
1894
1894
  normalizeOfflineSyncState,
1895
1895
  fileStatesFromSnapshot
1896
1896
  };
1897
- //# sourceMappingURL=chunk-XJJYSX6F.js.map
1897
+ //# sourceMappingURL=chunk-JCUG7AXZ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-B7RWBZXW.js";
4
4
  import {
5
5
  resolveCausalTrajectoryStoreDir
6
- } from "./chunk-P6GKRT2H.js";
6
+ } from "./chunk-2Z3DG5CQ.js";
7
7
  import {
8
8
  normalizeRecallTokens
9
9
  } from "./chunk-YCVB7X56.js";
@@ -339,4 +339,4 @@ export {
339
339
  scoreStitchCandidate,
340
340
  stitchCausalChain
341
341
  };
342
- //# sourceMappingURL=chunk-BX6GW4KC.js.map
342
+ //# sourceMappingURL=chunk-JMAG7WZ7.js.map
@@ -5,7 +5,7 @@ import {
5
5
  rejectSymlinkPath,
6
6
  renderFrontmatter,
7
7
  writeBundleFile
8
- } from "./chunk-SKVSBTFQ.js";
8
+ } from "./chunk-IWO4HEOL.js";
9
9
  import {
10
10
  parseOaiMemCitation
11
11
  } from "./chunk-D24OXEPB.js";
@@ -16,7 +16,7 @@ import {
16
16
  OKF_PROFILE_TYPE,
17
17
  StorageManager,
18
18
  okfTypeForMemory
19
- } from "./chunk-IFHT77WK.js";
19
+ } from "./chunk-WF2WCZCR.js";
20
20
  import {
21
21
  normalizeProjectionPreview
22
22
  } from "./chunk-SCU65EZI.js";
@@ -246,7 +246,7 @@ function boldAction(raw) {
246
246
  }
247
247
  function firstHeading(content) {
248
248
  for (const line of content.split("\n")) {
249
- const match = /^#\s+(.+)$/.exec(line.trim());
249
+ const match = /^#\s+(\S.*)$/.exec(line.trim());
250
250
  if (match) return match[1].trim();
251
251
  }
252
252
  return void 0;
@@ -267,6 +267,7 @@ export {
267
267
  OKF_LOG_TRUNCATION_MARKER,
268
268
  DEFAULT_OKF_LOG_MAX_ENTRIES,
269
269
  parseIncludeStatus,
270
- exportOkfBundle
270
+ exportOkfBundle,
271
+ firstHeading
271
272
  };
272
- //# sourceMappingURL=chunk-NAB4MKTJ.js.map
273
+ //# sourceMappingURL=chunk-KAVQ5GYY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transfer/export-okf.ts"],"sourcesContent":["import { mkdirSync, rmSync } from \"node:fs\";\nimport { mkdtemp } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { parseOaiMemCitation } from \"../citations.js\";\nimport { inferMemoryStatus } from \"../memory-lifecycle-ledger-utils.js\";\nimport { normalizeProjectionPreview } from \"../memory-projection-format.js\";\nimport { lintOkfDir } from \"../okf/lint.js\";\nimport { okfTypeForMemory, OKF_PROFILE_TYPE } from \"../okf/type-mapping.js\";\nimport { resolveNamespaceChildRoot } from \"../namespaces/path.js\";\nimport {\n OKF_EXPORT_VERSION,\n publishBundle,\n renderFrontmatter,\n rejectSymlinkPath,\n writeBundleFile,\n} from \"../okf/render.js\";\n// Re-exported for the existing `@remnic/core/export-okf` consumers and tests\n// (one public surface; the value itself now lives in okf/render.ts).\nexport { OKF_EXPORT_VERSION };\nimport { StorageManager } from \"../storage.js\";\nimport type { MemoryFile, MemoryLink, MemoryStatus } from \"../types.js\";\n\n// Shared bundle mechanics (frontmatter, publish, symlink guard, file write)\n// live in ../okf/render.ts — one source of truth for every OKF exporter.\nexport const OKF_LOG_TRUNCATION_MARKER = \"<!-- okf-log-truncated -->\";\nexport const DEFAULT_OKF_LOG_MAX_ENTRIES = 500;\n\nconst MEMORY_STATUSES: readonly MemoryStatus[] = [\n \"active\",\n \"pending_review\",\n \"rejected\",\n \"quarantined\",\n \"superseded\",\n \"archived\",\n \"forgotten\",\n];\n\nexport interface ExportOkfOptions {\n memoryDir: string;\n /**\n * Optional namespace segment. Resolved here, once, through the shared\n * containment guard: both CLI entry points used to join the raw operator\n * value onto `memoryDir/namespaces`, so `--namespace ../../..` escaped the\n * namespace root and exported an arbitrary tree (rule 9 — one resolver, not\n * a per-caller guard).\n */\n namespace?: string;\n outDir: string;\n includeStatus?: readonly string[];\n includeCategories?: readonly string[];\n excludeTags?: readonly string[];\n includeProfile?: boolean;\n includeWearables?: boolean;\n includeLog?: boolean;\n logMaxEntries?: number;\n force?: boolean;\n}\n\nexport interface ExportOkfResult {\n exported: number;\n excluded: number;\n byCategory: Record<string, number>;\n plaintextWarning: boolean;\n}\n\nexport function parseIncludeStatus(raw: unknown): MemoryStatus[] {\n const values = splitCsv(raw);\n if (values.length === 0) return [\"active\"];\n const allowed = new Set<string>(MEMORY_STATUSES);\n for (const value of values) {\n if (!allowed.has(value)) {\n throw new Error(`invalid --include-status ${value}; allowed: ${MEMORY_STATUSES.join(\", \")}`);\n }\n }\n return values as MemoryStatus[];\n}\n\nexport async function exportOkfBundle(opts: ExportOkfOptions): Promise<ExportOkfResult> {\n const outDir = path.resolve(opts.outDir);\n rejectSymlinkPath(outDir);\n const namespace = (opts.namespace ?? \"\").trim();\n const memoryDir = namespace\n ? resolveNamespaceChildRoot(opts.memoryDir, namespace, \"--namespace\")\n : opts.memoryDir;\n const includeStatus = new Set(parseIncludeStatus(opts.includeStatus));\n const includeCategories = opts.includeCategories?.length ? new Set(opts.includeCategories) : null;\n const excludeTags = new Set(opts.excludeTags ?? []);\n const storage = new StorageManager(memoryDir);\n const memories = await storage.readAllMemories();\n const included: MemoryFile[] = [];\n let excluded = 0;\n for (const memory of memories) {\n const rel = toRel(memory.path, memoryDir);\n if (!opts.includeWearables && rel.startsWith(\"wearables/\")) {\n excluded += 1;\n continue;\n }\n const status = inferMemoryStatus(memory.frontmatter, memory.path);\n if (!includeStatus.has(status)) {\n excluded += 1;\n continue;\n }\n if (includeCategories && !includeCategories.has(memory.frontmatter.category)) {\n excluded += 1;\n continue;\n }\n if ((memory.frontmatter.tags ?? []).some((tag) => excludeTags.has(tag))) {\n excluded += 1;\n continue;\n }\n included.push(memory);\n }\n included.sort((a, b) => toRel(a.path, memoryDir).localeCompare(toRel(b.path, memoryDir)));\n\n // Stage inside the destination's parent, not the OS temp dir: publishBundle\n // finishes with a rename, and a rename across filesystems fails with EXDEV\n // whenever --out lives on a different mount than /tmp.\n mkdirSync(path.dirname(outDir), { recursive: true });\n const staging = await mkdtemp(path.join(path.dirname(outDir), \".remnic-okf-export-\"));\n const byCategory: Record<string, number> = {};\n const idToRel = new Map<string, string>();\n for (const memory of included) {\n const rel = toRel(memory.path, memoryDir);\n idToRel.set(memory.frontmatter.id, rel);\n }\n for (const memory of included) {\n const rel = toRel(memory.path, memoryDir);\n const rendered = renderMemory(memory, rel, idToRel);\n writeBundleFile(staging, rel, rendered);\n const category = memory.frontmatter.category;\n byCategory[category] = (byCategory[category] ?? 0) + 1;\n }\n\n if (opts.includeProfile) {\n try {\n const profile = await storage.readProfile();\n if (profile) {\n writeBundleFile(\n staging,\n \"profile.md\",\n renderFrontmatter({\n type: OKF_PROFILE_TYPE,\n title: \"User Profile\",\n timestamp: new Date(0).toISOString(),\n }) + profile.replace(/^\\uFEFF/, \"\"),\n );\n }\n } catch {\n // Profile is optional even when requested.\n }\n }\n\n if (opts.includeLog) {\n const events = await storage.readAllMemoryLifecycleEvents();\n writeBundleFile(staging, \"log.md\", renderLog(events, idToRel, opts.logMaxEntries ?? DEFAULT_OKF_LOG_MAX_ENTRIES));\n }\n\n writeIndexes(staging, included, memoryDir);\n const lint = lintOkfDir(staging);\n const blocking = lint.findings.filter((f) => f.code !== \"skipped_encrypted\" && f.code !== \"reserved_basename\");\n if (blocking.length > 0) {\n rmSync(staging, { recursive: true, force: true });\n throw new Error(`OKF export failed lint: ${blocking.map((f) => `${f.file}: ${f.message}`).join(\"; \")}`);\n }\n\n publishBundle(staging, outDir, opts.force === true);\n return {\n exported: included.length,\n excluded,\n byCategory,\n plaintextWarning: true,\n };\n}\n\n\nfunction renderMemory(memory: MemoryFile, rel: string, idToRel: Map<string, string>): string {\n const fm = memory.frontmatter;\n const title = firstHeading(memory.content) ?? `${humanize(fm.category)} ${fm.created.slice(0, 10)}`;\n const type = fm.type ?? okfTypeForMemory(fm);\n const fields: Record<string, unknown> = {\n ...fm,\n type,\n title,\n description: normalizeProjectionPreview(memory.content),\n tags: fm.tags ?? [],\n timestamp: fm.updated,\n };\n if (fm.artifactType) fields.resource = rel;\n let body = memory.content.trim();\n const citation = parseOaiMemCitation(body);\n if (citation) {\n const start = body.indexOf(\"<oai-mem-citation>\");\n const end = body.indexOf(\"</oai-mem-citation>\");\n if (start >= 0 && end > start) {\n body = `${body.slice(0, start).trimEnd()}\\n\\n${body.slice(end + \"</oai-mem-citation>\".length).trimStart()}`.trim();\n }\n const lines = citation.entries.map((entry, index) => `${index + 1}. [${entry.path}](${entry.path})`);\n body = `${body}\\n\\n# Citations\\n\\n${lines.join(\"\\n\")}\\n`;\n }\n const links = fm.links ?? [];\n if (links.length > 0) {\n body += `\\n# Related\\n\\n${links.map((link) => renderRelated(link, idToRel)).join(\"\\n\")}\\n`;\n }\n return renderFrontmatter(fields) + body + (body.endsWith(\"\\n\") ? \"\" : \"\\n\");\n}\n\nfunction renderRelated(link: MemoryLink, idToRel: Map<string, string>): string {\n const target = idToRel.get(link.targetId) ?? link.targetId;\n const href = target.startsWith(\"/\") ? target : `/${target}`;\n return `- ${link.linkType}: [${link.targetId}](${href})`;\n}\n\nfunction writeIndexes(root: string, memories: MemoryFile[], memoryDir: string): void {\n const groups = new Map<string, MemoryFile[]>();\n for (const memory of memories) {\n const rel = toRel(memory.path, memoryDir);\n const dir = path.posix.dirname(rel);\n const key = dir === \".\" ? \"\" : dir.split(\"/\")[0] ?? \"\";\n const list = groups.get(key) ?? [];\n list.push(memory);\n groups.set(key, list);\n }\n const sections = [...groups.keys()].sort().map((key) => {\n const heading = key === \"\" ? \"Root\" : humanize(key);\n const lines = (groups.get(key) ?? [])\n .sort((a, b) => toRel(a.path, memoryDir).localeCompare(toRel(b.path, memoryDir)))\n .map((memory) => {\n const rel = toRel(memory.path, memoryDir);\n const title = firstHeading(memory.content) ?? memory.frontmatter.id;\n const description = normalizeProjectionPreview(memory.content);\n return `* [${title}](/${rel}) - ${description}`;\n });\n return `## ${heading}\\n\\n${lines.join(\"\\n\")}`;\n });\n writeBundleFile(root, \"index.md\", `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n${sections.join(\"\\n\\n\")}\\n`);\n}\n\nfunction renderLog(\n events: Array<{ timestamp?: string; type?: string; action?: string; memoryId?: string }>,\n idToRel: Map<string, string>,\n maxEntries: number,\n): string {\n const sorted = [...events].sort((a, b) => String(b.timestamp ?? \"\").localeCompare(String(a.timestamp ?? \"\")));\n const truncated = sorted.length > maxEntries;\n const kept = sorted.slice(0, maxEntries);\n const byDay = new Map<string, typeof kept>();\n for (const event of kept) {\n const day = String(event.timestamp ?? \"\").slice(0, 10) || \"unknown\";\n const list = byDay.get(day) ?? [];\n list.push(event);\n byDay.set(day, list);\n }\n const days = [...byDay.keys()].sort((a, b) => b.localeCompare(a));\n const parts = [\"# Log\", \"\"];\n for (const day of days) {\n parts.push(`## ${day}`, \"\");\n for (const event of byDay.get(day) ?? []) {\n const action = boldAction(event.type ?? event.action ?? \"Update\");\n const id = event.memoryId;\n const rel = id ? idToRel.get(id) : undefined;\n const target = rel ? `[${id}](/${rel})` : id ?? \"\";\n parts.push(`- **${action}** ${target}`.trimEnd());\n }\n parts.push(\"\");\n }\n if (truncated) parts.push(OKF_LOG_TRUNCATION_MARKER, \"\");\n return `${parts.join(\"\\n\")}\\n`;\n}\n\nfunction boldAction(raw: string): string {\n const lower = raw.toLowerCase();\n if (lower.includes(\"create\") || lower.includes(\"add\")) return \"Creation\";\n if (lower.includes(\"deprecat\") || lower.includes(\"delete\") || lower.includes(\"archiv\")) return \"Deprecation\";\n return \"Update\";\n}\n\n\nfunction firstHeading(content: string): string | undefined {\n for (const line of content.split(\"\\n\")) {\n const match = /^#\\s+(.+)$/.exec(line.trim());\n if (match) return match[1]!.trim();\n }\n return undefined;\n}\n\nfunction humanize(value: string): string {\n return value.replace(/[_-]/g, \" \").replace(/\\b\\w/g, (ch) => ch.toUpperCase());\n}\n\n\n\nfunction splitCsv(raw: unknown): string[] {\n if (raw === undefined || raw === null || raw === \"\") return [];\n const parts = Array.isArray(raw) ? raw.map(String) : String(raw).split(\",\");\n return parts.map((part) => part.trim()).filter((part) => part.length > 0);\n}\n\nfunction toRel(abs: string, root: string): string {\n return path.relative(path.resolve(root), path.resolve(abs)).split(path.sep).join(\"/\");\n}\n\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/transfer/export-okf.ts"],"sourcesContent":["import { mkdirSync, rmSync } from \"node:fs\";\nimport { mkdtemp } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { parseOaiMemCitation } from \"../citations.js\";\nimport { inferMemoryStatus } from \"../memory-lifecycle-ledger-utils.js\";\nimport { normalizeProjectionPreview } from \"../memory-projection-format.js\";\nimport { lintOkfDir } from \"../okf/lint.js\";\nimport { okfTypeForMemory, OKF_PROFILE_TYPE } from \"../okf/type-mapping.js\";\nimport { resolveNamespaceChildRoot } from \"../namespaces/path.js\";\nimport {\n OKF_EXPORT_VERSION,\n publishBundle,\n renderFrontmatter,\n rejectSymlinkPath,\n writeBundleFile,\n} from \"../okf/render.js\";\n// Re-exported for the existing `@remnic/core/export-okf` consumers and tests\n// (one public surface; the value itself now lives in okf/render.ts).\nexport { OKF_EXPORT_VERSION };\nimport { StorageManager } from \"../storage.js\";\nimport type { MemoryFile, MemoryLink, MemoryStatus } from \"../types.js\";\n\n// Shared bundle mechanics (frontmatter, publish, symlink guard, file write)\n// live in ../okf/render.ts — one source of truth for every OKF exporter.\nexport const OKF_LOG_TRUNCATION_MARKER = \"<!-- okf-log-truncated -->\";\nexport const DEFAULT_OKF_LOG_MAX_ENTRIES = 500;\n\nconst MEMORY_STATUSES: readonly MemoryStatus[] = [\n \"active\",\n \"pending_review\",\n \"rejected\",\n \"quarantined\",\n \"superseded\",\n \"archived\",\n \"forgotten\",\n];\n\nexport interface ExportOkfOptions {\n memoryDir: string;\n /**\n * Optional namespace segment. Resolved here, once, through the shared\n * containment guard: both CLI entry points used to join the raw operator\n * value onto `memoryDir/namespaces`, so `--namespace ../../..` escaped the\n * namespace root and exported an arbitrary tree (rule 9 — one resolver, not\n * a per-caller guard).\n */\n namespace?: string;\n outDir: string;\n includeStatus?: readonly string[];\n includeCategories?: readonly string[];\n excludeTags?: readonly string[];\n includeProfile?: boolean;\n includeWearables?: boolean;\n includeLog?: boolean;\n logMaxEntries?: number;\n force?: boolean;\n}\n\nexport interface ExportOkfResult {\n exported: number;\n excluded: number;\n byCategory: Record<string, number>;\n plaintextWarning: boolean;\n}\n\nexport function parseIncludeStatus(raw: unknown): MemoryStatus[] {\n const values = splitCsv(raw);\n if (values.length === 0) return [\"active\"];\n const allowed = new Set<string>(MEMORY_STATUSES);\n for (const value of values) {\n if (!allowed.has(value)) {\n throw new Error(`invalid --include-status ${value}; allowed: ${MEMORY_STATUSES.join(\", \")}`);\n }\n }\n return values as MemoryStatus[];\n}\n\nexport async function exportOkfBundle(opts: ExportOkfOptions): Promise<ExportOkfResult> {\n const outDir = path.resolve(opts.outDir);\n rejectSymlinkPath(outDir);\n const namespace = (opts.namespace ?? \"\").trim();\n const memoryDir = namespace\n ? resolveNamespaceChildRoot(opts.memoryDir, namespace, \"--namespace\")\n : opts.memoryDir;\n const includeStatus = new Set(parseIncludeStatus(opts.includeStatus));\n const includeCategories = opts.includeCategories?.length ? new Set(opts.includeCategories) : null;\n const excludeTags = new Set(opts.excludeTags ?? []);\n const storage = new StorageManager(memoryDir);\n const memories = await storage.readAllMemories();\n const included: MemoryFile[] = [];\n let excluded = 0;\n for (const memory of memories) {\n const rel = toRel(memory.path, memoryDir);\n if (!opts.includeWearables && rel.startsWith(\"wearables/\")) {\n excluded += 1;\n continue;\n }\n const status = inferMemoryStatus(memory.frontmatter, memory.path);\n if (!includeStatus.has(status)) {\n excluded += 1;\n continue;\n }\n if (includeCategories && !includeCategories.has(memory.frontmatter.category)) {\n excluded += 1;\n continue;\n }\n if ((memory.frontmatter.tags ?? []).some((tag) => excludeTags.has(tag))) {\n excluded += 1;\n continue;\n }\n included.push(memory);\n }\n included.sort((a, b) => toRel(a.path, memoryDir).localeCompare(toRel(b.path, memoryDir)));\n\n // Stage inside the destination's parent, not the OS temp dir: publishBundle\n // finishes with a rename, and a rename across filesystems fails with EXDEV\n // whenever --out lives on a different mount than /tmp.\n mkdirSync(path.dirname(outDir), { recursive: true });\n const staging = await mkdtemp(path.join(path.dirname(outDir), \".remnic-okf-export-\"));\n const byCategory: Record<string, number> = {};\n const idToRel = new Map<string, string>();\n for (const memory of included) {\n const rel = toRel(memory.path, memoryDir);\n idToRel.set(memory.frontmatter.id, rel);\n }\n for (const memory of included) {\n const rel = toRel(memory.path, memoryDir);\n const rendered = renderMemory(memory, rel, idToRel);\n writeBundleFile(staging, rel, rendered);\n const category = memory.frontmatter.category;\n byCategory[category] = (byCategory[category] ?? 0) + 1;\n }\n\n if (opts.includeProfile) {\n try {\n const profile = await storage.readProfile();\n if (profile) {\n writeBundleFile(\n staging,\n \"profile.md\",\n renderFrontmatter({\n type: OKF_PROFILE_TYPE,\n title: \"User Profile\",\n timestamp: new Date(0).toISOString(),\n }) + profile.replace(/^\\uFEFF/, \"\"),\n );\n }\n } catch {\n // Profile is optional even when requested.\n }\n }\n\n if (opts.includeLog) {\n const events = await storage.readAllMemoryLifecycleEvents();\n writeBundleFile(staging, \"log.md\", renderLog(events, idToRel, opts.logMaxEntries ?? DEFAULT_OKF_LOG_MAX_ENTRIES));\n }\n\n writeIndexes(staging, included, memoryDir);\n const lint = lintOkfDir(staging);\n const blocking = lint.findings.filter((f) => f.code !== \"skipped_encrypted\" && f.code !== \"reserved_basename\");\n if (blocking.length > 0) {\n rmSync(staging, { recursive: true, force: true });\n throw new Error(`OKF export failed lint: ${blocking.map((f) => `${f.file}: ${f.message}`).join(\"; \")}`);\n }\n\n publishBundle(staging, outDir, opts.force === true);\n return {\n exported: included.length,\n excluded,\n byCategory,\n plaintextWarning: true,\n };\n}\n\n\nfunction renderMemory(memory: MemoryFile, rel: string, idToRel: Map<string, string>): string {\n const fm = memory.frontmatter;\n const title = firstHeading(memory.content) ?? `${humanize(fm.category)} ${fm.created.slice(0, 10)}`;\n const type = fm.type ?? okfTypeForMemory(fm);\n const fields: Record<string, unknown> = {\n ...fm,\n type,\n title,\n description: normalizeProjectionPreview(memory.content),\n tags: fm.tags ?? [],\n timestamp: fm.updated,\n };\n if (fm.artifactType) fields.resource = rel;\n let body = memory.content.trim();\n const citation = parseOaiMemCitation(body);\n if (citation) {\n const start = body.indexOf(\"<oai-mem-citation>\");\n const end = body.indexOf(\"</oai-mem-citation>\");\n if (start >= 0 && end > start) {\n body = `${body.slice(0, start).trimEnd()}\\n\\n${body.slice(end + \"</oai-mem-citation>\".length).trimStart()}`.trim();\n }\n const lines = citation.entries.map((entry, index) => `${index + 1}. [${entry.path}](${entry.path})`);\n body = `${body}\\n\\n# Citations\\n\\n${lines.join(\"\\n\")}\\n`;\n }\n const links = fm.links ?? [];\n if (links.length > 0) {\n body += `\\n# Related\\n\\n${links.map((link) => renderRelated(link, idToRel)).join(\"\\n\")}\\n`;\n }\n return renderFrontmatter(fields) + body + (body.endsWith(\"\\n\") ? \"\" : \"\\n\");\n}\n\nfunction renderRelated(link: MemoryLink, idToRel: Map<string, string>): string {\n const target = idToRel.get(link.targetId) ?? link.targetId;\n const href = target.startsWith(\"/\") ? target : `/${target}`;\n return `- ${link.linkType}: [${link.targetId}](${href})`;\n}\n\nfunction writeIndexes(root: string, memories: MemoryFile[], memoryDir: string): void {\n const groups = new Map<string, MemoryFile[]>();\n for (const memory of memories) {\n const rel = toRel(memory.path, memoryDir);\n const dir = path.posix.dirname(rel);\n const key = dir === \".\" ? \"\" : dir.split(\"/\")[0] ?? \"\";\n const list = groups.get(key) ?? [];\n list.push(memory);\n groups.set(key, list);\n }\n const sections = [...groups.keys()].sort().map((key) => {\n const heading = key === \"\" ? \"Root\" : humanize(key);\n const lines = (groups.get(key) ?? [])\n .sort((a, b) => toRel(a.path, memoryDir).localeCompare(toRel(b.path, memoryDir)))\n .map((memory) => {\n const rel = toRel(memory.path, memoryDir);\n const title = firstHeading(memory.content) ?? memory.frontmatter.id;\n const description = normalizeProjectionPreview(memory.content);\n return `* [${title}](/${rel}) - ${description}`;\n });\n return `## ${heading}\\n\\n${lines.join(\"\\n\")}`;\n });\n writeBundleFile(root, \"index.md\", `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n${sections.join(\"\\n\\n\")}\\n`);\n}\n\nfunction renderLog(\n events: Array<{ timestamp?: string; type?: string; action?: string; memoryId?: string }>,\n idToRel: Map<string, string>,\n maxEntries: number,\n): string {\n const sorted = [...events].sort((a, b) => String(b.timestamp ?? \"\").localeCompare(String(a.timestamp ?? \"\")));\n const truncated = sorted.length > maxEntries;\n const kept = sorted.slice(0, maxEntries);\n const byDay = new Map<string, typeof kept>();\n for (const event of kept) {\n const day = String(event.timestamp ?? \"\").slice(0, 10) || \"unknown\";\n const list = byDay.get(day) ?? [];\n list.push(event);\n byDay.set(day, list);\n }\n const days = [...byDay.keys()].sort((a, b) => b.localeCompare(a));\n const parts = [\"# Log\", \"\"];\n for (const day of days) {\n parts.push(`## ${day}`, \"\");\n for (const event of byDay.get(day) ?? []) {\n const action = boldAction(event.type ?? event.action ?? \"Update\");\n const id = event.memoryId;\n const rel = id ? idToRel.get(id) : undefined;\n const target = rel ? `[${id}](/${rel})` : id ?? \"\";\n parts.push(`- **${action}** ${target}`.trimEnd());\n }\n parts.push(\"\");\n }\n if (truncated) parts.push(OKF_LOG_TRUNCATION_MARKER, \"\");\n return `${parts.join(\"\\n\")}\\n`;\n}\n\nfunction boldAction(raw: string): string {\n const lower = raw.toLowerCase();\n if (lower.includes(\"create\") || lower.includes(\"add\")) return \"Creation\";\n if (lower.includes(\"deprecat\") || lower.includes(\"delete\") || lower.includes(\"archiv\")) return \"Deprecation\";\n return \"Update\";\n}\n\n\nexport function firstHeading(content: string): string | undefined {\n for (const line of content.split(\"\\n\")) {\n // `\\S` makes the capture boundary disjoint from `\\s+`, so the regex\n // cannot backtrack across split points — `\\s+(.+)` was superlinear on\n // whitespace-heavy lines (CodeQL js/polynomial-redos). `.` still excludes\n // \\r\\u2028\\u2029, preserving the skip-line behavior on those lines.\n const match = /^#\\s+(\\S.*)$/.exec(line.trim());\n if (match) return match[1]!.trim();\n }\n return undefined;\n}\n\nfunction humanize(value: string): string {\n return value.replace(/[_-]/g, \" \").replace(/\\b\\w/g, (ch) => ch.toUpperCase());\n}\n\n\n\nfunction splitCsv(raw: unknown): string[] {\n if (raw === undefined || raw === null || raw === \"\") return [];\n const parts = Array.isArray(raw) ? raw.map(String) : String(raw).split(\",\");\n return parts.map((part) => part.trim()).filter((part) => part.length > 0);\n}\n\nfunction toRel(abs: string, root: string): string {\n return path.relative(path.resolve(root), path.resolve(abs)).split(path.sep).join(\"/\");\n}\n\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  getOperation,
4
4
  operationRequiresAuthorizedNamespace,
5
5
  operationUsesPrincipalNamespace
6
- } from "./chunk-XOGYSWQZ.js";
6
+ } from "./chunk-3QWF54M4.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-MDQXW235.js.map
63
+ //# sourceMappingURL=chunk-KLL5SPER.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
3
3
  SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES
4
- } from "./chunk-XOGYSWQZ.js";
4
+ } from "./chunk-3QWF54M4.js";
5
5
  import {
6
6
  SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH
7
7
  } from "./chunk-EEOUMG3J.js";
@@ -343,4 +343,4 @@ export {
343
343
  parseSupportPassportModelJob,
344
344
  SupportPassportModelBridge
345
345
  };
346
- //# sourceMappingURL=chunk-DD2BKHSD.js.map
346
+ //# sourceMappingURL=chunk-KZMFU7YL.js.map
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-7ZNJN5WZ.js";
24
24
  import {
25
25
  compareEntityTimestamps
26
- } from "./chunk-IFHT77WK.js";
26
+ } from "./chunk-WF2WCZCR.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-C5FRCM4B.js.map
921
+ //# sourceMappingURL=chunk-LHGIBXVX.js.map
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-E4RMZGRS.js";
24
24
  import {
25
25
  validateRequest
26
- } from "./chunk-PGD3DXZP.js";
26
+ } from "./chunk-M5UJJUON.js";
27
27
  import {
28
28
  MCP_ADMIN_OPS_MIGRATED_OPERATIONS,
29
29
  MCP_ADMIN_OPS_TOOLS,
@@ -34,10 +34,10 @@ import {
34
34
  } from "./chunk-K4E3Y3ZX.js";
35
35
  import {
36
36
  getOperation
37
- } from "./chunk-XOGYSWQZ.js";
37
+ } from "./chunk-3QWF54M4.js";
38
38
  import {
39
39
  WHO_KNOWS_MCP_TOOLS
40
- } from "./chunk-NM5EOKN7.js";
40
+ } from "./chunk-6C57JBJ3.js";
41
41
  import {
42
42
  PROMOTION_CANDIDATES_MCP_TOOLS
43
43
  } from "./chunk-ME35HVDJ.js";
@@ -4045,4 +4045,4 @@ export {
4045
4045
  MCP_MIGRATED_OPERATIONS,
4046
4046
  EngramMcpServer
4047
4047
  };
4048
- //# sourceMappingURL=chunk-CGFDT752.js.map
4048
+ //# sourceMappingURL=chunk-LVYO2HZJ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-7T4TOGMS.js";
4
4
  import {
5
5
  defineOperation
6
- } from "./chunk-XOGYSWQZ.js";
6
+ } from "./chunk-3QWF54M4.js";
7
7
 
8
8
  // src/external-wiki-access.ts
9
9
  import { z } from "zod";
@@ -26,4 +26,4 @@ var externalWikiSearchOperation = defineOperation({
26
26
  export {
27
27
  externalWikiSearchOperation
28
28
  };
29
- //# sourceMappingURL=chunk-TP3N5364.js.map
29
+ //# sourceMappingURL=chunk-M5GBTETG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isValidCapsuleSince
3
- } from "./chunk-VDX2J7OX.js";
3
+ } from "./chunk-7LCGFUMB.js";
4
4
  import {
5
5
  CAPSULE_ID_PATTERN
6
6
  } from "./chunk-WEHSQBFR.js";
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
14
14
  OFFLINE_SYNC_MAX_MTIME_MS
15
- } from "./chunk-XJJYSX6F.js";
15
+ } from "./chunk-JCUG7AXZ.js";
16
16
  import {
17
17
  validateArchiveRelativePath
18
18
  } from "./chunk-GCGJW34D.js";
@@ -484,4 +484,4 @@ export {
484
484
  actionConfidenceRequestSchema,
485
485
  validateRequest
486
486
  };
487
- //# sourceMappingURL=chunk-PGD3DXZP.js.map
487
+ //# sourceMappingURL=chunk-M5UJJUON.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listNamespaces
3
- } from "./chunk-YPNTBYEV.js";
3
+ } from "./chunk-A3WMMQAH.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-MZWSOLMT.js";
@@ -282,4 +282,4 @@ export {
282
282
  computeServiceCorpusWatermarks,
283
283
  computeServiceCorpusCensus
284
284
  };
285
- //# sourceMappingURL=chunk-HDEQRI2O.js.map
285
+ //# sourceMappingURL=chunk-NAZROP6I.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveCorpusNamespaceRoots
3
- } from "./chunk-HDEQRI2O.js";
3
+ } from "./chunk-NAZROP6I.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-MZWSOLMT.js";
@@ -200,4 +200,4 @@ async function readAggregateExtractionWatermark(options) {
200
200
  export {
201
201
  readAggregateExtractionWatermark
202
202
  };
203
- //# sourceMappingURL=chunk-R3YVNAJB.js.map
203
+ //# sourceMappingURL=chunk-NDE7CH6C.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ emitGraphEvent
3
+ } from "./chunk-DEUNUKTD.js";
1
4
  import {
2
5
  ActivationPathTracker,
3
6
  compareActivationPathCandidates,
@@ -6,9 +9,6 @@ import {
6
9
  import {
7
10
  readEdgeConfidence
8
11
  } from "./chunk-2LSZVONP.js";
9
- import {
10
- emitGraphEvent
11
- } from "./chunk-DEUNUKTD.js";
12
12
 
13
13
  // src/graph.ts
14
14
  import { appendFile, mkdir, readFile, stat } from "fs/promises";
@@ -745,4 +745,4 @@ export {
745
745
  applyPageRankRefinement,
746
746
  applyLateralInhibition
747
747
  };
748
- //# sourceMappingURL=chunk-BIJAWZYW.js.map
748
+ //# sourceMappingURL=chunk-OLT3YTDH.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-V7IZKJI3.js";
4
4
  import {
5
5
  AdapterRegistry
6
- } from "./chunk-JBPKEARU.js";
6
+ } from "./chunk-2QSZNTDO.js";
7
7
  import {
8
8
  WriteRateLimiter
9
9
  } from "./chunk-TB6CBZ5V.js";
@@ -12,10 +12,10 @@ import {
12
12
  } from "./chunk-3HSRWJTC.js";
13
13
  import {
14
14
  handleSupportPassportOwnerHttp
15
- } from "./chunk-PY5E3UOD.js";
15
+ } from "./chunk-DKZR56A3.js";
16
16
  import {
17
17
  buildSupportPassportPublicRequestHandler
18
- } from "./chunk-6EXRODDF.js";
18
+ } from "./chunk-3FXXFLVK.js";
19
19
  import {
20
20
  EngramMcpServer,
21
21
  MCP_SUPPORTED_PROTOCOL_VERSIONS,
@@ -25,10 +25,10 @@ import {
25
25
  processChatMessage,
26
26
  sessionBelongsToPrincipal,
27
27
  subscribeChatTranscript
28
- } from "./chunk-CGFDT752.js";
28
+ } from "./chunk-LVYO2HZJ.js";
29
29
  import {
30
30
  RelayMissionStoreError
31
- } from "./chunk-LGVIKA7O.js";
31
+ } from "./chunk-YJPFTF57.js";
32
32
  import {
33
33
  toDottedRemnicName
34
34
  } from "./chunk-ZQUVBZI4.js";
@@ -43,13 +43,13 @@ import {
43
43
  } from "./chunk-CTVWELNK.js";
44
44
  import {
45
45
  validateRequest
46
- } from "./chunk-PGD3DXZP.js";
46
+ } from "./chunk-M5UJJUON.js";
47
47
  import {
48
48
  nonEmptyQueryParam,
49
49
  optionalNamespaceKindQueryParam,
50
50
  optionalQueryString,
51
51
  positiveIntQueryParam
52
- } from "./chunk-EAG7YMIS.js";
52
+ } from "./chunk-YVMTXBJJ.js";
53
53
  import {
54
54
  handleMcpGetSse
55
55
  } from "./chunk-SRT6SHVZ.js";
@@ -67,15 +67,15 @@ import {
67
67
  authorizationProbeNamespaces,
68
68
  authorizationProbeRequiresPrincipalNamespace,
69
69
  probeOperationAuthorization
70
- } from "./chunk-MDQXW235.js";
70
+ } from "./chunk-KLL5SPER.js";
71
71
  import {
72
72
  CorrectionContractError,
73
73
  getOperation,
74
74
  resolveQueryNamespaceWritablePreflight
75
- } from "./chunk-XOGYSWQZ.js";
75
+ } from "./chunk-3QWF54M4.js";
76
76
  import {
77
77
  handleWhoKnowsHttpQuery
78
- } from "./chunk-NM5EOKN7.js";
78
+ } from "./chunk-6C57JBJ3.js";
79
79
  import {
80
80
  isTrustZoneName
81
81
  } from "./chunk-5QZR2RA3.js";
@@ -96,7 +96,7 @@ import {
96
96
  OFFLINE_SYNC_APPLY_MAX_BODY_BYTES,
97
97
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
98
98
  OFFLINE_SYNC_SNAPSHOT_BASE_MAX_BODY_BYTES
99
- } from "./chunk-XJJYSX6F.js";
99
+ } from "./chunk-JCUG7AXZ.js";
100
100
  import {
101
101
  projectTagProjectId
102
102
  } from "./chunk-QBC33MPY.js";
@@ -3579,4 +3579,4 @@ export {
3579
3579
  resolveDefaultAdminConsolePublicDir,
3580
3580
  EngramAccessHttpServer
3581
3581
  };
3582
- //# sourceMappingURL=chunk-4OH6FGAO.js.map
3582
+ //# sourceMappingURL=chunk-PEOFTEUC.js.map