@remnic/core 9.69.40 → 9.69.41

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 (657) hide show
  1. package/dist/access-admin-ops-surface.d.ts +13 -13
  2. package/dist/access-admin-ops-surface.js +69 -68
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-authorization-probe.d.ts +13 -13
  5. package/dist/access-authorization-probe.js +70 -69
  6. package/dist/access-boundary.d.ts +13 -13
  7. package/dist/access-boundary.js +69 -68
  8. package/dist/access-cli.js +157 -155
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-coding-context-resolution.d.ts +1 -1
  11. package/dist/access-extraction-force-flush.d.ts +13 -13
  12. package/dist/access-extraction-force-flush.js +69 -68
  13. package/dist/access-health-types.d.ts +1 -1
  14. package/dist/access-http-briefing.d.ts +13 -13
  15. package/dist/access-http-briefing.js +70 -69
  16. package/dist/access-http-lcm-compaction.d.ts +13 -13
  17. package/dist/access-http-lifecycle-flush.d.ts +13 -13
  18. package/dist/access-http-offline-stream.d.ts +13 -13
  19. package/dist/access-http-query.d.ts +2 -2
  20. package/dist/access-http-query.js +71 -70
  21. package/dist/access-http.d.ts +14 -14
  22. package/dist/access-http.js +90 -87
  23. package/dist/access-identity-continuity-surface.d.ts +11 -11
  24. package/dist/access-identity-continuity-surface.js +69 -68
  25. package/dist/access-lcm-surface.d.ts +13 -13
  26. package/dist/access-lcm-surface.js +69 -68
  27. package/dist/access-mcp-shared-context-tools.d.ts +156 -0
  28. package/dist/access-mcp-shared-context-tools.js +8 -0
  29. package/dist/access-mcp.d.ts +13 -13
  30. package/dist/access-mcp.js +81 -78
  31. package/dist/access-memory-search-fanout.d.ts +2 -2
  32. package/dist/{access-namespace-preflight-CKBumJ8W.d.ts → access-namespace-preflight-DWsMc9Dh.d.ts} +1 -1
  33. package/dist/access-namespace-preflight.d.ts +3 -3
  34. package/dist/access-namespace-preflight.js +69 -68
  35. package/dist/access-observe-transcript.d.ts +11 -11
  36. package/dist/access-observe-write-category.d.ts +1 -1
  37. package/dist/access-observe-write-category.js +4 -4
  38. package/dist/access-observe-write-surface.d.ts +13 -13
  39. package/dist/access-observe-write-surface.js +69 -68
  40. package/dist/access-offline-manifest.d.ts +11 -11
  41. package/dist/access-offline-manifest.js +9 -9
  42. package/dist/access-operations-batch.js +74 -72
  43. package/dist/access-operations.d.ts +13 -13
  44. package/dist/access-operations.js +79 -77
  45. package/dist/access-recall-concurrency.d.ts +13 -13
  46. package/dist/access-recall-concurrency.js +69 -68
  47. package/dist/access-recall-response.d.ts +13 -13
  48. package/dist/access-recall-response.js +69 -68
  49. package/dist/access-recall-surface.d.ts +13 -13
  50. package/dist/access-recall-surface.js +69 -68
  51. package/dist/access-schema.d.ts +1 -1
  52. package/dist/access-schema.js +3 -3
  53. package/dist/{access-service-DJ3qogNt.d.ts → access-service-Cisy5YDq.d.ts} +14 -9
  54. package/dist/access-service-helpers.d.ts +13 -13
  55. package/dist/access-service.d.ts +13 -13
  56. package/dist/access-service.js +69 -68
  57. package/dist/access-surface-catalog.d.ts +13 -13
  58. package/dist/access-surface-catalog.js +71 -70
  59. package/dist/access-surface-catalog.js.map +1 -1
  60. package/dist/access-wearables-meetings-surface.d.ts +4 -4
  61. package/dist/action-confidence.d.ts +1 -1
  62. package/dist/active-memory-bridge.d.ts +1 -1
  63. package/dist/active-memory-bridge.js +3 -3
  64. package/dist/active-recall.d.ts +1 -1
  65. package/dist/active-recall.js +6 -6
  66. package/dist/activity/digest.d.ts +1 -1
  67. package/dist/ambient-provenance.d.ts +1 -1
  68. package/dist/artifact-search.d.ts +1 -1
  69. package/dist/{auto-sync-D6BAPIJV.js → auto-sync-7PGUFY7U.js} +7 -7
  70. package/dist/background-generation.d.ts +1 -1
  71. package/dist/behavior-learner.d.ts +1 -1
  72. package/dist/behavior-signals.d.ts +1 -1
  73. package/dist/bootstrap.d.ts +11 -11
  74. package/dist/briefing-window.d.ts +2 -2
  75. package/dist/briefing.d.ts +2 -2
  76. package/dist/briefing.js +17 -17
  77. package/dist/buffer-surprise-report.d.ts +1 -1
  78. package/dist/buffer-turn-helpers.d.ts +1 -1
  79. package/dist/buffer.d.ts +2 -2
  80. package/dist/buffer.js +5 -5
  81. package/dist/bulk-import/index.d.ts +3 -3
  82. package/dist/calibration.d.ts +1 -1
  83. package/dist/calibration.js +2 -2
  84. package/dist/capabilities.d.ts +1 -1
  85. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  86. package/dist/{capsule-merge-IPG4IOFP.js → capsule-merge-3MNURAQ3.js} +2 -2
  87. package/dist/{catalog-BHXkBVhg.d.ts → catalog-wcX1QhtQ.d.ts} +1 -1
  88. package/dist/causal-behavior.d.ts +1 -1
  89. package/dist/causal-consolidation.d.ts +1 -1
  90. package/dist/causal-consolidation.js +20 -20
  91. package/dist/causal-trajectory-graph.d.ts +1 -1
  92. package/dist/{chunk-M6RORUO5.js → chunk-2EYZ32LH.js} +24 -2
  93. package/dist/{chunk-M6RORUO5.js.map → chunk-2EYZ32LH.js.map} +1 -1
  94. package/dist/{chunk-VHKXRYQN.js → chunk-2HQPE2NM.js} +2 -2
  95. package/dist/{chunk-RDLPFM7I.js → chunk-2ZG2LLZT.js} +2 -2
  96. package/dist/{chunk-IMBQFHRV.js → chunk-3BLHPQHT.js} +5 -5
  97. package/dist/{chunk-6L2II3KS.js → chunk-3D75XIYO.js} +2 -2
  98. package/dist/{chunk-J272ODKJ.js → chunk-42DJ235G.js} +2 -2
  99. package/dist/{chunk-RJQAP333.js → chunk-46RII65S.js} +2 -2
  100. package/dist/{chunk-JUDT33RX.js → chunk-4AX5OYKC.js} +2 -2
  101. package/dist/{chunk-GSSDHAYH.js → chunk-4IGOLIWM.js} +2 -2
  102. package/dist/{chunk-4CMXI55L.js → chunk-54QPOE45.js} +2 -2
  103. package/dist/{chunk-LKFVVN7R.js → chunk-563X6JJX.js} +2 -2
  104. package/dist/{chunk-VQWBUPSJ.js → chunk-5EQT62HH.js} +2 -2
  105. package/dist/{chunk-BYQX4IOG.js → chunk-6MQMYXSQ.js} +2 -2
  106. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  107. package/dist/{chunk-K75A5XWU.js → chunk-7ZLC4DTZ.js} +4 -4
  108. package/dist/{chunk-7Z54NXVS.js → chunk-A4OIJYCV.js} +2 -2
  109. package/dist/{chunk-QS5Q5RBV.js → chunk-AFJHNHAM.js} +8 -8
  110. package/dist/{chunk-TZ44E732.js → chunk-AIVRD66I.js} +2 -2
  111. package/dist/{chunk-OEDW4ER7.js → chunk-AJBWVDRV.js} +2 -1
  112. package/dist/chunk-AJBWVDRV.js.map +1 -0
  113. package/dist/{chunk-IOPIGX7Y.js → chunk-AKABVXFS.js} +2 -2
  114. package/dist/{chunk-KOTG3RXE.js → chunk-AUSRUOMQ.js} +2 -2
  115. package/dist/{chunk-K4A6UVPB.js → chunk-BTPCP535.js} +8 -8
  116. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  117. package/dist/{chunk-TEMKBSV6.js → chunk-C3G6MW4W.js} +3 -3
  118. package/dist/{chunk-3QEVOQF5.js → chunk-D6PY63OM.js} +2 -2
  119. package/dist/{chunk-DFVSJFHK.js → chunk-DBB5JPSL.js} +2 -2
  120. package/dist/{chunk-HJUP3K6L.js → chunk-DIXZQTGY.js} +2 -2
  121. package/dist/{chunk-ZX3AYNNV.js → chunk-DM5CU5J7.js} +2 -2
  122. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  123. package/dist/{chunk-BGRTZOJB.js → chunk-E3I3NDUP.js} +4 -4
  124. package/dist/{chunk-ZAEPD4C2.js → chunk-E4LMQTST.js} +2 -2
  125. package/dist/{chunk-NETQXOPY.js → chunk-EH3HNCAM.js} +12 -7
  126. package/dist/{chunk-NETQXOPY.js.map → chunk-EH3HNCAM.js.map} +1 -1
  127. package/dist/{chunk-7D6SER6A.js → chunk-EMSYMYXO.js} +14 -14
  128. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  129. package/dist/{chunk-V2ZA4YWE.js → chunk-F5H6YG5P.js} +2 -2
  130. package/dist/{chunk-YTK5MVNF.js → chunk-FGFC2EFR.js} +14 -13
  131. package/dist/chunk-FGFC2EFR.js.map +1 -0
  132. package/dist/{chunk-ZMWSYUUL.js → chunk-GCBIXUPT.js} +2 -2
  133. package/dist/{chunk-IS2IDFJP.js → chunk-GMH5QPUU.js} +22 -22
  134. package/dist/chunk-GMH5QPUU.js.map +1 -0
  135. package/dist/{chunk-LFVZD5EC.js → chunk-GWNSKQDA.js} +3 -3
  136. package/dist/{chunk-JDX2OA4R.js → chunk-HNHIHXSD.js} +2 -2
  137. package/dist/{chunk-2SNCQHJZ.js → chunk-I33QYUAF.js} +6 -6
  138. package/dist/{chunk-UZ6JYPJ6.js → chunk-I46BYY7U.js} +193 -150
  139. package/dist/chunk-I46BYY7U.js.map +1 -0
  140. package/dist/{chunk-MVG3KXON.js → chunk-ICN37XHG.js} +15 -15
  141. package/dist/chunk-IFBSZGW3.js +42 -0
  142. package/dist/chunk-IFBSZGW3.js.map +1 -0
  143. package/dist/{chunk-ICNJ6J46.js → chunk-IYIPXAIJ.js} +2 -2
  144. package/dist/{chunk-AEOOGXMQ.js → chunk-J2MGTGKC.js} +4 -4
  145. package/dist/chunk-JATHBCAV.js +94 -0
  146. package/dist/chunk-JATHBCAV.js.map +1 -0
  147. package/dist/{chunk-5U7K4W6K.js → chunk-JDOBQPJY.js} +3 -3
  148. package/dist/{chunk-TG3FAM2S.js → chunk-JL4TQYM5.js} +48 -1
  149. package/dist/{chunk-TG3FAM2S.js.map → chunk-JL4TQYM5.js.map} +1 -1
  150. package/dist/{chunk-NVVZPBKI.js → chunk-JMWUPUE6.js} +2 -2
  151. package/dist/{chunk-QPVNK2VE.js → chunk-JSD7Q7LD.js} +2 -2
  152. package/dist/{chunk-RLU2Y5GV.js → chunk-K5D2XVNN.js} +4 -4
  153. package/dist/{chunk-YTZN2UZO.js → chunk-KJLLPG26.js} +2 -2
  154. package/dist/{chunk-2SKMZUOW.js → chunk-KLUC2GSG.js} +6 -6
  155. package/dist/{chunk-YRIFXXMI.js → chunk-KZJM7R4F.js} +3 -3
  156. package/dist/{chunk-46Z3VGWF.js → chunk-LE2KZ72G.js} +3 -3
  157. package/dist/{chunk-HIP6DKJJ.js → chunk-LQVXSRAJ.js} +2 -2
  158. package/dist/{chunk-A7GQBJP5.js → chunk-LVFI5LG7.js} +7 -7
  159. package/dist/{chunk-5LYSEZOF.js → chunk-MCMS4VUK.js} +9 -8
  160. package/dist/chunk-MCMS4VUK.js.map +1 -0
  161. package/dist/{chunk-ROEFLU37.js → chunk-N6XTC56E.js} +13 -81
  162. package/dist/chunk-N6XTC56E.js.map +1 -0
  163. package/dist/{chunk-PKUJNICO.js → chunk-ND7MAIJC.js} +2 -2
  164. package/dist/{chunk-DAZANIYU.js → chunk-NYWCFC3K.js} +76 -77
  165. package/dist/{chunk-DAZANIYU.js.map → chunk-NYWCFC3K.js.map} +1 -1
  166. package/dist/{chunk-W23JARAQ.js → chunk-P66QH6R6.js} +2 -2
  167. package/dist/{chunk-62D2PAAM.js → chunk-PAAJWQH5.js} +4 -4
  168. package/dist/{chunk-XM46Y66S.js → chunk-PFKIOYJH.js} +2 -2
  169. package/dist/{chunk-C5R73BON.js → chunk-PGGPRF6J.js} +2 -2
  170. package/dist/{chunk-V6EGNVUT.js → chunk-PIWFNPQT.js} +4 -4
  171. package/dist/{chunk-JOP7W24J.js → chunk-PLJ2MQFT.js} +4 -4
  172. package/dist/{chunk-MJC7UKH7.js → chunk-PQ42DJNG.js} +2 -2
  173. package/dist/{chunk-37CAEC7E.js → chunk-PWPIERBM.js} +4 -4
  174. package/dist/{chunk-BXIJSPCL.js → chunk-Q62GA5U2.js} +2 -2
  175. package/dist/{chunk-CC37E3QM.js → chunk-QKCXRS5A.js} +16 -1
  176. package/dist/chunk-QKCXRS5A.js.map +1 -0
  177. package/dist/{chunk-VKWFNPBH.js → chunk-RQQO3ORQ.js} +2 -2
  178. package/dist/{chunk-SFHLQPBF.js → chunk-S4MJTIPG.js} +85 -81
  179. package/dist/chunk-S4MJTIPG.js.map +1 -0
  180. package/dist/{chunk-THTF2W7M.js → chunk-TRTLWUDD.js} +19 -18
  181. package/dist/chunk-TRTLWUDD.js.map +1 -0
  182. package/dist/{chunk-KTOXQMW3.js → chunk-UHSOPTNB.js} +14 -4
  183. package/dist/chunk-UHSOPTNB.js.map +1 -0
  184. package/dist/{chunk-ES5BUPYB.js → chunk-UZGHKD3T.js} +2 -2
  185. package/dist/{chunk-62HFZNCJ.js → chunk-V2EXYQEQ.js} +11 -10
  186. package/dist/{chunk-62HFZNCJ.js.map → chunk-V2EXYQEQ.js.map} +1 -1
  187. package/dist/{chunk-QE6YVNP5.js → chunk-V2TOGJPM.js} +49 -16
  188. package/dist/chunk-V2TOGJPM.js.map +1 -0
  189. package/dist/{chunk-J4WGTN2N.js → chunk-V62YYBBY.js} +4 -4
  190. package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
  191. package/dist/{chunk-Z4GUX2M6.js → chunk-VSN2DMQK.js} +2 -2
  192. package/dist/{chunk-ZHXSOMYH.js → chunk-VVX5PZFS.js} +2 -2
  193. package/dist/{chunk-KY236SP5.js → chunk-W7UV2ZCA.js} +3 -3
  194. package/dist/{chunk-TO36VPZI.js → chunk-WBQ4ONQJ.js} +2 -2
  195. package/dist/{chunk-WZYHPAG5.js → chunk-WFMQN7JE.js} +3 -3
  196. package/dist/{chunk-G2XZFGYN.js → chunk-WGZHSQDV.js} +4 -4
  197. package/dist/{chunk-MDIEES23.js → chunk-WN2OXGGH.js} +1 -1
  198. package/dist/chunk-WN2OXGGH.js.map +1 -0
  199. package/dist/{chunk-SUEOG2S4.js → chunk-WPGA4RYI.js} +2 -2
  200. package/dist/{chunk-SV4Z2S67.js → chunk-WUUGE7QC.js} +54 -21
  201. package/dist/chunk-WUUGE7QC.js.map +1 -0
  202. package/dist/{chunk-J7FVMLBR.js → chunk-WZIO3TW6.js} +2 -2
  203. package/dist/{chunk-ZZUVBZL2.js → chunk-X2QPKLPL.js} +2 -2
  204. package/dist/{chunk-JAJIMTFB.js → chunk-XRS65T4O.js} +9 -9
  205. package/dist/{chunk-GO5LOHCD.js → chunk-YFXAWGMR.js} +2 -2
  206. package/dist/{chunk-ZRMMXWYI.js → chunk-YR5QT4SR.js} +32 -9
  207. package/dist/chunk-YR5QT4SR.js.map +1 -0
  208. package/dist/{chunk-CARRTDKC.js → chunk-Z22M4JCY.js} +4 -3
  209. package/dist/chunk-Z22M4JCY.js.map +1 -0
  210. package/dist/{chunk-K4JKAXMO.js → chunk-Z535ADTC.js} +3 -3
  211. package/dist/{chunk-23HFXQ5J.js → chunk-Z7NBT6AK.js} +3 -3
  212. package/dist/{chunk-VQYWKCDR.js → chunk-ZX6NNFSY.js} +3 -3
  213. package/dist/{chunk-3XPN7AVY.js → chunk-ZYSOT6HD.js} +2 -2
  214. package/dist/{chunk-ZZCR2QYL.js → chunk-ZZEIL3MI.js} +2 -2
  215. package/dist/{cli-BWri5-am.d.ts → cli-CUlMlS2N.d.ts} +5 -5
  216. package/dist/cli.d.ts +15 -15
  217. package/dist/cli.js +116 -114
  218. package/dist/coding/export-okf-codegraph.d.ts +1 -1
  219. package/dist/coding/export-okf-codegraph.js +16 -16
  220. package/dist/coding/pre-action-gate.d.ts +1 -1
  221. package/dist/compounding/engine.d.ts +2 -2
  222. package/dist/compounding/engine.js +19 -19
  223. package/dist/compounding/preference-consolidator.d.ts +1 -1
  224. package/dist/compression-optimizer.d.ts +1 -1
  225. package/dist/config.d.ts +1 -1
  226. package/dist/config.js +6 -6
  227. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  228. package/dist/connectors/codex-materialize-runner.js +19 -19
  229. package/dist/connectors/codex-materialize.d.ts +1 -1
  230. package/dist/connectors/codex-materialize.js +2 -2
  231. package/dist/connectors/index.d.ts +1 -1
  232. package/dist/connectors/index.js +19 -19
  233. package/dist/consolidation-provenance-check.d.ts +2 -2
  234. package/dist/consolidation-undo.d.ts +2 -2
  235. package/dist/contradiction/index.d.ts +4 -4
  236. package/dist/contradiction/index.js +4 -4
  237. package/dist/{contradiction-scan-BSGKZHYJ.js → contradiction-scan-GVD4JJ7B.js} +4 -4
  238. package/dist/converge-config.d.ts +1 -1
  239. package/dist/convergence-refresh.d.ts +2 -2
  240. package/dist/convergence-refresh.js +20 -20
  241. package/dist/conversation-index/backend.d.ts +1 -1
  242. package/dist/conversation-index/chunker.d.ts +1 -1
  243. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  244. package/dist/conversation-index/indexer.d.ts +1 -1
  245. package/dist/conversation-index/search.d.ts +1 -1
  246. package/dist/corpus-watermark.d.ts +1 -1
  247. package/dist/corpus-watermark.js +19 -19
  248. package/dist/cross-lingual-recall.d.ts +1 -1
  249. package/dist/dashboard-runtime.js +2 -2
  250. package/dist/day-summary.d.ts +1 -1
  251. package/dist/deep-recall-config.d.ts +12 -1
  252. package/dist/deep-recall-config.js +5 -3
  253. package/dist/deep-recall-http-glue.d.ts +16 -14
  254. package/dist/deep-recall-http-glue.js +7 -4
  255. package/dist/deep-recall-mcp-tools.d.ts +13 -13
  256. package/dist/deep-recall-policy-llm.d.ts +12 -2
  257. package/dist/deep-recall-policy-llm.js +3 -3
  258. package/dist/deep-recall-seeds.d.ts +4 -1
  259. package/dist/deep-recall-seeds.js +1 -1
  260. package/dist/deep-recall.d.ts +12 -1
  261. package/dist/deep-recall.js +3 -2
  262. package/dist/delinearize.d.ts +1 -1
  263. package/dist/dependency-propagation-config.d.ts +1 -1
  264. package/dist/{dependency-propagation-delivery-ueZlKTQB.d.ts → dependency-propagation-delivery-BDDjImQn.d.ts} +1 -1
  265. package/dist/direct-answer-wiring.d.ts +1 -1
  266. package/dist/direct-answer.d.ts +1 -1
  267. package/dist/embedding-fallback.d.ts +1 -1
  268. package/dist/enrichment/index.d.ts +1 -1
  269. package/dist/entity-origin-fields.d.ts +1 -1
  270. package/dist/entity-retrieval.d.ts +2 -2
  271. package/dist/entity-retrieval.js +18 -18
  272. package/dist/entity-schema.d.ts +1 -1
  273. package/dist/episodic-context.d.ts +1 -1
  274. package/dist/eval-trajectory-contracts.d.ts +1 -1
  275. package/dist/eval-trajectory-store.d.ts +1 -1
  276. package/dist/eval-trajectory.d.ts +1 -1
  277. package/dist/explicit-capture.d.ts +11 -11
  278. package/dist/explicit-capture.js +3 -3
  279. package/dist/external-wiki-access.d.ts +13 -13
  280. package/dist/external-wiki-access.js +70 -69
  281. package/dist/external-wiki-collection-registration.d.ts +1 -1
  282. package/dist/external-wiki-collection.d.ts +1 -1
  283. package/dist/external-wiki-mcp-tools.d.ts +13 -13
  284. package/dist/extraction-error-classification.d.ts +1 -1
  285. package/dist/extraction-faithfulness.d.ts +2 -2
  286. package/dist/extraction-faithfulness.js +3 -3
  287. package/dist/extraction-judge-telemetry.d.ts +2 -2
  288. package/dist/extraction-judge-training.d.ts +2 -2
  289. package/dist/extraction-judge.d.ts +2 -2
  290. package/dist/extraction-judge.js +3 -3
  291. package/dist/extraction-liveness.d.ts +1 -1
  292. package/dist/extraction-normalization.d.ts +1 -1
  293. package/dist/extraction-prompt.d.ts +1 -1
  294. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  295. package/dist/extraction-source-grounding.d.ts +1 -1
  296. package/dist/extraction-span-config.d.ts +1 -1
  297. package/dist/extraction-span-materialize.d.ts +1 -1
  298. package/dist/extraction.d.ts +2 -2
  299. package/dist/extraction.js +30 -30
  300. package/dist/fallback-llm-codex-subscription.d.ts +15 -5
  301. package/dist/fallback-llm-codex-subscription.js +3 -1
  302. package/dist/fallback-llm.d.ts +1 -1
  303. package/dist/fallback-llm.js +2 -2
  304. package/dist/{first-start-migration-ZWMV5CX4.js → first-start-migration-L3UFX5CU.js} +4 -4
  305. package/dist/{generic-recall-paths-CpyVmA88.d.ts → generic-recall-paths-CpDzNO_I.d.ts} +1 -1
  306. package/dist/graph-append-error.d.ts +1 -1
  307. package/dist/graph-dashboard-diff.d.ts +1 -1
  308. package/dist/graph-dashboard-key.d.ts +1 -1
  309. package/dist/graph-dashboard-parser.d.ts +1 -1
  310. package/dist/graph-edge-reinforcement.d.ts +1 -1
  311. package/dist/graph-jsonl.d.ts +1 -1
  312. package/dist/graph-path-reconstruction.d.ts +1 -1
  313. package/dist/graph-path-scoring.d.ts +1 -1
  314. package/dist/graph-snapshot.d.ts +1 -1
  315. package/dist/graph.d.ts +1 -1
  316. package/dist/harmonic-retrieval.js +3 -3
  317. package/dist/importance.d.ts +1 -1
  318. package/dist/importers/index.d.ts +1 -1
  319. package/dist/importers/test-utils.d.ts +1 -1
  320. package/dist/in-flight-reads.d.ts +1 -1
  321. package/dist/{index-BvUA4S7M.d.ts → index-CtmmCJoo.d.ts} +3 -3
  322. package/dist/index.d.ts +26 -26
  323. package/dist/index.js +279 -275
  324. package/dist/intent.d.ts +1 -1
  325. package/dist/lcm/engine.d.ts +1 -1
  326. package/dist/lcm/engine.js +3 -3
  327. package/dist/lcm/index.d.ts +1 -1
  328. package/dist/lcm/index.js +8 -8
  329. package/dist/lcm/tools.d.ts +1 -1
  330. package/dist/lifecycle.d.ts +1 -1
  331. package/dist/live-connectors-runner.d.ts +1 -1
  332. package/dist/{local-llm-BsJGulur.d.ts → local-llm-DpXIvm6F.d.ts} +1 -1
  333. package/dist/local-llm-helpers.d.ts +2 -2
  334. package/dist/local-llm.d.ts +2 -2
  335. package/dist/local-llm.js +2 -2
  336. package/dist/local-model-endpoint.d.ts +1 -1
  337. package/dist/location/index.d.ts +3 -3
  338. package/dist/location/index.js +19 -19
  339. package/dist/maintenance/memory-governance.d.ts +1 -1
  340. package/dist/maintenance/memory-governance.js +18 -18
  341. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  342. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +17 -17
  343. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  344. package/dist/maintenance/rebuild-memory-projection.js +19 -19
  345. package/dist/{maintenance-CYubtIRr.d.ts → maintenance-CNgoLsoM.d.ts} +7 -6
  346. package/dist/mcp-memory-inspector-app.d.ts +13 -13
  347. package/dist/memory-action-policy.d.ts +1 -1
  348. package/dist/memory-cache.d.ts +1 -1
  349. package/dist/memory-controller.d.ts +1 -1
  350. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  351. package/dist/memory-projection-store.d.ts +1 -1
  352. package/dist/memory-provenance.d.ts +1 -1
  353. package/dist/memory-snapshot.d.ts +1 -1
  354. package/dist/memory-subject-cli.d.ts +13 -13
  355. package/dist/memory-subject.d.ts +13 -13
  356. package/dist/memory-worth-outcomes.d.ts +2 -2
  357. package/dist/models-json.d.ts +1 -1
  358. package/dist/namespaces/migrate.d.ts +3 -3
  359. package/dist/namespaces/migrate.js +18 -18
  360. package/dist/namespaces/principal.d.ts +1 -1
  361. package/dist/namespaces/search.d.ts +1 -1
  362. package/dist/namespaces/search.js +3 -3
  363. package/dist/namespaces/storage.d.ts +3 -3
  364. package/dist/namespaces/storage.js +17 -17
  365. package/dist/native-knowledge.d.ts +1 -1
  366. package/dist/offline-sync-impression-drain.d.ts +1 -1
  367. package/dist/operator-doctor-corpus.d.ts +1 -1
  368. package/dist/operator-doctor-corpus.js +20 -20
  369. package/dist/operator-doctor-replica.d.ts +1 -1
  370. package/dist/operator-toolkit.d.ts +3 -3
  371. package/dist/operator-toolkit.js +35 -35
  372. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  373. package/dist/orchestration/maintenance.d.ts +4 -4
  374. package/dist/orchestration/maintenance.js +29 -29
  375. package/dist/{orchestrator-BWDRJ_0d.d.ts → orchestrator-DT7ybIFz.d.ts} +18 -10
  376. package/dist/orchestrator.d.ts +11 -11
  377. package/dist/orchestrator.js +157 -155
  378. package/dist/patterns-cli.d.ts +1 -1
  379. package/dist/{pipeline-7JMn2yMH.d.ts → pipeline-CgBEmHcz.d.ts} +1 -1
  380. package/dist/policy-runtime.d.ts +1 -1
  381. package/dist/proactive-contention.d.ts +2 -2
  382. package/dist/provenance.d.ts +1 -1
  383. package/dist/{public-http-CJWs3mo9.d.ts → public-http-C8P8fyiO.d.ts} +1 -1
  384. package/dist/{qmd-CxCH9G9m.d.ts → qmd-BkY8KpCh.d.ts} +1 -1
  385. package/dist/qmd-preflight.d.ts +2 -2
  386. package/dist/qmd-recall-cache.d.ts +1 -1
  387. package/dist/qmd.d.ts +2 -2
  388. package/dist/recall-concurrency-config.d.ts +1 -1
  389. package/dist/recall-disclosure-escalation.d.ts +1 -1
  390. package/dist/recall-explain-renderer.d.ts +1 -1
  391. package/dist/recall-explain-renderer.js +3 -3
  392. package/dist/recall-memory-map.d.ts +1 -1
  393. package/dist/recall-navigate-access.d.ts +1 -1
  394. package/dist/recall-navigate-access.js +2 -2
  395. package/dist/recall-navigate-disclosure.d.ts +1 -1
  396. package/dist/recall-navigate-disclosure.js +1 -1
  397. package/dist/recall-navigate.d.ts +1 -1
  398. package/dist/recall-navigate.js +2 -2
  399. package/dist/recall-planner-llm.d.ts +1 -1
  400. package/dist/recall-planner-llm.js +2 -2
  401. package/dist/recall-state-view-admission.d.ts +2 -2
  402. package/dist/recall-state-view-admission.js +7 -7
  403. package/dist/recall-state-view-anchors.d.ts +1 -1
  404. package/dist/recall-state-view-anchors.js +2 -2
  405. package/dist/recall-state-view-inject.js +2 -2
  406. package/dist/recall-state-view-render.js +2 -2
  407. package/dist/recall-state-view-widen.js +2 -2
  408. package/dist/recall-state-view-wire.js +3 -3
  409. package/dist/recall-state-view.d.ts +9 -1
  410. package/dist/recall-state-view.js +5 -3
  411. package/dist/recall-state.d.ts +1 -1
  412. package/dist/recall-tag-filter.d.ts +1 -1
  413. package/dist/recall-timings.d.ts +1 -1
  414. package/dist/recall-xray-cli.d.ts +1 -1
  415. package/dist/recall-xray-cli.js +4 -4
  416. package/dist/recall-xray-renderer.d.ts +1 -1
  417. package/dist/recall-xray-renderer.js +3 -3
  418. package/dist/recall-xray.d.ts +1 -1
  419. package/dist/recall-xray.js +2 -2
  420. package/dist/reconcile/cursor.d.ts +1 -1
  421. package/dist/reconcile/cursor.js +2 -2
  422. package/dist/reconcile/manifest.d.ts +1 -1
  423. package/dist/reconcile/manifest.js +4 -4
  424. package/dist/reconcile/plan.d.ts +1 -1
  425. package/dist/reconcile/plan.js +2 -2
  426. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  427. package/dist/replay/normalizers/claude.d.ts +1 -1
  428. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  429. package/dist/replay/normalizers/shared.d.ts +1 -1
  430. package/dist/replay/runner.d.ts +1 -1
  431. package/dist/replay/types.d.ts +1 -1
  432. package/dist/replica-divergence.d.ts +1 -1
  433. package/dist/replica-peers-config.d.ts +1 -1
  434. package/dist/{resolution-4GG3QZRJ.js → resolution-LXFQQ4AE.js} +5 -5
  435. package/dist/resolution-LXFQQ4AE.js.map +1 -0
  436. package/dist/resolve-auth-token.d.ts +1 -1
  437. package/dist/resume-bundles.js +8 -8
  438. package/dist/retrieval-agents.d.ts +2 -2
  439. package/dist/retrieval-tiers.d.ts +1 -1
  440. package/dist/routing/engine.d.ts +1 -1
  441. package/dist/routing/store.d.ts +1 -1
  442. package/dist/salvage-envelope.d.ts +1 -1
  443. package/dist/{scope-profiles-BGAUqhBR.d.ts → scope-profiles-BBPjZ9jb.d.ts} +1 -1
  444. package/dist/search/embed-helper.d.ts +1 -1
  445. package/dist/search/factory.d.ts +1 -1
  446. package/dist/search/factory.js +2 -2
  447. package/dist/search/index.d.ts +1 -1
  448. package/dist/search/index.js +4 -4
  449. package/dist/search/lancedb-backend.d.ts +1 -1
  450. package/dist/search/meilisearch-backend.d.ts +1 -1
  451. package/dist/search/noop-backend.d.ts +1 -1
  452. package/dist/search/orama-backend.d.ts +1 -1
  453. package/dist/search/port.d.ts +1 -1
  454. package/dist/search/remote-backend.d.ts +1 -1
  455. package/dist/{semantic-consolidation-CCeRD9pV.d.ts → semantic-consolidation-BPFFVO84.d.ts} +1 -1
  456. package/dist/semantic-consolidation.d.ts +2 -2
  457. package/dist/semantic-consolidation.js +20 -20
  458. package/dist/semantic-rule-promotion.js +17 -17
  459. package/dist/semantic-rule-verifier.d.ts +1 -1
  460. package/dist/semantic-rule-verifier.js +17 -17
  461. package/dist/{service-BwpzRduk.d.ts → service-jKcr6Jvr.d.ts} +2 -2
  462. package/dist/session-observer-bands.d.ts +1 -1
  463. package/dist/session-observer-state.d.ts +1 -1
  464. package/dist/shared-context/manager.d.ts +1 -1
  465. package/dist/shared-context/manager.js +2 -2
  466. package/dist/shared-context/write-output-controls.d.ts +34 -0
  467. package/dist/shared-context/write-output-controls.js +10 -0
  468. package/dist/shared-context/write-output-controls.js.map +1 -0
  469. package/dist/signal.d.ts +1 -1
  470. package/dist/source-agent-qualifier.d.ts +1 -1
  471. package/dist/source-agent-qualifier.js +25 -25
  472. package/dist/source-attribution.d.ts +23 -1
  473. package/dist/source-attribution.js +13 -3
  474. package/dist/standup/build.js +17 -17
  475. package/dist/{storage-BprAGBG0.d.ts → storage-C-0Ah5OY.d.ts} +1 -1
  476. package/dist/storage.d.ts +2 -2
  477. package/dist/storage.js +16 -16
  478. package/dist/subject-config.d.ts +1 -1
  479. package/dist/summarizer.d.ts +1 -1
  480. package/dist/summarizer.js +6 -6
  481. package/dist/summary-snapshot.d.ts +1 -1
  482. package/dist/support-passport/index.d.ts +16 -16
  483. package/dist/support-passport/index.js +72 -71
  484. package/dist/temporal-supersession.d.ts +2 -2
  485. package/dist/temporal-timeline-recall.d.ts +1 -1
  486. package/dist/temporal-validity.d.ts +1 -1
  487. package/dist/threading.d.ts +1 -1
  488. package/dist/tier-migration.d.ts +2 -2
  489. package/dist/tier-routing.d.ts +1 -1
  490. package/dist/tier-routing.js +3 -3
  491. package/dist/{tier-stats-LUSUUNU6.js → tier-stats-VK5PCO2L.js} +4 -4
  492. package/dist/topics.d.ts +1 -1
  493. package/dist/transcript.d.ts +1 -1
  494. package/dist/transfer/backup.js +2 -2
  495. package/dist/transfer/capsule-export.js +2 -2
  496. package/dist/transfer/capsule-import.js +3 -3
  497. package/dist/transfer/export-okf.d.ts +1 -1
  498. package/dist/transfer/export-okf.js +17 -17
  499. package/dist/trust-score-stage.d.ts +1 -1
  500. package/dist/trust-score.d.ts +1 -1
  501. package/dist/{types-nJV23pa3.d.ts → types-cK5LydjL.d.ts} +5 -0
  502. package/dist/types.d.ts +1 -1
  503. package/dist/types.js +1 -1
  504. package/dist/utility-runtime.d.ts +1 -1
  505. package/dist/verified-recall.js +17 -17
  506. package/dist/who-knows-cli.d.ts +13 -13
  507. package/dist/who-knows-cli.js +18 -18
  508. package/dist/who-knows.d.ts +13 -13
  509. package/dist/who-knows.js +17 -17
  510. package/dist/write-envelope.d.ts +1 -1
  511. package/package.json +12 -2
  512. package/src/access-http.ts +1 -1
  513. package/src/access-mcp-shared-context-tools.ts +103 -0
  514. package/src/access-mcp.ts +4 -74
  515. package/src/access-operations-batch.ts +45 -2
  516. package/src/access-service.ts +14 -7
  517. package/src/activity/timeline/regenerate.test.ts +48 -0
  518. package/src/activity/timeline/regenerate.ts +7 -5
  519. package/src/cli/deep-recall-commands.ts +22 -10
  520. package/src/config.ts +5 -0
  521. package/src/dedup/merge.test.ts +283 -0
  522. package/src/deep-recall-boundary.test.ts +66 -0
  523. package/src/deep-recall-cli.test.ts +82 -0
  524. package/src/deep-recall-config.test.ts +56 -0
  525. package/src/deep-recall-config.ts +32 -0
  526. package/src/deep-recall-http-glue.ts +10 -10
  527. package/src/deep-recall-policy-llm.test.ts +242 -0
  528. package/src/deep-recall-policy-llm.ts +37 -7
  529. package/src/deep-recall-seeds.test.ts +53 -0
  530. package/src/deep-recall-seeds.ts +7 -1
  531. package/src/deep-recall-surface.test.ts +93 -0
  532. package/src/deep-recall.test.ts +121 -0
  533. package/src/deep-recall.ts +88 -28
  534. package/src/fallback-llm-codex-subscription.ts +27 -5
  535. package/src/fallback-llm.test.ts +120 -0
  536. package/src/fallback-llm.ts +17 -16
  537. package/src/meetings/config.test.ts +58 -0
  538. package/src/orchestration/extraction-persist.ts +1 -1
  539. package/src/orchestration/recall-entry.ts +15 -1
  540. package/src/orchestration/recall-internal.ts +1 -0
  541. package/src/orchestration/recall-section-coordinator.ts +65 -28
  542. package/src/orchestration/recall-state-view-pipeline.test.ts +8 -2
  543. package/src/orchestration/semantic-merge-commit-effects.ts +45 -16
  544. package/src/orchestration/semantic-merge-persist.ts +23 -36
  545. package/src/providers/codex-subscription.test.ts +127 -0
  546. package/src/providers/codex-subscription.ts +1 -1
  547. package/src/recall-state-view-budget.test.ts +424 -0
  548. package/src/recall-state-view.ts +30 -16
  549. package/src/shared-context/envelope-io.ts +25 -0
  550. package/src/shared-context/envelope-wiring.test.ts +4 -2
  551. package/src/shared-context/manager.ts +1 -0
  552. package/src/shared-context/write-output-controls.test.ts +192 -0
  553. package/src/shared-context/write-output-controls.ts +72 -0
  554. package/src/source-attribution.test.ts +39 -0
  555. package/src/source-attribution.ts +72 -0
  556. package/src/types.ts +5 -0
  557. package/dist/chunk-5LYSEZOF.js.map +0 -1
  558. package/dist/chunk-CARRTDKC.js.map +0 -1
  559. package/dist/chunk-CC37E3QM.js.map +0 -1
  560. package/dist/chunk-IS2IDFJP.js.map +0 -1
  561. package/dist/chunk-KTOXQMW3.js.map +0 -1
  562. package/dist/chunk-MDIEES23.js.map +0 -1
  563. package/dist/chunk-OEDW4ER7.js.map +0 -1
  564. package/dist/chunk-QE6YVNP5.js.map +0 -1
  565. package/dist/chunk-ROEFLU37.js.map +0 -1
  566. package/dist/chunk-SFHLQPBF.js.map +0 -1
  567. package/dist/chunk-SV4Z2S67.js.map +0 -1
  568. package/dist/chunk-THTF2W7M.js.map +0 -1
  569. package/dist/chunk-UZ6JYPJ6.js.map +0 -1
  570. package/dist/chunk-YTK5MVNF.js.map +0 -1
  571. package/dist/chunk-ZRMMXWYI.js.map +0 -1
  572. /package/dist/{capsule-crypto-7FJQINUR.js.map → access-mcp-shared-context-tools.js.map} +0 -0
  573. /package/dist/{auto-sync-D6BAPIJV.js.map → auto-sync-7PGUFY7U.js.map} +0 -0
  574. /package/dist/{contradiction-scan-BSGKZHYJ.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  575. /package/dist/{capsule-merge-IPG4IOFP.js.map → capsule-merge-3MNURAQ3.js.map} +0 -0
  576. /package/dist/{chunk-VHKXRYQN.js.map → chunk-2HQPE2NM.js.map} +0 -0
  577. /package/dist/{chunk-RDLPFM7I.js.map → chunk-2ZG2LLZT.js.map} +0 -0
  578. /package/dist/{chunk-IMBQFHRV.js.map → chunk-3BLHPQHT.js.map} +0 -0
  579. /package/dist/{chunk-6L2II3KS.js.map → chunk-3D75XIYO.js.map} +0 -0
  580. /package/dist/{chunk-J272ODKJ.js.map → chunk-42DJ235G.js.map} +0 -0
  581. /package/dist/{chunk-RJQAP333.js.map → chunk-46RII65S.js.map} +0 -0
  582. /package/dist/{chunk-JUDT33RX.js.map → chunk-4AX5OYKC.js.map} +0 -0
  583. /package/dist/{chunk-GSSDHAYH.js.map → chunk-4IGOLIWM.js.map} +0 -0
  584. /package/dist/{chunk-4CMXI55L.js.map → chunk-54QPOE45.js.map} +0 -0
  585. /package/dist/{chunk-LKFVVN7R.js.map → chunk-563X6JJX.js.map} +0 -0
  586. /package/dist/{chunk-VQWBUPSJ.js.map → chunk-5EQT62HH.js.map} +0 -0
  587. /package/dist/{chunk-BYQX4IOG.js.map → chunk-6MQMYXSQ.js.map} +0 -0
  588. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  589. /package/dist/{chunk-K75A5XWU.js.map → chunk-7ZLC4DTZ.js.map} +0 -0
  590. /package/dist/{chunk-7Z54NXVS.js.map → chunk-A4OIJYCV.js.map} +0 -0
  591. /package/dist/{chunk-QS5Q5RBV.js.map → chunk-AFJHNHAM.js.map} +0 -0
  592. /package/dist/{chunk-TZ44E732.js.map → chunk-AIVRD66I.js.map} +0 -0
  593. /package/dist/{chunk-IOPIGX7Y.js.map → chunk-AKABVXFS.js.map} +0 -0
  594. /package/dist/{chunk-KOTG3RXE.js.map → chunk-AUSRUOMQ.js.map} +0 -0
  595. /package/dist/{chunk-K4A6UVPB.js.map → chunk-BTPCP535.js.map} +0 -0
  596. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  597. /package/dist/{chunk-TEMKBSV6.js.map → chunk-C3G6MW4W.js.map} +0 -0
  598. /package/dist/{chunk-3QEVOQF5.js.map → chunk-D6PY63OM.js.map} +0 -0
  599. /package/dist/{chunk-DFVSJFHK.js.map → chunk-DBB5JPSL.js.map} +0 -0
  600. /package/dist/{chunk-HJUP3K6L.js.map → chunk-DIXZQTGY.js.map} +0 -0
  601. /package/dist/{chunk-ZX3AYNNV.js.map → chunk-DM5CU5J7.js.map} +0 -0
  602. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  603. /package/dist/{chunk-BGRTZOJB.js.map → chunk-E3I3NDUP.js.map} +0 -0
  604. /package/dist/{chunk-ZAEPD4C2.js.map → chunk-E4LMQTST.js.map} +0 -0
  605. /package/dist/{chunk-7D6SER6A.js.map → chunk-EMSYMYXO.js.map} +0 -0
  606. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  607. /package/dist/{chunk-V2ZA4YWE.js.map → chunk-F5H6YG5P.js.map} +0 -0
  608. /package/dist/{chunk-ZMWSYUUL.js.map → chunk-GCBIXUPT.js.map} +0 -0
  609. /package/dist/{chunk-LFVZD5EC.js.map → chunk-GWNSKQDA.js.map} +0 -0
  610. /package/dist/{chunk-JDX2OA4R.js.map → chunk-HNHIHXSD.js.map} +0 -0
  611. /package/dist/{chunk-2SNCQHJZ.js.map → chunk-I33QYUAF.js.map} +0 -0
  612. /package/dist/{chunk-MVG3KXON.js.map → chunk-ICN37XHG.js.map} +0 -0
  613. /package/dist/{chunk-ICNJ6J46.js.map → chunk-IYIPXAIJ.js.map} +0 -0
  614. /package/dist/{chunk-AEOOGXMQ.js.map → chunk-J2MGTGKC.js.map} +0 -0
  615. /package/dist/{chunk-5U7K4W6K.js.map → chunk-JDOBQPJY.js.map} +0 -0
  616. /package/dist/{chunk-NVVZPBKI.js.map → chunk-JMWUPUE6.js.map} +0 -0
  617. /package/dist/{chunk-QPVNK2VE.js.map → chunk-JSD7Q7LD.js.map} +0 -0
  618. /package/dist/{chunk-RLU2Y5GV.js.map → chunk-K5D2XVNN.js.map} +0 -0
  619. /package/dist/{chunk-YTZN2UZO.js.map → chunk-KJLLPG26.js.map} +0 -0
  620. /package/dist/{chunk-2SKMZUOW.js.map → chunk-KLUC2GSG.js.map} +0 -0
  621. /package/dist/{chunk-YRIFXXMI.js.map → chunk-KZJM7R4F.js.map} +0 -0
  622. /package/dist/{chunk-46Z3VGWF.js.map → chunk-LE2KZ72G.js.map} +0 -0
  623. /package/dist/{chunk-HIP6DKJJ.js.map → chunk-LQVXSRAJ.js.map} +0 -0
  624. /package/dist/{chunk-A7GQBJP5.js.map → chunk-LVFI5LG7.js.map} +0 -0
  625. /package/dist/{chunk-PKUJNICO.js.map → chunk-ND7MAIJC.js.map} +0 -0
  626. /package/dist/{chunk-W23JARAQ.js.map → chunk-P66QH6R6.js.map} +0 -0
  627. /package/dist/{chunk-62D2PAAM.js.map → chunk-PAAJWQH5.js.map} +0 -0
  628. /package/dist/{chunk-XM46Y66S.js.map → chunk-PFKIOYJH.js.map} +0 -0
  629. /package/dist/{chunk-C5R73BON.js.map → chunk-PGGPRF6J.js.map} +0 -0
  630. /package/dist/{chunk-V6EGNVUT.js.map → chunk-PIWFNPQT.js.map} +0 -0
  631. /package/dist/{chunk-JOP7W24J.js.map → chunk-PLJ2MQFT.js.map} +0 -0
  632. /package/dist/{chunk-MJC7UKH7.js.map → chunk-PQ42DJNG.js.map} +0 -0
  633. /package/dist/{chunk-37CAEC7E.js.map → chunk-PWPIERBM.js.map} +0 -0
  634. /package/dist/{chunk-BXIJSPCL.js.map → chunk-Q62GA5U2.js.map} +0 -0
  635. /package/dist/{chunk-VKWFNPBH.js.map → chunk-RQQO3ORQ.js.map} +0 -0
  636. /package/dist/{chunk-ES5BUPYB.js.map → chunk-UZGHKD3T.js.map} +0 -0
  637. /package/dist/{chunk-J4WGTN2N.js.map → chunk-V62YYBBY.js.map} +0 -0
  638. /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
  639. /package/dist/{chunk-Z4GUX2M6.js.map → chunk-VSN2DMQK.js.map} +0 -0
  640. /package/dist/{chunk-ZHXSOMYH.js.map → chunk-VVX5PZFS.js.map} +0 -0
  641. /package/dist/{chunk-KY236SP5.js.map → chunk-W7UV2ZCA.js.map} +0 -0
  642. /package/dist/{chunk-TO36VPZI.js.map → chunk-WBQ4ONQJ.js.map} +0 -0
  643. /package/dist/{chunk-WZYHPAG5.js.map → chunk-WFMQN7JE.js.map} +0 -0
  644. /package/dist/{chunk-G2XZFGYN.js.map → chunk-WGZHSQDV.js.map} +0 -0
  645. /package/dist/{chunk-SUEOG2S4.js.map → chunk-WPGA4RYI.js.map} +0 -0
  646. /package/dist/{chunk-J7FVMLBR.js.map → chunk-WZIO3TW6.js.map} +0 -0
  647. /package/dist/{chunk-ZZUVBZL2.js.map → chunk-X2QPKLPL.js.map} +0 -0
  648. /package/dist/{chunk-JAJIMTFB.js.map → chunk-XRS65T4O.js.map} +0 -0
  649. /package/dist/{chunk-GO5LOHCD.js.map → chunk-YFXAWGMR.js.map} +0 -0
  650. /package/dist/{chunk-K4JKAXMO.js.map → chunk-Z535ADTC.js.map} +0 -0
  651. /package/dist/{chunk-23HFXQ5J.js.map → chunk-Z7NBT6AK.js.map} +0 -0
  652. /package/dist/{chunk-VQYWKCDR.js.map → chunk-ZX6NNFSY.js.map} +0 -0
  653. /package/dist/{chunk-3XPN7AVY.js.map → chunk-ZYSOT6HD.js.map} +0 -0
  654. /package/dist/{chunk-ZZCR2QYL.js.map → chunk-ZZEIL3MI.js.map} +0 -0
  655. /package/dist/{resolution-4GG3QZRJ.js.map → contradiction-scan-GVD4JJ7B.js.map} +0 -0
  656. /package/dist/{first-start-migration-ZWMV5CX4.js.map → first-start-migration-L3UFX5CU.js.map} +0 -0
  657. /package/dist/{tier-stats-LUSUUNU6.js.map → tier-stats-VK5PCO2L.js.map} +0 -0
@@ -27,6 +27,13 @@ export interface RecallSectionAppendOptions {
27
27
  memoryId?: string;
28
28
  memoryPath?: string;
29
29
  memoryNamespace?: string;
30
+ /**
31
+ * #2928 — state-view packet key (canonical `stateViewPacketKeys` root).
32
+ * Atomic chunks sharing a packetKey are ONE evidence packet: the final
33
+ * budget admits or drops them together, so a historical row can never
34
+ * render without its linked successor. Absent on non-state rows.
35
+ */
36
+ packetKey?: string;
30
37
  }
31
38
 
32
39
  export interface RecallSectionChunk {
@@ -35,6 +42,7 @@ export interface RecallSectionChunk {
35
42
  memoryId?: string;
36
43
  memoryPath?: string;
37
44
  memoryNamespace?: string;
45
+ packetKey?: string;
38
46
  }
39
47
 
40
48
  export type RecallSectionBuckets = Map<
@@ -160,6 +168,7 @@ export class RecallSectionCoordinator {
160
168
  ...(options.memoryNamespace
161
169
  ? { memoryNamespace: options.memoryNamespace }
162
170
  : {}),
171
+ ...(options.packetKey ? { packetKey: options.packetKey } : {}),
163
172
  });
164
173
  } else {
165
174
  existing.push(finalContent);
@@ -454,15 +463,55 @@ export class RecallSectionCoordinator {
454
463
  let includedPostAtomicContent = false;
455
464
  const postAtomicContents: string[] = [];
456
465
  let includedLeadingContent = false;
466
+ // #2928 — state-view packets: atomic chunks sharing a packetKey are
467
+ // ONE evidence packet (a historical row plus its linked successor).
468
+ // The packet renders as a block at the FIRST member's position,
469
+ // members in incoming order, and is admitted or dropped together —
470
+ // the final character/token budget can never emit one side alone.
471
+ // Chunks without a packetKey keep the pre-#2928 per-row behavior.
472
+ const packetFirstIndex = new Map<string, number>();
473
+ const packetMembers = new Map<number, number[]>();
457
474
  for (const [index, chunk] of section.chunks.entries()) {
475
+ if (!chunk.atomic || !chunk.packetKey) continue;
476
+ const first = packetFirstIndex.get(chunk.packetKey);
477
+ if (first === undefined) {
478
+ packetFirstIndex.set(chunk.packetKey, index);
479
+ packetMembers.set(index, [index]);
480
+ } else {
481
+ packetMembers.get(first)!.push(index);
482
+ }
483
+ }
484
+ const admitMemoryRefs = (memberIndexes: readonly number[]): void => {
485
+ for (const memberIndex of memberIndexes) {
486
+ const member = section.chunks[memberIndex]!;
487
+ if (member.memoryId && member.memoryPath) {
488
+ includedMemories.push(
489
+ member.memoryNamespace
490
+ ? { id: member.memoryId, path: member.memoryPath, namespace: member.memoryNamespace }
491
+ : { id: member.memoryId, path: member.memoryPath },
492
+ );
493
+ }
494
+ }
495
+ };
496
+ for (const [index, chunk] of section.chunks.entries()) {
497
+ const members = chunk.atomic ? packetMembers.get(index) : undefined;
498
+ if (chunk.atomic && chunk.packetKey && members === undefined) {
499
+ // Non-first packet member: decided with its block at the first
500
+ // member's position — never admitted alone (#2928).
501
+ continue;
502
+ }
503
+ const memberIndexes = members ?? [index];
504
+ const content = members
505
+ ? members.map((memberIndex) => section.chunks[memberIndex]!.content).join("\n\n")
506
+ : chunk.content;
458
507
  if (
459
508
  !chunk.atomic &&
460
509
  includedAtomicCount === 0 &&
461
510
  index < firstAtomicIndex
462
511
  ) {
463
512
  const candidate = rendered
464
- ? `${rendered}\n\n${chunk.content}`
465
- : chunk.content;
513
+ ? `${rendered}\n\n${content}`
514
+ : content;
466
515
  if (
467
516
  candidate.length <= allocatedSectionAvailable &&
468
517
  estimateTokenCount(candidate) <= allocatedTokenAvailable
@@ -476,8 +525,8 @@ export class RecallSectionCoordinator {
476
525
  }
477
526
 
478
527
  const candidate = rendered
479
- ? `${rendered}\n\n${chunk.content}`
480
- : chunk.content;
528
+ ? `${rendered}\n\n${content}`
529
+ : content;
481
530
  if (
482
531
  candidate.length > allocatedSectionAvailable ||
483
532
  estimateTokenCount(candidate) > allocatedTokenAvailable
@@ -486,32 +535,26 @@ export class RecallSectionCoordinator {
486
535
  chunk.atomic &&
487
536
  includedAtomicCount === 0 &&
488
537
  includedLeadingContent &&
489
- chunk.content.length <= allocatedSectionAvailable &&
490
- estimateTokenCount(chunk.content) <= allocatedTokenAvailable
538
+ content.length <= allocatedSectionAvailable &&
539
+ estimateTokenCount(content) <= allocatedTokenAvailable
491
540
  ) {
492
- rendered = chunk.content;
541
+ rendered = content;
493
542
  includedLeadingContent = false;
494
- includedAtomicCount = 1;
495
- if (chunk.memoryId && chunk.memoryPath) {
496
- includedMemories.push(
497
- chunk.memoryNamespace
498
- ? { id: chunk.memoryId, path: chunk.memoryPath, namespace: chunk.memoryNamespace }
499
- : { id: chunk.memoryId, path: chunk.memoryPath },
500
- );
501
- }
543
+ includedAtomicCount += memberIndexes.length;
544
+ admitMemoryRefs(memberIndexes);
502
545
  continue;
503
546
  }
504
547
  if (
505
548
  !chunk.atomic &&
506
549
  includedAtomicCount === 0 &&
507
550
  includedLeadingContent &&
508
- chunk.content.length <= allocatedSectionAvailable &&
509
- estimateTokenCount(chunk.content) <= allocatedTokenAvailable
551
+ content.length <= allocatedSectionAvailable &&
552
+ estimateTokenCount(content) <= allocatedTokenAvailable
510
553
  ) {
511
- rendered = chunk.content;
554
+ rendered = content;
512
555
  includedLeadingContent = false;
513
556
  includedPostAtomicContent = true;
514
- postAtomicContents.push(chunk.content);
557
+ postAtomicContents.push(content);
515
558
  continue;
516
559
  }
517
560
  truncated = true;
@@ -520,17 +563,11 @@ export class RecallSectionCoordinator {
520
563
 
521
564
  rendered = candidate;
522
565
  if (chunk.atomic) {
523
- includedAtomicCount += 1;
524
- if (chunk.memoryId && chunk.memoryPath) {
525
- includedMemories.push(
526
- chunk.memoryNamespace
527
- ? { id: chunk.memoryId, path: chunk.memoryPath, namespace: chunk.memoryNamespace }
528
- : { id: chunk.memoryId, path: chunk.memoryPath },
529
- );
530
- }
566
+ includedAtomicCount += memberIndexes.length;
567
+ admitMemoryRefs(memberIndexes);
531
568
  } else {
532
569
  includedPostAtomicContent = true;
533
- postAtomicContents.push(chunk.content);
570
+ postAtomicContents.push(content);
534
571
  }
535
572
  }
536
573
  if (includedAtomicCount === 0) {
@@ -96,8 +96,14 @@ test("default (stateViewActive unset) keeps filtering superseded — zero-diff b
96
96
  const explicitOff = coordinator.filterSearchResultsByRecallSafety(results, memories, {
97
97
  stateViewActive: false,
98
98
  });
99
- assert.deepEqual(baseline.map((r) => r.path), [NEW]);
100
- assert.deepEqual(explicitOff.map((r) => r.path), [NEW]);
99
+ assert.deepEqual(
100
+ baseline.map((r) => r.path),
101
+ [NEW]
102
+ );
103
+ assert.deepEqual(
104
+ explicitOff.map((r) => r.path),
105
+ [NEW]
106
+ );
101
107
  // No chain fields leak onto survivors when the view is off.
102
108
  assert.equal(baseline[0]?.supersededBy, undefined);
103
109
  assert.equal(baseline[0]?.id, undefined);
@@ -17,8 +17,12 @@ import type { GraphEdge, GraphType } from "../graph.js";
17
17
  import { readFile } from "node:fs/promises";
18
18
  import { removeNodeEdgesForRewrite, rollbackNodeEdgeRewrite } from "../graph-jsonl.js";
19
19
  import {
20
- hasCitationForTemplate,
21
- stripCitationForTemplate,
20
+ attachCitation,
21
+ citationTemplateIsDetectable,
22
+ citationTemplatesForMerge,
23
+ lastRecognizedCitationMarker,
24
+ stripRecognizedCitations,
25
+ type CitationContext,
22
26
  } from "../source-attribution.js";
23
27
  import { resolvePipelineProcessingCapabilities } from "../capabilities.js";
24
28
  import { inferMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
@@ -328,27 +332,52 @@ export async function rewriteMergedTargetGraphEdges(
328
332
  }
329
333
  }
330
334
 
335
+ /**
336
+ * Round N+7 (C) + #2916: the citation form of the committed merged body.
337
+ * A liftable incoming marker still wins. The fallback attaches only when
338
+ * the current template can be re-matched later. An already-recognized
339
+ * marker — current, default, or a prior configured format still in
340
+ * history — is left in place so a template change does not duplicate it.
341
+ * All-placeholder templates cannot be stripped, so they are not attached.
342
+ */
343
+ export function committedMergedBody(
344
+ deps: ExtractionPersistDeps,
345
+ mergedContent: string,
346
+ incomingCitedContent: string | undefined,
347
+ incomingCitationContext: Omit<CitationContext, "ts"> | undefined,
348
+ nowIso: string,
349
+ ): string {
350
+ if (resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true) {
351
+ return mergedContent;
352
+ }
353
+ const template = deps.config.inlineSourceAttributionFormat;
354
+ const templates = citationTemplatesForMerge(deps.config);
355
+ if (incomingCitedContent !== undefined) {
356
+ const marker = lastRecognizedCitationMarker(incomingCitedContent, templates);
357
+ if (marker) {
358
+ return mergedContent.endsWith(marker) ? mergedContent : `${mergedContent} ${marker}`;
359
+ }
360
+ }
361
+ if (!citationTemplateIsDetectable(template)) return mergedContent;
362
+ if (lastRecognizedCitationMarker(mergedContent, templates)) return mergedContent;
363
+ return attachCitation(
364
+ mergedContent,
365
+ { ...incomingCitationContext, ts: nowIso },
366
+ template,
367
+ );
368
+ }
369
+
331
370
  /**
332
371
  * Round N+2 (C) — the canonical RAW pre-citation merged body for hashing.
333
- * The judge composes mergedContent from the stored target body, which
334
- * carries an appended citation marker when inline source attribution is
335
- * enabled; the ordinary write path hashes `contentHashSource` — the raw
336
- * fact text BEFORE any citation is attached. Hashing the cited body would
337
- * give the merged record a different identity than the equivalent raw
338
- * write (checklist #13), so the configured citation form is stripped
339
- * first, exactly like the write path's `rawChunkedContent`
340
- * canonicalization. Lives in this sibling (extracted from
341
- * semantic-merge-persist.ts) so that file stays within its file-size
342
- * ratchet cap.
372
+ * Strips every recognized citation form (current, default, and any prior
373
+ * configured template still in history). All-placeholder templates are
374
+ * not attached on the merge path, so they never reach this hash input.
343
375
  */
344
376
  export function rawPreCitationMergedBody(deps: ExtractionPersistDeps, mergedContent: string): string {
345
377
  if (resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true) {
346
378
  return mergedContent;
347
379
  }
348
- const template = deps.config.inlineSourceAttributionFormat;
349
- return hasCitationForTemplate(mergedContent, template)
350
- ? stripCitationForTemplate(mergedContent, template)
351
- : mergedContent;
380
+ return stripRecognizedCitations(mergedContent, citationTemplatesForMerge(deps.config));
352
381
  }
353
382
 
354
383
  /**
@@ -28,6 +28,7 @@ import { sanitizeMemoryContent } from "../sanitize.js";
28
28
  import { ContentHashIndex } from "../storage/content-hash-index.js";
29
29
  import type { VersioningConfig } from "../page-versioning.js";
30
30
  import {
31
+ committedMergedBody,
31
32
  committedMergedFactHash,
32
33
  discardMergedTargetSnapshot,
33
34
  finalizeMergedVersionPrune,
@@ -57,13 +58,10 @@ import { REFUSED_MERGE_CATEGORIES } from "../dedup/merge-on-write.js";
57
58
  import { inferMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
58
59
  import { inferIntentFromText } from "../intent.js";
59
60
  import {
60
- hasCitationForTemplate,
61
- lastCitationMarkerForTemplate,
62
- stripCitationForTemplate,
61
+ type CitationContext,
63
62
  } from "../source-attribution.js";
64
63
  import {
65
64
  resolveConversationContextCapabilities,
66
- resolvePipelineProcessingCapabilities,
67
65
  resolvePresentationCapabilities,
68
66
  resolveRecallAuxiliaryCapabilities,
69
67
  type GraphConstructionCapabilitySet,
@@ -225,6 +223,14 @@ export interface ApplySemanticMergeOptions {
225
223
  * Absent (or citation-free) commits the judge's merged body unchanged.
226
224
  */
227
225
  incomingCitedContent?: string;
226
+ /**
227
+ * #2916: the citation context of THIS write (agent/session) — the same
228
+ * base a fresh attributed write stamps. When no incoming citation marker
229
+ * is liftable, the committed merged body still receives the configured
230
+ * inline-attribution transform exactly as a fresh attributed write would,
231
+ * stamped with this context and the merge's commit timestamp.
232
+ */
233
+ incomingCitationContext?: Omit<CitationContext, "ts">;
228
234
  /**
229
235
  * Finding C: async probe run after a merge verdict but before any
230
236
  * mutation. True when the would-be target already has promoted
@@ -470,33 +476,6 @@ export function createPathMergeParity(input: {
470
476
  };
471
477
  }
472
478
 
473
- /**
474
- * Round N+7 (C): the committed merged body carries the incoming extraction's
475
- * citation marker (lifted from the caller's cited body for this write)
476
- * appended after the judge's merged text, so incoming claims stay attributed
477
- * even when the merged text embeds the target's older citation — quoted
478
- * excerpts travel without frontmatter, so `sources` alone is not enough.
479
- * Idempotent; a no-op when attribution is off or no marker exists.
480
- */
481
- function committedMergedBody(
482
- deps: ExtractionPersistDeps,
483
- mergedContent: string,
484
- incomingCitedContent: string | undefined,
485
- ): string {
486
- if (
487
- resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true ||
488
- incomingCitedContent === undefined
489
- ) {
490
- return mergedContent;
491
- }
492
- const marker = lastCitationMarkerForTemplate(
493
- incomingCitedContent,
494
- deps.config.inlineSourceAttributionFormat,
495
- );
496
- if (!marker || mergedContent.endsWith(marker)) return mergedContent;
497
- return `${mergedContent} ${marker}`;
498
- }
499
-
500
479
  function versioningConfigFrom(deps: ExtractionPersistDeps): VersioningConfig {
501
480
  return {
502
481
  enabled: resolveRecallAuxiliaryCapabilities(deps.config).versioning,
@@ -611,10 +590,19 @@ export async function applySemanticMergeAtPersist(
611
590
  if (target.content !== decision.targetContent) {
612
591
  return { action: "created", reason: "target_changed" };
613
592
  }
614
- // Round N+7 (C): every mutation below commits THIS body — the judge's
615
- // merged text plus the incoming citation marker — and the outcome reports
616
- // it, so caller comparisons describe what storage actually holds.
617
- const committedContent = committedMergedBody(deps, decision.mergedContent, options.incomingCitedContent);
593
+ // Round N+7 (C) + #2916: every mutation below commits THIS body — the
594
+ // judge's merged text in its cited form (the incoming marker when one is
595
+ // liftable, else the configured transform as a fresh attributed write
596
+ // applies it) — and the outcome reports it, so caller comparisons
597
+ // describe what storage actually holds.
598
+ const nowIso = (options.now ? options.now() : new Date()).toISOString();
599
+ const committedContent = committedMergedBody(
600
+ deps,
601
+ decision.mergedContent,
602
+ options.incomingCitedContent,
603
+ options.incomingCitationContext,
604
+ nowIso,
605
+ );
618
606
 
619
607
  // Create-path parity gate (final round) — ONE place enumerates every
620
608
  // trust/scope/verdict field the normal write stamps and bypasses the
@@ -714,7 +702,6 @@ export async function applySemanticMergeAtPersist(
714
702
  // snapshot just read: a writer landing between the read and the write must
715
703
  // win rather than be overwritten from a stale body. The active-target check
716
704
  // above makes a tombstone block structurally impossible here.
717
- const nowIso = (options.now ? options.now() : new Date()).toISOString();
718
705
  let casRevision: string | undefined; // #2813 (P1): OUR content CAS's receipt — feeds the patch stamp below and the catch's rollback comparison
719
706
  let mergePatch: MergeFrontmatterUpdate | undefined;
720
707
  try {
@@ -14,6 +14,7 @@ import {
14
14
  CodexSubscriptionConfigError,
15
15
  CodexSubscriptionTimeoutError,
16
16
  type CodexSubscriptionExecRequest,
17
+ type CodexSubscriptionExecResult,
17
18
  __codexSubscriptionTestHooks,
18
19
  createCodexSubscriptionRunner,
19
20
  ensureCodexSubscriptionRunnerRegistered,
@@ -781,6 +782,63 @@ test("caller abort reaches the cold login check: no spawn when pre-aborted, wait
781
782
  await assert.rejects(fresh, (error: unknown) => error === freshReason);
782
783
  });
783
784
 
785
+ test("last waiter out aborts the shared login subprocess; earlier leavers do not", async () => {
786
+ __codexSubscriptionTestHooks.resetLoginStatusCache();
787
+ let loginCalls = 0;
788
+ const loginSignals: AbortSignal[] = [];
789
+ let resolveSecondLogin:
790
+ | ((value: { status: number | null; stdout: string; stderr: string }) => void)
791
+ | undefined;
792
+ const runner = createCodexSubscriptionRunner({
793
+ env: { HOME: "/home/alice", PATH: "/usr/bin:/bin" },
794
+ now: () => 0,
795
+ runLoginStatus: (_executable, _env, _timeoutMs, signal) => {
796
+ loginCalls++;
797
+ loginSignals.push(signal!);
798
+ const pending = Promise.withResolvers<{ status: number | null; stdout: string; stderr: string }>();
799
+ if (loginCalls === 2) resolveSecondLogin = pending.resolve;
800
+ signal?.addEventListener("abort", () =>
801
+ pending.resolve({ status: 1, stdout: "", stderr: "terminated" })
802
+ );
803
+ return pending.promise;
804
+ },
805
+ runCodexExec: async () => ({ status: 0, stdout: "", stderr: "", outputText: "ok" }),
806
+ });
807
+ const call = (signal?: AbortSignal) =>
808
+ runner({
809
+ config: { executable: "codex-fake" },
810
+ modelId: "gpt-5.6-luna",
811
+ messages: [{ role: "user", content: "hi" }],
812
+ options: { timeoutMs: 60_000, ...(signal ? { signal } : {}) },
813
+ });
814
+
815
+ const a = new AbortController();
816
+ const b = new AbortController();
817
+ const aReason = new Error("A left first");
818
+ const bReason = new Error("B left last");
819
+ const first = call(a.signal);
820
+ await flushLoop();
821
+ assert.equal(loginCalls, 1);
822
+ const second = call(b.signal);
823
+ await flushLoop();
824
+ assert.equal(loginCalls, 1, "second caller shares the in-flight check");
825
+
826
+ a.abort(aReason);
827
+ await assert.rejects(first, (error: unknown) => error === aReason);
828
+ assert.equal(loginSignals[0].aborted, false, "one waiter leaving must not cancel the shared check");
829
+
830
+ b.abort(bReason);
831
+ await assert.rejects(second, (error: unknown) => error === bReason);
832
+ await flushLoop();
833
+ assert.ok(loginSignals[0].aborted, "the last waiter leaving aborts the login subprocess");
834
+
835
+ // The aborted entry is dropped: the next caller starts a fresh check.
836
+ const fresh = call();
837
+ await flushLoop();
838
+ assert.equal(loginCalls, 2);
839
+ resolveSecondLogin?.({ status: 0, stdout: "Logged in using ChatGPT\n", stderr: "" });
840
+ assert.equal((await fresh).content, "ok");
841
+ });
784
842
  test("codex-subscription apiKey and SecretRef are rejected before secret resolution", { concurrency: false }, async () => {
785
843
  clearModelsJsonCache();
786
844
  clearSecretCache();
@@ -1184,6 +1242,75 @@ test(
1184
1242
  }
1185
1243
  );
1186
1244
 
1245
+ test(
1246
+ "typed provider timeout still wins when the provider settles just past the outer deadline",
1247
+ { concurrency: false },
1248
+ async () => {
1249
+ clearModelsJsonCache();
1250
+ clearSecretCache();
1251
+ __codexSubscriptionTestHooks.resetLoginStatusCache();
1252
+ __codexSubscriptionTestHooks.resetCoreRunnerRegistered();
1253
+ const runner = createCodexSubscriptionRunner({
1254
+ env: { HOME: "/home/alice", PATH: "/usr/bin:/bin" },
1255
+ now: () => 0,
1256
+ runLoginStatus: async () => ({ status: 0, stdout: "Logged in using ChatGPT\n", stderr: "" }),
1257
+ // Real timer by design: the deadline race is wall-clock behavior. The
1258
+ // exec "child" ignores the abort signal (like one already mid-close)
1259
+ // and settles 35ms after its own 475ms budget — past the caller's
1260
+ // 500ms deadline but inside the 25ms settle grace (T=500 -> 25 headroom).
1261
+ runCodexExec: (request) => {
1262
+ const execTimeoutMs = request.timeoutMs;
1263
+ if (execTimeoutMs === undefined) {
1264
+ throw new Error("expected timeoutMs");
1265
+ }
1266
+ const { promise, resolve } = Promise.withResolvers<CodexSubscriptionExecResult>();
1267
+ setTimeout(
1268
+ () =>
1269
+ resolve({
1270
+ status: 124,
1271
+ stdout: "",
1272
+ stderr: `codex-subscription: exec timed out after ${execTimeoutMs}ms.\n`,
1273
+ outputText: "",
1274
+ }),
1275
+ execTimeoutMs + 35,
1276
+ );
1277
+ return promise;
1278
+ },
1279
+ });
1280
+ const restore = setCodexCliFallbackRunnerForProcess(runner);
1281
+ try {
1282
+ const llm = new FallbackLlmClient({
1283
+ agents: { defaults: { model: { primary: `${CODEX_SUBSCRIPTION_PROVIDER_ID}/gpt-5.6-luna` } } },
1284
+ models: {
1285
+ providers: {
1286
+ [CODEX_SUBSCRIPTION_PROVIDER_ID]: {
1287
+ baseUrl: "codex-cli://subscription",
1288
+ api: "codex-cli",
1289
+ models: [],
1290
+ },
1291
+ },
1292
+ },
1293
+ });
1294
+ const startedAt = Date.now();
1295
+ await assert.rejects(
1296
+ llm.chatCompletion([{ role: "user", content: "hi" }], { timeoutMs: 500 }),
1297
+ (error: unknown) => {
1298
+ assert.ok(error instanceof CodexSubscriptionTimeoutError, `expected timeout, got: ${error}`);
1299
+ assert.equal(error.name, "TimeoutError");
1300
+ return true;
1301
+ }
1302
+ );
1303
+ assert.ok(
1304
+ Date.now() - startedAt < 1_400,
1305
+ "typed timeout must surface within the settle grace, not wait for the provider forever"
1306
+ );
1307
+ } finally {
1308
+ restore();
1309
+ clearModelsJsonCache();
1310
+ clearSecretCache();
1311
+ }
1312
+ }
1313
+ );
1187
1314
  test("concurrent callers share one in-flight login when auth.json already exists", async () => {
1188
1315
  __codexSubscriptionTestHooks.resetLoginStatusCache();
1189
1316
  const home = await mkdtemp(path.join(os.tmpdir(), "remnic-codex-home-"));
@@ -284,7 +284,6 @@ export function isDefaultRegisteredCodexSubscriptionRunner(): boolean {
284
284
  return defaultRegisteredRunner !== undefined
285
285
  && getCodexCliFallbackRunnerForProcess() === defaultRegisteredRunner;
286
286
  }
287
-
288
287
  /** Host shutdown hook: terminate this runtime's detached Codex children. Does not exit. */
289
288
  export function terminateActiveCodexSubscriptionChildren(
290
289
  signal: NodeJS.Signals = "SIGTERM",
@@ -491,6 +490,7 @@ async function assertSubscriptionLogin(
491
490
  await waitForLoginEntry(cached, cacheKey, ctx, now);
492
491
  return;
493
492
  }
493
+
494
494
  }
495
495
  loginStatusCache.delete(cacheKey);
496
496
  if (ctx.signal?.aborted) {