@remnic/core 9.65.7 → 9.66.0

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 (713) hide show
  1. package/dist/access-admin-ops-surface.d.ts +15 -14
  2. package/dist/access-admin-ops-surface.js +65 -62
  3. package/dist/access-authorization-probe.d.ts +15 -14
  4. package/dist/access-authorization-probe.js +66 -63
  5. package/dist/access-boundary.d.ts +15 -14
  6. package/dist/access-boundary.js +65 -62
  7. package/dist/access-citation-namespace.js +3 -3
  8. package/dist/access-cli.js +182 -174
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-coding-context-resolution.d.ts +2 -2
  11. package/dist/access-coding-context-resolution.js +2 -2
  12. package/dist/access-extraction-force-flush.d.ts +15 -14
  13. package/dist/access-extraction-force-flush.js +65 -62
  14. package/dist/access-health-types.d.ts +2 -2
  15. package/dist/access-http-lcm-compaction.d.ts +15 -14
  16. package/dist/access-http-lifecycle-flush.d.ts +15 -14
  17. package/dist/access-http-offline-stream.d.ts +15 -14
  18. package/dist/access-http-query.d.ts +3 -3
  19. package/dist/access-http-query.js +67 -64
  20. package/dist/access-http.d.ts +16 -15
  21. package/dist/access-http.js +87 -84
  22. package/dist/access-identity-continuity-surface.d.ts +13 -12
  23. package/dist/access-identity-continuity-surface.js +65 -62
  24. package/dist/access-lcm-surface.d.ts +15 -14
  25. package/dist/access-lcm-surface.js +65 -62
  26. package/dist/access-mcp-output-schemas.js +1 -1
  27. package/dist/access-mcp.d.ts +15 -14
  28. package/dist/access-mcp.js +77 -74
  29. package/dist/access-memory-search-fanout.d.ts +3 -3
  30. package/dist/{access-namespace-preflight-8VYKmRX0.d.ts → access-namespace-preflight-CLWUoMyW.d.ts} +1 -1
  31. package/dist/access-namespace-preflight.d.ts +4 -4
  32. package/dist/access-namespace-preflight.js +65 -62
  33. package/dist/access-observe-write-surface.d.ts +15 -14
  34. package/dist/access-observe-write-surface.js +65 -62
  35. package/dist/access-offline-manifest.d.ts +13 -12
  36. package/dist/access-offline-manifest.js +16 -16
  37. package/dist/access-operations-batch.js +69 -66
  38. package/dist/access-operations.d.ts +16 -15
  39. package/dist/access-operations.js +74 -71
  40. package/dist/access-recall-concurrency.d.ts +15 -14
  41. package/dist/access-recall-concurrency.js +65 -62
  42. package/dist/access-recall-response.d.ts +15 -14
  43. package/dist/access-recall-response.js +65 -62
  44. package/dist/access-recall-surface.d.ts +15 -14
  45. package/dist/access-recall-surface.js +65 -62
  46. package/dist/access-schema.js +7 -7
  47. package/dist/{access-service-Crk__Git.d.ts → access-service-CEUE1Isj.d.ts} +14 -14
  48. package/dist/access-service-helpers.d.ts +15 -14
  49. package/dist/access-service.d.ts +15 -14
  50. package/dist/access-service.js +65 -62
  51. package/dist/access-surface-catalog.d.ts +15 -14
  52. package/dist/access-surface-catalog.js +69 -64
  53. package/dist/access-surface-catalog.js.map +1 -1
  54. package/dist/access-wearables-meetings-surface.d.ts +6 -4
  55. package/dist/action-confidence.d.ts +2 -2
  56. package/dist/active-context-config.d.ts +27 -0
  57. package/dist/active-context-config.js +14 -0
  58. package/dist/active-context-transform.d.ts +267 -0
  59. package/dist/active-context-transform.js +31 -0
  60. package/dist/active-memory-bridge.d.ts +2 -2
  61. package/dist/active-memory-bridge.js +2 -2
  62. package/dist/active-recall.d.ts +2 -2
  63. package/dist/active-recall.js +17 -16
  64. package/dist/active-recall.js.map +1 -1
  65. package/dist/adapters/index.js +7 -7
  66. package/dist/adapters/registry.js +3 -3
  67. package/dist/ambient-provenance.d.ts +2 -2
  68. package/dist/artifact-search.d.ts +2 -2
  69. package/dist/{auto-sync-XVMLL2RH.js → auto-sync-Q6Q2FVSC.js} +10 -10
  70. package/dist/behavior-learner.d.ts +2 -2
  71. package/dist/behavior-signals.d.ts +2 -2
  72. package/dist/bootstrap.d.ts +13 -12
  73. package/dist/briefing-window.d.ts +5 -3
  74. package/dist/briefing.d.ts +5 -3
  75. package/dist/briefing.js +33 -33
  76. package/dist/buffer-surprise-report.d.ts +2 -2
  77. package/dist/buffer-turn-helpers.d.ts +2 -2
  78. package/dist/buffer.d.ts +5 -3
  79. package/dist/buffer.js +24 -8
  80. package/dist/bulk-import/index.d.ts +4 -4
  81. package/dist/calibration.d.ts +2 -2
  82. package/dist/calibration.js +1 -1
  83. package/dist/capabilities.d.ts +2 -2
  84. package/dist/{capsule-merge-SGIVB3WA.js → capsule-merge-SEHERWWP.js} +4 -4
  85. package/dist/{catalog-DybwVNW3.d.ts → catalog-D1HgugTA.d.ts} +1 -1
  86. package/dist/causal-behavior.d.ts +4 -4
  87. package/dist/causal-consolidation.d.ts +2 -2
  88. package/dist/causal-consolidation.js +34 -34
  89. package/dist/causal-trajectory-graph.d.ts +2 -2
  90. package/dist/{chunk-CFGU52XJ.js → chunk-23CVL7HS.js} +2 -2
  91. package/dist/{chunk-PO7NXBG2.js → chunk-2GF27PGH.js} +5 -5
  92. package/dist/{chunk-6CPUQ5D6.js → chunk-2LBAFHOQ.js} +15 -15
  93. package/dist/{chunk-JBPKEARU.js → chunk-2QSZNTDO.js} +7 -7
  94. package/dist/{chunk-IP4ZNT4U.js → chunk-33MFRY25.js} +2 -2
  95. package/dist/{chunk-VFYRYFLL.js → chunk-3TSU662L.js} +3 -3
  96. package/dist/chunk-43HUVDTD.js +114 -0
  97. package/dist/chunk-43HUVDTD.js.map +1 -0
  98. package/dist/{chunk-VXVZ2GM3.js → chunk-4FHRZD5T.js} +2 -2
  99. package/dist/{chunk-FP7YTTVO.js → chunk-4OFKZAJG.js} +2 -1
  100. package/dist/chunk-4OFKZAJG.js.map +1 -0
  101. package/dist/{chunk-5VPQSRQO.js → chunk-4STAANV7.js} +3 -3
  102. package/dist/{chunk-46WM6JX2.js → chunk-4ZWCQJNM.js} +5 -5
  103. package/dist/{chunk-LLQCM2U2.js → chunk-56IV4J5W.js} +617 -167
  104. package/dist/chunk-56IV4J5W.js.map +1 -0
  105. package/dist/{chunk-52II7PB6.js → chunk-645WOU5I.js} +4 -4
  106. package/dist/{chunk-YKWFK7XA.js → chunk-6CEGSTBD.js} +7 -7
  107. package/dist/{chunk-I7EX6KSH.js → chunk-6QDXA26G.js} +264 -210
  108. package/dist/chunk-6QDXA26G.js.map +1 -0
  109. package/dist/{chunk-GEPACVWN.js → chunk-6RUHELWR.js} +3 -3
  110. package/dist/{chunk-ZAOHJDKH.js → chunk-72OIT7KS.js} +4 -4
  111. package/dist/{chunk-KQAFEZQX.js → chunk-7LCGFUMB.js} +4 -4
  112. package/dist/{chunk-7TCGNUVP.js → chunk-7UTDHQZ5.js} +3 -3
  113. package/dist/{chunk-5HK3CJAR.js → chunk-7XOG75AU.js} +3 -3
  114. package/dist/{chunk-7BDZTALN.js → chunk-AJTG3CP7.js} +12 -2
  115. package/dist/chunk-AJTG3CP7.js.map +1 -0
  116. package/dist/{chunk-2LWQSV6A.js → chunk-AL3UYZ5N.js} +3 -2
  117. package/dist/chunk-AL3UYZ5N.js.map +1 -0
  118. package/dist/chunk-B32WYRXX.js +77 -0
  119. package/dist/chunk-B32WYRXX.js.map +1 -0
  120. package/dist/{chunk-C24UZSFW.js → chunk-CEH2AFXG.js} +6 -6
  121. package/dist/{chunk-YOXVZJFM.js → chunk-CFVTRUR3.js} +2 -2
  122. package/dist/{chunk-ACOC27BB.js → chunk-CN4VKV3S.js} +2 -2
  123. package/dist/{chunk-PMVPCZJZ.js → chunk-CTCGHNWN.js} +6 -6
  124. package/dist/{chunk-EGBDFJ36.js → chunk-DD5JFCWM.js} +2 -2
  125. package/dist/{chunk-T42L3S6A.js → chunk-DDX6KIXF.js} +2 -2
  126. package/dist/{chunk-JIYDRBVZ.js → chunk-DJORULH3.js} +2 -2
  127. package/dist/{chunk-WTOZBZNN.js → chunk-DMEHOEC7.js} +6 -6
  128. package/dist/{chunk-OPPBTPUU.js → chunk-DUAJKRR2.js} +4 -4
  129. package/dist/{chunk-XDL5CYZN.js → chunk-EEOUMG3J.js} +2 -1
  130. package/dist/{chunk-XDL5CYZN.js.map → chunk-EEOUMG3J.js.map} +1 -1
  131. package/dist/{chunk-SVVIASVX.js → chunk-EFQCDJZ2.js} +7 -7
  132. package/dist/{chunk-Q57GOHLF.js → chunk-EGALNSZ4.js} +3 -3
  133. package/dist/{chunk-KCT36JAW.js → chunk-ESNFSSO4.js} +2 -2
  134. package/dist/{chunk-XQ3HXAQH.js → chunk-ET2CNMLD.js} +4 -4
  135. package/dist/{chunk-Z4U3UN56.js → chunk-EZSCW4EM.js} +6 -6
  136. package/dist/{chunk-F6QHHRWP.js → chunk-FESUGFIL.js} +3 -3
  137. package/dist/{chunk-S3K2CIK5.js → chunk-FKKGCGYL.js} +3 -3
  138. package/dist/{chunk-BWGCOLEL.js → chunk-FTTJRVB7.js} +2 -2
  139. package/dist/{chunk-JAQXUGLN.js → chunk-FYWLSFFS.js} +2 -2
  140. package/dist/{chunk-BJTHRFFC.js → chunk-GEJKYA7D.js} +77 -36
  141. package/dist/chunk-GEJKYA7D.js.map +1 -0
  142. package/dist/chunk-GSKINLAK.js +267 -0
  143. package/dist/chunk-GSKINLAK.js.map +1 -0
  144. package/dist/{chunk-OPGL46PX.js → chunk-GX6FTSYH.js} +2 -2
  145. package/dist/{chunk-A32YEQAM.js → chunk-H7VDIF2V.js} +2 -2
  146. package/dist/{chunk-PDDSFELN.js → chunk-HJXA6ZM7.js} +2 -2
  147. package/dist/{chunk-RGCF4XNH.js → chunk-HNPE66LB.js} +8 -8
  148. package/dist/{chunk-SEA6M7SS.js → chunk-I5VB44ZK.js} +2 -2
  149. package/dist/{chunk-SDEPLF7V.js → chunk-IBJ6U753.js} +2 -2
  150. package/dist/{chunk-EUYWQ7TS.js → chunk-IEZ6CGTW.js} +2 -2
  151. package/dist/{chunk-RQE4TITU.js → chunk-IHGMRDEE.js} +431 -1834
  152. package/dist/chunk-IHGMRDEE.js.map +1 -0
  153. package/dist/{chunk-3RI5Y7KU.js → chunk-IVIAHQBR.js} +2 -2
  154. package/dist/{chunk-7WR462EM.js → chunk-J3OND5QT.js} +4 -4
  155. package/dist/{chunk-UW5NPZJ2.js → chunk-JALOAKSZ.js} +59 -7
  156. package/dist/chunk-JALOAKSZ.js.map +1 -0
  157. package/dist/{chunk-T3JQTCCO.js → chunk-JI7U6AS3.js} +4 -4
  158. package/dist/{chunk-DVYRD4HY.js → chunk-JRRQ747T.js} +36 -7
  159. package/dist/chunk-JRRQ747T.js.map +1 -0
  160. package/dist/{chunk-I32NKXE2.js → chunk-JTWZKNUH.js} +5 -5
  161. package/dist/chunk-K66OY4EI.js +202 -0
  162. package/dist/chunk-K66OY4EI.js.map +1 -0
  163. package/dist/{chunk-XAB6STPO.js → chunk-KODXCHXJ.js} +17 -3
  164. package/dist/chunk-KODXCHXJ.js.map +1 -0
  165. package/dist/{chunk-ZPUIRTIZ.js → chunk-KOLJJN5G.js} +12 -75
  166. package/dist/chunk-KOLJJN5G.js.map +1 -0
  167. package/dist/{chunk-FMQ4MOQO.js → chunk-KXIXO76C.js} +32 -19
  168. package/dist/chunk-KXIXO76C.js.map +1 -0
  169. package/dist/{chunk-VKCAHCBI.js → chunk-L4X4PJYK.js} +2 -2
  170. package/dist/chunk-LB7WCZHY.js +553 -0
  171. package/dist/chunk-LB7WCZHY.js.map +1 -0
  172. package/dist/{chunk-W4BMEGQA.js → chunk-LUDBXTBJ.js} +8 -8
  173. package/dist/{chunk-I4343FIA.js → chunk-MAH64N55.js} +28 -10
  174. package/dist/chunk-MAH64N55.js.map +1 -0
  175. package/dist/{chunk-RIAM7DND.js → chunk-ME35HVDJ.js} +2 -2
  176. package/dist/{chunk-H63EDPFJ.js → chunk-MI2OTWV5.js} +15 -2
  177. package/dist/{chunk-H63EDPFJ.js.map → chunk-MI2OTWV5.js.map} +1 -1
  178. package/dist/{chunk-LBFFNDFM.js → chunk-MINHJ55X.js} +1 -1
  179. package/dist/chunk-MINHJ55X.js.map +1 -0
  180. package/dist/{chunk-NG3MBQV4.js → chunk-MJRGVXPQ.js} +2 -2
  181. package/dist/{chunk-773TRRGT.js → chunk-MJUCDM3C.js} +2 -2
  182. package/dist/{chunk-7F27PCSN.js → chunk-MN5NOOI7.js} +2 -2
  183. package/dist/{chunk-JCWY73FK.js → chunk-N4F7ZSSG.js} +2 -2
  184. package/dist/{chunk-TR7DGXGI.js → chunk-NACLNNFQ.js} +5 -5
  185. package/dist/{chunk-LC2BDILZ.js → chunk-NBP4EX5N.js} +2 -2
  186. package/dist/{chunk-ZVPVTPGI.js → chunk-NNZFPYYX.js} +4 -4
  187. package/dist/{chunk-MFOSZUIT.js → chunk-NPIBN2VL.js} +2 -2
  188. package/dist/{chunk-IY7UXD3J.js → chunk-O57GM3FR.js} +2 -2
  189. package/dist/{chunk-I2HTKOOP.js → chunk-O7ERGZDA.js} +5 -5
  190. package/dist/{chunk-GTSVEEP3.js → chunk-OAJMQKQR.js} +3 -3
  191. package/dist/{chunk-HSZMX3ZJ.js → chunk-ODW5GDFE.js} +2 -2
  192. package/dist/{chunk-D4QVPP3G.js → chunk-PEBH5DCK.js} +18 -11
  193. package/dist/chunk-PEBH5DCK.js.map +1 -0
  194. package/dist/{chunk-J2WC5LF4.js → chunk-QBC33MPY.js} +2 -1
  195. package/dist/{chunk-EOHKUWXW.js → chunk-QCRJMU5V.js} +2 -2
  196. package/dist/chunk-QJCWK2A7.js +1466 -0
  197. package/dist/chunk-QJCWK2A7.js.map +1 -0
  198. package/dist/{chunk-THG4GYIE.js → chunk-RDGKVH6T.js} +11 -7
  199. package/dist/{chunk-THG4GYIE.js.map → chunk-RDGKVH6T.js.map} +1 -1
  200. package/dist/{chunk-5DH6PG4B.js → chunk-RZ3IZIJG.js} +3 -3
  201. package/dist/{chunk-AAXJNINV.js → chunk-SN4JXNLL.js} +2 -2
  202. package/dist/chunk-TB2MJRI6.js +866 -0
  203. package/dist/chunk-TB2MJRI6.js.map +1 -0
  204. package/dist/{chunk-7PHI6GUI.js → chunk-TEZ2HTC7.js} +42 -2
  205. package/dist/chunk-TEZ2HTC7.js.map +1 -0
  206. package/dist/{chunk-SVSRPG6M.js → chunk-TNGH4ZYI.js} +2 -2
  207. package/dist/{chunk-HZNYJN77.js → chunk-TNXNECAN.js} +6 -6
  208. package/dist/{chunk-JOEJG4SD.js → chunk-TVW4C7PV.js} +5 -5
  209. package/dist/{chunk-UFKPQBXH.js → chunk-U62OK7BB.js} +2 -2
  210. package/dist/{chunk-R2MZCYA6.js → chunk-UNUMFURP.js} +3 -3
  211. package/dist/{chunk-AX7UXCHJ.js → chunk-UYA36DQ7.js} +2 -1
  212. package/dist/chunk-UYA36DQ7.js.map +1 -0
  213. package/dist/{chunk-AFR6AIM4.js → chunk-VCKWULAK.js} +112 -87
  214. package/dist/chunk-VCKWULAK.js.map +1 -0
  215. package/dist/chunk-VOSWUO3K.js +100 -0
  216. package/dist/chunk-VOSWUO3K.js.map +1 -0
  217. package/dist/{chunk-YRVAKONL.js → chunk-VQ4AMTGZ.js} +1 -1
  218. package/dist/{chunk-3BCULS4U.js → chunk-VQNRICAQ.js} +145 -507
  219. package/dist/chunk-VQNRICAQ.js.map +1 -0
  220. package/dist/{chunk-RAIUTAZZ.js → chunk-WKAXBXVA.js} +2 -2
  221. package/dist/{chunk-ZIJDI4CP.js → chunk-WKJFIMVN.js} +2 -2
  222. package/dist/{chunk-SXIMQLGV.js → chunk-WVGXCBOC.js} +2 -2
  223. package/dist/{chunk-7BEPVIH3.js → chunk-X5YYSAZX.js} +4 -4
  224. package/dist/{chunk-FZEEWOI2.js → chunk-XJJYSX6F.js} +2 -2
  225. package/dist/{chunk-F635GAL7.js → chunk-XKNHFDTT.js} +33 -13
  226. package/dist/chunk-XKNHFDTT.js.map +1 -0
  227. package/dist/{chunk-UG6VXIOK.js → chunk-XSTNGNJP.js} +2 -2
  228. package/dist/{chunk-YDPAE2RD.js → chunk-YFLLGRXO.js} +2 -2
  229. package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
  230. package/dist/{chunk-ANJXPFRS.js → chunk-YXFCALVT.js} +14 -14
  231. package/dist/{chunk-Q4WONDMJ.js → chunk-YYGZJPOK.js} +2 -2
  232. package/dist/{chunk-5HERQ5FX.js → chunk-Z3YEGSR4.js} +10 -10
  233. package/dist/{chunk-YWSQD2IB.js → chunk-ZJPM7GZ3.js} +2 -2
  234. package/dist/{chunk-5S4LQOPE.js → chunk-ZW4VXELZ.js} +2 -2
  235. package/dist/{cli-B322UMvB.d.ts → cli-BEkm2MEf.d.ts} +5 -5
  236. package/dist/cli.d.ts +17 -16
  237. package/dist/cli.js +126 -120
  238. package/dist/coding/export-okf-codegraph.d.ts +56 -0
  239. package/dist/coding/export-okf-codegraph.js +526 -0
  240. package/dist/coding/export-okf-codegraph.js.map +1 -0
  241. package/dist/coding/pre-action-gate.d.ts +2 -2
  242. package/dist/compounding/engine.d.ts +5 -3
  243. package/dist/compounding/engine.js +34 -34
  244. package/dist/compounding/preference-consolidator.d.ts +4 -4
  245. package/dist/compression-optimizer.d.ts +2 -2
  246. package/dist/config-security.js +2 -2
  247. package/dist/config.d.ts +2 -2
  248. package/dist/config.js +17 -16
  249. package/dist/connectors/codex-materialize-runner.d.ts +2 -2
  250. package/dist/connectors/codex-materialize-runner.js +33 -33
  251. package/dist/connectors/codex-materialize.d.ts +2 -2
  252. package/dist/connectors/index.d.ts +2 -2
  253. package/dist/connectors/index.js +33 -33
  254. package/dist/consolidation-provenance-check.d.ts +5 -3
  255. package/dist/consolidation-provenance-check.js +5 -5
  256. package/dist/consolidation-undo.d.ts +5 -3
  257. package/dist/consolidation-undo.js +3 -3
  258. package/dist/context-summary.d.ts +43 -0
  259. package/dist/context-summary.js +14 -0
  260. package/dist/context-summary.js.map +1 -0
  261. package/dist/contradiction/index.d.ts +6 -4
  262. package/dist/contradiction/index.js +10 -10
  263. package/dist/{contradiction-scan-AKUWPX5N.js → contradiction-scan-NOYMFG66.js} +3 -3
  264. package/dist/contradiction-scan-NOYMFG66.js.map +1 -0
  265. package/dist/converge-config.d.ts +2 -2
  266. package/dist/convergence-refresh.d.ts +5 -3
  267. package/dist/convergence-refresh.js +36 -36
  268. package/dist/conversation-index/backend.d.ts +2 -2
  269. package/dist/conversation-index/chunker.d.ts +2 -2
  270. package/dist/conversation-index/faiss-adapter.d.ts +2 -2
  271. package/dist/conversation-index/indexer.d.ts +2 -2
  272. package/dist/conversation-index/search.d.ts +2 -2
  273. package/dist/corpus-watermark.d.ts +2 -2
  274. package/dist/corpus-watermark.js +35 -35
  275. package/dist/cross-lingual-recall.d.ts +2 -2
  276. package/dist/dashboard-runtime.js +2 -2
  277. package/dist/day-summary.d.ts +2 -2
  278. package/dist/delinearize.d.ts +2 -2
  279. package/dist/dependency-propagation-config.d.ts +2 -2
  280. package/dist/{dependency-propagation-delivery-BGcNairQ.d.ts → dependency-propagation-delivery-BCpeo14F.d.ts} +1 -1
  281. package/dist/direct-answer-wiring.d.ts +2 -2
  282. package/dist/direct-answer.d.ts +2 -2
  283. package/dist/embedding-fallback.d.ts +2 -2
  284. package/dist/enrichment/index.d.ts +2 -2
  285. package/dist/entity-origin-fields.d.ts +2 -2
  286. package/dist/entity-retrieval.d.ts +5 -3
  287. package/dist/entity-retrieval.js +34 -34
  288. package/dist/entity-schema.d.ts +2 -2
  289. package/dist/episodic-context.d.ts +2 -2
  290. package/dist/eval-trajectory-contracts.d.ts +2 -2
  291. package/dist/eval-trajectory-store.d.ts +2 -2
  292. package/dist/eval-trajectory.d.ts +2 -2
  293. package/dist/event-order-recall.js +3 -3
  294. package/dist/explicit-capture.d.ts +13 -12
  295. package/dist/explicit-capture.js +12 -12
  296. package/dist/external-wiki-access.d.ts +15 -14
  297. package/dist/external-wiki-access.js +66 -63
  298. package/dist/external-wiki-collection-registration.d.ts +2 -2
  299. package/dist/external-wiki-collection.d.ts +2 -2
  300. package/dist/external-wiki-mcp-tools.d.ts +15 -14
  301. package/dist/extraction-error-classification.d.ts +2 -2
  302. package/dist/extraction-faithfulness.d.ts +2 -2
  303. package/dist/extraction-faithfulness.js +2 -2
  304. package/dist/extraction-judge-telemetry.d.ts +2 -2
  305. package/dist/extraction-judge-training.d.ts +2 -2
  306. package/dist/extraction-judge.d.ts +2 -2
  307. package/dist/extraction-judge.js +2 -2
  308. package/dist/extraction-liveness.d.ts +2 -2
  309. package/dist/extraction-normalization.d.ts +2 -2
  310. package/dist/extraction-prompt.d.ts +2 -2
  311. package/dist/extraction-source-grounding-rules.d.ts +2 -2
  312. package/dist/extraction-source-grounding.d.ts +2 -2
  313. package/dist/extraction.d.ts +2 -2
  314. package/dist/extraction.js +47 -44
  315. package/dist/fallback-llm.d.ts +8 -2
  316. package/dist/fallback-llm.js +1 -1
  317. package/dist/{first-start-migration-4NETATFF.js → first-start-migration-KHIMCBIC.js} +3 -3
  318. package/dist/{forget-SZ2BXDGF.js → forget-2AE4MDK3.js} +3 -3
  319. package/dist/graph-dashboard-diff.d.ts +2 -2
  320. package/dist/graph-dashboard-key.d.ts +2 -2
  321. package/dist/graph-dashboard-parser.d.ts +2 -2
  322. package/dist/graph-edge-reinforcement.d.ts +2 -2
  323. package/dist/graph-path-reconstruction.d.ts +2 -2
  324. package/dist/graph-path-scoring.d.ts +2 -2
  325. package/dist/graph-snapshot.d.ts +2 -2
  326. package/dist/graph.d.ts +2 -2
  327. package/dist/harmonic-retrieval.js +1 -1
  328. package/dist/importance.d.ts +2 -2
  329. package/dist/importers/index.d.ts +2 -2
  330. package/dist/in-flight-reads.d.ts +2 -2
  331. package/dist/{index-By2QUAMh.d.ts → index-D_pyMUaP.d.ts} +2 -2
  332. package/dist/index.d.ts +261 -30
  333. package/dist/index.js +321 -257
  334. package/dist/intent.d.ts +2 -2
  335. package/dist/lcm/engine.d.ts +3 -3
  336. package/dist/lcm/engine.js +5 -4
  337. package/dist/lcm/index.d.ts +4 -3
  338. package/dist/lcm/index.js +12 -11
  339. package/dist/lcm/summarizer.d.ts +4 -6
  340. package/dist/lcm/summarizer.js +2 -1
  341. package/dist/lcm/tools.d.ts +4 -4
  342. package/dist/lifecycle.d.ts +2 -2
  343. package/dist/live-connectors-runner.d.ts +2 -2
  344. package/dist/local-llm.d.ts +2 -2
  345. package/dist/local-model-endpoint.d.ts +2 -2
  346. package/dist/location/index.d.ts +315 -6
  347. package/dist/location/index.js +151 -19
  348. package/dist/maintenance/memory-governance.d.ts +2 -2
  349. package/dist/maintenance/memory-governance.js +34 -34
  350. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +5 -3
  351. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +33 -33
  352. package/dist/maintenance/rebuild-memory-projection.d.ts +5 -3
  353. package/dist/maintenance/rebuild-memory-projection.js +35 -35
  354. package/dist/{maintenance-Dm2McrIx.d.ts → maintenance-DDUX9d6D.d.ts} +3 -3
  355. package/dist/mcp-memory-inspector-app.d.ts +15 -14
  356. package/dist/mcp-read-only-tools.js +1 -1
  357. package/dist/memory-action-policy.d.ts +18 -3
  358. package/dist/memory-action-policy.js +3 -1
  359. package/dist/memory-cache.d.ts +2 -2
  360. package/dist/memory-controller.d.ts +2 -2
  361. package/dist/memory-controller.js +2 -2
  362. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -2
  363. package/dist/memory-projection-mutations.js +3 -3
  364. package/dist/memory-projection-store.d.ts +2 -2
  365. package/dist/memory-projection-store.js +1 -1
  366. package/dist/memory-provenance.d.ts +2 -2
  367. package/dist/memory-snapshot.d.ts +2 -2
  368. package/dist/memory-subject-cli.d.ts +15 -14
  369. package/dist/memory-subject.d.ts +15 -14
  370. package/dist/memory-subject.js +5 -5
  371. package/dist/memory-worth-outcomes.d.ts +5 -3
  372. package/dist/models-json.d.ts +2 -2
  373. package/dist/namespaces/migrate.d.ts +6 -4
  374. package/dist/namespaces/migrate.js +34 -34
  375. package/dist/namespaces/principal.d.ts +2 -2
  376. package/dist/namespaces/search.d.ts +2 -2
  377. package/dist/namespaces/search.js +8 -8
  378. package/dist/namespaces/storage.d.ts +6 -4
  379. package/dist/namespaces/storage.js +33 -33
  380. package/dist/native-knowledge.d.ts +2 -2
  381. package/dist/offline-sync-file-io.js +3 -3
  382. package/dist/offline-sync-impression-drain.d.ts +2 -2
  383. package/dist/offline-sync-impression-drain.js +9 -9
  384. package/dist/offline-sync.js +4 -4
  385. package/dist/operator-doctor-corpus.d.ts +2 -2
  386. package/dist/operator-doctor-corpus.js +36 -36
  387. package/dist/operator-doctor-replica.d.ts +2 -2
  388. package/dist/operator-toolkit.d.ts +6 -4
  389. package/dist/operator-toolkit.js +56 -55
  390. package/dist/orchestration/compression-guideline-coordinator.d.ts +5 -3
  391. package/dist/orchestration/maintenance.d.ts +7 -5
  392. package/dist/orchestration/maintenance.js +48 -47
  393. package/dist/{orchestrator-Co1DyfuP.d.ts → orchestrator-3F4jihCo.d.ts} +8 -8
  394. package/dist/orchestrator.d.ts +13 -12
  395. package/dist/orchestrator.js +182 -174
  396. package/dist/page-versioning.js +3 -3
  397. package/dist/patterns-cli.d.ts +2 -2
  398. package/dist/{pipeline-DotMnb6y.d.ts → pipeline-CB1dj6Uh.d.ts} +1 -1
  399. package/dist/policy-runtime.d.ts +2 -2
  400. package/dist/proactive-contention.d.ts +2 -2
  401. package/dist/provenance.d.ts +2 -2
  402. package/dist/{public-http-PJRtnSi-.d.ts → public-http-34-JIAGQ.d.ts} +1 -1
  403. package/dist/{purge-GB7PZHT2.js → purge-OP6BEDFY.js} +2 -2
  404. package/dist/{qmd-BP0n11fR.d.ts → qmd-edLLZXc5.d.ts} +1 -1
  405. package/dist/qmd-preflight.d.ts +3 -3
  406. package/dist/qmd-recall-cache.d.ts +2 -2
  407. package/dist/qmd.d.ts +3 -3
  408. package/dist/qmd.js +4 -4
  409. package/dist/recall-concurrency-config.d.ts +2 -2
  410. package/dist/recall-disclosure-escalation.d.ts +2 -2
  411. package/dist/recall-explain-renderer.d.ts +2 -2
  412. package/dist/recall-explain-renderer.js +3 -3
  413. package/dist/recall-memory-map.d.ts +2 -2
  414. package/dist/recall-planner-llm.d.ts +2 -2
  415. package/dist/recall-planner-llm.js +1 -1
  416. package/dist/recall-state.d.ts +2 -2
  417. package/dist/recall-tag-filter.d.ts +2 -2
  418. package/dist/recall-timings.d.ts +2 -2
  419. package/dist/recall-xray-cli.d.ts +2 -2
  420. package/dist/recall-xray-cli.js +4 -4
  421. package/dist/recall-xray-renderer.d.ts +2 -2
  422. package/dist/recall-xray-renderer.js +3 -3
  423. package/dist/recall-xray.d.ts +2 -2
  424. package/dist/recall-xray.js +2 -2
  425. package/dist/reconcile/cursor.d.ts +2 -2
  426. package/dist/reconcile/manifest.d.ts +2 -2
  427. package/dist/reconcile/manifest.js +5 -5
  428. package/dist/reconcile/plan.d.ts +2 -2
  429. package/dist/replay/normalizers/chatgpt.d.ts +2 -2
  430. package/dist/replay/normalizers/claude.d.ts +2 -2
  431. package/dist/replay/normalizers/openclaw.d.ts +2 -2
  432. package/dist/replay/normalizers/shared.d.ts +2 -2
  433. package/dist/replay/runner.d.ts +2 -2
  434. package/dist/replay/types.d.ts +2 -2
  435. package/dist/replica-divergence.d.ts +2 -2
  436. package/dist/replica-peers-config.d.ts +2 -2
  437. package/dist/{resolution-4552BNRV.js → resolution-4DLI3IOR.js} +11 -11
  438. package/dist/resolution-4DLI3IOR.js.map +1 -0
  439. package/dist/resolve-auth-token.d.ts +2 -2
  440. package/dist/resume-bundles.js +18 -17
  441. package/dist/retrieval-agents.d.ts +3 -3
  442. package/dist/retrieval-tiers.d.ts +2 -2
  443. package/dist/routing/engine.d.ts +2 -2
  444. package/dist/routing/store.d.ts +2 -2
  445. package/dist/salvage-envelope.d.ts +2 -2
  446. package/dist/salvage-envelope.js +7 -7
  447. package/dist/schemas.d.ts +572 -107
  448. package/dist/schemas.js +3 -1
  449. package/dist/{scope-profiles-6ChZKTy-.d.ts → scope-profiles-BF2lu81V.d.ts} +1 -1
  450. package/dist/search/document-scanner.js +1 -1
  451. package/dist/search/embed-helper.d.ts +2 -2
  452. package/dist/search/factory.d.ts +2 -2
  453. package/dist/search/factory.js +7 -7
  454. package/dist/search/index.d.ts +2 -2
  455. package/dist/search/index.js +13 -13
  456. package/dist/search/lancedb-backend.d.ts +2 -2
  457. package/dist/search/lancedb-backend.js +1 -1
  458. package/dist/search/meilisearch-backend.d.ts +2 -2
  459. package/dist/search/meilisearch-backend.js +1 -1
  460. package/dist/search/noop-backend.d.ts +2 -2
  461. package/dist/search/orama-backend.d.ts +2 -2
  462. package/dist/search/orama-backend.js +1 -1
  463. package/dist/search/port.d.ts +2 -2
  464. package/dist/search/remote-backend.d.ts +2 -2
  465. package/dist/secure-store/index.js +3 -3
  466. package/dist/{semantic-consolidation-DziYcW5J.d.ts → semantic-consolidation-5OuWXBRt.d.ts} +1 -1
  467. package/dist/semantic-consolidation.d.ts +3 -3
  468. package/dist/semantic-consolidation.js +37 -37
  469. package/dist/semantic-rule-promotion.js +33 -33
  470. package/dist/semantic-rule-verifier.d.ts +2 -2
  471. package/dist/semantic-rule-verifier.js +33 -33
  472. package/dist/{service-C7rIBuK_.d.ts → service-CrqEhLXD.d.ts} +2 -2
  473. package/dist/session-observer-bands.d.ts +2 -2
  474. package/dist/session-observer-state.d.ts +2 -2
  475. package/dist/shared-context/manager.d.ts +2 -2
  476. package/dist/signal.d.ts +2 -2
  477. package/dist/source-agent-qualifier.d.ts +2 -2
  478. package/dist/source-agent-qualifier.js +42 -39
  479. package/dist/standup/build.d.ts +16 -0
  480. package/dist/standup/build.js +17 -0
  481. package/dist/standup/build.js.map +1 -0
  482. package/dist/{storage-B1hEx8Xg.d.ts → storage-BQn-xnxm.d.ts} +4 -1
  483. package/dist/storage.d.ts +5 -3
  484. package/dist/storage.js +32 -32
  485. package/dist/subject-config.d.ts +2 -2
  486. package/dist/subject-config.js +6 -6
  487. package/dist/summarizer.d.ts +2 -2
  488. package/dist/summarizer.js +2 -2
  489. package/dist/summary-snapshot.d.ts +2 -2
  490. package/dist/support-passport/index.d.ts +20 -19
  491. package/dist/support-passport/index.js +68 -65
  492. package/dist/temporal-supersession.d.ts +3 -3
  493. package/dist/temporal-timeline-recall.d.ts +2 -2
  494. package/dist/temporal-validity.d.ts +2 -2
  495. package/dist/threading.d.ts +2 -2
  496. package/dist/tier-migration.d.ts +5 -3
  497. package/dist/tier-routing.d.ts +2 -2
  498. package/dist/tier-routing.js +2 -2
  499. package/dist/{tier-stats-4B5IJ3NE.js → tier-stats-2TOW3QNL.js} +3 -3
  500. package/dist/topics.d.ts +2 -2
  501. package/dist/transcript.d.ts +2 -2
  502. package/dist/transfer/capsule-export.js +2 -2
  503. package/dist/transfer/capsule-import.js +5 -5
  504. package/dist/transfer/export-okf.d.ts +39 -0
  505. package/dist/transfer/export-okf.js +112 -0
  506. package/dist/transfer/export-okf.js.map +1 -0
  507. package/dist/transfer/types.d.ts +12 -12
  508. package/dist/trust-score-stage.d.ts +2 -2
  509. package/dist/trust-score.d.ts +2 -2
  510. package/dist/{types-BHDNxGTT.d.ts → types-BRpcNjHZ.d.ts} +119 -3
  511. package/dist/types.d.ts +2 -2
  512. package/dist/types.js +1 -1
  513. package/dist/utility-runtime.d.ts +2 -2
  514. package/dist/verified-recall.js +33 -33
  515. package/dist/who-knows-cli.d.ts +15 -14
  516. package/dist/who-knows-cli.js +34 -34
  517. package/dist/who-knows.d.ts +15 -14
  518. package/dist/who-knows.js +33 -33
  519. package/dist/write-envelope.d.ts +2 -2
  520. package/dist/write-envelope.js +6 -6
  521. package/package.json +54 -3
  522. package/src/access-admin-ops-surface.ts +6 -1
  523. package/src/access-boundary.ts +1 -0
  524. package/src/access-http.ts +3 -1
  525. package/src/access-mcp-output-schemas.ts +1 -0
  526. package/src/access-mcp.ts +3 -3
  527. package/src/access-operations.ts +1 -0
  528. package/src/access-service-offline-file-content.test.ts +63 -0
  529. package/src/access-surface-catalog.ts +2 -0
  530. package/src/active-context-config.ts +98 -0
  531. package/src/active-context-transform.test.ts +533 -0
  532. package/src/active-context-transform.ts +981 -0
  533. package/src/activity/config.test.ts +1 -0
  534. package/src/activity/config.ts +21 -1
  535. package/src/activity/index.ts +1 -0
  536. package/src/activity/timeline/build.ts +279 -0
  537. package/src/activity/timeline/categories.ts +111 -0
  538. package/src/activity/timeline/classify.ts +110 -0
  539. package/src/activity/timeline/corrections.ts +145 -0
  540. package/src/activity/timeline/index.ts +6 -0
  541. package/src/activity/timeline/timeline.test.ts +277 -0
  542. package/src/activity/timeline/types.ts +106 -0
  543. package/src/activity/types.ts +6 -0
  544. package/src/cli/okf-commands.ts +45 -0
  545. package/src/cli.ts +2 -2
  546. package/src/coding/export-okf-codegraph.test.ts +381 -0
  547. package/src/coding/export-okf-codegraph.ts +565 -0
  548. package/src/config.test.ts +1 -0
  549. package/src/config.ts +3 -5
  550. package/src/context-summary.ts +182 -0
  551. package/src/extraction-prompt-safety.test.ts +14 -2
  552. package/src/extraction.ts +21 -1
  553. package/src/fallback-llm.test.ts +134 -0
  554. package/src/fallback-llm.ts +77 -5
  555. package/src/index.ts +4 -11
  556. package/src/lcm/summarizer.ts +14 -93
  557. package/src/location/access-operations.ts +17 -8
  558. package/src/location/backfill.ts +137 -0
  559. package/src/location/config.test.ts +3 -0
  560. package/src/location/config.ts +46 -2
  561. package/src/location/http-glue.ts +1 -1
  562. package/src/location/index.ts +3 -0
  563. package/src/location/intervals.ts +1 -0
  564. package/src/location/matching.test.ts +65 -0
  565. package/src/location/matching.ts +354 -0
  566. package/src/location/mcp-tools.ts +2 -1
  567. package/src/location/surfaces.test.ts +15 -2
  568. package/src/location/surfaces.ts +95 -18
  569. package/src/location/tagging.test.ts +119 -0
  570. package/src/location/tagging.ts +277 -0
  571. package/src/location/types.ts +23 -1
  572. package/src/mcp-read-only-tools.ts +1 -0
  573. package/src/memory-action-policy.ts +28 -0
  574. package/src/memory-projection-store.ts +3 -1
  575. package/src/okf/cli.ts +18 -5
  576. package/src/okf/config.ts +5 -0
  577. package/src/okf/index-files.test.ts +60 -0
  578. package/src/okf/index-files.ts +114 -0
  579. package/src/okf/render.ts +133 -0
  580. package/src/okf/type-mapping.test.ts +3 -0
  581. package/src/okf/type-mapping.ts +2 -0
  582. package/src/orchestration/extraction-run.ts +2 -1
  583. package/src/orchestration/generic-recall-paths.ts +4 -3
  584. package/src/schemas.ts +17 -1
  585. package/src/standup/access-operations.ts +14 -0
  586. package/src/standup/build.test.ts +34 -0
  587. package/src/standup/build.ts +115 -0
  588. package/src/standup/http-glue.ts +15 -0
  589. package/src/standup/mcp-tools.ts +16 -0
  590. package/src/storage/context-transform-ledger.ts +39 -0
  591. package/src/storage/secure-line-reader.ts +50 -1
  592. package/src/storage.ts +4 -1
  593. package/src/support-passport/card-projection.ts +1 -0
  594. package/src/support-passport/card-service-commit-forwarding.test.ts +1 -0
  595. package/src/support-passport/card-service.test.ts +75 -1
  596. package/src/support-passport/card-service.ts +6 -3
  597. package/src/support-passport/card-state.ts +5 -1
  598. package/src/support-passport/offline-sync-guard.ts +14 -1
  599. package/src/transfer/export-okf.test.ts +164 -0
  600. package/src/transfer/export-okf.ts +286 -0
  601. package/src/types.ts +2 -3
  602. package/dist/chunk-2LWQSV6A.js.map +0 -1
  603. package/dist/chunk-3BCULS4U.js.map +0 -1
  604. package/dist/chunk-7BDZTALN.js.map +0 -1
  605. package/dist/chunk-7PHI6GUI.js.map +0 -1
  606. package/dist/chunk-AFR6AIM4.js.map +0 -1
  607. package/dist/chunk-AX7UXCHJ.js.map +0 -1
  608. package/dist/chunk-BJTHRFFC.js.map +0 -1
  609. package/dist/chunk-D4QVPP3G.js.map +0 -1
  610. package/dist/chunk-DVYRD4HY.js.map +0 -1
  611. package/dist/chunk-F635GAL7.js.map +0 -1
  612. package/dist/chunk-FMQ4MOQO.js.map +0 -1
  613. package/dist/chunk-FP7YTTVO.js.map +0 -1
  614. package/dist/chunk-I4343FIA.js.map +0 -1
  615. package/dist/chunk-I7EX6KSH.js.map +0 -1
  616. package/dist/chunk-LBFFNDFM.js.map +0 -1
  617. package/dist/chunk-LLQCM2U2.js.map +0 -1
  618. package/dist/chunk-RQE4TITU.js.map +0 -1
  619. package/dist/chunk-UW5NPZJ2.js.map +0 -1
  620. package/dist/chunk-XAB6STPO.js.map +0 -1
  621. package/dist/chunk-ZPUIRTIZ.js.map +0 -1
  622. package/dist/types-CM86alG1.d.ts +0 -89
  623. /package/dist/{contradiction-scan-AKUWPX5N.js.map → active-context-config.js.map} +0 -0
  624. /package/dist/{resolution-4552BNRV.js.map → active-context-transform.js.map} +0 -0
  625. /package/dist/{auto-sync-XVMLL2RH.js.map → auto-sync-Q6Q2FVSC.js.map} +0 -0
  626. /package/dist/{capsule-merge-SGIVB3WA.js.map → capsule-merge-SEHERWWP.js.map} +0 -0
  627. /package/dist/{chunk-CFGU52XJ.js.map → chunk-23CVL7HS.js.map} +0 -0
  628. /package/dist/{chunk-PO7NXBG2.js.map → chunk-2GF27PGH.js.map} +0 -0
  629. /package/dist/{chunk-6CPUQ5D6.js.map → chunk-2LBAFHOQ.js.map} +0 -0
  630. /package/dist/{chunk-JBPKEARU.js.map → chunk-2QSZNTDO.js.map} +0 -0
  631. /package/dist/{chunk-IP4ZNT4U.js.map → chunk-33MFRY25.js.map} +0 -0
  632. /package/dist/{chunk-VFYRYFLL.js.map → chunk-3TSU662L.js.map} +0 -0
  633. /package/dist/{chunk-VXVZ2GM3.js.map → chunk-4FHRZD5T.js.map} +0 -0
  634. /package/dist/{chunk-5VPQSRQO.js.map → chunk-4STAANV7.js.map} +0 -0
  635. /package/dist/{chunk-46WM6JX2.js.map → chunk-4ZWCQJNM.js.map} +0 -0
  636. /package/dist/{chunk-52II7PB6.js.map → chunk-645WOU5I.js.map} +0 -0
  637. /package/dist/{chunk-YKWFK7XA.js.map → chunk-6CEGSTBD.js.map} +0 -0
  638. /package/dist/{chunk-GEPACVWN.js.map → chunk-6RUHELWR.js.map} +0 -0
  639. /package/dist/{chunk-ZAOHJDKH.js.map → chunk-72OIT7KS.js.map} +0 -0
  640. /package/dist/{chunk-KQAFEZQX.js.map → chunk-7LCGFUMB.js.map} +0 -0
  641. /package/dist/{chunk-7TCGNUVP.js.map → chunk-7UTDHQZ5.js.map} +0 -0
  642. /package/dist/{chunk-5HK3CJAR.js.map → chunk-7XOG75AU.js.map} +0 -0
  643. /package/dist/{chunk-C24UZSFW.js.map → chunk-CEH2AFXG.js.map} +0 -0
  644. /package/dist/{chunk-YOXVZJFM.js.map → chunk-CFVTRUR3.js.map} +0 -0
  645. /package/dist/{chunk-ACOC27BB.js.map → chunk-CN4VKV3S.js.map} +0 -0
  646. /package/dist/{chunk-PMVPCZJZ.js.map → chunk-CTCGHNWN.js.map} +0 -0
  647. /package/dist/{chunk-EGBDFJ36.js.map → chunk-DD5JFCWM.js.map} +0 -0
  648. /package/dist/{chunk-T42L3S6A.js.map → chunk-DDX6KIXF.js.map} +0 -0
  649. /package/dist/{chunk-JIYDRBVZ.js.map → chunk-DJORULH3.js.map} +0 -0
  650. /package/dist/{chunk-WTOZBZNN.js.map → chunk-DMEHOEC7.js.map} +0 -0
  651. /package/dist/{chunk-OPPBTPUU.js.map → chunk-DUAJKRR2.js.map} +0 -0
  652. /package/dist/{chunk-SVVIASVX.js.map → chunk-EFQCDJZ2.js.map} +0 -0
  653. /package/dist/{chunk-Q57GOHLF.js.map → chunk-EGALNSZ4.js.map} +0 -0
  654. /package/dist/{chunk-KCT36JAW.js.map → chunk-ESNFSSO4.js.map} +0 -0
  655. /package/dist/{chunk-XQ3HXAQH.js.map → chunk-ET2CNMLD.js.map} +0 -0
  656. /package/dist/{chunk-Z4U3UN56.js.map → chunk-EZSCW4EM.js.map} +0 -0
  657. /package/dist/{chunk-F6QHHRWP.js.map → chunk-FESUGFIL.js.map} +0 -0
  658. /package/dist/{chunk-S3K2CIK5.js.map → chunk-FKKGCGYL.js.map} +0 -0
  659. /package/dist/{chunk-BWGCOLEL.js.map → chunk-FTTJRVB7.js.map} +0 -0
  660. /package/dist/{chunk-JAQXUGLN.js.map → chunk-FYWLSFFS.js.map} +0 -0
  661. /package/dist/{chunk-OPGL46PX.js.map → chunk-GX6FTSYH.js.map} +0 -0
  662. /package/dist/{chunk-A32YEQAM.js.map → chunk-H7VDIF2V.js.map} +0 -0
  663. /package/dist/{chunk-PDDSFELN.js.map → chunk-HJXA6ZM7.js.map} +0 -0
  664. /package/dist/{chunk-RGCF4XNH.js.map → chunk-HNPE66LB.js.map} +0 -0
  665. /package/dist/{chunk-SEA6M7SS.js.map → chunk-I5VB44ZK.js.map} +0 -0
  666. /package/dist/{chunk-SDEPLF7V.js.map → chunk-IBJ6U753.js.map} +0 -0
  667. /package/dist/{chunk-EUYWQ7TS.js.map → chunk-IEZ6CGTW.js.map} +0 -0
  668. /package/dist/{chunk-3RI5Y7KU.js.map → chunk-IVIAHQBR.js.map} +0 -0
  669. /package/dist/{chunk-7WR462EM.js.map → chunk-J3OND5QT.js.map} +0 -0
  670. /package/dist/{chunk-T3JQTCCO.js.map → chunk-JI7U6AS3.js.map} +0 -0
  671. /package/dist/{chunk-I32NKXE2.js.map → chunk-JTWZKNUH.js.map} +0 -0
  672. /package/dist/{chunk-VKCAHCBI.js.map → chunk-L4X4PJYK.js.map} +0 -0
  673. /package/dist/{chunk-W4BMEGQA.js.map → chunk-LUDBXTBJ.js.map} +0 -0
  674. /package/dist/{chunk-RIAM7DND.js.map → chunk-ME35HVDJ.js.map} +0 -0
  675. /package/dist/{chunk-NG3MBQV4.js.map → chunk-MJRGVXPQ.js.map} +0 -0
  676. /package/dist/{chunk-773TRRGT.js.map → chunk-MJUCDM3C.js.map} +0 -0
  677. /package/dist/{chunk-7F27PCSN.js.map → chunk-MN5NOOI7.js.map} +0 -0
  678. /package/dist/{chunk-JCWY73FK.js.map → chunk-N4F7ZSSG.js.map} +0 -0
  679. /package/dist/{chunk-TR7DGXGI.js.map → chunk-NACLNNFQ.js.map} +0 -0
  680. /package/dist/{chunk-LC2BDILZ.js.map → chunk-NBP4EX5N.js.map} +0 -0
  681. /package/dist/{chunk-ZVPVTPGI.js.map → chunk-NNZFPYYX.js.map} +0 -0
  682. /package/dist/{chunk-MFOSZUIT.js.map → chunk-NPIBN2VL.js.map} +0 -0
  683. /package/dist/{chunk-IY7UXD3J.js.map → chunk-O57GM3FR.js.map} +0 -0
  684. /package/dist/{chunk-I2HTKOOP.js.map → chunk-O7ERGZDA.js.map} +0 -0
  685. /package/dist/{chunk-GTSVEEP3.js.map → chunk-OAJMQKQR.js.map} +0 -0
  686. /package/dist/{chunk-HSZMX3ZJ.js.map → chunk-ODW5GDFE.js.map} +0 -0
  687. /package/dist/{chunk-J2WC5LF4.js.map → chunk-QBC33MPY.js.map} +0 -0
  688. /package/dist/{chunk-EOHKUWXW.js.map → chunk-QCRJMU5V.js.map} +0 -0
  689. /package/dist/{chunk-5DH6PG4B.js.map → chunk-RZ3IZIJG.js.map} +0 -0
  690. /package/dist/{chunk-AAXJNINV.js.map → chunk-SN4JXNLL.js.map} +0 -0
  691. /package/dist/{chunk-SVSRPG6M.js.map → chunk-TNGH4ZYI.js.map} +0 -0
  692. /package/dist/{chunk-HZNYJN77.js.map → chunk-TNXNECAN.js.map} +0 -0
  693. /package/dist/{chunk-JOEJG4SD.js.map → chunk-TVW4C7PV.js.map} +0 -0
  694. /package/dist/{chunk-UFKPQBXH.js.map → chunk-U62OK7BB.js.map} +0 -0
  695. /package/dist/{chunk-R2MZCYA6.js.map → chunk-UNUMFURP.js.map} +0 -0
  696. /package/dist/{chunk-YRVAKONL.js.map → chunk-VQ4AMTGZ.js.map} +0 -0
  697. /package/dist/{chunk-RAIUTAZZ.js.map → chunk-WKAXBXVA.js.map} +0 -0
  698. /package/dist/{chunk-ZIJDI4CP.js.map → chunk-WKJFIMVN.js.map} +0 -0
  699. /package/dist/{chunk-SXIMQLGV.js.map → chunk-WVGXCBOC.js.map} +0 -0
  700. /package/dist/{chunk-7BEPVIH3.js.map → chunk-X5YYSAZX.js.map} +0 -0
  701. /package/dist/{chunk-FZEEWOI2.js.map → chunk-XJJYSX6F.js.map} +0 -0
  702. /package/dist/{chunk-UG6VXIOK.js.map → chunk-XSTNGNJP.js.map} +0 -0
  703. /package/dist/{chunk-YDPAE2RD.js.map → chunk-YFLLGRXO.js.map} +0 -0
  704. /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
  705. /package/dist/{chunk-ANJXPFRS.js.map → chunk-YXFCALVT.js.map} +0 -0
  706. /package/dist/{chunk-Q4WONDMJ.js.map → chunk-YYGZJPOK.js.map} +0 -0
  707. /package/dist/{chunk-5HERQ5FX.js.map → chunk-Z3YEGSR4.js.map} +0 -0
  708. /package/dist/{chunk-YWSQD2IB.js.map → chunk-ZJPM7GZ3.js.map} +0 -0
  709. /package/dist/{chunk-5S4LQOPE.js.map → chunk-ZW4VXELZ.js.map} +0 -0
  710. /package/dist/{first-start-migration-4NETATFF.js.map → first-start-migration-KHIMCBIC.js.map} +0 -0
  711. /package/dist/{forget-SZ2BXDGF.js.map → forget-2AE4MDK3.js.map} +0 -0
  712. /package/dist/{purge-GB7PZHT2.js.map → purge-OP6BEDFY.js.map} +0 -0
  713. /package/dist/{tier-stats-4B5IJ3NE.js.map → tier-stats-2TOW3QNL.js.map} +0 -0
@@ -0,0 +1,565 @@
1
+ /**
2
+ * Codegraph OKF projection (issue #1950).
3
+ *
4
+ * Read-only projection of one project's code-graph SQLite store into an
5
+ * OKF v0.1 knowledge bundle: the stored architecture card, decision
6
+ * records, and one `Code Module` concept per indexed source file with its
7
+ * symbols and outgoing edges. The store is NEVER opened for write — the
8
+ * SQLite file is opened `readonly`, so an export cannot mutate indexing
9
+ * state and the file's bytes are stable across runs.
10
+ *
11
+ * Rendering discipline mirrors architecture-card.ts (rule 38): byte-stable
12
+ * output for an unchanged graph; every list is sorted with a total order.
13
+ * Shared bundle mechanics come from ../okf/render.ts (one source of truth
14
+ * with the memory exporter, issue #1948).
15
+ */
16
+ import { existsSync, readdirSync, rmSync, statSync } from "node:fs";
17
+ import { mkdtemp } from "node:fs/promises";
18
+ import os from "node:os";
19
+ import path from "node:path";
20
+
21
+ import { lintOkfDir } from "../okf/lint.js";
22
+ import {
23
+ OKF_ARCHITECTURE_CARD_TYPE,
24
+ OKF_CODE_MODULE_TYPE,
25
+ OKF_DECISION_RECORD_TYPE,
26
+ } from "../okf/type-mapping.js";
27
+ import {
28
+ OKF_EXPORT_VERSION,
29
+ publishBundle,
30
+ renderFrontmatter,
31
+ rejectSymlinkPath,
32
+ writeBundleFile,
33
+ } from "../okf/render.js";
34
+ import { openBetterSqlite3 } from "../runtime/better-sqlite.js";
35
+ import { StorageManager, stripAttributesSuffix } from "../storage.js";
36
+ import type { PluginConfig } from "../types.js";
37
+ import { findArchitectureCardMemory, type ArchitectureSurfaceStorage } from "./architecture-surfaces.js";
38
+ import {
39
+ CodegraphRuntimeError,
40
+ codegraphSurfaceVisible,
41
+ listCodegraphProjects,
42
+ resolveCodegraphDbPath,
43
+ } from "./codegraph-runtime.js";
44
+ import { defaultGitInvoker, normalizeOriginUrl } from "./git-context.js";
45
+ import { projectNamespaceName } from "./coding-namespace.js";
46
+ import {
47
+ ACTIVE_DECISION_STATUSES,
48
+ DECISION_STATUSES,
49
+ parseDecisionRecord,
50
+ type DecisionRecord,
51
+ } from "./decision-records.js";
52
+ import { buildCodingGraphInstallHint, isCodingGraphInstalled } from "./optional-coding-graph.js";
53
+
54
+ /** Default cap on rendered module concepts (`--max-module-concepts`). */
55
+ export const DEFAULT_OKF_CODEGRAPH_MAX_MODULE_CONCEPTS = 500;
56
+
57
+ /**
58
+ * Visible marker written into the root index when module concepts were
59
+ * truncated (mirrors `ARCHITECTURE_CARD_TRUNCATION_MARKER` — never
60
+ * silently incomplete).
61
+ */
62
+ export const OKF_CODEGRAPH_TRUNCATION_MARKER = "<!-- okf-codegraph-truncated -->";
63
+
64
+ export type OkfCodegraphSymbolFilter = "none" | "exported" | "all";
65
+
66
+ const SYMBOL_FILTERS: readonly OkfCodegraphSymbolFilter[] = ["none", "exported", "all"];
67
+
68
+ export function parseOkfCodegraphSymbolFilter(raw: unknown): OkfCodegraphSymbolFilter {
69
+ const value = typeof raw === "string" ? raw.trim().toLowerCase() : "";
70
+ if (value.length === 0) return "exported";
71
+ if ((SYMBOL_FILTERS as readonly string[]).includes(value)) return value as OkfCodegraphSymbolFilter;
72
+ throw new Error(`invalid --symbols ${String(raw)}; allowed: ${SYMBOL_FILTERS.join(", ")}`);
73
+ }
74
+
75
+ export interface ExportOkfCodegraphOptions {
76
+ readonly config: PluginConfig;
77
+ readonly memoryDir: string;
78
+ /** Store owner; defaults to `"default"` like the access-service principal key. */
79
+ readonly principal?: string;
80
+ readonly projectId: string;
81
+ readonly outDir: string;
82
+ /**
83
+ * Working directory used to resolve git context (repo root, origin URL).
84
+ * Defaults to `process.cwd()`.
85
+ */
86
+ readonly cwd?: string;
87
+ readonly maxModuleConcepts?: number;
88
+ readonly symbols?: OkfCodegraphSymbolFilter;
89
+ /** Default ON; pass `false` for `--no-include-adrs`. */
90
+ readonly includeAdrs?: boolean;
91
+ readonly force?: boolean;
92
+ /**
93
+ * Namespace holding the project's decision records + architecture card.
94
+ * Defaults to the project-scope coding namespace for the project id.
95
+ */
96
+ readonly namespace?: string;
97
+ }
98
+
99
+ export interface ExportOkfCodegraphResult {
100
+ readonly projectId: string;
101
+ readonly moduleConcepts: number;
102
+ readonly moduleFilesInGraph: number;
103
+ readonly truncated: boolean;
104
+ readonly decisions: number;
105
+ readonly architectureCard: boolean;
106
+ }
107
+
108
+ interface GraphFileRow {
109
+ readonly id: number;
110
+ readonly path: string;
111
+ readonly lang: string;
112
+ }
113
+
114
+ interface GraphNodeRow {
115
+ readonly name: string;
116
+ readonly label: string;
117
+ readonly file_id: number;
118
+ readonly span_start: number;
119
+ readonly span_end: number;
120
+ readonly is_exported: number;
121
+ }
122
+
123
+ interface GraphEdgeRow {
124
+ readonly type: string;
125
+ readonly confidence: number;
126
+ readonly src_file_id: number;
127
+ readonly dst_file_id: number;
128
+ readonly dst_name: string;
129
+ readonly dst_path: string;
130
+ }
131
+
132
+ export async function exportCodegraphOkfBundle(
133
+ opts: ExportOkfCodegraphOptions,
134
+ ): Promise<ExportOkfCodegraphResult> {
135
+ if (!codegraphSurfaceVisible(opts.config)) {
136
+ throw new CodegraphRuntimeError(
137
+ "disabled",
138
+ "codegraph tools are disabled (codingKnowledge.enabled or codingKnowledge.codegraphTools is false)",
139
+ );
140
+ }
141
+ if (!(await isCodingGraphInstalled())) {
142
+ throw new CodegraphRuntimeError("package_missing", buildCodingGraphInstallHint());
143
+ }
144
+ const principal = opts.principal?.trim() || "default";
145
+ const projectId = opts.projectId.trim();
146
+ if (projectId.length === 0) {
147
+ throw new CodegraphRuntimeError(
148
+ "project_required",
149
+ "codegraph export-okf requires --project (or a cwd inside the project's git repo)",
150
+ );
151
+ }
152
+ rejectSymlinkPath(path.resolve(opts.outDir));
153
+ // Explicit option validation (config-coercion footgun): honor the given
154
+ // value or fail loudly — never silently default a bad input. `0` is a
155
+ // legitimate "no module concepts" cap and is honored.
156
+ const maxModules = opts.maxModuleConcepts ?? DEFAULT_OKF_CODEGRAPH_MAX_MODULE_CONCEPTS;
157
+ if (!Number.isInteger(maxModules) || maxModules < 0) {
158
+ throw new Error(
159
+ `invalid --max-module-concepts ${String(opts.maxModuleConcepts)}; must be a non-negative integer`,
160
+ );
161
+ }
162
+ const dbPath = resolveCodegraphDbPath({ config: opts.config, memoryDir: opts.memoryDir, principal, projectId });
163
+ if (!existsSync(dbPath)) {
164
+ const known = listCodegraphProjects({
165
+ config: opts.config,
166
+ memoryDir: opts.memoryDir,
167
+ principal,
168
+ listDir: (dir) => {
169
+ try {
170
+ return readdirSync(dir);
171
+ } catch {
172
+ return [];
173
+ }
174
+ },
175
+ });
176
+ throw new CodegraphRuntimeError(
177
+ "project_not_found",
178
+ `no codegraph store for project '${projectId}' (principal '${principal}'); known projects: ${
179
+ known.length > 0 ? known.join(", ") : "(none)"
180
+ }`,
181
+ );
182
+ }
183
+
184
+ // Read the graph through a readonly handle — bytes on disk are never
185
+ // touched, and the store cache (write-mode handles) is bypassed entirely.
186
+ const graphIndexedAt = statSync(dbPath).mtime.toISOString();
187
+ const db = openBetterSqlite3(dbPath, { readonly: true, fileMustExist: true });
188
+ let files: GraphFileRow[];
189
+ let nodes: GraphNodeRow[];
190
+ let edges: GraphEdgeRow[];
191
+ try {
192
+ files = db.prepare("SELECT id, path, lang FROM files ORDER BY path ASC").all() as GraphFileRow[];
193
+ nodes = db
194
+ .prepare(
195
+ `SELECT n.name, n.label, n.file_id, n.span_start, n.span_end,
196
+ COALESCE(na.is_exported, 0) AS is_exported
197
+ FROM nodes n LEFT JOIN node_attributes na ON na.node_id = n.id`,
198
+ )
199
+ .all() as GraphNodeRow[];
200
+ edges = db
201
+ .prepare(
202
+ `SELECT e.type, e.confidence, s.file_id AS src_file_id, d.file_id AS dst_file_id,
203
+ d.name AS dst_name, df.path AS dst_path
204
+ FROM edges e
205
+ JOIN nodes s ON s.id = e.src
206
+ JOIN nodes d ON d.id = e.dst
207
+ JOIN files df ON d.file_id = df.id`,
208
+ )
209
+ .all() as GraphEdgeRow[];
210
+ } finally {
211
+ db.close();
212
+ }
213
+
214
+ // Trust boundary: file paths come from the indexed graph. Reject anything
215
+ // that is not a strict repo-relative POSIX path so a hostile row cannot
216
+ // escape the staging directory via writeBundleFile's path.join.
217
+ const safeFiles = files.filter(
218
+ (f) => f.path.length > 0 && !f.path.startsWith("/") && !f.path.split("/").includes(".."),
219
+ );
220
+ const fileIdToPath = new Map<number, string>(safeFiles.map((f) => [f.id, f.path]));
221
+ const nodesByFile = new Map<number, GraphNodeRow[]>();
222
+ for (const node of nodes) {
223
+ if (!fileIdToPath.has(node.file_id)) continue;
224
+ const list = nodesByFile.get(node.file_id) ?? [];
225
+ list.push(node);
226
+ nodesByFile.set(node.file_id, list);
227
+ }
228
+
229
+ // Deterministic truncation: most symbols first, path ascending as the
230
+ // tie-break (issue acceptance: cap of 1 keeps the highest-symbol file).
231
+ const ranked = [...safeFiles].sort((a, b) => {
232
+ const aCount = (nodesByFile.get(a.id) ?? []).length;
233
+ const bCount = (nodesByFile.get(b.id) ?? []).length;
234
+ if (aCount !== bCount) return bCount - aCount;
235
+ return a.path.localeCompare(b.path);
236
+ });
237
+ const keptFiles = ranked.slice(0, maxModules);
238
+ const keptPaths = new Set<string>(keptFiles.map((f) => f.path));
239
+ const truncated = safeFiles.length > keptFiles.length;
240
+
241
+ const symbolFilter = parseOkfCodegraphSymbolFilter(opts.symbols);
242
+ const git = await resolveGitHints(opts.cwd ?? process.cwd());
243
+ const staging = await mkdtemp(path.join(os.tmpdir(), "remnic-okf-codegraph-"));
244
+ let decisions = 0;
245
+ let architectureCard = false;
246
+ try {
247
+ const namespace = opts.namespace?.trim() || projectNamespaceName(projectId);
248
+ const namespaceDir = path.join(opts.memoryDir, "namespaces", namespace);
249
+ if (opts.includeAdrs !== false && existsSync(namespaceDir)) {
250
+ const storage = new StorageManager(namespaceDir);
251
+ const memories = await storage.readAllMemories();
252
+ // Architecture card — reuse the surface's classification (rule 53).
253
+ const card = await findArchitectureCardMemory(readOnlyCardStorage(storage, namespaceDir, namespace));
254
+ if (card) {
255
+ architectureCard = true;
256
+ writeBundleFile(
257
+ staging,
258
+ "architecture.md",
259
+ renderFrontmatter({
260
+ type: OKF_ARCHITECTURE_CARD_TYPE,
261
+ title: git.repoName,
262
+ ...(git.originUrl ? { resource: git.originUrl } : git.repoRoot ? { resource: git.repoRoot } : {}),
263
+ timestamp: card.frontmatter.updated ?? card.frontmatter.created,
264
+ }) +
265
+ stripAttributesSuffix(card.content.replace(/^\uFEFF/, "")).trimEnd() +
266
+ "\n",
267
+ );
268
+ }
269
+ const records: Array<{ record: DecisionRecord; timestamp: string }> = [];
270
+ for (const memory of memories) {
271
+ if (memory.frontmatter.category !== "decision") continue;
272
+ try {
273
+ const parsed = parseDecisionRecord(memory.content);
274
+ records.push({
275
+ // Production writes leave the ADR frontmatter id empty and use
276
+ // the memory id as the canonical identifier (decisionRecord
277
+ // surface path) — prefer the ADR id, fall back to the memory id.
278
+ record: parsed.id ? parsed : { ...parsed, id: memory.frontmatter.id },
279
+ timestamp: memory.frontmatter.updated ?? memory.frontmatter.created,
280
+ });
281
+ } catch {
282
+ // Unparseable decision bodies are skipped, mirroring the surface's
283
+ // safeParseDecisionRecord degradation.
284
+ }
285
+ }
286
+ records.sort((a, b) => a.record.title.localeCompare(b.record.title));
287
+ decisions = records.length;
288
+ for (const { record, timestamp } of records) {
289
+ writeBundleFile(staging, `decisions/${decisionFileStem(record)}.md`, renderDecision(record, timestamp));
290
+ }
291
+ if (records.length > 0 || architectureCard) {
292
+ writeBundleFile(staging, "decisions/index.md", renderDecisionsIndex(records));
293
+ }
294
+ }
295
+
296
+ for (const file of keptFiles) {
297
+ writeBundleFile(
298
+ staging,
299
+ `modules/${file.path}.md`,
300
+ renderModule(
301
+ file,
302
+ nodesByFile.get(file.id) ?? [],
303
+ edges,
304
+ fileIdToPath,
305
+ keptPaths,
306
+ symbolFilter,
307
+ git,
308
+ graphIndexedAt,
309
+ ),
310
+ );
311
+ }
312
+ if (keptFiles.length > 0) {
313
+ writeBundleFile(staging, "modules/index.md", renderModulesIndex(keptFiles));
314
+ }
315
+ writeBundleFile(
316
+ staging,
317
+ "index.md",
318
+ renderRootIndex(git.repoName, projectId, architectureCard, decisions, keptFiles, safeFiles, truncated),
319
+ );
320
+
321
+ // Self-validate with the #1946 conformance checker; non-conformant
322
+ // output fails the command. Reserved basenames (the bundle's own
323
+ // index.md files) are the documented exemption, as in the memory export.
324
+ const lint = lintOkfDir(staging);
325
+ const blocking = lint.findings.filter((f) => f.code !== "skipped_encrypted" && f.code !== "reserved_basename");
326
+ if (blocking.length > 0) {
327
+ throw new Error(`OKF codegraph export failed lint: ${blocking.map((f) => `${f.file}: ${f.message}`).join("; ")}`);
328
+ }
329
+ publishBundle(staging, path.resolve(opts.outDir), opts.force === true);
330
+ } catch (err) {
331
+ rmSync(staging, { recursive: true, force: true });
332
+ throw err;
333
+ }
334
+ return {
335
+ projectId,
336
+ moduleConcepts: keptFiles.length,
337
+ moduleFilesInGraph: safeFiles.length,
338
+ truncated,
339
+ decisions,
340
+ architectureCard,
341
+ };
342
+ }
343
+
344
+ /**
345
+ * Read-only adapter over the namespace StorageManager for
346
+ * {@link findArchitectureCardMemory} — write arms throw so a future edit
347
+ * cannot silently turn the exporter into a mutating surface.
348
+ */
349
+ function readOnlyCardStorage(
350
+ storage: StorageManager,
351
+ dir: string,
352
+ namespace: string,
353
+ ): ArchitectureSurfaceStorage {
354
+ return {
355
+ dir,
356
+ namespace,
357
+ readAllMemories: () => storage.readAllMemories(),
358
+ updateMemory: () => {
359
+ throw new Error("codegraph export-okf is read-only");
360
+ },
361
+ writeSealedMemory: () => {
362
+ throw new Error("codegraph export-okf is read-only");
363
+ },
364
+ };
365
+ }
366
+
367
+ interface GitHints {
368
+ readonly repoRoot: string | null;
369
+ readonly repoName: string;
370
+ readonly originUrl: string | null;
371
+ }
372
+
373
+ async function resolveGitHints(cwd: string): Promise<GitHints> {
374
+ try {
375
+ const invoker = defaultGitInvoker();
376
+ const topLevel = await invoker(cwd, ["rev-parse", "--show-toplevel"]);
377
+ if (topLevel.exitCode !== 0) {
378
+ return { repoRoot: null, repoName: "codegraph", originUrl: null };
379
+ }
380
+ const repoRoot = topLevel.stdout.trim();
381
+ const origin = await invoker(repoRoot, ["remote", "get-url", "origin"]);
382
+ const originUrl = origin.exitCode === 0 ? normalizeOriginUrl(origin.stdout) : null;
383
+ return {
384
+ repoRoot: repoRoot || null,
385
+ repoName: (repoRoot && path.basename(repoRoot)) || "codegraph",
386
+ originUrl: originUrl && originUrl.length > 0 ? originUrl : null,
387
+ };
388
+ } catch {
389
+ return { repoRoot: null, repoName: "codegraph", originUrl: null };
390
+ }
391
+ }
392
+
393
+ function moduleResource(git: GitHints, filePath: string): string {
394
+ if (git.originUrl) return `${git.originUrl}/${filePath}`;
395
+ if (git.repoRoot) return path.join(git.repoRoot, filePath);
396
+ return filePath;
397
+ }
398
+
399
+ function confidenceTier(confidence: number): string {
400
+ if (confidence >= 0.9) return "high";
401
+ if (confidence >= 0.5) return "medium";
402
+ return "low";
403
+ }
404
+
405
+ function decisionFileStem(record: Pick<DecisionRecord, "id">): string {
406
+ const safe = record.id.replace(/[^A-Za-z0-9._-]+/g, "_");
407
+ return safe.length > 0 ? safe : "decision";
408
+ }
409
+
410
+ function renderModule(
411
+ file: GraphFileRow,
412
+ fileNodes: readonly GraphNodeRow[],
413
+ edges: readonly GraphEdgeRow[],
414
+ fileIdToPath: ReadonlyMap<number, string>,
415
+ keptPaths: ReadonlySet<string>,
416
+ symbolFilter: OkfCodegraphSymbolFilter,
417
+ git: GitHints,
418
+ graphIndexedAt: string,
419
+ ): string {
420
+ const visible =
421
+ symbolFilter === "all"
422
+ ? [...fileNodes]
423
+ : symbolFilter === "exported"
424
+ ? fileNodes.filter((n) => n.is_exported === 1)
425
+ : [];
426
+ visible.sort((a, b) => (a.name !== b.name ? a.name.localeCompare(b.name) : a.span_start - b.span_start));
427
+ const outEdges = edges
428
+ .filter((e) => e.src_file_id === file.id && fileIdToPath.get(e.src_file_id) === file.path)
429
+ .map((e) => ({
430
+ type: e.type,
431
+ verb: e.type.toLowerCase(),
432
+ dstPath: e.dst_path,
433
+ dstName: e.dst_name,
434
+ tier: confidenceTier(e.confidence),
435
+ }))
436
+ .sort((a, b) =>
437
+ a.type !== b.type
438
+ ? a.type.localeCompare(b.type)
439
+ : a.dstPath !== b.dstPath
440
+ ? a.dstPath.localeCompare(b.dstPath)
441
+ : a.dstName.localeCompare(b.dstName),
442
+ );
443
+ const fields: Record<string, unknown> = {
444
+ type: OKF_CODE_MODULE_TYPE,
445
+ title: file.path,
446
+ description: `${fileNodes.length} symbols, ${file.lang}`,
447
+ resource: moduleResource(git, file.path),
448
+ tags: [file.lang],
449
+ timestamp: graphIndexedAt,
450
+ };
451
+ let body = "";
452
+ if (symbolFilter !== "none") {
453
+ const rows = visible.map((n) => `| ${n.name} | ${n.label} | ${n.span_start}-${n.span_end} |`).join("\n");
454
+ body += `# Symbols\n\n| Name | Kind | Span (bytes) |\n|---|---|---|\n${rows}\n\n`;
455
+ }
456
+ if (outEdges.length > 0) {
457
+ const lines = outEdges.map((e) => {
458
+ // Broken links (target truncated out of the bundle) are legal per OKF
459
+ // §5.3 — the link records the relationship regardless of target presence.
460
+ const href = `/modules/${e.dstPath}.md`;
461
+ const label = e.verb === "calls" ? `${e.dstName}() in ${e.dstPath}` : e.dstPath;
462
+ const broken = keptPaths.has(e.dstPath) ? "" : " (link target not exported)";
463
+ return `- ${e.verb}: [${label}](${href}) (confidence: ${e.tier})${broken}`;
464
+ });
465
+ body += `# Dependencies\n\n${lines.join("\n")}\n\n`;
466
+ }
467
+ return renderFrontmatter(fields) + body.trimEnd() + "\n";
468
+ }
469
+
470
+ function renderModulesIndex(files: readonly GraphFileRow[]): string {
471
+ const groups = new Map<string, GraphFileRow[]>();
472
+ for (const file of files) {
473
+ const key = file.path.includes("/") ? (file.path.split("/")[0] ?? "") : "(root)";
474
+ const list = groups.get(key) ?? [];
475
+ list.push(file);
476
+ groups.set(key, list);
477
+ }
478
+ const sections = [...groups.keys()].sort().map((key) => {
479
+ const lines = (groups.get(key) ?? [])
480
+ .sort((a, b) => a.path.localeCompare(b.path))
481
+ .map((f) => `* [${f.path}](/modules/${f.path}.md)`);
482
+ return `## ${key}\n\n${lines.join("\n")}`;
483
+ });
484
+ return `---\nokf_version: "${OKF_EXPORT_VERSION}"\n---\n\n# Code Modules\n\n${sections.join("\n\n")}\n`;
485
+ }
486
+
487
+ function renderDecisionsIndex(records: ReadonlyArray<{ record: DecisionRecord }>): string {
488
+ // ACTIVE set first — the single classification source (rule 53), never a
489
+ // re-derived list.
490
+ const orderedStatuses = [
491
+ ...DECISION_STATUSES.filter((s) => ACTIVE_DECISION_STATUSES.has(s)),
492
+ ...DECISION_STATUSES.filter((s) => !ACTIVE_DECISION_STATUSES.has(s)),
493
+ ];
494
+ const byStatus = new Map<string, { record: DecisionRecord }[]>();
495
+ for (const entry of records) {
496
+ const list = byStatus.get(entry.record.status) ?? [];
497
+ list.push(entry);
498
+ byStatus.set(entry.record.status, list);
499
+ }
500
+ const sections: string[] = [];
501
+ for (const status of orderedStatuses) {
502
+ const list = byStatus.get(status);
503
+ if (!list || list.length === 0) continue;
504
+ const lines = list
505
+ .map((e) => e.record)
506
+ .sort((a, b) => a.title.localeCompare(b.title))
507
+ .map((r) => `* [${r.title}](/decisions/${decisionFileStem(r)}.md)`);
508
+ sections.push(`## ${status[0]!.toUpperCase()}${status.slice(1)}\n\n${lines.join("\n")}`);
509
+ }
510
+ return `---\nokf_version: "${OKF_EXPORT_VERSION}"\n---\n\n# Decision Records\n\n${sections.join("\n\n")}\n`;
511
+ }
512
+
513
+ function renderDecision(record: DecisionRecord, timestamp: string): string {
514
+ const fields: Record<string, unknown> = {
515
+ id: record.id,
516
+ title: record.title,
517
+ status: record.status,
518
+ context: record.context,
519
+ decision: record.decision,
520
+ ...(record.consequences !== undefined ? { consequences: record.consequences } : {}),
521
+ entityRefs: record.entityRefs,
522
+ ...(record.supersedes !== undefined ? { supersedes: record.supersedes } : {}),
523
+ type: OKF_DECISION_RECORD_TYPE,
524
+ timestamp,
525
+ };
526
+ const lines: string[] = [];
527
+ if (record.context) lines.push(record.context, "");
528
+ lines.push("# Decision", "");
529
+ if (record.decision) lines.push(record.decision, "");
530
+ if (record.consequences && record.consequences.length > 0) {
531
+ lines.push("# Consequences", "", record.consequences, "");
532
+ }
533
+ if (record.supersedes !== undefined) {
534
+ lines.push(`- supersedes: [${record.supersedes}](/decisions/${decisionFileStem({ id: record.supersedes })}.md)`, "");
535
+ }
536
+ return renderFrontmatter(fields) + lines.join("\n").trimEnd() + "\n";
537
+ }
538
+
539
+ function renderRootIndex(
540
+ repoName: string,
541
+ projectId: string,
542
+ architectureCard: boolean,
543
+ decisions: number,
544
+ keptFiles: readonly GraphFileRow[],
545
+ totalFiles: readonly GraphFileRow[],
546
+ truncated: boolean,
547
+ ): string {
548
+ const lines: string[] = [
549
+ `# ${repoName} Code Graph`,
550
+ "",
551
+ `- project: ${projectId}`,
552
+ architectureCard ? "- [Architecture card](/architecture.md)" : "- architecture card: none stored",
553
+ `- decision records: ${decisions}`,
554
+ `- code modules: ${keptFiles.length} of ${totalFiles.length} indexed files`,
555
+ "",
556
+ ];
557
+ if (truncated) {
558
+ lines.push(
559
+ OKF_CODEGRAPH_TRUNCATION_MARKER,
560
+ `Truncated to the ${keptFiles.length} files with the most symbols of ${totalFiles.length} in the graph; raise --max-module-concepts to widen.`,
561
+ "",
562
+ );
563
+ }
564
+ return `---\nokf_version: "${OKF_EXPORT_VERSION}"\n---\n\n${lines.join("\n")}\n`;
565
+ }
@@ -2569,6 +2569,7 @@ test("parseConfig forwards activity source settings", () => {
2569
2569
  minConfidence: 0.7,
2570
2570
  minImportance: "normal",
2571
2571
  maxMemoriesPerDay: 0,
2572
+ timeline: { enabled: false },
2572
2573
  });
2573
2574
  });
2574
2575
 
package/src/config.ts CHANGED
@@ -43,12 +43,10 @@ import { parseExtractionLivenessConfig } from "./extraction-liveness.js";
43
43
  import { parseReplicaPeersConfig } from "./replica-peers-config.js";
44
44
  import { parseDependencyPropagationConfig } from "./dependency-propagation-config.js";
45
45
  import { parseProceduralMaintenanceConfig } from "./procedural/maintenance-config.js";
46
+ import { parseActiveContextFields } from "./active-context-config.js";
46
47
  import { parseSkillProjectionConfig } from "./procedural/skill-projection.js";
47
48
  import { parseDriftDetectionConfig } from "./preferences/drift-config.js";
48
- import {
49
- parseContradictionLocalizationConfig,
50
- parseContradictionScanConfig,
51
- } from "./contradiction-config.js";
49
+ import { parseContradictionLocalizationConfig, parseContradictionScanConfig } from "./contradiction-config.js";
52
50
  import { parseGraphPathScoringConfig } from "./graph-path-scoring-config.js";
53
51
  import { hasLegacyConnectorEntries } from "./connectors/paths.js";
54
52
  import {
@@ -699,7 +697,6 @@ function resolveMemoryOsPreset(value: unknown): MemoryOsPresetName | undefined {
699
697
  }
700
698
  return MEMORY_OS_PRESET_ALIASES[normalized];
701
699
  }
702
-
703
700
  export function parseConfig(
704
701
  raw: unknown,
705
702
  rawOperatorConfig?: Record<string, unknown> | null,
@@ -3306,6 +3303,7 @@ export function parseConfig(
3306
3303
  typeof cfg.maxCompressionTokensPerHour === "number"
3307
3304
  ? Math.max(0, Math.floor(cfg.maxCompressionTokensPerHour))
3308
3305
  : 1500,
3306
+ ...parseActiveContextFields(cfg),
3309
3307
  behaviorLoopAutoTuneEnabled: cfg.behaviorLoopAutoTuneEnabled === true,
3310
3308
  behaviorLoopLearningWindowDays:
3311
3309
  typeof cfg.behaviorLoopLearningWindowDays === "number"