@remnic/core 9.69.37 → 9.69.39

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 (697) hide show
  1. package/dist/access-admin-ops-surface.d.ts +14 -12
  2. package/dist/access-admin-ops-surface.js +86 -83
  3. package/dist/access-authorization-probe.d.ts +14 -12
  4. package/dist/access-authorization-probe.js +87 -84
  5. package/dist/access-boundary.d.ts +14 -12
  6. package/dist/access-boundary.js +86 -83
  7. package/dist/access-cli.js +197 -191
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +2 -1
  10. package/dist/access-extraction-force-flush.d.ts +14 -12
  11. package/dist/access-extraction-force-flush.js +86 -83
  12. package/dist/access-health-types.d.ts +2 -1
  13. package/dist/access-http-briefing.d.ts +14 -12
  14. package/dist/access-http-briefing.js +87 -84
  15. package/dist/access-http-lcm-compaction.d.ts +14 -12
  16. package/dist/access-http-lifecycle-flush.d.ts +14 -12
  17. package/dist/access-http-offline-stream.d.ts +14 -12
  18. package/dist/access-http-query.d.ts +3 -2
  19. package/dist/access-http-query.js +88 -85
  20. package/dist/access-http.d.ts +15 -13
  21. package/dist/access-http.js +108 -105
  22. package/dist/access-identity-continuity-surface.d.ts +12 -10
  23. package/dist/access-identity-continuity-surface.js +86 -83
  24. package/dist/access-lcm-surface.d.ts +14 -12
  25. package/dist/access-lcm-surface.js +86 -83
  26. package/dist/access-mcp.d.ts +14 -12
  27. package/dist/access-mcp.js +97 -94
  28. package/dist/access-memory-search-fanout.d.ts +3 -2
  29. package/dist/{access-namespace-preflight-CV5cHujx.d.ts → access-namespace-preflight-DY4z6L5X.d.ts} +1 -1
  30. package/dist/access-namespace-preflight.d.ts +4 -3
  31. package/dist/access-namespace-preflight.js +86 -83
  32. package/dist/access-observe-transcript.d.ts +12 -10
  33. package/dist/access-observe-write-category.d.ts +37 -0
  34. package/dist/access-observe-write-category.js +34 -0
  35. package/dist/access-observe-write-surface.d.ts +17 -15
  36. package/dist/access-observe-write-surface.js +86 -83
  37. package/dist/access-offline-manifest.d.ts +12 -10
  38. package/dist/access-offline-manifest.js +15 -15
  39. package/dist/access-operations-batch.js +91 -88
  40. package/dist/access-operations.d.ts +17 -30
  41. package/dist/access-operations.js +96 -93
  42. package/dist/access-recall-concurrency.d.ts +14 -12
  43. package/dist/access-recall-concurrency.js +86 -83
  44. package/dist/access-recall-response.d.ts +14 -12
  45. package/dist/access-recall-response.js +86 -83
  46. package/dist/access-recall-surface.d.ts +14 -12
  47. package/dist/access-recall-surface.js +86 -83
  48. package/dist/access-schema.d.ts +210 -107
  49. package/dist/access-schema.js +9 -15
  50. package/dist/{access-service-DwHC7lcV.d.ts → access-service-MY4bsr_Q.d.ts} +101 -77
  51. package/dist/access-service-helpers.d.ts +14 -12
  52. package/dist/access-service.d.ts +14 -12
  53. package/dist/access-service.js +86 -83
  54. package/dist/access-surface-catalog.d.ts +14 -12
  55. package/dist/access-surface-catalog.js +88 -85
  56. package/dist/access-surface-catalog.js.map +1 -1
  57. package/dist/access-wearables-meetings-surface.d.ts +5 -3
  58. package/dist/action-confidence.d.ts +2 -1
  59. package/dist/active-memory-bridge.d.ts +2 -1
  60. package/dist/active-memory-bridge.js +3 -3
  61. package/dist/active-recall.d.ts +2 -1
  62. package/dist/active-recall.js +20 -17
  63. package/dist/active-recall.js.map +1 -1
  64. package/dist/activity/digest.d.ts +2 -1
  65. package/dist/adapters/index.js +4 -4
  66. package/dist/adapters/registry.js +2 -2
  67. package/dist/ambient-provenance.d.ts +2 -1
  68. package/dist/artifact-search.d.ts +2 -1
  69. package/dist/{auto-sync-FSRJDU63.js → auto-sync-RP4C6ZPF.js} +11 -9
  70. package/dist/{auto-sync-FSRJDU63.js.map → auto-sync-RP4C6ZPF.js.map} +1 -1
  71. package/dist/background-generation-config.d.ts +10 -0
  72. package/dist/background-generation-config.js +9 -0
  73. package/dist/background-generation.d.ts +25 -0
  74. package/dist/background-generation.js +11 -0
  75. package/dist/behavior-learner.d.ts +2 -1
  76. package/dist/behavior-signals.d.ts +2 -1
  77. package/dist/bootstrap.d.ts +12 -10
  78. package/dist/briefing-window.d.ts +3 -2
  79. package/dist/briefing.d.ts +3 -2
  80. package/dist/briefing.js +27 -26
  81. package/dist/buffer-surprise-report.d.ts +2 -1
  82. package/dist/buffer-turn-helpers.d.ts +2 -1
  83. package/dist/buffer.d.ts +3 -2
  84. package/dist/buffer.js +8 -8
  85. package/dist/bulk-import/index.d.ts +4 -3
  86. package/dist/calibration.d.ts +3 -1
  87. package/dist/calibration.js +4 -2
  88. package/dist/calibration.js.map +1 -1
  89. package/dist/capabilities.d.ts +2 -1
  90. package/dist/{capsule-crypto-YO5QJ6L3.js → capsule-crypto-7FJQINUR.js} +2 -2
  91. package/dist/{capsule-merge-ZCXUPLNJ.js → capsule-merge-IPG4IOFP.js} +2 -2
  92. package/dist/{catalog-Cl4H8N89.d.ts → catalog-CW87xGx8.d.ts} +1 -1
  93. package/dist/causal-behavior.d.ts +2 -1
  94. package/dist/causal-behavior.js +2 -2
  95. package/dist/causal-chain.js +2 -2
  96. package/dist/causal-consolidation.d.ts +2 -1
  97. package/dist/causal-consolidation.js +29 -28
  98. package/dist/causal-consolidation.js.map +1 -1
  99. package/dist/causal-retrieval.js +2 -2
  100. package/dist/causal-trajectory-graph.d.ts +2 -1
  101. package/dist/causal-trajectory-graph.js +2 -2
  102. package/dist/causal-trajectory.js +1 -1
  103. package/dist/{chunk-YHU5XUF4.js → chunk-27MKMTBY.js} +2 -2
  104. package/dist/{chunk-TK4FHQRN.js → chunk-2J3V5QEO.js} +4 -4
  105. package/dist/{chunk-BXLOS5AJ.js → chunk-2NLLXCJG.js} +2 -2
  106. package/dist/chunk-2QG4SLZI.js +44 -0
  107. package/dist/chunk-2QG4SLZI.js.map +1 -0
  108. package/dist/{chunk-TFRDUD3M.js → chunk-2ZTDRNCS.js} +2 -2
  109. package/dist/{chunk-PWPIERBM.js → chunk-37CAEC7E.js} +4 -4
  110. package/dist/{chunk-X7BCM2NA.js → chunk-3EKVN2OP.js} +2 -2
  111. package/dist/{chunk-S2ULTQZR.js → chunk-3N3PBBEH.js} +2 -2
  112. package/dist/{chunk-XCF3SFHD.js → chunk-3NPNBVFR.js} +2 -2
  113. package/dist/{chunk-JO5TQAKW.js → chunk-4BCHFSC7.js} +3 -3
  114. package/dist/{chunk-Q6D7EUSQ.js → chunk-4JVQRFZD.js} +10 -10
  115. package/dist/{chunk-YEDVOYL2.js → chunk-4RX5O34R.js} +2 -2
  116. package/dist/{chunk-JMPYZJQN.js → chunk-4RZLTZVM.js} +4 -4
  117. package/dist/{chunk-Q7JK6YEB.js → chunk-54NX5EG4.js} +2 -2
  118. package/dist/{chunk-GWK7FEUL.js → chunk-5FAGCOZD.js} +4 -4
  119. package/dist/{chunk-2PUE5P7C.js → chunk-5N4MZLEH.js} +5 -5
  120. package/dist/{chunk-B2YKTE7P.js → chunk-5SPCMAUC.js} +10 -10
  121. package/dist/{chunk-3OHISDDW.js → chunk-5U7K4W6K.js} +2 -2
  122. package/dist/{chunk-CYEMS2PG.js → chunk-5YCNDC3C.js} +3 -3
  123. package/dist/{chunk-PAAJWQH5.js → chunk-62D2PAAM.js} +4 -4
  124. package/dist/{chunk-52II7PB6.js → chunk-645WOU5I.js} +4 -4
  125. package/dist/chunk-6AGWBKQU.js +94 -0
  126. package/dist/chunk-6AGWBKQU.js.map +1 -0
  127. package/dist/{chunk-326KUXIR.js → chunk-6EHM2AV7.js} +6 -6
  128. package/dist/{chunk-YM7YN37H.js → chunk-6ET2VII7.js} +2 -2
  129. package/dist/chunk-6H2G7RFT.js +58 -0
  130. package/dist/chunk-6H2G7RFT.js.map +1 -0
  131. package/dist/{chunk-A2YQL2FF.js → chunk-6P4REYKL.js} +5 -5
  132. package/dist/{chunk-7RKBPXY6.js → chunk-6YAIN5XJ.js} +2 -2
  133. package/dist/{chunk-2L5FSNPC.js → chunk-A7GQBJP5.js} +10 -10
  134. package/dist/{chunk-UYVXIY6C.js → chunk-AAZEKXUP.js} +2 -2
  135. package/dist/{chunk-JR6PP7UM.js → chunk-ACY4ZPF7.js} +28 -2
  136. package/dist/chunk-ACY4ZPF7.js.map +1 -0
  137. package/dist/{chunk-IQZ6ISFX.js → chunk-AECJY3GJ.js} +2 -2
  138. package/dist/{chunk-76DRU7C4.js → chunk-AENM6GKU.js} +2 -2
  139. package/dist/{chunk-KTRXQQFN.js → chunk-B36GUU6T.js} +4 -4
  140. package/dist/{chunk-TLHNF6GA.js → chunk-BV4ZKIZH.js} +1 -1
  141. package/dist/{chunk-ZWEZXVYH.js → chunk-CEO4DONG.js} +2 -2
  142. package/dist/chunk-CWTCMZGE.js +858 -0
  143. package/dist/chunk-CWTCMZGE.js.map +1 -0
  144. package/dist/{chunk-ZEPVWLCN.js → chunk-CZTPU65V.js} +25 -25
  145. package/dist/{chunk-TRU6JBOI.js → chunk-D545Z7UH.js} +3 -3
  146. package/dist/{chunk-6E5GYDIE.js → chunk-DGS34QSY.js} +2 -2
  147. package/dist/{chunk-65RENJGB.js → chunk-E2AWJ7KQ.js} +8 -4
  148. package/dist/chunk-E2AWJ7KQ.js.map +1 -0
  149. package/dist/{chunk-6Z3WW2MW.js → chunk-ENBPQEVU.js} +3 -3
  150. package/dist/{chunk-DOKKRZPH.js → chunk-EYKIDK33.js} +21 -19
  151. package/dist/chunk-EYKIDK33.js.map +1 -0
  152. package/dist/{chunk-PNEDMJ53.js → chunk-F4EHXVP7.js} +2 -2
  153. package/dist/{chunk-JPKZTCWZ.js → chunk-FNHLI2RE.js} +3 -3
  154. package/dist/{chunk-D2DIYEFW.js → chunk-FWWWUPOE.js} +12 -36
  155. package/dist/chunk-FWWWUPOE.js.map +1 -0
  156. package/dist/{chunk-M3MYMWXG.js → chunk-FXHOZGSE.js} +2 -2
  157. package/dist/{chunk-SAKA6PPL.js → chunk-GAS7KYC7.js} +5 -5
  158. package/dist/{chunk-LSLCFCCQ.js → chunk-GDYU6VF4.js} +1 -1
  159. package/dist/chunk-GDYU6VF4.js.map +1 -0
  160. package/dist/{chunk-2AR5JFD7.js → chunk-GG5FHZJJ.js} +6 -6
  161. package/dist/{chunk-WS3WNLST.js → chunk-GI4ZBWPQ.js} +3 -3
  162. package/dist/{chunk-JYR4LH76.js → chunk-GMIQV6DD.js} +2 -2
  163. package/dist/{chunk-WIKO4SCR.js → chunk-H3TKENU4.js} +5 -5
  164. package/dist/{chunk-ZLN7AROH.js → chunk-HIP6DKJJ.js} +5 -5
  165. package/dist/{chunk-SF6RFI5Z.js → chunk-HWLIMQE2.js} +2 -2
  166. package/dist/{chunk-JZYECQWN.js → chunk-IL6ODG6M.js} +2 -2
  167. package/dist/{chunk-GNR6YEWZ.js → chunk-IQEJIOEU.js} +6 -6
  168. package/dist/{chunk-BICNRVEC.js → chunk-IWO6QXWJ.js} +2 -2
  169. package/dist/{chunk-RN3MVLW3.js → chunk-IYKZJVL5.js} +1 -1
  170. package/dist/chunk-IYKZJVL5.js.map +1 -0
  171. package/dist/{chunk-42DJ235G.js → chunk-J272ODKJ.js} +2 -2
  172. package/dist/{chunk-R3TLVTWW.js → chunk-JDX2OA4R.js} +3 -3
  173. package/dist/{chunk-G5MO3VQA.js → chunk-JKKII6GX.js} +2 -2
  174. package/dist/{chunk-L5OXE4PX.js → chunk-JTQR6L2N.js} +3 -3
  175. package/dist/{chunk-VDX2J7OX.js → chunk-KQAFEZQX.js} +2 -2
  176. package/dist/{chunk-AKE4GGQ3.js → chunk-KQW3YGEN.js} +2 -2
  177. package/dist/{chunk-LMMQKZK3.js → chunk-L63GFNKL.js} +1 -1
  178. package/dist/{chunk-BRZWWUCJ.js → chunk-LMLGBG6H.js} +2 -2
  179. package/dist/{chunk-3IXB77DA.js → chunk-LPYYY4AP.js} +318 -278
  180. package/dist/chunk-LPYYY4AP.js.map +1 -0
  181. package/dist/{chunk-YEN4TREG.js → chunk-LQNRVPTV.js} +54 -567
  182. package/dist/chunk-LQNRVPTV.js.map +1 -0
  183. package/dist/{chunk-CQ7SSBO4.js → chunk-M6HBPLBA.js} +2 -2
  184. package/dist/chunk-MCRVQ5YQ.js +14 -0
  185. package/dist/chunk-MCRVQ5YQ.js.map +1 -0
  186. package/dist/{chunk-3YMDY3ZF.js → chunk-MUTVRKKY.js} +16 -16
  187. package/dist/{chunk-FCFAYMTU.js → chunk-NXGSONWM.js} +2 -2
  188. package/dist/{chunk-4WGAMREC.js → chunk-O4M4BDIJ.js} +2 -2
  189. package/dist/{chunk-5SYI2F47.js → chunk-O76F5QPP.js} +2 -2
  190. package/dist/{chunk-SROIT6QY.js → chunk-OPBFP4TF.js} +28 -11
  191. package/dist/chunk-OPBFP4TF.js.map +1 -0
  192. package/dist/{chunk-7MJBKZPU.js → chunk-P4ZAEYKG.js} +68 -34
  193. package/dist/chunk-P4ZAEYKG.js.map +1 -0
  194. package/dist/{chunk-57GDHV2D.js → chunk-PCOVEDPK.js} +6 -6
  195. package/dist/{chunk-PPTOAHTZ.js → chunk-PGAB2V53.js} +2 -2
  196. package/dist/{chunk-HHDTBYDJ.js → chunk-Q432REND.js} +2 -2
  197. package/dist/{chunk-XAITGGX5.js → chunk-Q4AUIFUA.js} +4 -4
  198. package/dist/{chunk-5LLQAUMI.js → chunk-Q7CLGFA7.js} +3 -3
  199. package/dist/{chunk-KUK56OPR.js → chunk-QHT7MOUF.js} +12 -12
  200. package/dist/{chunk-W6IJMWTZ.js → chunk-QTQ6XKGT.js} +4 -4
  201. package/dist/{chunk-FLLORID2.js → chunk-RLJHJQUY.js} +9 -9
  202. package/dist/{chunk-353KGBKY.js → chunk-RW4QNB4J.js} +4 -4
  203. package/dist/{chunk-GWQVMKUJ.js → chunk-SCXURCVT.js} +3 -3
  204. package/dist/{chunk-FQXJAC3T.js → chunk-SGUDMW2K.js} +4 -4
  205. package/dist/{chunk-LSDEIZ76.js → chunk-TA4C3XB7.js} +6 -6
  206. package/dist/{chunk-YIZ2EUUL.js → chunk-TNZNSMVJ.js} +94 -94
  207. package/dist/{chunk-CIYUWSMZ.js → chunk-TRLOFIQC.js} +2 -2
  208. package/dist/{chunk-TL7NLM2L.js → chunk-TSP5WH72.js} +2 -2
  209. package/dist/{chunk-3K6UFW5B.js → chunk-UHRZ324M.js} +8 -8
  210. package/dist/{chunk-JLXWRQNR.js → chunk-UZEHHXYC.js} +170 -167
  211. package/dist/chunk-UZEHHXYC.js.map +1 -0
  212. package/dist/{chunk-A5UQ52YQ.js → chunk-UZZ7SQT3.js} +5 -5
  213. package/dist/{chunk-GHX5PNXW.js → chunk-VBSNUH4J.js} +2 -2
  214. package/dist/{chunk-MR6LQVZ5.js → chunk-VJIE4D2I.js} +3 -3
  215. package/dist/{chunk-OTPXEE6W.js → chunk-VSL63CFJ.js} +15 -12
  216. package/dist/chunk-VSL63CFJ.js.map +1 -0
  217. package/dist/{chunk-2JGGZICG.js → chunk-WBM2MVBK.js} +2 -2
  218. package/dist/{chunk-CD3C4BJN.js → chunk-WIWLX65T.js} +2 -2
  219. package/dist/{chunk-GDDSXVWR.js → chunk-X4TD4O2F.js} +3 -3
  220. package/dist/{chunk-DQEMWVMT.js → chunk-X7Y7WX73.js} +1 -1
  221. package/dist/{chunk-FPQDZCUX.js → chunk-XH3HGI2N.js} +2 -2
  222. package/dist/{chunk-C6KRO3SU.js → chunk-XVDZFTN5.js} +4 -4
  223. package/dist/{chunk-3SL52JKD.js → chunk-XVZA6VXC.js} +4 -4
  224. package/dist/chunk-YDVAM7S4.js +221 -0
  225. package/dist/chunk-YDVAM7S4.js.map +1 -0
  226. package/dist/chunk-YFTNZMGR.js +71 -0
  227. package/dist/chunk-YFTNZMGR.js.map +1 -0
  228. package/dist/{chunk-VELCIWJZ.js → chunk-YKREX63Z.js} +19 -10
  229. package/dist/chunk-YKREX63Z.js.map +1 -0
  230. package/dist/{chunk-BLHX5FQW.js → chunk-YUW66UAH.js} +2 -2
  231. package/dist/{chunk-DOQLHCSS.js → chunk-ZBW7A667.js} +2 -2
  232. package/dist/{chunk-4DPDIOVA.js → chunk-ZEGL7YCC.js} +2 -2
  233. package/dist/{chunk-VVX5PZFS.js → chunk-ZHXSOMYH.js} +2 -2
  234. package/dist/{chunk-GCBIXUPT.js → chunk-ZMWSYUUL.js} +2 -2
  235. package/dist/{chunk-X2QPKLPL.js → chunk-ZZUVBZL2.js} +2 -2
  236. package/dist/{cli-1mzd5TM4.d.ts → cli-DGq0MNpO.d.ts} +5 -5
  237. package/dist/cli-fallback.d.ts +4 -2
  238. package/dist/cli-fallback.js +3 -1
  239. package/dist/cli.d.ts +16 -14
  240. package/dist/cli.js +139 -134
  241. package/dist/coding/export-okf-codegraph.d.ts +2 -1
  242. package/dist/coding/export-okf-codegraph.js +26 -25
  243. package/dist/coding/export-okf-codegraph.js.map +1 -1
  244. package/dist/coding/pre-action-gate.d.ts +2 -1
  245. package/dist/coding/pre-action-gate.js +2 -2
  246. package/dist/compat/codex-cli-fallback.d.ts +1 -1
  247. package/dist/compat/codex-cli-fallback.js +3 -1
  248. package/dist/compat/codex-cli-fallback.js.map +1 -1
  249. package/dist/compounding/engine.d.ts +3 -2
  250. package/dist/compounding/engine.js +27 -26
  251. package/dist/compounding/preference-consolidator.d.ts +2 -1
  252. package/dist/compression-optimizer.d.ts +2 -1
  253. package/dist/config.d.ts +2 -1
  254. package/dist/config.js +18 -15
  255. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  256. package/dist/connectors/codex-materialize-runner.js +26 -25
  257. package/dist/connectors/codex-materialize.d.ts +2 -1
  258. package/dist/connectors/index.d.ts +2 -1
  259. package/dist/connectors/index.js +29 -28
  260. package/dist/consolidation-provenance-check.d.ts +3 -2
  261. package/dist/consolidation-undo.d.ts +3 -2
  262. package/dist/contradiction/index.d.ts +5 -3
  263. package/dist/contradiction/index.js +7 -7
  264. package/dist/{contradiction-scan-GVD4JJ7B.js → contradiction-scan-BSGKZHYJ.js} +4 -4
  265. package/dist/contradiction-scan-BSGKZHYJ.js.map +1 -0
  266. package/dist/converge-config.d.ts +2 -1
  267. package/dist/convergence-refresh.d.ts +3 -2
  268. package/dist/convergence-refresh.js +29 -28
  269. package/dist/conversation-index/backend.d.ts +2 -1
  270. package/dist/conversation-index/chunker.d.ts +2 -1
  271. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  272. package/dist/conversation-index/indexer.d.ts +2 -1
  273. package/dist/conversation-index/search.d.ts +2 -1
  274. package/dist/corpus-watermark.d.ts +2 -1
  275. package/dist/corpus-watermark.js +29 -28
  276. package/dist/cross-lingual-recall.d.ts +2 -1
  277. package/dist/day-summary.d.ts +2 -1
  278. package/dist/deep-recall-http-glue.d.ts +14 -12
  279. package/dist/deep-recall-http-glue.js +4 -14
  280. package/dist/deep-recall-mcp-tools.d.ts +14 -12
  281. package/dist/deep-recall-policy-llm.d.ts +3 -1
  282. package/dist/deep-recall-policy-llm.js +5 -3
  283. package/dist/deep-recall-seeds.d.ts +2 -1
  284. package/dist/delinearize.d.ts +2 -1
  285. package/dist/dependency-propagation-config.d.ts +2 -1
  286. package/dist/{dependency-propagation-delivery-Bua2ApHV.d.ts → dependency-propagation-delivery-Cq1ekOwV.d.ts} +1 -1
  287. package/dist/direct-answer-wiring.d.ts +2 -1
  288. package/dist/direct-answer.d.ts +2 -1
  289. package/dist/embedding-fallback.d.ts +2 -1
  290. package/dist/enrichment/index.d.ts +2 -1
  291. package/dist/entity-origin-fields.d.ts +2 -1
  292. package/dist/entity-retrieval.d.ts +3 -2
  293. package/dist/entity-retrieval.js +28 -27
  294. package/dist/entity-schema.d.ts +2 -1
  295. package/dist/episodic-context.d.ts +2 -1
  296. package/dist/eval-trajectory-contracts.d.ts +2 -1
  297. package/dist/eval-trajectory-store.d.ts +2 -1
  298. package/dist/eval-trajectory.d.ts +2 -1
  299. package/dist/event-order-recall.js +3 -3
  300. package/dist/explicit-capture.d.ts +12 -10
  301. package/dist/explicit-capture.js +6 -6
  302. package/dist/external-wiki-access.d.ts +14 -12
  303. package/dist/external-wiki-access.js +87 -84
  304. package/dist/external-wiki-collection-registration.d.ts +2 -1
  305. package/dist/external-wiki-collection.d.ts +2 -1
  306. package/dist/external-wiki-mcp-tools.d.ts +14 -12
  307. package/dist/extraction-error-classification.d.ts +2 -1
  308. package/dist/extraction-faithfulness.d.ts +3 -1
  309. package/dist/extraction-faithfulness.js +5 -3
  310. package/dist/extraction-judge-telemetry.d.ts +3 -1
  311. package/dist/extraction-judge-training.d.ts +3 -1
  312. package/dist/extraction-judge.d.ts +3 -1
  313. package/dist/extraction-judge.js +5 -3
  314. package/dist/extraction-liveness.d.ts +2 -1
  315. package/dist/extraction-normalization.d.ts +2 -1
  316. package/dist/extraction-prompt.d.ts +2 -1
  317. package/dist/extraction-source-grounding-rules.d.ts +2 -1
  318. package/dist/extraction-source-grounding.d.ts +2 -1
  319. package/dist/extraction-source-grounding.js +3 -3
  320. package/dist/extraction-span-config.d.ts +2 -1
  321. package/dist/extraction-span-materialize.d.ts +2 -1
  322. package/dist/extraction-span-materialize.js +2 -2
  323. package/dist/extraction.d.ts +2 -1
  324. package/dist/extraction.js +46 -45
  325. package/dist/fallback-llm-codex-subscription.d.ts +79 -0
  326. package/dist/fallback-llm-codex-subscription.js +22 -0
  327. package/dist/fallback-llm-codex-subscription.js.map +1 -0
  328. package/dist/fallback-llm.d.ts +5 -1
  329. package/dist/fallback-llm.js +4 -2
  330. package/dist/{first-start-migration-GZ45G5FS.js → first-start-migration-ZWMV5CX4.js} +6 -6
  331. package/dist/{generic-recall-paths-DJBADojG.d.ts → generic-recall-paths-BcySh_f9.d.ts} +1 -1
  332. package/dist/graph-append-error.d.ts +2 -1
  333. package/dist/graph-dashboard-diff.d.ts +2 -1
  334. package/dist/graph-dashboard-key.d.ts +2 -1
  335. package/dist/graph-dashboard-parser.d.ts +2 -1
  336. package/dist/{graph-edge-decay-ROSUPDX3.js → graph-edge-decay-MKIRZ762.js} +5 -5
  337. package/dist/graph-edge-decay-MKIRZ762.js.map +1 -0
  338. package/dist/graph-edge-reinforcement.d.ts +2 -1
  339. package/dist/graph-jsonl.d.ts +2 -1
  340. package/dist/graph-jsonl.js +3 -3
  341. package/dist/graph-path-reconstruction.d.ts +2 -1
  342. package/dist/graph-path-scoring.d.ts +2 -1
  343. package/dist/graph-snapshot.d.ts +2 -1
  344. package/dist/graph-snapshot.js +3 -3
  345. package/dist/graph.d.ts +2 -1
  346. package/dist/graph.js +2 -2
  347. package/dist/harmonic-retrieval.js +3 -3
  348. package/dist/importance.d.ts +2 -1
  349. package/dist/importers/index.d.ts +2 -1
  350. package/dist/importers/test-utils.d.ts +2 -1
  351. package/dist/in-flight-reads.d.ts +2 -1
  352. package/dist/{index-Bsy8ygLL.d.ts → index-DWOb4wz9.d.ts} +2 -2
  353. package/dist/index.d.ts +713 -705
  354. package/dist/index.js +419 -346
  355. package/dist/intent.d.ts +2 -1
  356. package/dist/lcm/engine.d.ts +2 -1
  357. package/dist/lcm/engine.js +4 -4
  358. package/dist/lcm/index.d.ts +2 -1
  359. package/dist/lcm/index.js +12 -12
  360. package/dist/lcm/tools.d.ts +2 -1
  361. package/dist/lifecycle.d.ts +2 -1
  362. package/dist/live-connectors-runner.d.ts +2 -1
  363. package/dist/local-llm-config.d.ts +7 -1
  364. package/dist/local-llm-config.js +12 -0
  365. package/dist/local-llm.d.ts +2 -1
  366. package/dist/local-model-endpoint.d.ts +2 -1
  367. package/dist/location/index.d.ts +4 -3
  368. package/dist/location/index.js +60 -59
  369. package/dist/maintenance/memory-governance.d.ts +2 -1
  370. package/dist/maintenance/memory-governance.js +26 -25
  371. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  372. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +27 -26
  373. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  374. package/dist/maintenance/rebuild-memory-projection.js +28 -27
  375. package/dist/{maintenance-DItyBwTC.d.ts → maintenance-CW9wCzMP.d.ts} +3 -3
  376. package/dist/mcp-memory-inspector-app.d.ts +14 -12
  377. package/dist/memory-action-policy.d.ts +2 -1
  378. package/dist/memory-cache.d.ts +2 -1
  379. package/dist/memory-controller.d.ts +2 -1
  380. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  381. package/dist/memory-projection-store.d.ts +2 -1
  382. package/dist/memory-provenance.d.ts +2 -1
  383. package/dist/memory-snapshot.d.ts +2 -1
  384. package/dist/memory-subject-cli.d.ts +14 -12
  385. package/dist/memory-subject.d.ts +14 -12
  386. package/dist/memory-worth-outcomes.d.ts +3 -2
  387. package/dist/models-json.d.ts +2 -1
  388. package/dist/namespaces/migrate.d.ts +4 -3
  389. package/dist/namespaces/migrate.js +27 -26
  390. package/dist/namespaces/principal.d.ts +2 -1
  391. package/dist/namespaces/search.d.ts +2 -1
  392. package/dist/namespaces/search.js +6 -6
  393. package/dist/namespaces/storage.d.ts +4 -3
  394. package/dist/namespaces/storage.js +26 -25
  395. package/dist/native-knowledge.d.ts +2 -1
  396. package/dist/offline-sync-impression-drain.d.ts +2 -1
  397. package/dist/offline-sync-impression-drain.js +4 -4
  398. package/dist/operator-doctor-corpus.d.ts +2 -1
  399. package/dist/operator-doctor-corpus.js +30 -29
  400. package/dist/operator-doctor-replica.d.ts +2 -1
  401. package/dist/operator-toolkit.d.ts +4 -3
  402. package/dist/operator-toolkit.js +53 -49
  403. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  404. package/dist/orchestration/maintenance.d.ts +5 -4
  405. package/dist/orchestration/maintenance.js +39 -38
  406. package/dist/{orchestrator-DBUX-aAM.d.ts → orchestrator-ComHLm49.d.ts} +22 -11
  407. package/dist/orchestrator.d.ts +12 -10
  408. package/dist/orchestrator.js +224 -218
  409. package/dist/patterns-cli.d.ts +2 -1
  410. package/dist/{pipeline-BqgcOk1Z.d.ts → pipeline-CiYcqqhl.d.ts} +1 -1
  411. package/dist/policy-runtime.d.ts +2 -1
  412. package/dist/proactive-contention.d.ts +2 -1
  413. package/dist/provenance.d.ts +2 -1
  414. package/dist/provenance.js +2 -2
  415. package/dist/{public-http-CqtZ5kv3.d.ts → public-http-CuK4_Cb1.d.ts} +1 -1
  416. package/dist/qmd-preflight.d.ts +3 -2
  417. package/dist/{qmd-BD0ikV_Y.d.ts → qmd-qXD4vatU.d.ts} +1 -1
  418. package/dist/qmd-recall-cache.d.ts +2 -1
  419. package/dist/qmd.d.ts +3 -2
  420. package/dist/recall-concurrency-config.d.ts +2 -1
  421. package/dist/recall-disclosure-escalation.d.ts +2 -1
  422. package/dist/recall-explain-renderer.d.ts +2 -1
  423. package/dist/recall-explain-renderer.js +3 -3
  424. package/dist/recall-memory-map.d.ts +2 -1
  425. package/dist/recall-navigate-access.d.ts +2 -1
  426. package/dist/recall-navigate-access.js +2 -2
  427. package/dist/recall-navigate-disclosure.d.ts +2 -1
  428. package/dist/recall-navigate-disclosure.js +1 -1
  429. package/dist/recall-navigate.d.ts +2 -1
  430. package/dist/recall-navigate.js +2 -2
  431. package/dist/recall-planner-llm.d.ts +3 -1
  432. package/dist/recall-planner-llm.js +4 -2
  433. package/dist/recall-planner-llm.js.map +1 -1
  434. package/dist/recall-state-view-admission.d.ts +3 -2
  435. package/dist/recall-state-view-admission.js +9 -9
  436. package/dist/recall-state-view-anchors.d.ts +85 -0
  437. package/dist/recall-state-view-anchors.js +21 -0
  438. package/dist/recall-state-view-anchors.js.map +1 -0
  439. package/dist/recall-state-view-inject.js +2 -2
  440. package/dist/recall-state-view-render.js +2 -2
  441. package/dist/recall-state-view-widen.js +2 -2
  442. package/dist/recall-state-view-wire.js +3 -3
  443. package/dist/recall-state-view.d.ts +37 -1
  444. package/dist/recall-state-view.js +11 -3
  445. package/dist/recall-state.d.ts +2 -1
  446. package/dist/recall-tag-filter.d.ts +2 -1
  447. package/dist/recall-timings.d.ts +2 -1
  448. package/dist/recall-xray-cli.d.ts +2 -1
  449. package/dist/recall-xray-cli.js +4 -4
  450. package/dist/recall-xray-renderer.d.ts +2 -1
  451. package/dist/recall-xray-renderer.js +3 -3
  452. package/dist/recall-xray.d.ts +2 -1
  453. package/dist/recall-xray.js +2 -2
  454. package/dist/reconcile/cursor.d.ts +2 -1
  455. package/dist/reconcile/cursor.js +2 -2
  456. package/dist/reconcile/manifest.d.ts +2 -1
  457. package/dist/reconcile/manifest.js +4 -4
  458. package/dist/reconcile/plan.d.ts +2 -1
  459. package/dist/reconcile/plan.js +2 -2
  460. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  461. package/dist/replay/normalizers/claude.d.ts +2 -1
  462. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  463. package/dist/replay/normalizers/shared.d.ts +2 -1
  464. package/dist/replay/runner.d.ts +2 -1
  465. package/dist/replay/types.d.ts +2 -1
  466. package/dist/replica-divergence.d.ts +2 -1
  467. package/dist/replica-peers-config.d.ts +2 -1
  468. package/dist/{resolution-OHJZG45O.js → resolution-4GG3QZRJ.js} +8 -8
  469. package/dist/resolution-4GG3QZRJ.js.map +1 -0
  470. package/dist/resolve-auth-token.d.ts +2 -1
  471. package/dist/resume-bundles.js +19 -16
  472. package/dist/retrieval-agents.d.ts +3 -2
  473. package/dist/retrieval-tiers.d.ts +2 -1
  474. package/dist/routing/engine.d.ts +2 -1
  475. package/dist/routing/store.d.ts +2 -1
  476. package/dist/salvage-envelope.d.ts +2 -1
  477. package/dist/salvage-envelope.js +2 -2
  478. package/dist/schemas.d.ts +160 -160
  479. package/dist/{scope-profiles-BIJMsd0B.d.ts → scope-profiles-BT9rqC3w.d.ts} +1 -1
  480. package/dist/search/embed-helper.d.ts +2 -1
  481. package/dist/search/factory.d.ts +2 -1
  482. package/dist/search/factory.js +5 -5
  483. package/dist/search/index.d.ts +2 -1
  484. package/dist/search/index.js +13 -13
  485. package/dist/search/lancedb-backend.d.ts +2 -1
  486. package/dist/search/meilisearch-backend.d.ts +2 -1
  487. package/dist/search/noop-backend.d.ts +2 -1
  488. package/dist/search/orama-backend.d.ts +2 -1
  489. package/dist/search/port.d.ts +2 -1
  490. package/dist/search/remote-backend.d.ts +2 -1
  491. package/dist/{semantic-consolidation-D7sJocll.d.ts → semantic-consolidation-CmZi7thY.d.ts} +1 -1
  492. package/dist/semantic-consolidation.d.ts +3 -2
  493. package/dist/semantic-consolidation.js +27 -26
  494. package/dist/semantic-rule-promotion.js +26 -25
  495. package/dist/semantic-rule-verifier.d.ts +2 -1
  496. package/dist/semantic-rule-verifier.js +26 -25
  497. package/dist/{service-fwgEngUj.d.ts → service-CLkA7AQB.d.ts} +2 -2
  498. package/dist/session-observer-bands.d.ts +2 -1
  499. package/dist/session-observer-state.d.ts +2 -1
  500. package/dist/shared-context/manager.d.ts +8 -7
  501. package/dist/signal.d.ts +2 -1
  502. package/dist/source-agent-qualifier.d.ts +2 -1
  503. package/dist/source-agent-qualifier.js +41 -40
  504. package/dist/standup/build.js +27 -26
  505. package/dist/{storage-Cbll3-Tk.d.ts → storage-wvX01lht.d.ts} +1 -1
  506. package/dist/storage.d.ts +3 -2
  507. package/dist/storage.js +25 -24
  508. package/dist/subject-config.d.ts +2 -1
  509. package/dist/subject-config.js +2 -2
  510. package/dist/summarizer.d.ts +2 -1
  511. package/dist/summarizer.js +6 -3
  512. package/dist/summary-snapshot.d.ts +2 -1
  513. package/dist/support-passport/index.d.ts +17 -15
  514. package/dist/support-passport/index.js +92 -89
  515. package/dist/temporal-supersession.d.ts +3 -2
  516. package/dist/temporal-timeline-recall.d.ts +2 -1
  517. package/dist/temporal-validity.d.ts +2 -1
  518. package/dist/threading.d.ts +2 -1
  519. package/dist/tier-migration.d.ts +3 -2
  520. package/dist/tier-routing.d.ts +2 -1
  521. package/dist/tier-routing.js +3 -3
  522. package/dist/{tier-stats-VK5PCO2L.js → tier-stats-LUSUUNU6.js} +4 -4
  523. package/dist/topics.d.ts +2 -1
  524. package/dist/transcript.d.ts +2 -1
  525. package/dist/transfer/backup.js +2 -2
  526. package/dist/transfer/capsule-export.js +2 -2
  527. package/dist/transfer/capsule-import.js +3 -3
  528. package/dist/transfer/export-okf.d.ts +2 -1
  529. package/dist/transfer/export-okf.js +26 -25
  530. package/dist/transfer/types.d.ts +78 -78
  531. package/dist/trust-score-stage.d.ts +2 -1
  532. package/dist/trust-score.d.ts +2 -1
  533. package/dist/{types-48sPkWB0.d.ts → types-Cyr32ABj.d.ts} +3 -1
  534. package/dist/types.d.ts +2 -1
  535. package/dist/types.js +1 -1
  536. package/dist/utility-runtime.d.ts +2 -1
  537. package/dist/verified-recall.js +26 -25
  538. package/dist/who-knows-cli.d.ts +14 -12
  539. package/dist/who-knows-cli.js +27 -26
  540. package/dist/who-knows.d.ts +14 -12
  541. package/dist/who-knows.js +26 -25
  542. package/dist/write-envelope.d.ts +7 -1
  543. package/dist/write-envelope.js +1 -1
  544. package/package.json +2 -2
  545. package/src/access-boundary.ts +21 -6
  546. package/src/access-category-alias.test.ts +488 -51
  547. package/src/access-http.test.ts +249 -0
  548. package/src/access-http.ts +2 -0
  549. package/src/access-mcp.test.ts +2 -2
  550. package/src/access-observe-write-category.ts +25 -0
  551. package/src/access-observe-write-surface.ts +58 -57
  552. package/src/access-operations-batch.ts +28 -2
  553. package/src/access-operations.ts +6 -4
  554. package/src/access-schema.ts +106 -50
  555. package/src/access-service.ts +23 -9
  556. package/src/background-generation-config.ts +79 -0
  557. package/src/background-generation.test.ts +123 -0
  558. package/src/background-generation.ts +52 -0
  559. package/src/cli-fallback.ts +8 -2
  560. package/src/config.test.ts +172 -0
  561. package/src/config.ts +2 -43
  562. package/src/fallback-llm-codex-subscription.ts +168 -0
  563. package/src/fallback-llm.test.ts +46 -0
  564. package/src/fallback-llm.ts +60 -48
  565. package/src/index.ts +2 -16
  566. package/src/local-llm-config.ts +84 -0
  567. package/src/orchestration/recall-internal.ts +91 -74
  568. package/src/orchestration/recall-rerank-coordinator.ts +41 -4
  569. package/src/orchestration/recall-search-pipeline.ts +25 -18
  570. package/src/orchestration/recall-state-view-pipeline.test.ts +89 -0
  571. package/src/providers/codex-subscription.test.ts +804 -1
  572. package/src/providers/codex-subscription.ts +407 -65
  573. package/src/recall-rerank-coordinator.test.ts +153 -0
  574. package/src/recall-state-view-anchors.ts +163 -0
  575. package/src/recall-state-view-widen.ts +21 -7
  576. package/src/recall-state-view-zero-diff.test.ts +30 -0
  577. package/src/recall-state-view.test.ts +161 -0
  578. package/src/recall-state-view.ts +206 -35
  579. package/src/summarizer.ts +25 -0
  580. package/src/trust-score-recall-paths.test.ts +1 -1
  581. package/src/types.ts +3 -2
  582. package/src/write-envelope.ts +5 -0
  583. package/dist/chunk-255PC37A.js +0 -120
  584. package/dist/chunk-255PC37A.js.map +0 -1
  585. package/dist/chunk-3IXB77DA.js.map +0 -1
  586. package/dist/chunk-65RENJGB.js.map +0 -1
  587. package/dist/chunk-7MJBKZPU.js.map +0 -1
  588. package/dist/chunk-D2DIYEFW.js.map +0 -1
  589. package/dist/chunk-DOKKRZPH.js.map +0 -1
  590. package/dist/chunk-JLXWRQNR.js.map +0 -1
  591. package/dist/chunk-JR6PP7UM.js.map +0 -1
  592. package/dist/chunk-LSLCFCCQ.js.map +0 -1
  593. package/dist/chunk-OTPXEE6W.js.map +0 -1
  594. package/dist/chunk-RN3MVLW3.js.map +0 -1
  595. package/dist/chunk-SROIT6QY.js.map +0 -1
  596. package/dist/chunk-VELCIWJZ.js.map +0 -1
  597. package/dist/chunk-YEN4TREG.js.map +0 -1
  598. /package/dist/{capsule-crypto-YO5QJ6L3.js.map → access-observe-write-category.js.map} +0 -0
  599. /package/dist/{contradiction-scan-GVD4JJ7B.js.map → background-generation-config.js.map} +0 -0
  600. /package/dist/{graph-edge-decay-ROSUPDX3.js.map → background-generation.js.map} +0 -0
  601. /package/dist/{resolution-OHJZG45O.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
  602. /package/dist/{capsule-merge-ZCXUPLNJ.js.map → capsule-merge-IPG4IOFP.js.map} +0 -0
  603. /package/dist/{chunk-YHU5XUF4.js.map → chunk-27MKMTBY.js.map} +0 -0
  604. /package/dist/{chunk-TK4FHQRN.js.map → chunk-2J3V5QEO.js.map} +0 -0
  605. /package/dist/{chunk-BXLOS5AJ.js.map → chunk-2NLLXCJG.js.map} +0 -0
  606. /package/dist/{chunk-TFRDUD3M.js.map → chunk-2ZTDRNCS.js.map} +0 -0
  607. /package/dist/{chunk-PWPIERBM.js.map → chunk-37CAEC7E.js.map} +0 -0
  608. /package/dist/{chunk-X7BCM2NA.js.map → chunk-3EKVN2OP.js.map} +0 -0
  609. /package/dist/{chunk-S2ULTQZR.js.map → chunk-3N3PBBEH.js.map} +0 -0
  610. /package/dist/{chunk-XCF3SFHD.js.map → chunk-3NPNBVFR.js.map} +0 -0
  611. /package/dist/{chunk-JO5TQAKW.js.map → chunk-4BCHFSC7.js.map} +0 -0
  612. /package/dist/{chunk-Q6D7EUSQ.js.map → chunk-4JVQRFZD.js.map} +0 -0
  613. /package/dist/{chunk-YEDVOYL2.js.map → chunk-4RX5O34R.js.map} +0 -0
  614. /package/dist/{chunk-JMPYZJQN.js.map → chunk-4RZLTZVM.js.map} +0 -0
  615. /package/dist/{chunk-Q7JK6YEB.js.map → chunk-54NX5EG4.js.map} +0 -0
  616. /package/dist/{chunk-GWK7FEUL.js.map → chunk-5FAGCOZD.js.map} +0 -0
  617. /package/dist/{chunk-2PUE5P7C.js.map → chunk-5N4MZLEH.js.map} +0 -0
  618. /package/dist/{chunk-B2YKTE7P.js.map → chunk-5SPCMAUC.js.map} +0 -0
  619. /package/dist/{chunk-3OHISDDW.js.map → chunk-5U7K4W6K.js.map} +0 -0
  620. /package/dist/{chunk-CYEMS2PG.js.map → chunk-5YCNDC3C.js.map} +0 -0
  621. /package/dist/{chunk-PAAJWQH5.js.map → chunk-62D2PAAM.js.map} +0 -0
  622. /package/dist/{chunk-52II7PB6.js.map → chunk-645WOU5I.js.map} +0 -0
  623. /package/dist/{chunk-326KUXIR.js.map → chunk-6EHM2AV7.js.map} +0 -0
  624. /package/dist/{chunk-YM7YN37H.js.map → chunk-6ET2VII7.js.map} +0 -0
  625. /package/dist/{chunk-A2YQL2FF.js.map → chunk-6P4REYKL.js.map} +0 -0
  626. /package/dist/{chunk-7RKBPXY6.js.map → chunk-6YAIN5XJ.js.map} +0 -0
  627. /package/dist/{chunk-2L5FSNPC.js.map → chunk-A7GQBJP5.js.map} +0 -0
  628. /package/dist/{chunk-UYVXIY6C.js.map → chunk-AAZEKXUP.js.map} +0 -0
  629. /package/dist/{chunk-IQZ6ISFX.js.map → chunk-AECJY3GJ.js.map} +0 -0
  630. /package/dist/{chunk-76DRU7C4.js.map → chunk-AENM6GKU.js.map} +0 -0
  631. /package/dist/{chunk-KTRXQQFN.js.map → chunk-B36GUU6T.js.map} +0 -0
  632. /package/dist/{chunk-TLHNF6GA.js.map → chunk-BV4ZKIZH.js.map} +0 -0
  633. /package/dist/{chunk-ZWEZXVYH.js.map → chunk-CEO4DONG.js.map} +0 -0
  634. /package/dist/{chunk-ZEPVWLCN.js.map → chunk-CZTPU65V.js.map} +0 -0
  635. /package/dist/{chunk-TRU6JBOI.js.map → chunk-D545Z7UH.js.map} +0 -0
  636. /package/dist/{chunk-6E5GYDIE.js.map → chunk-DGS34QSY.js.map} +0 -0
  637. /package/dist/{chunk-6Z3WW2MW.js.map → chunk-ENBPQEVU.js.map} +0 -0
  638. /package/dist/{chunk-PNEDMJ53.js.map → chunk-F4EHXVP7.js.map} +0 -0
  639. /package/dist/{chunk-JPKZTCWZ.js.map → chunk-FNHLI2RE.js.map} +0 -0
  640. /package/dist/{chunk-M3MYMWXG.js.map → chunk-FXHOZGSE.js.map} +0 -0
  641. /package/dist/{chunk-SAKA6PPL.js.map → chunk-GAS7KYC7.js.map} +0 -0
  642. /package/dist/{chunk-2AR5JFD7.js.map → chunk-GG5FHZJJ.js.map} +0 -0
  643. /package/dist/{chunk-WS3WNLST.js.map → chunk-GI4ZBWPQ.js.map} +0 -0
  644. /package/dist/{chunk-JYR4LH76.js.map → chunk-GMIQV6DD.js.map} +0 -0
  645. /package/dist/{chunk-WIKO4SCR.js.map → chunk-H3TKENU4.js.map} +0 -0
  646. /package/dist/{chunk-ZLN7AROH.js.map → chunk-HIP6DKJJ.js.map} +0 -0
  647. /package/dist/{chunk-SF6RFI5Z.js.map → chunk-HWLIMQE2.js.map} +0 -0
  648. /package/dist/{chunk-JZYECQWN.js.map → chunk-IL6ODG6M.js.map} +0 -0
  649. /package/dist/{chunk-GNR6YEWZ.js.map → chunk-IQEJIOEU.js.map} +0 -0
  650. /package/dist/{chunk-BICNRVEC.js.map → chunk-IWO6QXWJ.js.map} +0 -0
  651. /package/dist/{chunk-42DJ235G.js.map → chunk-J272ODKJ.js.map} +0 -0
  652. /package/dist/{chunk-R3TLVTWW.js.map → chunk-JDX2OA4R.js.map} +0 -0
  653. /package/dist/{chunk-G5MO3VQA.js.map → chunk-JKKII6GX.js.map} +0 -0
  654. /package/dist/{chunk-L5OXE4PX.js.map → chunk-JTQR6L2N.js.map} +0 -0
  655. /package/dist/{chunk-VDX2J7OX.js.map → chunk-KQAFEZQX.js.map} +0 -0
  656. /package/dist/{chunk-AKE4GGQ3.js.map → chunk-KQW3YGEN.js.map} +0 -0
  657. /package/dist/{chunk-LMMQKZK3.js.map → chunk-L63GFNKL.js.map} +0 -0
  658. /package/dist/{chunk-BRZWWUCJ.js.map → chunk-LMLGBG6H.js.map} +0 -0
  659. /package/dist/{chunk-CQ7SSBO4.js.map → chunk-M6HBPLBA.js.map} +0 -0
  660. /package/dist/{chunk-3YMDY3ZF.js.map → chunk-MUTVRKKY.js.map} +0 -0
  661. /package/dist/{chunk-FCFAYMTU.js.map → chunk-NXGSONWM.js.map} +0 -0
  662. /package/dist/{chunk-4WGAMREC.js.map → chunk-O4M4BDIJ.js.map} +0 -0
  663. /package/dist/{chunk-5SYI2F47.js.map → chunk-O76F5QPP.js.map} +0 -0
  664. /package/dist/{chunk-57GDHV2D.js.map → chunk-PCOVEDPK.js.map} +0 -0
  665. /package/dist/{chunk-PPTOAHTZ.js.map → chunk-PGAB2V53.js.map} +0 -0
  666. /package/dist/{chunk-HHDTBYDJ.js.map → chunk-Q432REND.js.map} +0 -0
  667. /package/dist/{chunk-XAITGGX5.js.map → chunk-Q4AUIFUA.js.map} +0 -0
  668. /package/dist/{chunk-5LLQAUMI.js.map → chunk-Q7CLGFA7.js.map} +0 -0
  669. /package/dist/{chunk-KUK56OPR.js.map → chunk-QHT7MOUF.js.map} +0 -0
  670. /package/dist/{chunk-W6IJMWTZ.js.map → chunk-QTQ6XKGT.js.map} +0 -0
  671. /package/dist/{chunk-FLLORID2.js.map → chunk-RLJHJQUY.js.map} +0 -0
  672. /package/dist/{chunk-353KGBKY.js.map → chunk-RW4QNB4J.js.map} +0 -0
  673. /package/dist/{chunk-GWQVMKUJ.js.map → chunk-SCXURCVT.js.map} +0 -0
  674. /package/dist/{chunk-FQXJAC3T.js.map → chunk-SGUDMW2K.js.map} +0 -0
  675. /package/dist/{chunk-LSDEIZ76.js.map → chunk-TA4C3XB7.js.map} +0 -0
  676. /package/dist/{chunk-YIZ2EUUL.js.map → chunk-TNZNSMVJ.js.map} +0 -0
  677. /package/dist/{chunk-CIYUWSMZ.js.map → chunk-TRLOFIQC.js.map} +0 -0
  678. /package/dist/{chunk-TL7NLM2L.js.map → chunk-TSP5WH72.js.map} +0 -0
  679. /package/dist/{chunk-3K6UFW5B.js.map → chunk-UHRZ324M.js.map} +0 -0
  680. /package/dist/{chunk-A5UQ52YQ.js.map → chunk-UZZ7SQT3.js.map} +0 -0
  681. /package/dist/{chunk-GHX5PNXW.js.map → chunk-VBSNUH4J.js.map} +0 -0
  682. /package/dist/{chunk-MR6LQVZ5.js.map → chunk-VJIE4D2I.js.map} +0 -0
  683. /package/dist/{chunk-2JGGZICG.js.map → chunk-WBM2MVBK.js.map} +0 -0
  684. /package/dist/{chunk-CD3C4BJN.js.map → chunk-WIWLX65T.js.map} +0 -0
  685. /package/dist/{chunk-GDDSXVWR.js.map → chunk-X4TD4O2F.js.map} +0 -0
  686. /package/dist/{chunk-DQEMWVMT.js.map → chunk-X7Y7WX73.js.map} +0 -0
  687. /package/dist/{chunk-FPQDZCUX.js.map → chunk-XH3HGI2N.js.map} +0 -0
  688. /package/dist/{chunk-C6KRO3SU.js.map → chunk-XVDZFTN5.js.map} +0 -0
  689. /package/dist/{chunk-3SL52JKD.js.map → chunk-XVZA6VXC.js.map} +0 -0
  690. /package/dist/{chunk-BLHX5FQW.js.map → chunk-YUW66UAH.js.map} +0 -0
  691. /package/dist/{chunk-DOQLHCSS.js.map → chunk-ZBW7A667.js.map} +0 -0
  692. /package/dist/{chunk-4DPDIOVA.js.map → chunk-ZEGL7YCC.js.map} +0 -0
  693. /package/dist/{chunk-VVX5PZFS.js.map → chunk-ZHXSOMYH.js.map} +0 -0
  694. /package/dist/{chunk-GCBIXUPT.js.map → chunk-ZMWSYUUL.js.map} +0 -0
  695. /package/dist/{chunk-X2QPKLPL.js.map → chunk-ZZUVBZL2.js.map} +0 -0
  696. /package/dist/{first-start-migration-GZ45G5FS.js.map → first-start-migration-ZWMV5CX4.js.map} +0 -0
  697. /package/dist/{tier-stats-VK5PCO2L.js.map → tier-stats-LUSUUNU6.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/codex-subscription.ts","../src/fallback-llm-codex-subscription.ts"],"sourcesContent":["/**\n * Codex subscription extraction provider (issue #2784).\n *\n * Routes extraction/consolidation LLM calls through the `codex` CLI so the\n * operator's Codex subscription (ChatGPT OAuth login) authenticates the\n * request — no OpenAI API key and no codex-openai-proxy. Credentials stay in\n * the CLI's own auth store; this module never reads, accepts, or logs tokens.\n *\n * Transport contract mirrors `packages/bench/src/providers/codex-cli.ts`\n * (`codex exec --json --output-last-message`, env allowlist, login-status\n * precheck) but lives in core so the standalone daemon and host plugins get\n * a working `api: \"codex-cli\"` transport without importing the optional\n * bench package. Registered through the existing\n * `setCodexCliFallbackRunnerForProcess` seam, and only when no host or\n * benchmark runner has claimed it first.\n */\n\nimport { mkdir, mkdtemp, readFile, rm, stat } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport type {\n CodexCliFallbackConfig,\n CodexCliFallbackMessage,\n CodexCliFallbackRequest,\n CodexCliFallbackResult,\n CodexCliFallbackRunner,\n} from \"../cli-fallback.js\";\nimport { getCodexCliFallbackRunnerForProcess, isCodexCliFallbackRunnerRegistered, normalizeCodexCliTimeoutMs, setCodexCliFallbackRunnerForProcess } from \"../cli-fallback.js\";\nimport { log } from \"../logger.js\";\nimport { launchProcess } from \"../runtime/child-process.js\";\nimport type { CodexCliReasoningEffort, ModelProviderConfig } from \"../types.js\";\nimport { expandTildePath } from \"../utils/path.js\";\n\nexport const CODEX_SUBSCRIPTION_PROVIDER_ID = \"codex-subscription\";\n\n/** Env var overriding the codex executable (mirrors the bench provider). */\nconst CODEX_EXECUTABLE_ENV = \"REMNIC_CODEX_EXECUTABLE\";\n\nconst DEFAULT_REASONING_EFFORT: CodexCliReasoningEffort = \"medium\";\nconst DEFAULT_TIMEOUT_MS = 120_000;\nconst LOGIN_STATUS_TIMEOUT_MS = 10_000;\nconst LOGIN_STATUS_CACHE_TTL_MS = 10 * 60_000;\nconst STDIO_LIMIT = 64_000;\nconst OUTPUT_SUMMARY_LIMIT = 500;\n/**\n * Env keys whose value is a filesystem path. Relative values resolve against\n * the original process cwd before either child launches, because the exec\n * child runs with cwd = the ephemeral workspace (same rule as executables).\n */\nconst PATH_BEARING_ENV_KEYS: Readonly<Record<string, true>> = Object.freeze({ CODEX_HOME: true, HOME: true, USERPROFILE: true });\n\n/**\n * Environment keys forwarded to the codex child. Everything else — including\n * ambient `OPENAI_API_KEY` / `OPENAI_BASE_URL` — is stripped so the CLI cannot\n * silently fall back to metered API-key auth instead of the subscription\n * login. Mirrors the bench provider's allowlist.\n */\nconst CODEX_RUNTIME_ENV_ALLOWLIST: Readonly<Record<string, true>> = Object.freeze({\n ALL_PROXY: true,\n APPDATA: true,\n CODEX_HOME: true,\n COLORTERM: true,\n COMSPEC: true,\n FORCE_COLOR: true,\n HOME: true,\n HOMEDRIVE: true,\n HOMEPATH: true,\n LANG: true,\n LOCALAPPDATA: true,\n LOGNAME: true,\n NO_COLOR: true,\n NODE_EXTRA_CA_CERTS: true,\n NO_PROXY: true,\n NUMBER_OF_PROCESSORS: true,\n OS: true,\n PATH: true,\n PATHEXT: true,\n PROGRAMDATA: true,\n PROCESSOR_ARCHITECTURE: true,\n HTTP_PROXY: true,\n HTTPS_PROXY: true,\n SHELL: true,\n SSL_CERT_DIR: true,\n SSL_CERT_FILE: true,\n SYSTEMDRIVE: true,\n SYSTEMROOT: true,\n TEMP: true,\n TERM: true,\n TMP: true,\n TMPDIR: true,\n USER: true,\n USERNAME: true,\n USERPROFILE: true,\n WINDIR: true,\n XDG_CACHE_HOME: true,\n XDG_CONFIG_HOME: true,\n XDG_DATA_HOME: true,\n XDG_RUNTIME_DIR: true,\n});\n\nconst LOGIN_OK_PATTERN = /logged in using chatgpt/i;\nconst LOGIN_API_KEY_PATTERN = /api key/i;\n/** CLI output shapes that mean the subscription session was rejected. */\nconst AUTH_FAILURE_PATTERN =\n /\\b401\\b|\\b403\\b|unauthorized|forbidden|not logged in|no active|re-?authenticat|token expired|session expired|please log ?in/i;\nconst TIMEOUT_PATTERN = /timed out after \\d+ms/i;\n/** Secret shapes a codex CLI could echo into errors; replaced before surfacing. */\nconst SECRET_ECHO_PATTERNS: readonly RegExp[] = [\n /sk-[A-Za-z0-9_-]{8,}/g,\n /Bearer\\s+[A-Za-z0-9._-]{8,}/g,\n /eyJ[A-Za-z0-9._-]{10,}/g,\n];\n\n/**\n * Built-in provider entry so `\"codex-subscription/<model>\"` chains resolve\n * with no models.json and no apiKey — the transport owns authentication.\n */\nexport function codexSubscriptionBuiltinProviderConfig(): ModelProviderConfig {\n return {\n baseUrl: \"codex-cli://subscription\",\n api: \"codex-cli\",\n models: [],\n };\n}\n\nexport type CodexSubscriptionAuthReason = \"unauthenticated\" | \"expired_or_revoked\";\n\n/** Login/authorization failure with actionable re-auth guidance. */\nexport class CodexSubscriptionAuthError extends Error {\n readonly reason: CodexSubscriptionAuthReason;\n\n constructor(reason: CodexSubscriptionAuthReason, message: string) {\n super(message);\n this.name = \"CodexSubscriptionAuthError\";\n this.reason = reason;\n }\n}\n\n/** Provider config violated the no-raw-credentials contract. */\nexport class CodexSubscriptionConfigError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CodexSubscriptionConfigError\";\n }\n}\n\n/** Request exceeded its deadline. Abort-driven cancellations rethrow the\n * caller's own abort reason instead, preserving the AbortError contract. */\nexport class CodexSubscriptionTimeoutError extends Error {\n constructor(timeoutMs: number) {\n super(`codex-subscription request timed out after ${timeoutMs}ms`);\n this.name = \"TimeoutError\";\n }\n}\n\nexport interface CodexSubscriptionExecRequest {\n executable: string;\n args: string[];\n input: string;\n env: NodeJS.ProcessEnv;\n outputPath: string;\n workspacePath: string;\n timeoutMs?: number;\n signal?: AbortSignal;\n}\n\nexport interface CodexSubscriptionExecResult {\n status: number | null;\n signal?: NodeJS.Signals | null;\n stdout: string;\n stderr: string;\n outputText: string;\n}\n\nexport interface CodexSubscriptionRunnerDeps {\n /** Runs `codex exec`. Default: isolated subprocess via launchProcess. */\n runCodexExec?: (request: CodexSubscriptionExecRequest) => Promise<CodexSubscriptionExecResult>;\n /** Runs `codex login status`. Default: isolated subprocess. Receives the\n * login-status timeout budget (capped by the request deadline) and the\n * shared-check abort signal (fires when the last waiter leaves). */\n runLoginStatus?: (\n executable: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n signal?: AbortSignal\n ) => Promise<{ status: number | null; stdout: string; stderr: string }>;\n /** Environment the isolated child env is filtered from. Tests inject fakes. */\n env?: NodeJS.ProcessEnv;\n tmpdir?: () => string;\n now?: () => number;\n}\n\ninterface CommandOutput {\n status: number | null;\n signal?: NodeJS.Signals | null;\n stdout: string;\n stderr: string;\n}\n\ninterface LoginStatusCacheEntry {\n at: number;\n promise: Promise<void>;\n /** Auth-store fingerprint at check time; a mismatch invalidates the entry. */\n fingerprint: string | null;\n /** Live waiters. The in-flight check aborts when the last waiter leaves. */\n waiters: number;\n settled: boolean;\n controller: AbortController;\n}\n\nconst loginStatusCache = new Map<string, LoginStatusCacheEntry>();\nconst childrenByRunner = new WeakMap<CodexCliFallbackRunner, Set<number>>();\nconst runnerByOwner = new WeakMap<object, CodexCliFallbackRunner>();\nconst shutdownByRunner = new WeakMap<CodexCliFallbackRunner, AbortController>();\nlet defaultRegisteredRunner: CodexCliFallbackRunner | undefined;\nlet coreRunnerRegistered = false;\n\nexport function createCodexSubscriptionRunner(deps: CodexSubscriptionRunnerDeps = {}): CodexCliFallbackRunner {\n const envSource = deps.env ?? process.env;\n const children = new Set<number>();\n const shutdown = new AbortController();\n const runnerDeps: CodexSubscriptionRunnerDeps = {\n ...deps,\n runCodexExec: deps.runCodexExec ?? ((request) => runCodexExecSubprocess(request, children)),\n runLoginStatus:\n deps.runLoginStatus ??\n ((executable, env, timeoutMs, signal) =>\n runLoginStatusSubprocess(executable, env, timeoutMs, signal, children)),\n };\n const runner: CodexCliFallbackRunner = (request) => {\n const signal = request.options.signal\n ? AbortSignal.any([request.options.signal, shutdown.signal])\n : shutdown.signal;\n if (signal.aborted) {\n return Promise.reject(abortErrorOf(signal));\n }\n return runCodexSubscriptionRequest(\n { ...request, options: { ...request.options, signal } },\n runnerDeps,\n envSource,\n );\n };\n childrenByRunner.set(runner, children);\n shutdownByRunner.set(runner, shutdown);\n return runner;\n}\n\n/** One runner per owning runtime/config object so teardown cannot cross instances. */\nexport function getCodexSubscriptionRunnerForOwner(owner: object): CodexCliFallbackRunner {\n let runner = runnerByOwner.get(owner);\n const shutdown = runner ? shutdownByRunner.get(runner) : undefined;\n if (!runner || shutdown?.signal.aborted) {\n runner = createCodexSubscriptionRunner();\n runnerByOwner.set(owner, runner);\n }\n return runner;\n}\n\n/** Shutdown signal for the owning runner, if this function is a core runner. */\nexport function getCodexSubscriptionShutdownSignal(\n runner: CodexCliFallbackRunner,\n): AbortSignal | undefined {\n return shutdownByRunner.get(runner)?.signal;\n}\n\n/**\n * Registers the core subprocess transport on the codex-cli seam, but only\n * when no runner is registered yet — a host or benchmark runner that claimed\n * the seam first always wins. If the seam was cleared afterwards\n * (setCodexCliFallbackRunnerForProcess(undefined)), the core runner is\n * re-registered so the next call still routes. Idempotent.\n */\nexport function ensureCodexSubscriptionRunnerRegistered(deps: CodexSubscriptionRunnerDeps = {}): boolean {\n if (isCodexCliFallbackRunnerRegistered()) return false;\n defaultRegisteredRunner = createCodexSubscriptionRunner(deps);\n setCodexCliFallbackRunnerForProcess(defaultRegisteredRunner);\n coreRunnerRegistered = true;\n return true;\n}\n\n/** True when the process seam still holds the core default runner. */\nexport function isDefaultRegisteredCodexSubscriptionRunner(): boolean {\n return defaultRegisteredRunner !== undefined\n && getCodexCliFallbackRunnerForProcess() === defaultRegisteredRunner;\n}\n\n/** Host shutdown hook: terminate this runtime's detached Codex children. Does not exit. */\nexport function terminateActiveCodexSubscriptionChildren(\n signal: NodeJS.Signals = \"SIGTERM\",\n runner?: CodexCliFallbackRunner,\n): void {\n const target = runner ?? defaultRegisteredRunner;\n if (!target) return;\n const shutdown = shutdownByRunner.get(target);\n if (shutdown && !shutdown.signal.aborted) {\n shutdown.abort(new DOMException(\"The operation was aborted.\", \"AbortError\"));\n }\n const pids = childrenByRunner.get(target);\n if (!pids) return;\n for (const pid of pids) {\n terminateCodexChildPid(pid, signal);\n }\n}\n\n/** SIGTERM now, SIGKILL after a bound, even if the caller later awaits drain. */\nexport function beginCodexSubscriptionShutdown(\n runner?: CodexCliFallbackRunner,\n forceKillAfterMs = 1_000,\n): () => void {\n terminateActiveCodexSubscriptionChildren(\"SIGTERM\", runner);\n const timer = setTimeout(() => {\n terminateActiveCodexSubscriptionChildren(\"SIGKILL\", runner);\n }, forceKillAfterMs);\n timer.unref();\n return () => {\n clearTimeout(timer);\n terminateActiveCodexSubscriptionChildren(\"SIGKILL\", runner);\n };\n}\nasync function runCodexSubscriptionRequest(\n request: CodexCliFallbackRequest,\n deps: CodexSubscriptionRunnerDeps,\n envSource: NodeJS.ProcessEnv\n): Promise<CodexCliFallbackResult> {\n const { config } = request;\n assertNoApiKeyConfig(config);\n const executable = resolveExecutable(config, envSource);\n const env = buildIsolatedEnv(envSource);\n\n const providerTimeoutMs = config.retryOptions?.timeoutMs !== undefined\n ? normalizeCodexCliTimeoutMs(config.retryOptions.timeoutMs)\n : undefined;\n const timeoutMs = request.options.timeoutMs ?? providerTimeoutMs ?? DEFAULT_TIMEOUT_MS;\n // The effective deadline starts BEFORE the login-status precheck: login\n // consumes the same call/provider timeout budget, it is not additive.\n const now = deps.now ?? Date.now;\n const deadlineStartedAt = now();\n if (request.options.signal?.aborted) {\n throw abortErrorOf(request.options.signal);\n }\n await assertSubscriptionLogin(executable, env, deps, {\n loginStatusTimeoutMs: Math.min(LOGIN_STATUS_TIMEOUT_MS, timeoutMs),\n callerTimeoutMs: timeoutMs,\n deadlineStartedAt,\n signal: request.options.signal,\n });\n\n if (request.options.signal?.aborted) {\n throw abortErrorOf(request.options.signal);\n }\n\n const remainingTimeoutMs = timeoutMs - (now() - deadlineStartedAt);\n if (remainingTimeoutMs <= 0) {\n throw new CodexSubscriptionTimeoutError(timeoutMs);\n }\n let tempDir: string | undefined;\n try {\n tempDir = await mkdtemp(path.join(deps.tmpdir?.() ?? os.tmpdir(), \"remnic-codex-sub-\"));\n const workspacePath = path.join(tempDir, \"workspace\");\n const outputPath = path.join(tempDir, \"last-message.txt\");\n await mkdir(workspacePath, { recursive: true });\n\n const runCodexExec = deps.runCodexExec!;\n const result = await runCodexExec({\n executable,\n args: buildExecArgs(request.modelId, config, workspacePath, outputPath),\n input: buildPrompt(request.messages),\n env,\n outputPath,\n workspacePath,\n timeoutMs: remainingTimeoutMs,\n signal: request.options.signal,\n });\n\n if (result.status !== 0) {\n const failure = execFailureError(result, remainingTimeoutMs, executable, env);\n if (failure instanceof CodexSubscriptionTimeoutError) {\n throw failure;\n }\n if (request.options.signal?.aborted) {\n throw abortErrorOf(request.options.signal);\n }\n throw failure;\n }\n if (request.options.signal?.aborted) {\n throw abortErrorOf(request.options.signal);\n }\n\n const content = result.outputText.trim();\n if (content.length === 0) {\n throw new Error(\n `codex-subscription: codex exec returned no final message (${summarizeOutput(result.stderr, result.stdout)})`\n );\n }\n return { content, ...usageFrom(result) };\n } finally {\n if (tempDir) {\n await rm(tempDir, { force: true, recursive: true }).catch(() => {});\n }\n }\n}\n\n/**\n * This provider authenticates exclusively through the codex CLI login, so a\n * configured apiKey is a configuration mistake — reject it without echoing\n * the value.\n */\nexport function assertNoApiKeyConfig(config: CodexCliFallbackConfig): void {\n if (config.apiKey !== undefined && config.apiKey !== \"\") {\n throw new CodexSubscriptionConfigError(\n `${CODEX_SUBSCRIPTION_PROVIDER_ID} does not accept apiKey configuration: it authenticates through the Codex CLI login. Remove the apiKey field and run \\`codex login\\` with a ChatGPT account instead.`\n );\n }\n}\n\nfunction resolveExecutable(config: CodexCliFallbackConfig, env: NodeJS.ProcessEnv): string {\n const configured = config.codexCliExecutable ?? config.executable ?? env[CODEX_EXECUTABLE_ENV] ?? \"codex\";\n const expanded = expandTildePath(String(configured).trim());\n if (expanded.trim().length === 0) {\n throw new CodexSubscriptionConfigError(`${CODEX_EXECUTABLE_ENV} / executable must not be empty`);\n }\n // The exec child runs with cwd = the temp workspace, and spawn resolves a\n // relative executable against the CHILD cwd. Resolve relative paths against\n // the original process cwd now so `./codex` stays valid; bare names keep\n // PATH lookup.\n if (expanded.includes(\"/\") || expanded.includes(\"\\\\\")) {\n return path.resolve(expanded);\n }\n return expanded;\n}\n\nfunction buildIsolatedEnv(source: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const env: NodeJS.ProcessEnv = {};\n for (const [key, value] of Object.entries(source)) {\n if (value !== undefined && isAllowedEnvKey(key)) {\n env[key] = PATH_BEARING_ENV_KEYS[key.toUpperCase()] === true\n ? normalizePathEnvValue(value)\n : value;\n }\n }\n return env;\n}\n\n/**\n * The exec child runs with cwd = the ephemeral workspace while the login\n * child runs with cwd = this process, so a relative HOME/CODEX_HOME would\n * resolve differently per child. Anchor both to the original process cwd.\n */\nfunction normalizePathEnvValue(value: string): string {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return value;\n }\n const expanded = expandTildePath(trimmed);\n return path.isAbsolute(expanded) ? expanded : path.resolve(expanded);\n}\nfunction isAllowedEnvKey(key: string): boolean {\n const normalized = key.toUpperCase();\n return CODEX_RUNTIME_ENV_ALLOWLIST[normalized] === true || normalized.startsWith(\"LC_\");\n}\n\ninterface LoginCheckContext {\n /** Budget for the login-status subprocess itself. */\n loginStatusTimeoutMs: number;\n /** The caller's overall effective deadline (login + exec). */\n callerTimeoutMs: number;\n deadlineStartedAt: number;\n signal?: AbortSignal;\n}\n\n/**\n * Verifies the operator's Codex subscription login via `codex login status`.\n * Success is cached briefly; failures are never cached so a re-login takes\n * effect on the next request. A cached success is also invalidated when the\n * auth store changes on disk (e.g. another process switches the same Codex\n * home from a ChatGPT login to an API key), so the cache can never mask a\n * later non-subscription login mode.\n */\nasync function assertSubscriptionLogin(\n executable: string,\n env: NodeJS.ProcessEnv,\n deps: CodexSubscriptionRunnerDeps,\n ctx: LoginCheckContext\n): Promise<void> {\n const now = deps.now ?? Date.now;\n const cacheKey = `${executable}\\0${resolveCodexAuthHome(env) ?? \"\"}`;\n const cached = loginStatusCache.get(cacheKey);\n if (cached && now() - cached.at < LOGIN_STATUS_CACHE_TTL_MS) {\n if (!cached.settled || (await authStoreFingerprint(env)) === cached.fingerprint) {\n await waitForLoginEntry(cached, cacheKey, ctx, now);\n return;\n }\n }\n loginStatusCache.delete(cacheKey);\n if (ctx.signal?.aborted) {\n throw abortErrorOf(ctx.signal);\n }\n const entry: LoginStatusCacheEntry = {\n at: now(),\n fingerprint: null,\n waiters: 0,\n settled: false,\n controller: new AbortController(),\n promise: Promise.resolve(undefined),\n };\n entry.promise = runLoginStatusCheck(executable, env, deps, ctx, entry);\n entry.promise.then(\n () => {\n entry.settled = true;\n },\n () => {\n entry.settled = true;\n if (loginStatusCache.get(cacheKey) === entry) {\n loginStatusCache.delete(cacheKey);\n }\n }\n );\n loginStatusCache.set(cacheKey, entry);\n await waitForLoginEntry(entry, cacheKey, ctx, now);\n}\n\nasync function runLoginStatusCheck(\n executable: string,\n env: NodeJS.ProcessEnv,\n deps: CodexSubscriptionRunnerDeps,\n ctx: LoginCheckContext,\n entry: LoginStatusCacheEntry\n): Promise<void> {\n const runLoginStatus = deps.runLoginStatus!;\n const result = await runLoginStatus(executable, env, ctx.loginStatusTimeoutMs, entry.controller.signal);\n const output = `${result.stdout}\\n${result.stderr}`.trim();\n if (TIMEOUT_PATTERN.test(output)) {\n // A login-status subprocess timeout is a deadline expiry, not an auth\n // failure — never report it as \"unauthenticated\".\n throw new CodexSubscriptionTimeoutError(ctx.loginStatusTimeoutMs);\n }\n if (result.status === 0 && LOGIN_OK_PATTERN.test(output)) {\n entry.fingerprint = await authStoreFingerprint(env);\n return;\n }\n const apiKeyNote = LOGIN_API_KEY_PATTERN.test(output)\n ? \" The CLI currently reports an API-key login; subscription extraction needs a ChatGPT login.\"\n : \"\";\n throw new CodexSubscriptionAuthError(\n \"unauthenticated\",\n `codex-subscription: no ChatGPT-backed Codex login found. Run \\`codex login\\` and choose the ChatGPT account option, then retry.${apiKeyNote}`\n );\n}\n\n/**\n * Waits on a shared login check with this caller's own budget. A deadline or\n * caller abort rejects immediately — without cancelling the shared check\n * while other callers still wait on it. When the LAST waiter leaves an\n * in-flight check, the subprocess is aborted and the entry dropped so a later\n * caller starts a fresh check.\n */\nasync function waitForLoginEntry(\n entry: LoginStatusCacheEntry,\n cacheKey: string,\n ctx: LoginCheckContext,\n now: () => number\n): Promise<void> {\n const remainingMs = ctx.callerTimeoutMs - (now() - ctx.deadlineStartedAt);\n if (remainingMs <= 0) {\n throw new CodexSubscriptionTimeoutError(ctx.callerTimeoutMs);\n }\n const signal = ctx.signal;\n let rejectOnAbort!: (reason?: unknown) => void;\n const abortWait = new Promise<never>((_resolve, reject) => {\n rejectOnAbort = reject;\n });\n // Identity matters: the same reference is removed in the finally below.\n const onAbort = (): void => {\n if (signal === undefined) return;\n rejectOnAbort(abortErrorOf(signal));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n entry.waiters++;\n // The deadline timer intentionally holds the event loop: this caller's\n // await is backed by nothing else while the shared check is in flight.\n let deadlineTimer: ReturnType<typeof setTimeout> | undefined;\n try {\n await Promise.race([\n entry.promise,\n abortWait,\n new Promise<never>((_resolve, reject) => {\n deadlineTimer = setTimeout(\n () => reject(new CodexSubscriptionTimeoutError(ctx.callerTimeoutMs)),\n remainingMs\n );\n }),\n ]);\n } catch (err) {\n if (signal?.aborted) {\n throw abortErrorOf(signal);\n }\n throw err;\n } finally {\n clearTimeout(deadlineTimer);\n signal?.removeEventListener(\"abort\", onAbort);\n entry.waiters--;\n if (entry.waiters <= 0 && !entry.settled) {\n entry.controller.abort();\n if (loginStatusCache.get(cacheKey) === entry) {\n loginStatusCache.delete(cacheKey);\n }\n }\n }\n}\n\n/**\n * `mtimeMs:size` of the Codex auth store, read as metadata only — the\n * provider never reads the store's contents. A change between the cached\n * check and now invalidates the cached login mode.\n */\nasync function authStoreFingerprint(env: NodeJS.ProcessEnv): Promise<string | null> {\n const home = resolveCodexAuthHome(env);\n if (!home) {\n return null;\n }\n try {\n const stats = await stat(path.join(home, \"auth.json\"));\n return `${stats.mtimeMs}:${stats.size}`;\n } catch {\n return null;\n }\n}\n\nfunction resolveCodexAuthHome(env: NodeJS.ProcessEnv): string | undefined {\n if (env.CODEX_HOME) return env.CODEX_HOME;\n const profile = env.HOME ?? env.USERPROFILE;\n return profile ? path.join(profile, \".codex\") : undefined;\n}\n\n/**\n * Args mirror the bench provider: fully sandboxed, ephemeral, no tools/hooks/\n * plugins/memories — extraction must behave as a plain completion endpoint.\n */\nfunction buildExecArgs(\n modelId: string,\n config: CodexCliFallbackConfig,\n workspacePath: string,\n outputPath: string\n): string[] {\n const reasoningEffort = readReasoningEffort(config) ?? DEFAULT_REASONING_EFFORT;\n return [\n \"exec\",\n \"--strict-config\",\n \"--model\",\n modelId,\n \"--config\",\n `model_reasoning_effort=${JSON.stringify(reasoningEffort)}`,\n \"--config\",\n 'approval_policy=\"never\"',\n \"--config\",\n 'web_search=\"disabled\"',\n \"--disable\",\n \"hooks\",\n \"--disable\",\n \"shell_tool\",\n \"--disable\",\n \"unified_exec\",\n \"--disable\",\n \"apps\",\n \"--disable\",\n \"plugins\",\n \"--disable\",\n \"remote_plugin\",\n \"--disable\",\n \"multi_agent\",\n \"--disable\",\n \"browser_use\",\n \"--disable\",\n \"browser_use_external\",\n \"--disable\",\n \"computer_use\",\n \"--disable\",\n \"image_generation\",\n \"--disable\",\n \"in_app_browser\",\n \"--disable\",\n \"goals\",\n \"--disable\",\n \"memories\",\n \"--disable\",\n \"chronicle\",\n \"--disable\",\n \"tool_suggest\",\n \"--disable\",\n \"workspace_dependencies\",\n \"--disable\",\n \"shell_snapshot\",\n \"--ephemeral\",\n \"--ignore-user-config\",\n \"--ignore-rules\",\n \"--sandbox\",\n \"read-only\",\n \"--cd\",\n workspacePath,\n \"--skip-git-repo-check\",\n \"--json\",\n \"--output-last-message\",\n outputPath,\n \"-\",\n ];\n}\n\nfunction readReasoningEffort(config: CodexCliFallbackConfig): CodexCliReasoningEffort | undefined {\n for (const value of [config.codexCliReasoningEffort, config.reasoningEffort]) {\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized === \"low\" || normalized === \"medium\" || normalized === \"high\" || normalized === \"xhigh\") {\n return normalized;\n }\n throw new CodexSubscriptionConfigError(\n \"codex-subscription reasoningEffort must be one of low, medium, high, xhigh (got unrecognized value)\"\n );\n }\n }\n return undefined;\n}\n\n/**\n * One JSON object per message: role boundaries are structural (JSON string\n * escaping), so literal `[system]`/role-marker text inside message content\n * can never forge another role's turn. Content stays model-visible verbatim.\n */\nfunction buildPrompt(messages: readonly CodexCliFallbackMessage[]): string {\n const transcript = messages\n .map((message) => JSON.stringify({ role: message.role, content: message.content }))\n .join(\"\\n\");\n return [\n \"You are acting as an LLM completion endpoint for a memory-extraction pipeline, not as a coding agent.\",\n \"Answer the request in the transcript below. Do not inspect files, run commands, browse, or use tools.\",\n \"Return only the final answer text. If the request asks for JSON, return raw JSON only.\",\n \"\",\n 'TRANSCRIPT (JSON Lines: one {\"role\":\"...\",\"content\":\"...\"} object per message; newlines inside content are escaped):',\n transcript,\n ].join(\"\\n\");\n}\n\nfunction execFailureError(\n result: CodexSubscriptionExecResult,\n timeoutMs: number,\n executable: string,\n env: NodeJS.ProcessEnv\n): Error {\n const combined = `${result.stderr}\\n${result.stdout}`;\n // The authoritative timeout marker wins over auth-pattern text: a timed-out\n // exec may have already printed model/diagnostic output containing 401/403\n // before the deadline fired (issue #2833).\n if (TIMEOUT_PATTERN.test(combined)) {\n return new CodexSubscriptionTimeoutError(timeoutMs);\n }\n if (AUTH_FAILURE_PATTERN.test(combined)) {\n // Re-check login on the next request; the cached status is now stale.\n loginStatusCache.delete(`${executable}\\0${env.CODEX_HOME ?? env.HOME ?? \"\"}`);\n return new CodexSubscriptionAuthError(\n \"expired_or_revoked\",\n \"codex-subscription: the Codex CLI rejected the request as unauthenticated \" +\n \"(session expired or revoked). Run `codex login` again to re-authenticate, then retry.\"\n );\n }\n\n const exitLabel = result.signal ? `signal ${result.signal}` : `exit ${result.status ?? \"unknown\"}`;\n return new Error(\n `codex-subscription: codex exec failed (${exitLabel}): ${summarizeOutput(result.stderr, result.stdout)}`\n );\n}\n\n/** Secret-redacted, then bounded tail of child output — the only child text\n * that ever reaches a thrown error. Redaction runs BEFORE bounding so a\n * secret straddling the cutoff cannot survive as an unmatchable fragment. */\nfunction summarizeOutput(stderr: string, stdout: string): string {\n const summary = [stderr.trim(), stdout.trim()].filter((part) => part.length > 0).join(\"\\n\");\n if (summary.length === 0) {\n return \"no process output\";\n }\n return redactSecretEchoes(summary).slice(-OUTPUT_SUMMARY_LIMIT);\n}\n\nexport function redactSecretEchoes(value: string): string {\n let redacted = value;\n for (const pattern of SECRET_ECHO_PATTERNS) {\n redacted = redacted.replace(pattern, \"[redacted]\");\n }\n return redacted;\n}\ntype CodexSubscriptionUsage = Pick<CodexCliFallbackResult, \"usage\">;\n\nfunction usageFrom(result: CodexSubscriptionExecResult): CodexSubscriptionUsage {\n const usage = parseCodexJsonlUsage(`${result.stdout}\\n${result.stderr}`);\n if (!usage) {\n return {};\n }\n return {\n usage: {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n totalTokens: usage.inputTokens + usage.outputTokens,\n },\n };\n}\n\nexport function parseCodexJsonlUsage(output: string): { inputTokens: number; outputTokens: number } | undefined {\n let usage: { inputTokens: number; outputTokens: number } | undefined;\n for (const line of output.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (!trimmed.startsWith(\"{\")) continue;\n try {\n const event = JSON.parse(trimmed) as {\n type?: unknown;\n usage?: Record<string, unknown>;\n };\n if (event.type !== \"turn.completed\" || !event.usage) continue;\n const inputTokens = readCounter(event.usage.input_tokens);\n const outputTokens = readCounter(event.usage.output_tokens);\n if (inputTokens !== undefined && outputTokens !== undefined) {\n usage = { inputTokens, outputTokens };\n }\n } catch {\n // codex exec prints non-JSON status text alongside JSONL; ignore it\n }\n }\n return usage;\n}\n\nfunction readCounter(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n return value;\n}\n\nfunction abortErrorOf(signal: AbortSignal): Error {\n if (signal.reason instanceof CodexSubscriptionTimeoutError) return signal.reason;\n const reason =\n signal.reason instanceof Error\n ? signal.reason\n : signal.reason !== undefined\n ? new Error(String(signal.reason))\n : new DOMException(\"The operation was aborted.\", \"AbortError\");\n const match = /fallback LLM timed out after (\\d+)ms/i.exec(reason.message);\n if (match) {\n return new CodexSubscriptionTimeoutError(Number(match[1]));\n }\n return reason;\n}\n\n/** Bounds streamed child output to STDIO_LIMIT, keeping the TAIL — codex\n * prints its final error or turn.completed result last. Secrets are redacted\n * BEFORE bounding so one straddling the cutoff cannot leak a fragment. */\nfunction appendBounded(existing: string, next: string): string {\n const redacted = redactSecretEchoes(existing + next);\n return redacted.length > STDIO_LIMIT ? redacted.slice(-STDIO_LIMIT) : redacted;\n}\n\nasync function runLoginStatusSubprocess(\n executable: string,\n env: NodeJS.ProcessEnv,\n timeoutMs: number,\n signal: AbortSignal | undefined,\n children: Set<number>,\n): Promise<{ status: number | null; stdout: string; stderr: string }> {\n return await runSubprocess(executable, [\"login\", \"status\"], {\n env,\n stdin: undefined,\n timeoutMs,\n timeoutLabel: \"login status\",\n signal,\n children,\n });\n}\n\nasync function runCodexExecSubprocess(\n request: CodexSubscriptionExecRequest,\n children: Set<number>,\n): Promise<CodexSubscriptionExecResult> {\n const result = await runSubprocess(request.executable, request.args, {\n env: request.env,\n stdin: request.input,\n timeoutMs: request.timeoutMs,\n timeoutLabel: \"exec\",\n signal: request.signal,\n cwd: request.workspacePath,\n children,\n });\n if (result.status === 124) return { ...result, outputText: \"\" };\n let outputText = \"\";\n try {\n outputText = (await readFile(request.outputPath, \"utf8\")).trim();\n } catch {\n // Missing output file surfaces as the no-final-message error path.\n }\n return { ...result, outputText };\n}\n\ninterface SubprocessOptions {\n env: NodeJS.ProcessEnv;\n stdin?: string;\n timeoutMs?: number;\n timeoutLabel: string;\n signal?: AbortSignal;\n cwd?: string;\n children: Set<number>;\n}\n\nasync function runSubprocess(executable: string, args: string[], options: SubprocessOptions): Promise<CommandOutput> {\n return await new Promise<CommandOutput>((resolve, reject) => {\n if (options.signal?.aborted) {\n reject(abortErrorOf(options.signal));\n return;\n }\n const child = launchProcess(executable, args, {\n ...(options.cwd ? { cwd: options.cwd } : {}),\n env: options.env,\n stdio: [options.stdin === undefined ? \"ignore\" : \"pipe\", \"pipe\", \"pipe\"],\n detached: process.platform !== \"win32\",\n windowsHide: true,\n });\n registerActiveCodexChild(child.pid, options.children);\n let stdout = \"\";\n let stderr = \"\";\n let timedOut = false;\n let settled = false;\n let killTimeout: ReturnType<typeof setTimeout> | undefined;\n const clearKillTimeout = (): void => {\n if (killTimeout) {\n clearTimeout(killTimeout);\n killTimeout = undefined;\n }\n };\n const terminate = (signal: NodeJS.Signals): void => {\n if (child.pid && process.platform !== \"win32\") {\n try {\n process.kill(-child.pid, signal);\n return;\n } catch {\n // fall through to killing the direct child\n }\n }\n child.kill(signal);\n };\n const scheduleForcedKill = (): void => {\n clearKillTimeout();\n killTimeout = setTimeout(() => terminate(\"SIGKILL\"), 1_000);\n killTimeout.unref();\n };\n const finish = (fn: () => void): void => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n options.signal?.removeEventListener(\"abort\", onAbort);\n fn();\n };\n const settleTimeout = (): void => {\n timedOut = true;\n stderr = appendBounded(\n stderr,\n `\\ncodex-subscription: ${options.timeoutLabel} timed out after ${options.timeoutMs}ms.`\n );\n finish(() => {\n resolve({\n status: 124,\n signal: \"SIGTERM\",\n stdout,\n stderr,\n });\n });\n };\n const onAbort = (): void => {\n const reasonText =\n options.signal?.reason instanceof Error\n ? options.signal.reason.message\n : String(options.signal?.reason ?? \"\");\n terminate(\"SIGTERM\");\n scheduleForcedKill();\n if (/fallback LLM timed out after \\d+ms/i.test(reasonText)) {\n settleTimeout();\n return;\n }\n finish(() => reject(abortErrorOf(options.signal!)));\n };\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n const timeout = options.timeoutMs\n ? setTimeout(() => {\n terminate(\"SIGTERM\");\n scheduleForcedKill();\n settleTimeout();\n }, options.timeoutMs)\n : undefined;\n timeout?.unref();\n child.stdout?.setEncoding(\"utf8\");\n child.stderr?.setEncoding(\"utf8\");\n child.stdout?.on(\"data\", (chunk: string) => {\n stdout = appendBounded(stdout, chunk);\n });\n child.stderr?.on(\"data\", (chunk: string) => {\n stderr = appendBounded(stderr, chunk);\n });\n child.stdin?.on(\"error\", (error: NodeJS.ErrnoException) => {\n stderr = appendBounded(stderr, `\\ncodex-subscription: stdin error: ${error.code ?? error.message}`);\n });\n child.on(\"error\", (error) => {\n unregisterActiveCodexChild(child.pid, options.children);\n finish(() => {\n reject(\n child.pid\n ? new Error(`codex-subscription: codex CLI failed after start: ${safeMessage(error)}`, { cause: error })\n : new CodexSubscriptionAuthError(\n \"unauthenticated\",\n `codex-subscription: codex CLI not found at \\`${executable}\\` — install the Codex CLI and run \\`codex login\\` with a ChatGPT account, then retry.`\n )\n );\n });\n });\n child.on(\"close\", (status, signal) => {\n clearKillTimeout();\n unregisterActiveCodexChild(child.pid, options.children);\n finish(() => {\n resolve({\n status: timedOut ? (status === null || status === 0 ? 124 : status) : status,\n signal: timedOut ? (signal ?? \"SIGTERM\") : signal,\n stdout,\n stderr,\n });\n });\n });\n if (options.stdin !== undefined) {\n try {\n child.stdin?.end(options.stdin);\n } catch (error) {\n log.debug(`codex-subscription: failed writing prompt to stdin: ${safeMessage(error)}`);\n }\n }\n });\n}\n\nfunction safeMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport const __codexSubscriptionTestHooks = {\n activeCodexChildCount: (runner?: CodexCliFallbackRunner): number => {\n const target = runner ?? defaultRegisteredRunner;\n return target ? (childrenByRunner.get(target)?.size ?? 0) : 0;\n },\n appendBounded,\n resetLoginStatusCache: (): void => {\n loginStatusCache.clear();\n },\n isCoreRunnerRegistered: (): boolean => coreRunnerRegistered,\n resetCoreRunnerRegistered: (): void => {\n coreRunnerRegistered = false;\n defaultRegisteredRunner = undefined;\n },\n};\n\nfunction registerActiveCodexChild(pid: number | undefined, children: Set<number>): void {\n if (pid === undefined) return;\n children.add(pid);\n}\n\nfunction unregisterActiveCodexChild(pid: number | undefined, children: Set<number>): void {\n if (pid === undefined) return;\n children.delete(pid);\n}\n\nfunction terminateCodexChildPid(pid: number, signal: NodeJS.Signals): void {\n if (process.platform !== \"win32\") {\n try {\n process.kill(-pid, signal);\n return;\n } catch {\n // Fall back to killing the direct child below.\n }\n }\n\n try {\n process.kill(pid, signal);\n } catch {\n // The child may already have exited.\n }\n}\n","/**\n * Codex-subscription helpers for FallbackLlmClient (issue #2833).\n *\n * Terminal error classification, the `api: \"codex-cli\"` provider attempt,\n * and Codex runner/lifecycle helpers live here so fallback-llm.ts stays\n * generic chain orchestration.\n */\n\nimport { raceAbort } from \"./abort-error.js\";\nimport { callCodexCliFallback, isCodexCliFallbackRunnerRegistered } from \"./cli-fallback.js\";\nimport type { CodexCliFallbackRunner } from \"./cli-fallback.js\";\nimport {\n CODEX_SUBSCRIPTION_PROVIDER_ID,\n CodexSubscriptionAuthError,\n CodexSubscriptionConfigError,\n CodexSubscriptionTimeoutError,\n assertNoApiKeyConfig,\n ensureCodexSubscriptionRunnerRegistered,\n getCodexSubscriptionShutdownSignal,\n isDefaultRegisteredCodexSubscriptionRunner,\n} from \"./providers/codex-subscription.js\";\nimport type { ModelProviderConfig } from \"./types.js\";\n\ntype CodexSubscriptionAttemptResult = {\n content: string;\n usage?: {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n };\n};\n\n/**\n * Terminal codex-subscription failures (timeout, auth, config contract).\n * These carry documented caller guidance (`TimeoutError` name, `codex login`\n * steps), so they must survive the chain instead of collapsing into a\n * generic empty/http_error result (issue #2833).\n */\nexport function isTerminalCodexSubscriptionError(error: unknown): boolean {\n return (\n error instanceof CodexSubscriptionTimeoutError ||\n error instanceof CodexSubscriptionAuthError ||\n error instanceof CodexSubscriptionConfigError\n );\n}\n\n/**\n * Settle a fallback-LLM chain at the caller deadline. Abort the in-flight\n * work, return immediately, and observe the abandoned promise so a late\n * rejection cannot become unhandled.\n */\nexport async function raceFallbackLlmDeadline<T>(\n work: Promise<T>,\n timeoutMs: number,\n abortOnTimeout: () => void,\n): Promise<{ timedOut: true } | { timedOut: false; value: T }> {\n const deadline = new AbortController();\n const timer = setTimeout(() => deadline.abort(), timeoutMs);\n deadline.signal.addEventListener(\"abort\", abortOnTimeout, { once: true });\n try {\n const value = await raceAbort(\n work,\n deadline.signal,\n `fallback LLM timed out after ${timeoutMs}ms`,\n );\n return { timedOut: false, value };\n } catch (error) {\n if (!deadline.signal.aborted) throw error;\n const afterAbort = await Promise.race([\n work.then(\n (value) => ({ state: \"value\" as const, value }),\n (lateError) => ({ state: \"error\" as const, error: lateError }),\n ),\n new Promise<{ state: \"pending\" }>((resolve) => {\n setImmediate(() => resolve({ state: \"pending\" }));\n }),\n ]);\n if (afterAbort.state === \"value\") return { timedOut: false, value: afterAbort.value };\n if (afterAbort.state === \"error\") throw afterAbort.error;\n void work.then(\n () => undefined,\n () => undefined,\n );\n return { timedOut: true };\n } finally {\n clearTimeout(timer);\n deadline.signal.removeEventListener(\"abort\", abortOnTimeout);\n }\n}\n\n/**\n * Attempt the Codex CLI / subscription provider. Returns `undefined` when the\n * model is not `api: \"codex-cli\"` so the generic FallbackLlmClient path runs.\n *\n * Subscription ids reject a configured apiKey before generic secret resolution\n * — otherwise an unresolvable ref throws a generic error and the provider's\n * `codex login` guidance never surfaces (issue #2833). Other `codex-cli`\n * providers still resolve a configured key. Runtime auth is skipped: the CLI\n * login is the credential.\n */\nexport async function tryCodexSubscriptionProvider(\n model: {\n providerId: string;\n modelId: string;\n providerConfig: ModelProviderConfig;\n },\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: { timeoutMs?: number; signal?: AbortSignal },\n resolveFallbackApiKey: () => Promise<string | undefined>,\n runner?: CodexCliFallbackRunner,\n): Promise<CodexSubscriptionAttemptResult | undefined> {\n if (model.providerConfig.api !== \"codex-cli\") return undefined;\n\n if (model.providerId === CODEX_SUBSCRIPTION_PROVIDER_ID) {\n assertNoApiKeyConfig(model.providerConfig);\n }\n\n const resolvedApiKey =\n model.providerConfig.apiKey === undefined ? undefined : await resolveFallbackApiKey();\n const rawKey = model.providerConfig.apiKey;\n const needsResolution =\n rawKey === \"secretref-managed\" || (typeof rawKey === \"object\" && rawKey !== null);\n if (needsResolution && !resolvedApiKey) {\n throw new Error(`API key for provider \"${model.providerId}\" could not be resolved from secret ref`);\n }\n\n const effectiveConfig: ModelProviderConfig = {\n ...model.providerConfig,\n ...(resolvedApiKey ? { apiKey: resolvedApiKey } : {}),\n };\n\n // Let the provider surface its typed timeout before the generic outer deadline.\n const callOptions = {\n timeoutMs: options.timeoutMs === undefined\n ? undefined\n : Math.max(1, options.timeoutMs - Math.min(100, Math.max(5, Math.floor(options.timeoutMs / 5)))),\n signal: options.signal,\n };\n // A host/benchmark runner on the process seam still wins. The core\n // default runner does not: prefer the owning runtime so shutdown\n // terminates the request that runtime started.\n if (isCodexCliFallbackRunnerRegistered() && !(runner && isDefaultRegisteredCodexSubscriptionRunner())) {\n return await callCodexCliFallback(effectiveConfig, model.modelId, messages, callOptions);\n }\n if (runner) {\n return await callCodexCliFallback(effectiveConfig, model.modelId, messages, callOptions, runner);\n }\n ensureCodexSubscriptionRunnerRegistered();\n return await callCodexCliFallback(effectiveConfig, model.modelId, messages, callOptions);\n}\n\nexport function abortReason(signal: AbortSignal | undefined): Error {\n const reason = signal?.reason;\n return reason instanceof Error ? reason : new Error(\"fallback LLM request aborted\");\n}\n\nexport function withCodexRuntimeShutdown<T extends { signal?: AbortSignal }>(\n options: T,\n runner: CodexCliFallbackRunner | undefined,\n): T {\n if (!runner) return options;\n const shutdown = getCodexSubscriptionShutdownSignal(runner);\n if (!shutdown) return options;\n return {\n ...options,\n signal: options.signal ? AbortSignal.any([options.signal, shutdown]) : shutdown,\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,9 @@
1
+ import {
2
+ TombstoneStore,
3
+ applyTombstoneResurrectionGate,
4
+ buildRetiredFactTombstoneInputs,
5
+ collectRetiredMemoriesForRebuild
6
+ } from "./chunk-46WM6JX2.js";
1
7
  import {
2
8
  WEARABLES_DIR_NAME,
3
9
  escapeSegmentText,
@@ -9,15 +15,9 @@ import {
9
15
  unescapeSegmentText,
10
16
  unescapeSpeakerLabel
11
17
  } from "./chunk-UHVXE24Y.js";
12
- import {
13
- TombstoneStore,
14
- applyTombstoneResurrectionGate,
15
- buildRetiredFactTombstoneInputs,
16
- collectRetiredMemoriesForRebuild
17
- } from "./chunk-46WM6JX2.js";
18
18
  import {
19
19
  normalizeQmdResultPath
20
- } from "./chunk-7RKBPXY6.js";
20
+ } from "./chunk-6YAIN5XJ.js";
21
21
  import {
22
22
  withholdToolScopedFromSharedNamespace
23
23
  } from "./chunk-S2V7RUCL.js";
@@ -30,10 +30,7 @@ import {
30
30
  import {
31
31
  SPECULATIVE_TTL_DAYS,
32
32
  confidenceTier
33
- } from "./chunk-RN3MVLW3.js";
34
- import {
35
- createMemorySnapshot
36
- } from "./chunk-S2HLHAZ4.js";
33
+ } from "./chunk-IYKZJVL5.js";
37
34
  import {
38
35
  normalizeProjectionPreview,
39
36
  normalizeProjectionTags
@@ -42,6 +39,9 @@ import {
42
39
  rewriteProjectedEntityReferences,
43
40
  rewriteProjectedMemoryEntityReference
44
41
  } from "./chunk-MRPOZBJC.js";
42
+ import {
43
+ createMemorySnapshot
44
+ } from "./chunk-S2HLHAZ4.js";
45
45
  import {
46
46
  rotateMarkdownFileToArchive
47
47
  } from "./chunk-DM2T26WE.js";
@@ -57,7 +57,7 @@ import {
57
57
  import {
58
58
  parseFaithfulnessField,
59
59
  serializeFaithfulnessFields
60
- } from "./chunk-S2ULTQZR.js";
60
+ } from "./chunk-3N3PBBEH.js";
61
61
  import {
62
62
  DeletionRevisionStore,
63
63
  TombstoneBlockedCaptureIndexHost,
@@ -114,6 +114,11 @@ import {
114
114
  normalizeSupersessionKey,
115
115
  supersessionKeysForFact
116
116
  } from "./chunk-5WITETWU.js";
117
+ import {
118
+ composeMemoryEnvelope,
119
+ isSealedMemoryEnvelope,
120
+ sealedWriteToLegacyArgs
121
+ } from "./chunk-GDYU6VF4.js";
117
122
  import {
118
123
  clearMemoryCache,
119
124
  getCachedEntities,
@@ -132,7 +137,7 @@ import {
132
137
  parseProvenanceTag,
133
138
  reconcileProvenanceRead,
134
139
  serializeProvenanceFields
135
- } from "./chunk-353KGBKY.js";
140
+ } from "./chunk-RW4QNB4J.js";
136
141
  import {
137
142
  matchEntitySchemaSection,
138
143
  normalizeEntityStructuredSection,
@@ -186,19 +191,14 @@ import {
186
191
  assertPathInsideRoot,
187
192
  pathIsInside
188
193
  } from "./chunk-C7HJ3NEI.js";
194
+ import {
195
+ isSupportPassportPrivateMemory
196
+ } from "./chunk-37CAEC7E.js";
189
197
  import {
190
198
  inferMemoryStatus,
191
199
  isArchivedMemoryPath,
192
200
  toMemoryPathRel
193
201
  } from "./chunk-7RJUVTVF.js";
194
- import {
195
- isSupportPassportPrivateMemory
196
- } from "./chunk-PWPIERBM.js";
197
- import {
198
- composeMemoryEnvelope,
199
- isSealedMemoryEnvelope,
200
- sealedWriteToLegacyArgs
201
- } from "./chunk-LSLCFCCQ.js";
202
202
  import {
203
203
  CONTENT_HASH_INDEX_RETRY_MAX_DELAY_MS,
204
204
  ContentHashIndex,
@@ -218,15 +218,15 @@ import {
218
218
  import {
219
219
  sanitizeMemoryContent
220
220
  } from "./chunk-5GKPFL3S.js";
221
- import {
222
- parseFlexibleIsoTimestamp
223
- } from "./chunk-P7FMDTKL.js";
224
221
  import {
225
222
  namespaceIdentityFromToken
226
223
  } from "./chunk-VUFL7X3H.js";
227
224
  import {
228
225
  resolveNamespaceCapabilities
229
226
  } from "./chunk-JUOZ62Y7.js";
227
+ import {
228
+ parseFlexibleIsoTimestamp
229
+ } from "./chunk-P7FMDTKL.js";
230
230
  import {
231
231
  isAbortError,
232
232
  raceAbort
@@ -11827,4 +11827,4 @@ export {
11827
11827
  isValidBufferSurpriseEvent,
11828
11828
  StorageManager3 as StorageManager
11829
11829
  };
11830
- //# sourceMappingURL=chunk-ZEPVWLCN.js.map
11830
+ //# sourceMappingURL=chunk-CZTPU65V.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  SupportPassportCreateGrantRequestSchema,
3
3
  defineOperation
4
- } from "./chunk-JLXWRQNR.js";
4
+ } from "./chunk-UZEHHXYC.js";
5
5
  import {
6
6
  SupportPassportCardCategorySchema,
7
7
  SupportPassportMemoryIdSchema,
8
8
  SupportPassportSourceMemoryIdSchema
9
- } from "./chunk-PWPIERBM.js";
9
+ } from "./chunk-37CAEC7E.js";
10
10
 
11
11
  // src/support-passport/access-operations.ts
12
12
  import { z } from "zod";
@@ -220,4 +220,4 @@ var supportPassportGrantAskOperation = defineOperation({
220
220
  result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
221
221
  })
222
222
  });
223
- //# sourceMappingURL=chunk-TRU6JBOI.js.map
223
+ //# sourceMappingURL=chunk-D545Z7UH.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  graphFilePath,
3
3
  readEdgesStrict
4
- } from "./chunk-GWK7FEUL.js";
4
+ } from "./chunk-5FAGCOZD.js";
5
5
  import {
6
6
  assertGraphLockHeld,
7
7
  withGraphWriteLock,
@@ -138,4 +138,4 @@ export {
138
138
  restoreRemovedNodeEdges,
139
139
  rollbackNodeEdgeRewrite
140
140
  };
141
- //# sourceMappingURL=chunk-6E5GYDIE.js.map
141
+ //# sourceMappingURL=chunk-DGS34QSY.js.map
@@ -9,6 +9,9 @@ var processRunner;
9
9
  function isCodexCliFallbackRunnerRegistered() {
10
10
  return processRunner !== void 0;
11
11
  }
12
+ function getCodexCliFallbackRunnerForProcess() {
13
+ return processRunner;
14
+ }
12
15
  function setCodexCliFallbackRunnerForProcess(runner) {
13
16
  const previous = processRunner;
14
17
  processRunner = runner;
@@ -16,13 +19,13 @@ function setCodexCliFallbackRunnerForProcess(runner) {
16
19
  processRunner = previous;
17
20
  };
18
21
  }
19
- async function callCodexCliFallback(config, modelId, messages, options = {}) {
20
- if (!processRunner) {
22
+ async function callCodexCliFallback(config, modelId, messages, options = {}, runner = processRunner) {
23
+ if (!runner) {
21
24
  throw new Error(
22
25
  'codex-cli fallback transport is not registered; install a runner with setCodexCliFallbackRunnerForProcess() before using api: "codex-cli"'
23
26
  );
24
27
  }
25
- return await processRunner({
28
+ return await runner({
26
29
  config: normalizeCodexCliFallbackConfig(config),
27
30
  modelId: normalizeCodexCliModel(modelId),
28
31
  messages,
@@ -81,9 +84,10 @@ var __codexCliFallbackTestHooks = {
81
84
 
82
85
  export {
83
86
  isCodexCliFallbackRunnerRegistered,
87
+ getCodexCliFallbackRunnerForProcess,
84
88
  setCodexCliFallbackRunnerForProcess,
85
89
  callCodexCliFallback,
86
90
  normalizeCodexCliTimeoutMs,
87
91
  __codexCliFallbackTestHooks
88
92
  };
89
- //# sourceMappingURL=chunk-65RENJGB.js.map
93
+ //# sourceMappingURL=chunk-E2AWJ7KQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli-fallback.ts"],"sourcesContent":["import type { CodexCliReasoningEffort } from \"./types.js\";\n\nexport interface CodexCliFallbackMessage {\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface CodexCliFallbackConfig {\n apiKey?: string | Record<string, unknown>;\n executable?: unknown;\n codexCliExecutable?: unknown;\n reasoningEffort?: unknown;\n codexCliReasoningEffort?: unknown;\n retryOptions?: {\n timeoutMs?: unknown;\n };\n}\n\nexport interface CodexCliFallbackOptions {\n timeoutMs?: number;\n signal?: AbortSignal;\n}\n\nexport interface CodexCliFallbackResult {\n content: string;\n usage?: {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n };\n}\n\nexport interface CodexCliFallbackRequest {\n config: CodexCliFallbackConfig;\n modelId: string;\n messages: CodexCliFallbackMessage[];\n options: CodexCliFallbackOptions;\n}\n\nexport type CodexCliFallbackRunner = (\n request: CodexCliFallbackRequest,\n) => Promise<CodexCliFallbackResult>;\n\nconst VALID_CODEX_CLI_REASONING_EFFORTS = new Set<CodexCliReasoningEffort>([\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n]);\n\nlet processRunner: CodexCliFallbackRunner | undefined;\n\n/**\n * True when a process-local Codex CLI transport is registered. Lets a default\n * runner (codex-subscription) register only when no host/benchmark runner has\n * claimed the seam, so explicit registrations always win.\n */\nexport function isCodexCliFallbackRunnerRegistered(): boolean {\n return processRunner !== undefined;\n}\n\n/** Current process-local Codex CLI runner, if any. */\nexport function getCodexCliFallbackRunnerForProcess(): CodexCliFallbackRunner | undefined {\n return processRunner;\n}\n\n/**\n * Registers the process-local Codex CLI transport. Core itself stays free of\n * child_process here; hosts and benchmark runtimes opt in, and the\n * codex-subscription module registers a subprocess runner on demand.\n */\nexport function setCodexCliFallbackRunnerForProcess(\n runner: CodexCliFallbackRunner | undefined,\n): () => void {\n const previous = processRunner;\n processRunner = runner;\n return () => {\n processRunner = previous;\n };\n}\n\nexport async function callCodexCliFallback(\n config: CodexCliFallbackConfig,\n modelId: string,\n messages: CodexCliFallbackMessage[],\n options: CodexCliFallbackOptions = {},\n runner: CodexCliFallbackRunner | undefined = processRunner,\n): Promise<CodexCliFallbackResult> {\n if (!runner) {\n throw new Error(\n 'codex-cli fallback transport is not registered; install a runner with setCodexCliFallbackRunnerForProcess() before using api: \"codex-cli\"',\n );\n }\n\n return await runner({\n config: normalizeCodexCliFallbackConfig(config),\n modelId: normalizeCodexCliModel(modelId),\n messages,\n options: normalizeCodexCliFallbackOptions(options),\n });\n}\n\nfunction normalizeCodexCliFallbackConfig(\n config: CodexCliFallbackConfig,\n): CodexCliFallbackConfig {\n return {\n ...config,\n ...(config.executable !== undefined\n ? { executable: normalizeOptionalString(config.executable, \"codex-cli executable\") }\n : {}),\n ...(config.codexCliExecutable !== undefined\n ? { codexCliExecutable: normalizeOptionalString(config.codexCliExecutable, \"codex-cli executable\") }\n : {}),\n ...(config.reasoningEffort !== undefined\n ? { reasoningEffort: normalizeCodexCliReasoningEffort(config.reasoningEffort) }\n : {}),\n ...(config.codexCliReasoningEffort !== undefined\n ? { codexCliReasoningEffort: normalizeCodexCliReasoningEffort(config.codexCliReasoningEffort) }\n : {}),\n ...(config.retryOptions?.timeoutMs !== undefined\n ? { retryOptions: { timeoutMs: normalizeCodexCliTimeoutMs(config.retryOptions.timeoutMs) } }\n : {}),\n };\n}\n\nfunction normalizeCodexCliFallbackOptions(\n options: CodexCliFallbackOptions,\n): CodexCliFallbackOptions {\n return {\n ...(options.timeoutMs !== undefined\n ? { timeoutMs: normalizeCodexCliTimeoutMs(options.timeoutMs) }\n : {}),\n ...(options.signal ? { signal: options.signal } : {}),\n };\n}\n\nfunction normalizeOptionalString(value: unknown, label: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`${label} must be a non-empty string`);\n }\n return value.trim();\n}\n\nfunction normalizeCodexCliModel(value: string): string {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n throw new Error(\"codex-cli model must be a non-empty string\");\n }\n return trimmed;\n}\n\nfunction normalizeCodexCliReasoningEffort(value: unknown): CodexCliReasoningEffort {\n if (typeof value !== \"string\") {\n throw new Error(\"codex-cli reasoningEffort must be one of low, medium, high, xhigh\");\n }\n const normalized = value.trim().toLowerCase();\n if (VALID_CODEX_CLI_REASONING_EFFORTS.has(normalized as CodexCliReasoningEffort)) {\n return normalized as CodexCliReasoningEffort;\n }\n throw new Error(\"codex-cli reasoningEffort must be one of low, medium, high, xhigh\");\n}\n\nexport function normalizeCodexCliTimeoutMs(value: unknown): number {\n const parsed = typeof value === \"number\"\n ? value\n : typeof value === \"string\" && value.trim().length > 0\n ? Number(value)\n : NaN;\n if (!Number.isFinite(parsed) || !Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(\"codex-cli timeoutMs must be a positive integer\");\n }\n return parsed;\n}\n\nexport const __codexCliFallbackTestHooks = {\n setRunCodexCliForTest: setCodexCliFallbackRunnerForProcess,\n};\n"],"mappings":";AA2CA,IAAM,oCAAoC,oBAAI,IAA6B;AAAA,EACzE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAI;AAOG,SAAS,qCAA8C;AAC5D,SAAO,kBAAkB;AAC3B;AAGO,SAAS,sCAA0E;AACxF,SAAO;AACT;AAOO,SAAS,oCACd,QACY;AACZ,QAAM,WAAW;AACjB,kBAAgB;AAChB,SAAO,MAAM;AACX,oBAAgB;AAAA,EAClB;AACF;AAEA,eAAsB,qBACpB,QACA,SACA,UACA,UAAmC,CAAC,GACpC,SAA6C,eACZ;AACjC,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,MAAM,OAAO;AAAA,IAClB,QAAQ,gCAAgC,MAAM;AAAA,IAC9C,SAAS,uBAAuB,OAAO;AAAA,IACvC;AAAA,IACA,SAAS,iCAAiC,OAAO;AAAA,EACnD,CAAC;AACH;AAEA,SAAS,gCACP,QACwB;AACxB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,OAAO,eAAe,SACtB,EAAE,YAAY,wBAAwB,OAAO,YAAY,sBAAsB,EAAE,IACjF,CAAC;AAAA,IACL,GAAI,OAAO,uBAAuB,SAC9B,EAAE,oBAAoB,wBAAwB,OAAO,oBAAoB,sBAAsB,EAAE,IACjG,CAAC;AAAA,IACL,GAAI,OAAO,oBAAoB,SAC3B,EAAE,iBAAiB,iCAAiC,OAAO,eAAe,EAAE,IAC5E,CAAC;AAAA,IACL,GAAI,OAAO,4BAA4B,SACnC,EAAE,yBAAyB,iCAAiC,OAAO,uBAAuB,EAAE,IAC5F,CAAC;AAAA,IACL,GAAI,OAAO,cAAc,cAAc,SACnC,EAAE,cAAc,EAAE,WAAW,2BAA2B,OAAO,aAAa,SAAS,EAAE,EAAE,IACzF,CAAC;AAAA,EACP;AACF;AAEA,SAAS,iCACP,SACyB;AACzB,SAAO;AAAA,IACL,GAAI,QAAQ,cAAc,SACtB,EAAE,WAAW,2BAA2B,QAAQ,SAAS,EAAE,IAC3D,CAAC;AAAA,IACL,GAAI,QAAQ,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,EACrD;AACF;AAEA,SAAS,wBAAwB,OAAgB,OAAuB;AACtE,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAC1D,UAAM,IAAI,MAAM,GAAG,KAAK,6BAA6B;AAAA,EACvD;AACA,SAAO,MAAM,KAAK;AACpB;AAEA,SAAS,uBAAuB,OAAuB;AACrD,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AACA,SAAO;AACT;AAEA,SAAS,iCAAiC,OAAyC;AACjF,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI,MAAM,mEAAmE;AAAA,EACrF;AACA,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAC5C,MAAI,kCAAkC,IAAI,UAAqC,GAAG;AAChF,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,mEAAmE;AACrF;AAEO,SAAS,2BAA2B,OAAwB;AACjE,QAAM,SAAS,OAAO,UAAU,WAC5B,QACA,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,IACjD,OAAO,KAAK,IACZ;AACN,MAAI,CAAC,OAAO,SAAS,MAAM,KAAK,CAAC,OAAO,UAAU,MAAM,KAAK,UAAU,GAAG;AACxE,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;AAEO,IAAM,8BAA8B;AAAA,EACzC,uBAAuB;AACzB;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-ZEPVWLCN.js";
3
+ } from "./chunk-CZTPU65V.js";
4
4
  import {
5
5
  composeMemoryEnvelope
6
- } from "./chunk-LSLCFCCQ.js";
6
+ } from "./chunk-GDYU6VF4.js";
7
7
  import {
8
8
  isErrnoCode
9
9
  } from "./chunk-KNA3BXXL.js";
@@ -546,4 +546,4 @@ export {
546
546
  setSemanticRulePromotionTestHooks,
547
547
  promoteSemanticRuleFromMemory
548
548
  };
549
- //# sourceMappingURL=chunk-6Z3WW2MW.js.map
549
+ //# sourceMappingURL=chunk-ENBPQEVU.js.map
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  WearablesInputError
3
3
  } from "./chunk-V7IZKJI3.js";
4
+ import {
5
+ AdapterRegistry
6
+ } from "./chunk-Q4AUIFUA.js";
4
7
  import {
5
8
  WriteRateLimiter
6
9
  } from "./chunk-TB6CBZ5V.js";
7
- import {
8
- AdapterRegistry
9
- } from "./chunk-XAITGGX5.js";
10
10
  import {
11
11
  serializeInlineScriptValue
12
12
  } from "./chunk-3HSRWJTC.js";
13
13
  import {
14
14
  respondDeepRecall
15
- } from "./chunk-CIYUWSMZ.js";
15
+ } from "./chunk-TRLOFIQC.js";
16
16
  import {
17
17
  handleSupportPassportOwnerHttp
18
- } from "./chunk-FCFAYMTU.js";
18
+ } from "./chunk-NXGSONWM.js";
19
19
  import {
20
20
  buildSupportPassportPublicRequestHandler
21
- } from "./chunk-DOQLHCSS.js";
21
+ } from "./chunk-ZBW7A667.js";
22
22
  import {
23
23
  handleMcpGetSse
24
24
  } from "./chunk-SRT6SHVZ.js";
@@ -31,14 +31,14 @@ import {
31
31
  processChatMessage,
32
32
  sessionBelongsToPrincipal,
33
33
  subscribeChatTranscript
34
- } from "./chunk-B2YKTE7P.js";
34
+ } from "./chunk-5SPCMAUC.js";
35
35
  import {
36
36
  RelayMissionStoreError
37
- } from "./chunk-OTPXEE6W.js";
37
+ } from "./chunk-VSL63CFJ.js";
38
38
  import {
39
39
  executeResolution,
40
40
  isValidResolutionVerb
41
- } from "./chunk-R3TLVTWW.js";
41
+ } from "./chunk-JDX2OA4R.js";
42
42
  import {
43
43
  isDefaultReviewNamespace,
44
44
  listPairs,
@@ -56,10 +56,10 @@ import {
56
56
  optionalNamespaceKindQueryParam,
57
57
  optionalQueryString,
58
58
  positiveIntQueryParam
59
- } from "./chunk-5SYI2F47.js";
59
+ } from "./chunk-O76F5QPP.js";
60
60
  import {
61
61
  respondBriefingHttp
62
- } from "./chunk-XCF3SFHD.js";
62
+ } from "./chunk-3NPNBVFR.js";
63
63
  import {
64
64
  maybeHandleLifecycleFlush
65
65
  } from "./chunk-TIDEL77O.js";
@@ -70,14 +70,14 @@ import {
70
70
  authorizationProbeNamespaces,
71
71
  authorizationProbeRequiresPrincipalNamespace,
72
72
  probeOperationAuthorization
73
- } from "./chunk-JYR4LH76.js";
73
+ } from "./chunk-GMIQV6DD.js";
74
74
  import {
75
75
  getOperation,
76
76
  resolveQueryNamespaceWritablePreflight
77
- } from "./chunk-JLXWRQNR.js";
77
+ } from "./chunk-UZEHHXYC.js";
78
78
  import {
79
79
  handleWhoKnowsHttpQuery
80
- } from "./chunk-X7BCM2NA.js";
80
+ } from "./chunk-3EKVN2OP.js";
81
81
  import {
82
82
  isTrustZoneName
83
83
  } from "./chunk-ROBHL3GL.js";
@@ -86,13 +86,13 @@ import {
86
86
  } from "./chunk-DEUNUKTD.js";
87
87
  import {
88
88
  isRecallDisclosure
89
- } from "./chunk-RN3MVLW3.js";
89
+ } from "./chunk-IYKZJVL5.js";
90
90
  import {
91
91
  CorrectionContractError
92
92
  } from "./chunk-QLK3SL7Q.js";
93
93
  import {
94
94
  peerManifestRevision
95
- } from "./chunk-3OHISDDW.js";
95
+ } from "./chunk-5U7K4W6K.js";
96
96
  import {
97
97
  assertOperationAllowed,
98
98
  capabilityAllowsOp,
@@ -102,7 +102,7 @@ import {
102
102
  } from "./chunk-MZWSOLMT.js";
103
103
  import {
104
104
  validateRequest
105
- } from "./chunk-7MJBKZPU.js";
105
+ } from "./chunk-P4ZAEYKG.js";
106
106
  import {
107
107
  OFFLINE_SYNC_APPLY_MAX_BODY_BYTES,
108
108
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
@@ -2136,6 +2136,8 @@ var EngramAccessHttpServer = class extends ReviewDeckAccessHttpBase {
2136
2136
  sourceReason: body.sourceReason,
2137
2137
  cwd: body.cwd,
2138
2138
  projectTag: body.projectTag,
2139
+ // #2829: raw alias spelling retained by the schema transform.
2140
+ ...body.rawCategory !== void 0 ? { rawCategory: body.rawCategory } : {},
2139
2141
  // Phase 1 provenance: server-resolved connector identity from the
2140
2142
  // bearer token (REST path, mirroring the MCP tools/call dispatch).
2141
2143
  sourceConnector: this.resolveConnector(req)
@@ -2578,7 +2580,7 @@ var EngramAccessHttpServer = class extends ReviewDeckAccessHttpBase {
2578
2580
  if (req.method === "POST" && pathname === "/engram/v1/contradiction-scan") {
2579
2581
  this.enforceTokenOp("contradiction_scan_run");
2580
2582
  const body = await this.readJsonBody(req);
2581
- const { runContradictionScan } = await import("./contradiction-scan-GVD4JJ7B.js");
2583
+ const { runContradictionScan } = await import("./contradiction-scan-BSGKZHYJ.js");
2582
2584
  const principal = this.resolveRequestPrincipal(req);
2583
2585
  const result = await runContradictionScan({
2584
2586
  storage: this.service.storageRef,
@@ -3589,4 +3591,4 @@ export {
3589
3591
  resolveDefaultAdminConsolePublicDir,
3590
3592
  EngramAccessHttpServer
3591
3593
  };
3592
- //# sourceMappingURL=chunk-DOKKRZPH.js.map
3594
+ //# sourceMappingURL=chunk-EYKIDK33.js.map