wednesdayai 0.5.1-dev.49 → 0.5.1-dev.52

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 (337) hide show
  1. package/dist/{acp-cli-CSDr9rFY.js → acp-cli-B4dS4wV-.js} +11 -11
  2. package/dist/{agent-scope-Daay3L1Q.js → agent-scope-m37qEcFM.js} +21 -21
  3. package/dist/{agent-turn-enqueue-Ca29Rbkz.js → agent-turn-enqueue-ArRzUyAk.js} +6 -6
  4. package/dist/{agent-turn-execute-B4iUpIbf.js → agent-turn-execute-CM4O0yRh.js} +155 -155
  5. package/dist/{agent-turn-recovery-adapter-CN7R7ZpE.js → agent-turn-recovery-adapter-CV9hCfhV.js} +3 -3
  6. package/dist/{agent-turn-runner-y6DgnCcB.js → agent-turn-runner-DoUxdVA8.js} +4 -4
  7. package/dist/{agents-BR_k8DOr.js → agents-8IrzkYKe.js} +21 -21
  8. package/dist/{agents.config-ClrzdK7g.js → agents.config-B22brY93.js} +3 -3
  9. package/dist/{api-key-rotation-ZuntHnbE.js → api-key-rotation-D42o6Zng.js} +1 -1
  10. package/dist/{audio-preflight-BIOdIaYS.js → audio-preflight-C3hxTGYi.js} +37 -37
  11. package/dist/{audio-transcription-runner-Cn0jB-li.js → audio-transcription-runner-BCsXP8-1.js} +27 -27
  12. package/dist/{audit-TBCP_6jm.js → audit-BvrCpsTe.js} +31 -31
  13. package/dist/{auth-nD5DAjKr.js → auth-B4_HVLhd.js} +4 -4
  14. package/dist/{auth-choice-35J0xM6Z.js → auth-choice-DPnina-M.js} +15 -15
  15. package/dist/{auth-choice-Bq8CC1lU.js → auth-choice-kM9PIJr4.js} +13 -13
  16. package/dist/{auth-choice.apply-helpers-YNiPajEk.js → auth-choice.apply-helpers-DVZh64eB.js} +1 -1
  17. package/dist/{auth-token-BzoQdUL6.js → auth-token-CrC72-Fb.js} +2 -2
  18. package/dist/{banner-MupqYLcq.js → banner-CP6z-7_Z.js} +4 -4
  19. package/dist/{bonjour-discovery-CVCaA_iW.js → bonjour-discovery-CXRsUe5D.js} +3 -3
  20. package/dist/{browser-cli-UBdCgnrs.js → browser-cli-B_4FyxW8.js} +19 -19
  21. package/dist/build-info.json +3 -3
  22. package/dist/{call-xzY_YjPJ.js → call-DiXPYDxn.js} +12 -12
  23. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  24. package/dist/{channel-account-context-Cgiem_zz.js → channel-account-context-Df3_ZrlO.js} +7 -7
  25. package/dist/{channel-options-ceRWPyZu.js → channel-options-DqiC37-O.js} +3 -3
  26. package/dist/{channel-selection-CTSiOhj4.js → channel-selection-CggPBiFX.js} +1 -1
  27. package/dist/{channels-cli-BwgQPXDo.js → channels-cli-DL63TJdS.js} +122 -122
  28. package/dist/{channels-status-issues-CnBn-qEt.js → channels-status-issues-CdXaTFd3.js} +1 -1
  29. package/dist/{chrome-DJwFDuoy.js → chrome-o2uZSWIt.js} +6 -6
  30. package/dist/{chunk-Cac92Mfe.js → chunk-CWJj0yTC.js} +3 -3
  31. package/dist/{clack-prompter-Cjs9OUc5.js → clack-prompter-BKD0RJgm.js} +5 -5
  32. package/dist/clawbot-cli-sFSfxALD.js +33 -0
  33. package/dist/cli/daemon-cli.js +1 -1
  34. package/dist/cli-DZ1p-qqR.js +168 -0
  35. package/dist/{client-BHIM--Lw.js → client-B3-vuVAE.js} +4 -4
  36. package/dist/{client-profiles-C576THk-.js → client-profiles-Bc3sF7Zy.js} +2 -2
  37. package/dist/{clipboard-BNyun_kb.js → clipboard-DbPKCnXY.js} +1 -1
  38. package/dist/{command-queue-QaMaW8lR.js → command-queue-D8Y7Hgzy.js} +1 -1
  39. package/dist/{command-registry-DupEgpR0.js → command-registry-CjWadaVi.js} +14 -14
  40. package/dist/{command-secret-targets-DSyP6TXo.js → command-secret-targets-DfQv7jnw.js} +4 -4
  41. package/dist/{commands-W2-5cDc4.js → commands-CVdmhZKr.js} +1 -1
  42. package/dist/{commands-registry-D7RtFxju.js → commands-registry-B4aR17xV.js} +3 -3
  43. package/dist/{completion-cli-FCJfJebn.js → completion-cli-CNuhIsey.js} +16 -16
  44. package/dist/{config-cli-VIY_NYNB.js → config-cli-BUhVl5pE.js} +10 -10
  45. package/dist/{config-guard-Bmr1IhWb.js → config-guard-buy7Cjbp.js} +4 -4
  46. package/dist/{config-validation-D51v90j4.js → config-validation-Bv5bbuxd.js} +4 -4
  47. package/dist/{configure-DY9M7xe9.js → configure-D2cKTH1K.js} +25 -25
  48. package/dist/{control-ui-assets-Dm1xGH5K.js → control-ui-assets-CTBYi2MG.js} +3 -3
  49. package/dist/{controller-_1HRMACq.js → controller-CEWtbHG6.js} +1 -1
  50. package/dist/{credentials-BeQIuOVH.js → credentials-Db9gEJyX.js} +1 -1
  51. package/dist/{cron-cli-Df48V_il.js → cron-cli-iv9AjWjS.js} +14 -14
  52. package/dist/{daemon-cli-BaePnoF7.js → daemon-cli-P_RNqlTz.js} +19 -19
  53. package/dist/{daemon-install-DWcz5r6O.js → daemon-install-D-kvx3V5.js} +10 -10
  54. package/dist/{daemon-install-helpers-Dhf36TZZ.js → daemon-install-helpers-9DICPTya.js} +13 -13
  55. package/dist/{delete-agent-sessions-uGdBmFVU.js → delete-agent-sessions-BfuIBVng.js} +1 -1
  56. package/dist/{deliver-CsBM7Sux.js → deliver-vnUlcBpf.js} +12 -12
  57. package/dist/{devices-cli-DJfaFSmn.js → devices-cli-a6nbvYoE.js} +13 -13
  58. package/dist/{diagnostic-DAPS8u-k.js → diagnostic-DJz53yyc.js} +4 -4
  59. package/dist/{diagnostics-nXbz9WIN.js → diagnostics-CCJvDjHM.js} +5 -5
  60. package/dist/{directory-cli-BLhDYrKO.js → directory-cli-DZt6_oyq.js} +11 -11
  61. package/dist/{dm-policy-shared-BruH8gYz.js → dm-policy-shared-B2rRMZjX.js} +5 -5
  62. package/dist/{dns-cli-B5kFZNM_.js → dns-cli-Cr7olDhH.js} +10 -10
  63. package/dist/{docs-cli-CA-BUSdK.js → docs-cli-D0IbS-w_.js} +9 -9
  64. package/dist/{doctor-completion-DPfr7dYc.js → doctor-completion-CTN0KnCG.js} +3 -3
  65. package/dist/{doctor-config-flow-CwSjXDoe.js → doctor-config-flow-BcbZEvhN.js} +17 -17
  66. package/dist/{enable-DiygfPTs.js → enable-FeowesRW.js} +2 -2
  67. package/dist/entry.js +4 -4
  68. package/dist/{exec-DgfbhlVq.js → exec-BadOxgw_.js} +2 -2
  69. package/dist/{exec-approvals-allowlist-BQNCcnrB.js → exec-approvals-allowlist-CvMIZ3Av.js} +1 -1
  70. package/dist/{exec-approvals-cli-Cwg4-I6U.js → exec-approvals-cli-TIjMcgyZ.js} +22 -22
  71. package/dist/{exec-approvals-ClDOrgGo.js → exec-approvals-iao6P-Sv.js} +2 -2
  72. package/dist/{exec-safe-bin-runtime-policy-B_c-JxLa.js → exec-safe-bin-runtime-policy-18lfJBlE.js} +2 -2
  73. package/dist/{extension-relay-auth-zGWI5gYg.js → extension-relay-auth-DaJK0rd5.js} +10 -10
  74. package/dist/{fetch---jlJUEM.js → fetch-COhcdJbk.js} +5 -5
  75. package/dist/{fetch-guard-iae-zVNj.js → fetch-guard-ChaY1JfD.js} +2 -2
  76. package/dist/{fs-safe-9jT9nWzE.js → fs-safe-CJ7BaYqw.js} +25 -25
  77. package/dist/{gateway-cli-B5anPDYc.js → gateway-cli-BrOSHlSK.js} +200 -200
  78. package/dist/{gateway-rpc-CJhrbhwy.js → gateway-rpc-qeYBKW7U.js} +3 -3
  79. package/dist/{globals-BRyHSrWD.js → globals-3lUHnZas.js} +7 -7
  80. package/dist/{gmail-setup-utils-BjW3d-63.js → gmail-setup-utils-CobB8zXB.js} +2 -2
  81. package/dist/{health-DR2dYPoD.js → health-Dff2iJXm.js} +11 -11
  82. package/dist/{health-format-fI8G4Mpf.js → health-format-CiSn_s8O.js} +1 -1
  83. package/dist/{heartbeat-tick-btylKJi7.js → heartbeat-tick-DsC4du2J.js} +1 -1
  84. package/dist/{help-format-CoaYSXD2.js → help-format-vSbRPQ2Y.js} +1 -1
  85. package/dist/{helpers-BSIlmKX7.js → helpers-CmFDbO4C.js} +1 -1
  86. package/dist/{hooks-cli-DRa-pNVn.js → hooks-cli-Cg_LIDvE.js} +110 -110
  87. package/dist/{hooks-status-CHpefcMx.js → hooks-status-Cz3FinlP.js} +2 -2
  88. package/dist/{identity-cli-CNcWNIW-.js → identity-cli-Cvp7fIZM.js} +20 -20
  89. package/dist/{identity-links-avuUsTN6.js → identity-links-DP7R0NPE.js} +4 -4
  90. package/dist/{identity-links-live-BL__Ecwf.js → identity-links-live-Bi60qFYK.js} +1 -1
  91. package/dist/{image-ops-CaP-qXCU.js → image-ops-fsbohlx7.js} +11 -11
  92. package/dist/{inspect-CoNYULj4.js → inspect-dN8Sghor.js} +4 -4
  93. package/dist/{install-safe-path-D9kvfVs4.js → install-safe-path-D8uZKU9M.js} +25 -25
  94. package/dist/{installs-Bs4nGu6t.js → installs-Di1c2v3h.js} +10 -10
  95. package/dist/{ipv4-ClJ3jo3P.js → ipv4-2ElrM9Sz.js} +2 -2
  96. package/dist/{ir-3e4BsvCp.js → ir-G6mp02Um.js} +8 -8
  97. package/dist/{issue-format-CcyrT_ll.js → issue-format-CEhsl7Wj.js} +1 -1
  98. package/dist/{jobs-Dh5LHEXG.js → jobs-BXFDvC34.js} +3 -3
  99. package/dist/{json-files--SPKjIRq.js → json-files-DQ0SWA8I.js} +7 -7
  100. package/dist/{lifecycle-core-CC9SYYk6.js → lifecycle-core-m816LTRQ.js} +9 -9
  101. package/dist/{links-DhEAHyJK.js → links-CdYxxGpz.js} +1 -1
  102. package/dist/{log-tail-BKVxlVAs.js → log-tail-BGUoZ3uj.js} +7 -7
  103. package/dist/{logging-CbulhL7o.js → logging-BcooikJ6.js} +1 -1
  104. package/dist/{logs-cli-6mdXA28U.js → logs-cli-DBMjDhb-.js} +18 -18
  105. package/dist/{manager-zP9NLy9y.js → manager-NberoPlo.js} +14 -14
  106. package/dist/{manager-ByvI6Ro3.js → manager-kfVhbDC5.js} +9 -9
  107. package/dist/{markdown-tables-DXuYgzLS.js → markdown-tables-CIDos_m6.js} +2 -2
  108. package/dist/{memory-cli-BuY1OqI1.js → memory-cli-CTBlq72D.js} +19 -19
  109. package/dist/{model-Cnbe29aL.js → model-DLnu2ZHK.js} +2 -2
  110. package/dist/{model-catalog-qSGqRSeB.js → model-catalog-DShV9nqu.js} +4 -4
  111. package/dist/{model-picker-Esi1b_6D.js → model-picker-DWhiEZI7.js} +4 -4
  112. package/dist/{models-ZMCaSPw_.js → models-Cz5Kterd.js} +22 -22
  113. package/dist/{models-cli-CAMmJjvq.js → models-cli-BoDMHZu8.js} +110 -110
  114. package/dist/{models-config-CzWBExZR.js → models-config-MT7bTyDD.js} +7 -7
  115. package/dist/{node-cli-CwcTuNzE.js → node-cli-C_4LoQOV.js} +43 -43
  116. package/dist/{node-command-policy-E6RVVTJQ.js → node-command-policy-BBvAh8Rh.js} +1 -1
  117. package/dist/{node-service-Dvf6aAZJ.js → node-service-DCKAYWfS.js} +1 -1
  118. package/dist/{nodes-cli-BuQlqtRW.js → nodes-cli-DGvDAyok.js} +23 -23
  119. package/dist/{nodes-screen-DLNLgCSg.js → nodes-screen-4mQTqYUN.js} +8 -8
  120. package/dist/{note-CVlhiP2P.js → note-IQhv9g1L.js} +2 -2
  121. package/dist/{npm-pack-install-D_Sj0nv2.js → npm-pack-install-D4CH04qy.js} +23 -23
  122. package/dist/{npm-resolution-zax_R0pB.js → npm-resolution-DaMWVeZe.js} +5 -5
  123. package/dist/{nudge-D9rNDPko.js → nudge-DAMdAd6o.js} +9 -9
  124. package/dist/{oauth-tls-preflight-DLH5IYXS.js → oauth-tls-preflight-CkoqXyrR.js} +1 -1
  125. package/dist/{onboard-DD3dH3k9.js → onboard-DD49foBa.js} +11 -11
  126. package/dist/{onboard-channels-BBE-Agqp.js → onboard-channels-CpiuyfFX.js} +24 -24
  127. package/dist/{onboard-custom-CEY7uEmj.js → onboard-custom-Dk2A4Q3G.js} +4 -4
  128. package/dist/{onboard-helpers-BMVut_hd.js → onboard-helpers-CyIeOf0n.js} +13 -13
  129. package/dist/{onboard-hooks-CG-FJnI-.js → onboard-hooks-o9_Jnoi3.js} +6 -6
  130. package/dist/{onboard-remote-DEpMgQbz.js → onboard-remote-lRnElN1u.js} +5 -5
  131. package/dist/{onboard-skills-Bg7_D4v3.js → onboard-skills-DG2pTqSo.js} +4 -4
  132. package/dist/{onboarding-DAr0y1xl.js → onboarding-DSJ6YXNm.js} +18 -18
  133. package/dist/{onboarding.finalize-CAdOP28d.js → onboarding.finalize-D8gRbG5W.js} +118 -118
  134. package/dist/{onboarding.gateway-config-CFZaPfh1.js → onboarding.gateway-config-DylTeRCh.js} +21 -21
  135. package/dist/{onboarding.secret-input-W2xyIofP.js → onboarding.secret-input-Dj09etVn.js} +1 -1
  136. package/dist/{openai-model-default-CfAtGL15.js → openai-model-default-DqnRWGwj.js} +2 -2
  137. package/dist/{openclaw-root-C3plUO0H.js → openclaw-root-Bh3xNyXD.js} +2 -2
  138. package/dist/{operator-commands-B1hJ80gq.js → operator-commands-BDQn-b94.js} +6 -6
  139. package/dist/{outbound-attachment-B1pU8jDT.js → outbound-attachment-BeP7tvsZ.js} +2 -2
  140. package/dist/{outbound-message-hooks-DUjjvy1L.js → outbound-message-hooks-D7aalpVP.js} +5 -5
  141. package/dist/{pairing-cli-Beyds7bN.js → pairing-cli-C1W78CCz.js} +19 -19
  142. package/dist/{pairing-labels-CF503Gm6.js → pairing-labels-BgUdVYgJ.js} +1 -1
  143. package/dist/{pairing-store-CyVCFIGE.js → pairing-store-BIeHwICv.js} +4 -4
  144. package/dist/{path-alias-guards-PMiJhZq7.js → path-alias-guards-BL542Mqz.js} +3 -3
  145. package/dist/{path-safety-BspQHYKd.js → path-safety-tfrNWosi.js} +1 -1
  146. package/dist/{pi-embedded-helpers-CPciDfKU.js → pi-embedded-helpers-mGzreJbk.js} +6 -6
  147. package/dist/{pi-embedded-recovery-adapter-Dih7eQN6.js → pi-embedded-recovery-adapter-5ipqXFw0.js} +37 -37
  148. package/dist/{pi-embedded-utils-CuKpG3OL.js → pi-embedded-utils-DC8eBUz9.js} +2 -2
  149. package/dist/{pi-model-discovery-BGjjAfS_.js → pi-model-discovery-Cv0FIBjp.js} +1 -1
  150. package/dist/{pid-alive-SdfUhiUL.js → pid-alive-dd2LsB9B.js} +1 -1
  151. package/dist/{plugin-auto-enable-CkSukyUJ.js → plugin-auto-enable-Clq5aaN8.js} +2 -2
  152. package/dist/{plugin-owned-work-recovery-adapter--0U5isrX.js → plugin-owned-work-recovery-adapter-tahoDsQP.js} +7 -7
  153. package/dist/{plugin-registry-Bj2UEGYL.js → plugin-registry-Co2I2dee.js} +4 -4
  154. package/dist/{plugins-cli-DxRN4ecF.js → plugins-cli-BbCRBZ8E.js} +113 -113
  155. package/dist/{plugins-U6rjKH4S.js → plugins-s69ApVox.js} +32 -32
  156. package/dist/{ports-C39ULrzN.js → ports-CbVKJEbZ.js} +2 -2
  157. package/dist/{ports-Bou4KIns.js → ports-D3N8WNv7.js} +3 -3
  158. package/dist/{program-15ahbGoV.js → program-DZV-02XU.js} +109 -109
  159. package/dist/{progress-CNFYgWmi.js → progress-CSthTuLH.js} +2 -2
  160. package/dist/{prompt-select-styled-UplxBFKi.js → prompt-select-styled-GsqEjvHR.js} +48 -48
  161. package/dist/{prompt-style-BDFZg96K.js → prompt-style-C6yO0kan.js} +1 -1
  162. package/dist/{provider-auth-helpers-BVUg3rt9.js → provider-auth-helpers-DL--wYUD.js} +6 -6
  163. package/dist/{proxy-env-DlwU1FI0.js → proxy-env-BwHmf2xr.js} +1 -1
  164. package/dist/{push-apns-Brgo5FF_.js → push-apns-DDrvx1KA.js} +10 -10
  165. package/dist/{pw-ai-BuxU6NcI.js → pw-ai-9MdWRxeB.js} +17 -17
  166. package/dist/{qmd-manager-Co6bGTb-.js → qmd-manager-D6HnLpUI.js} +25 -25
  167. package/dist/{qmd-scope-C73b3Bad.js → qmd-scope-B3hEskxa.js} +1 -1
  168. package/dist/{qr-cli-BatJFHjG.js → qr-cli-3HQW1ysr.js} +10 -10
  169. package/dist/{query-expansion-Db-cwB6N.js → query-expansion-Ba0qHd1X.js} +10 -10
  170. package/dist/{reconcile-bundled-pSk1Enkt.js → reconcile-bundled-ETwvh8Lp.js} +3 -3
  171. package/dist/{recorder-Co7XfeXs.js → recorder-DWp7wJN5.js} +2 -2
  172. package/dist/{recovery-adapter-D4N2DA4U.js → recovery-adapter-D7ZF1aEL.js} +3 -3
  173. package/dist/{recovery-adapter-Bd5Lx0lD.js → recovery-adapter-Keltudpw.js} +2 -2
  174. package/dist/{recovery-adapter-Ce8bGqr6.js → recovery-adapter-ke4F4Py1.js} +7 -7
  175. package/dist/{recovery-prompt-BNuvIRHh.js → recovery-prompt-BDu5Z1ac.js} +1 -1
  176. package/dist/{redact-snapshot-CWZRUrKd.js → redact-snapshot-CIe93cqM.js} +2 -2
  177. package/dist/{register.agent-qsvG5d6b.js → register.agent-BPzxR5eF.js} +124 -124
  178. package/dist/register.configure-B3_fTtgY.js +172 -0
  179. package/dist/{register.maintenance-FoAdPMFW.js → register.maintenance-BMcTylyl.js} +132 -132
  180. package/dist/{register.message-jqWymiCX.js → register.message-C5pBU08J.js} +103 -103
  181. package/dist/{register.onboard-KhVcvpjS.js → register.onboard-Czx8Kmyg.js} +26 -26
  182. package/dist/{register.setup-6Dis4a-c.js → register.setup-CTInxp0P.js} +29 -29
  183. package/dist/{register.status-health-sessions-DRwbJpYv.js → register.status-health-sessions-B5Rv4Dsf.js} +122 -122
  184. package/dist/{register.subclis-9qtDZp7M.js → register.subclis-DZL7ZFwa.js} +35 -35
  185. package/dist/{replies-NOlwewVf.js → replies-CrZI5K0e.js} +5 -5
  186. package/dist/{reply-directives-BN2i_45e.js → reply-directives-CF6_EhVh.js} +2 -2
  187. package/dist/{reply-prefix-w4MwKPHk.js → reply-prefix-CeZ9Uz8z.js} +1 -1
  188. package/dist/{reset-9GUBHVgp.js → reset-D-mCgUpD.js} +1 -1
  189. package/dist/{resolve-route-CrsHJxmf.js → resolve-route-yDs92eUQ.js} +6 -6
  190. package/dist/{rpc-hQ8QyZfR.js → rpc-Do5rvfno.js} +3 -3
  191. package/dist/{run-main-D8aWBZut.js → run-main-BYRPATOb.js} +122 -122
  192. package/dist/{runs-CIwQKryx.js → runs-C1AHoTDq.js} +7 -7
  193. package/dist/{runtime-config-dhfqY0Av.js → runtime-config-DYgOR0MD.js} +1 -1
  194. package/dist/{runtime-config-collectors-DvDpcifN.js → runtime-config-collectors-BLVuIB75.js} +1 -1
  195. package/dist/{runtime-guard-SZPrkFGc.js → runtime-guard-BmktwqCK.js} +1 -1
  196. package/dist/{runtime-DcEApmUI.js → runtime-iNm_LniP.js} +4 -4
  197. package/dist/{sandbox-DUHQEePj.js → sandbox-Da_kzIjf.js} +21 -21
  198. package/dist/{sandbox-cli-DlQR1_hY.js → sandbox-cli-DuSmbDES.js} +33 -33
  199. package/dist/{secrets-cli-DbI7GN_9.js → secrets-cli-CTwKCtw5.js} +16 -16
  200. package/dist/{security-cli-BiKOgX17.js → security-cli-N9bUi8Q4.js} +47 -47
  201. package/dist/{send-T7B6Djpm.js → send-B2OFN92Q.js} +7 -7
  202. package/dist/{send-CCpmsTaF.js → send-BrIw5gc4.js} +6 -6
  203. package/dist/{send-D1_IMV2p.js → send-DDirI-zY.js} +13 -13
  204. package/dist/{send-BgoXf_pU.js → send-DUG-oCDA.js} +6 -6
  205. package/dist/{server-aWUVSCfe.js → server-CTE0rQkl.js} +23 -23
  206. package/dist/{server-context-6JE_fAZa.js → server-context-BFf0C9iy.js} +12 -12
  207. package/dist/{server-lifecycle-DrkkrkLG.js → server-lifecycle-HSz4A7oj.js} +3 -3
  208. package/dist/{server-middleware-C4sFNt38.js → server-middleware-BfsPD7V5.js} +1 -1
  209. package/dist/{server-node-events-M-He8yAD.js → server-node-events-Dfykgqkj.js} +103 -103
  210. package/dist/{service-D7MwyeF6.js → service-BvpFqVNe.js} +15 -15
  211. package/dist/{session-consumer-agents-CvPuQmfS.js → session-consumer-agents-BRMrM2o-.js} +1 -1
  212. package/dist/{session-consumer-claim-sweep-BwHCvVar.js → session-consumer-claim-sweep-C-w92Ik5.js} +9 -9
  213. package/dist/{session-key-DCnSJLJC.js → session-key-D0gYNgj1.js} +1 -1
  214. package/dist/{session-meta-AHw8bwC2.js → session-meta-B_9mMU72.js} +1 -1
  215. package/dist/{session-storage-2RXtwc2B.js → session-storage-BDHA7onc.js} +22 -22
  216. package/dist/{session-storage-owner-C2S5c5Ct.js → session-storage-owner-CE7dPxVq.js} +53 -53
  217. package/dist/{session-store-targets-Dfi0lJu6.js → session-store-targets-DSlE2YTH.js} +3 -3
  218. package/dist/{session-utils-N1E2Os2e.js → session-utils-Qu1Mxoz3.js} +9 -9
  219. package/dist/{sessions-ByIiYDOv.js → sessions-BJTO-2xk.js} +17 -17
  220. package/dist/{sessions-CiGjB89K.js → sessions-CbISkp7n.js} +5 -5
  221. package/dist/{sessions-CDZSxsqg.js → sessions-DcU-v_tQ.js} +6 -6
  222. package/dist/{sessions-claims-status-Due9OmHi.js → sessions-claims-status-BVw2gdh3.js} +11 -11
  223. package/dist/{sessions-maintenance-core-mGWdB4w9.js → sessions-maintenance-core-BhBRIGU4.js} +8 -8
  224. package/dist/{setup-helpers-Db5Eiwfz.js → setup-helpers-llVNLaGg.js} +1 -1
  225. package/dist/{shared-BD85Vehr.js → shared-DWSJKo_J.js} +4 -4
  226. package/dist/{shared-Dj_9K6TV.js → shared-DiKdnJLT.js} +2 -2
  227. package/dist/{skill-commands-RbKycCIr.js → skill-commands-ByQ7_wSo.js} +7 -7
  228. package/dist/{skill-scanner-_B-P9k6R.js → skill-scanner-BF0g0j0b.js} +7 -7
  229. package/dist/{skills-DQXl0zPN.js → skills-B_8rpYgx.js} +6 -6
  230. package/dist/{skills-cli-CoFk-jGI.js → skills-cli-DPCY-cBo.js} +9 -9
  231. package/dist/{skills-install-CbZM96Md.js → skills-install-7wyldk9K.js} +9 -9
  232. package/dist/{skills-status-BzrUtJEQ.js → skills-status-B6eaKM8l.js} +3 -3
  233. package/dist/{status-1Hex6Hbe.js → status-BEBudOEO.js} +49 -49
  234. package/dist/{status.update-BfbrrxHR.js → status.update-DFxOh1ri.js} +2 -2
  235. package/dist/{storage-config-Dz2pNq3V.js → storage-config-JrkJ-0mD.js} +4 -4
  236. package/dist/{store-DNFja7Ml.js → store-BbFKZJKS.js} +7 -7
  237. package/dist/{subsystem-BNf8H-Zm.js → subsystem-xTuYkxuQ.js} +1 -1
  238. package/dist/{supervisor-BTx-mYVb.js → supervisor-SBLvQOVa.js} +2 -2
  239. package/dist/{system-cli-CCnFtRmN.js → system-cli-D1NTf4-m.js} +13 -13
  240. package/dist/{system-run-command-Dn4pjv1t.js → system-run-command-D5kMl0NY.js} +2 -2
  241. package/dist/{systemd-dCivcEEh.js → systemd-BT6dJ-0G.js} +11 -11
  242. package/dist/{systemd-hints-DKKIvtLc.js → systemd-hints-e6hBRMDf.js} +9 -9
  243. package/dist/{systemd-linger-OHTcLrbQ.js → systemd-linger-BSyMrbbt.js} +2 -2
  244. package/dist/{table-C7H5Lwhe.js → table-BVq_qQUE.js} +2 -2
  245. package/dist/{tables-BcvyK02n.js → tables-CfbMQJYc.js} +1 -1
  246. package/dist/{tailnet-CImZKZJW.js → tailnet-QfxqR4vE.js} +1 -1
  247. package/dist/{tailscale-B18BMO5n.js → tailscale-D0OOOayz.js} +2 -2
  248. package/dist/{task-pipeline-boot-MOBuVbRZ.js → task-pipeline-boot-DHHiFfrN.js} +103 -103
  249. package/dist/{task-runlog-retention-BSWFe7it.js → task-runlog-retention-COTIMum4.js} +5 -5
  250. package/dist/{tasks-DSspLa-k.js → tasks-DX3vGbQp.js} +11 -11
  251. package/dist/{tokens-CifyLNEm.js → tokens-BLTw7hkA.js} +1 -1
  252. package/dist/{tool-display-C8fJRy0v.js → tool-display-DgVBn6pw.js} +1 -1
  253. package/dist/{tool-loop-detection-DNtwIsX0.js → tool-loop-detection-DWOtmjfd.js} +2 -2
  254. package/dist/{trash-DeXdzEHp.js → trash-DFORyVVD.js} +3 -3
  255. package/dist/{tui-DiBWn1ps.js → tui-Y47OkCY6.js} +9 -9
  256. package/dist/{tui-cli-0XkkeQf6.js → tui-cli-BK9oKFut.js} +35 -35
  257. package/dist/{update-cli-vPcjjv5_.js → update-cli-sh07vJot.js} +142 -142
  258. package/dist/{update-DRgOzhPi.js → update-fBTm6-oX.js} +3 -3
  259. package/dist/{update-runner-Dcaoqle4.js → update-runner-u1A5zaMd.js} +18 -18
  260. package/dist/{user-run-recording-B9LdfyWT.js → user-run-recording-CxBc2Jon.js} +2 -2
  261. package/dist/{validation-cli-DHqNm53i.js → validation-cli-DHucU5a8.js} +102 -102
  262. package/dist/{web-cli-BtHivcdm.js → web-cli-4yA2eTYI.js} +3 -3
  263. package/dist/{webhooks-cli-C695mkPl.js → webhooks-cli-B4XnYSad.js} +10 -10
  264. package/dist/{widearea-dns-cOQiZHOu.js → widearea-dns-D_Hocera.js} +1 -1
  265. package/dist/{with-timeout-TcIyDCxH.js → with-timeout-Ckdjpoqb.js} +6 -6
  266. package/dist/{workspace-DDuzC-ch.js → workspace-UYxvaf5A.js} +2 -2
  267. package/dist/{workspace-dirs-D56GdN_R.js → workspace-dirs-CqcsAdcV.js} +1 -1
  268. package/dist/{ws-CQqP1z5x.js → ws-B_HpEvRE.js} +2 -2
  269. package/dist/{wsl-DBdhRAWE.js → wsl-Be9W0qZW.js} +2 -2
  270. package/extensions/acpx/package.json +1 -1
  271. package/extensions/anthropic/package.json +1 -1
  272. package/extensions/bifrost/package.json +1 -1
  273. package/extensions/bluebubbles/package.json +1 -1
  274. package/extensions/copilot-proxy/package.json +1 -1
  275. package/extensions/deepgram/package.json +1 -1
  276. package/extensions/deepinfra/package.json +1 -1
  277. package/extensions/diagnostics-otel/package.json +1 -1
  278. package/extensions/diffs/package.json +1 -1
  279. package/extensions/discord/package.json +1 -1
  280. package/extensions/dream-cycle/package.json +1 -1
  281. package/extensions/elevenlabs/package.json +1 -1
  282. package/extensions/feishu/package.json +1 -1
  283. package/extensions/gemini-search/package.json +1 -1
  284. package/extensions/google/package.json +1 -1
  285. package/extensions/google-gemini-cli-auth/package.json +1 -1
  286. package/extensions/googlechat/package.json +1 -1
  287. package/extensions/grok-search/package.json +1 -1
  288. package/extensions/groq/package.json +1 -1
  289. package/extensions/identity-oidc/package.json +1 -1
  290. package/extensions/imessage/package.json +1 -1
  291. package/extensions/irc/package.json +1 -1
  292. package/extensions/kimi-search/package.json +1 -1
  293. package/extensions/kokoro/package.json +1 -1
  294. package/extensions/learning-core/package.json +1 -1
  295. package/extensions/line/package.json +1 -1
  296. package/extensions/llm-task/package.json +1 -1
  297. package/extensions/lobster/package.json +1 -1
  298. package/extensions/matrix/CHANGELOG.md +1 -1
  299. package/extensions/matrix/package.json +1 -1
  300. package/extensions/mattermost/package.json +1 -1
  301. package/extensions/memory-core/package.json +1 -1
  302. package/extensions/memory-lancedb/package.json +1 -1
  303. package/extensions/minimax/package.json +1 -1
  304. package/extensions/minimax-portal-auth/package.json +1 -1
  305. package/extensions/mistral/package.json +1 -1
  306. package/extensions/moonshot/package.json +1 -1
  307. package/extensions/msteams/CHANGELOG.md +1 -1
  308. package/extensions/msteams/package.json +1 -1
  309. package/extensions/nextcloud-talk/package.json +1 -1
  310. package/extensions/nostr/CHANGELOG.md +1 -1
  311. package/extensions/nostr/package.json +1 -1
  312. package/extensions/open-prose/package.json +1 -1
  313. package/extensions/openai/package.json +1 -1
  314. package/extensions/openai-realtime/package.json +1 -1
  315. package/extensions/openrouter/package.json +1 -1
  316. package/extensions/perplexity-search/package.json +1 -1
  317. package/extensions/searxng-search/package.json +1 -1
  318. package/extensions/signal/package.json +1 -1
  319. package/extensions/slack/package.json +1 -1
  320. package/extensions/synology-chat/package.json +1 -1
  321. package/extensions/telegram/package.json +1 -1
  322. package/extensions/tlon/package.json +1 -1
  323. package/extensions/twitch/CHANGELOG.md +1 -1
  324. package/extensions/twitch/package.json +1 -1
  325. package/extensions/ui-surfaces/package.json +1 -1
  326. package/extensions/voice-call/CHANGELOG.md +1 -1
  327. package/extensions/voice-call/package.json +1 -1
  328. package/extensions/whatsapp/package.json +1 -1
  329. package/extensions/zai/package.json +1 -1
  330. package/extensions/zalo/CHANGELOG.md +1 -1
  331. package/extensions/zalo/package.json +1 -1
  332. package/extensions/zalouser/CHANGELOG.md +1 -1
  333. package/extensions/zalouser/package.json +1 -1
  334. package/package.json +1 -1
  335. package/dist/clawbot-cli-DkKjzk5H.js +0 -33
  336. package/dist/cli-BmswsRzN.js +0 -168
  337. package/dist/register.configure-CYUHzWqX.js +0 -172
@@ -1,17 +1,17 @@
1
1
  import { g as resolveStateDir, l as resolveGatewayLockDir, o as resolveConfigPath } from "./paths-BMo6kTge.js";
2
- import { t as createSubsystemLogger } from "./subsystem-BNf8H-Zm.js";
3
- import { $ as closeConfiguredSessionStorageRuntime, At as resolveSessionFilePath, Ct as parseSessionIndexRecordKey, Dt as SAFE_SESSION_ID_RE, Ft as resolveStorePath, Ot as SESSION_RUN_STORE_FILE_NAME, at as loadSessionStoreFromDisk, et as closeReplacedConfiguredSessionStorageRuntime, lt as refreshConfiguredSessionBindingEntry, nt as getConfiguredSessionStorageRuntime, ot as prepareConfiguredSessionStorageRuntimeActivation, tt as commitPreparedConfiguredSessionStorageRuntimeActivation } from "./plugins-U6rjKH4S.js";
4
- import { p as normalizeAgentId, w as sessionKeyAgentMatches } from "./session-key-DCnSJLJC.js";
5
- import { d as resolveDefaultAgentId, r as listAgentIds } from "./agent-scope-Daay3L1Q.js";
6
- import { n as isPidAlive } from "./pid-alive-SdfUhiUL.js";
7
- import { K as buildEqualityProjection, Pt as CREATE_CTX_STORAGE_OWNER_SQL, Sn as isSessionArchiveArtifactName, at as deriveLegacyActorIdentity, c as validateCtxStorage, ft as sanitizeAppendEntry, ht as extractLegacyTranscriptEntryFields, n as createSessionStorageRuntimeFromConfig, r as resolveSessionStorageConfig, t as attachPgPoolErrorListeners, xn as isPrimarySessionTranscriptFileName } from "./storage-config-Dz2pNq3V.js";
8
- import { r as gatewayErrorShapeOf } from "./client-BHIM--Lw.js";
9
- import { n as callGateway } from "./call-xzY_YjPJ.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
3
+ import { $ as closeConfiguredSessionStorageRuntime, At as resolveSessionFilePath, Ct as parseSessionIndexRecordKey, Dt as SAFE_SESSION_ID_RE, Ft as resolveStorePath, Ot as SESSION_RUN_STORE_FILE_NAME, at as loadSessionStoreFromDisk, et as closeReplacedConfiguredSessionStorageRuntime, lt as refreshConfiguredSessionBindingEntry, nt as getConfiguredSessionStorageRuntime, ot as prepareConfiguredSessionStorageRuntimeActivation, tt as commitPreparedConfiguredSessionStorageRuntimeActivation } from "./plugins-s69ApVox.js";
4
+ import { p as normalizeAgentId, w as sessionKeyAgentMatches } from "./session-key-D0gYNgj1.js";
5
+ import { d as resolveDefaultAgentId, r as listAgentIds } from "./agent-scope-m37qEcFM.js";
6
+ import { n as isPidAlive } from "./pid-alive-dd2LsB9B.js";
7
+ import { K as buildEqualityProjection, Pt as CREATE_CTX_STORAGE_OWNER_SQL, Sn as isSessionArchiveArtifactName, at as deriveLegacyActorIdentity, c as validateCtxStorage, ft as sanitizeAppendEntry, ht as extractLegacyTranscriptEntryFields, n as createSessionStorageRuntimeFromConfig, r as resolveSessionStorageConfig, t as attachPgPoolErrorListeners, xn as isPrimarySessionTranscriptFileName } from "./storage-config-JrkJ-0mD.js";
8
+ import { r as gatewayErrorShapeOf } from "./client-B3-vuVAE.js";
9
+ import { n as callGateway } from "./call-DiXPYDxn.js";
10
10
  import { createRequire } from "node:module";
11
11
  import os from "node:os";
12
12
  import path from "node:path";
13
13
  import fs, { lstatSync, realpathSync, statSync } from "node:fs";
14
- import fs$1, { open } from "node:fs/promises";
14
+ import fsPromises, { open } from "node:fs/promises";
15
15
  import { createHash, randomBytes, randomUUID } from "node:crypto";
16
16
  import net from "node:net";
17
17
  import { Worker } from "node:worker_threads";
@@ -46,7 +46,7 @@ const LEGACY_ARCHIVE_DEFAULT_RETENTION_MS = 720 * 60 * 60 * 1e3;
46
46
  const log$17 = createSubsystemLogger("config/sessions/legacy-import/archive");
47
47
  /** SHA-256 over the file's bytes; null when the file is gone (ENOENT). Other errors propagate. */
48
48
  async function sourceIdentity(filePath) {
49
- const handle = await fs$1.open(filePath, "r").catch((error) => {
49
+ const handle = await fsPromises.open(filePath, "r").catch((error) => {
50
50
  if (error.code === "ENOENT") return null;
51
51
  throw error;
52
52
  });
@@ -99,9 +99,9 @@ function fallbackArchiveDest(source, archiveRoot) {
99
99
  async function copyVerifiedTo(sourcePath, dest, expected) {
100
100
  const tmp = `${dest}.tmp-${randomUUID()}`;
101
101
  try {
102
- const handle = await fs$1.open(tmp, "wx", 384);
102
+ const handle = await fsPromises.open(tmp, "wx", 384);
103
103
  try {
104
- const sourceHandle = await fs$1.open(sourcePath, "r");
104
+ const sourceHandle = await fsPromises.open(sourcePath, "r");
105
105
  try {
106
106
  const chunk = Buffer.allocUnsafe(256 * 1024);
107
107
  let size = 0;
@@ -118,18 +118,18 @@ async function copyVerifiedTo(sourcePath, dest, expected) {
118
118
  } finally {
119
119
  await handle.close();
120
120
  }
121
- await fs$1.chmod(tmp, 384);
121
+ await fsPromises.chmod(tmp, 384);
122
122
  const copied = await identityOf(tmp);
123
123
  if (!copied || copied.fingerprint !== expected.fingerprint) throw new Error(`legacy archive cross-device copy diverged from the imported bytes: ${dest}`);
124
124
  try {
125
- await fs$1.link(tmp, dest);
125
+ await fsPromises.link(tmp, dest);
126
126
  } catch (error) {
127
127
  if (error.code !== "EEXIST") throw error;
128
128
  const existing = await identityOf(dest);
129
129
  if (!existing || existing.fingerprint !== expected.fingerprint) throw new Error(`legacy archive destination exists with different content: ${dest}`, { cause: error });
130
130
  }
131
131
  } finally {
132
- await fs$1.rm(tmp, { force: true });
132
+ await fsPromises.rm(tmp, { force: true });
133
133
  }
134
134
  }
135
135
  /**
@@ -145,7 +145,7 @@ async function planLegacyArchiveDest(source, archiveRoot, expected) {
145
145
  const resolvedRoot = path.resolve(archiveRoot);
146
146
  const { dir, dest } = archivePathsFor(source, resolvedRoot);
147
147
  try {
148
- await fs$1.mkdir(dir, {
148
+ await fsPromises.mkdir(dir, {
149
149
  recursive: true,
150
150
  mode: 448
151
151
  });
@@ -185,7 +185,7 @@ async function archiveLegacySource(source, archiveRoot, expected) {
185
185
  */
186
186
  async function archiveLegacySourceTo(source, dest, archiveRoot, expected) {
187
187
  const resolvedRoot = path.resolve(archiveRoot);
188
- await fs$1.mkdir(path.dirname(dest), {
188
+ await fsPromises.mkdir(path.dirname(dest), {
189
189
  recursive: true,
190
190
  mode: 448
191
191
  });
@@ -195,14 +195,14 @@ async function archiveLegacySourceTo(source, dest, archiveRoot, expected) {
195
195
  const expectedIdentity = expected ?? sourceIdentityValue;
196
196
  if (sourceIdentityValue.fingerprint !== expectedIdentity.fingerprint) throw new Error(`legacy source changed after import; failing closed: ${source.path}`);
197
197
  const destInodeVerified = async (destPath) => {
198
- const [sourceStat, destStat] = await Promise.all([fs$1.stat(source.path), fs$1.stat(destPath).catch(() => void 0)]);
198
+ const [sourceStat, destStat] = await Promise.all([fsPromises.stat(source.path), fsPromises.stat(destPath).catch(() => void 0)]);
199
199
  return destStat !== void 0 && destStat.dev === sourceStat.dev && destStat.ino === sourceStat.ino;
200
200
  };
201
201
  const moveInto = async (destPath) => {
202
202
  let moved = false;
203
203
  let independentArchive = false;
204
204
  try {
205
- await fs$1.link(source.path, destPath);
205
+ await fsPromises.link(source.path, destPath);
206
206
  moved = true;
207
207
  } catch (error) {
208
208
  const code = error.code;
@@ -210,7 +210,7 @@ async function archiveLegacySourceTo(source, dest, archiveRoot, expected) {
210
210
  const existing = await identityOf(destPath);
211
211
  if (existing && existing.fingerprint === expectedIdentity.fingerprint) {
212
212
  moved = true;
213
- const [sourceStat, destStat] = await Promise.all([fs$1.stat(source.path), fs$1.stat(destPath)]);
213
+ const [sourceStat, destStat] = await Promise.all([fsPromises.stat(source.path), fsPromises.stat(destPath)]);
214
214
  independentArchive = sourceStat.dev !== destStat.dev || sourceStat.ino !== destStat.ino;
215
215
  } else return {
216
216
  moved: false,
@@ -231,13 +231,13 @@ async function archiveLegacySourceTo(source, dest, archiveRoot, expected) {
231
231
  };
232
232
  const outcome = await moveInto(dest);
233
233
  if (outcome.divergent) throw new Error(`legacy archive destination exists with different content: ${dest}`);
234
- await fs$1.chmod(dest, 384);
234
+ await fsPromises.chmod(dest, 384);
235
235
  if (!await destInodeVerified(dest)) {
236
236
  const archived = await identityOf(dest);
237
237
  if (!archived || archived.fingerprint !== expectedIdentity.fingerprint) throw new Error(`legacy archive verification failed: ${dest}`);
238
238
  }
239
239
  if (outcome.moved) if (outcome.independentArchive) await unlinkSourceIfUnchanged(source.path, expectedIdentity);
240
- else await fs$1.unlink(source.path);
240
+ else await fsPromises.unlink(source.path);
241
241
  return dest;
242
242
  }
243
243
  /**
@@ -251,12 +251,12 @@ async function unlinkSourceIfUnchanged(sourcePath, expected) {
251
251
  const current = await sourceIdentity(sourcePath);
252
252
  if (!current) return;
253
253
  if (current.fingerprint !== expected.fingerprint) throw new Error(`legacy source changed before removal; failing closed: ${sourcePath}`);
254
- await fs$1.unlink(sourcePath);
254
+ await fsPromises.unlink(sourcePath);
255
255
  }
256
256
  async function chmodDirs(dir, stopAt) {
257
257
  let current = dir;
258
258
  while (current.startsWith(stopAt) && current !== stopAt) {
259
- await fs$1.chmod(current, 448).catch(() => void 0);
259
+ await fsPromises.chmod(current, 448).catch(() => void 0);
260
260
  const parent = path.dirname(current);
261
261
  if (parent === current) return;
262
262
  current = parent;
@@ -285,11 +285,11 @@ async function purgeExpiredLegacyArchives(runtime, opts) {
285
285
  log$17.warn("skipping legacy archive outside the archive root", { sourcePath: receipt.sourcePath });
286
286
  continue;
287
287
  }
288
- if (!await fs$1.stat(archivePath).then(() => true).catch((error) => {
288
+ if (!await fsPromises.stat(archivePath).then(() => true).catch((error) => {
289
289
  if (error.code === "ENOENT") return false;
290
290
  throw error;
291
291
  })) continue;
292
- await fs$1.rm(archivePath, { force: true });
292
+ await fsPromises.rm(archivePath, { force: true });
293
293
  purged += 1;
294
294
  await pruneEmptyArchiveDirs(path.dirname(archivePath), archiveRoot);
295
295
  }
@@ -300,12 +300,12 @@ async function pruneEmptyArchiveDirs(dir, stopAt) {
300
300
  while (current.startsWith(stopAt + path.sep)) {
301
301
  let entries;
302
302
  try {
303
- entries = await fs$1.readdir(current);
303
+ entries = await fsPromises.readdir(current);
304
304
  } catch {
305
305
  return;
306
306
  }
307
307
  if (entries.length > 0) return;
308
- await fs$1.rmdir(current).catch(() => void 0);
308
+ await fsPromises.rmdir(current).catch(() => void 0);
309
309
  current = path.dirname(current);
310
310
  }
311
311
  }
@@ -881,7 +881,7 @@ async function admitDurableKeyMappings(registry, listKeys, opts) {
881
881
  await opts?.clearMappingSourcePath?.(mapping.agentId, mapping.sessionId).catch(() => void 0);
882
882
  continue;
883
883
  }
884
- const stats = await fs$1.stat(mapping.sourcePath).catch(() => void 0);
884
+ const stats = await fsPromises.stat(mapping.sourcePath).catch(() => void 0);
885
885
  if (!stats?.isFile()) continue;
886
886
  registry.admit({
887
887
  path: mapping.sourcePath,
@@ -1081,7 +1081,7 @@ function createLegacySourceRegistry() {
1081
1081
  if (!isSettledReceipt(receipt, source.sizeBytes)) trackPendingPath(key, source);
1082
1082
  return;
1083
1083
  }
1084
- const stats = await fs$1.stat(key).catch(() => void 0);
1084
+ const stats = await fsPromises.stat(key).catch(() => void 0);
1085
1085
  if (!stats?.isFile() && receipt.status !== "imported") return;
1086
1086
  admit({
1087
1087
  path: key,
@@ -1574,7 +1574,7 @@ async function claimExclusivePartial(destPath) {
1574
1574
  for (let attempt = 0; attempt < 3; attempt += 1) {
1575
1575
  const candidate = `${destPath}.${process.pid}.${randomBytes(8).toString("hex")}.partial`;
1576
1576
  try {
1577
- await (await fs$1.open(candidate, "wx", 384)).close();
1577
+ await (await fsPromises.open(candidate, "wx", 384)).close();
1578
1578
  return candidate;
1579
1579
  } catch (err) {
1580
1580
  if (err.code !== "EEXIST") throw err;
@@ -1593,7 +1593,7 @@ async function backupSqliteSessionDatabase(params) {
1593
1593
  const dbPath = path.resolve(params.dbPath);
1594
1594
  const destPath = path.resolve(params.destPath);
1595
1595
  for (const guarded of protectedLivePaths(dbPath)) if (sameFile$1(destPath, guarded)) throw new Error("backup destination must not be the live database or its owner lock, holder sidecar, or journal files");
1596
- await fs$1.mkdir(path.dirname(destPath), {
1596
+ await fsPromises.mkdir(path.dirname(destPath), {
1597
1597
  recursive: true,
1598
1598
  mode: 448
1599
1599
  });
@@ -1605,14 +1605,14 @@ async function backupSqliteSessionDatabase(params) {
1605
1605
  gated: sqliteBackupTestHooks.holdWorkerAtGate === true,
1606
1606
  writableSource: false
1607
1607
  });
1608
- await fs$1.rename(partialPath, destPath);
1608
+ await fsPromises.rename(partialPath, destPath);
1609
1609
  } catch (err) {
1610
- await fs$1.rm(partialPath, { force: true }).catch(() => {});
1610
+ await fsPromises.rm(partialPath, { force: true }).catch(() => {});
1611
1611
  throw err;
1612
1612
  }
1613
1613
  return {
1614
1614
  path: destPath,
1615
- bytes: (await fs$1.stat(destPath)).size
1615
+ bytes: (await fsPromises.stat(destPath)).size
1616
1616
  };
1617
1617
  }
1618
1618
  /**
@@ -1657,7 +1657,7 @@ const INCARNATION_SELECT_SQL = "SELECT id FROM ctx_legacy_import_incarnation LIM
1657
1657
  async function readDbIncarnationId(dbPath) {
1658
1658
  let db;
1659
1659
  try {
1660
- await fs$1.stat(dbPath);
1660
+ await fsPromises.stat(dbPath);
1661
1661
  db = new DatabaseSync(dbPath);
1662
1662
  const row = db.prepare(INCARNATION_SELECT_SQL).get();
1663
1663
  return typeof row?.id === "string" ? row.id : void 0;
@@ -1709,7 +1709,7 @@ async function takePreImportLegacySnapshot(params) {
1709
1709
  const marked = await readSnapshotMarker(backupsDir, canonicalDbPath);
1710
1710
  if (marked) return marked;
1711
1711
  if ((await params.listReceipts()).length > 0) return;
1712
- await fs$1.mkdir(backupsDir, {
1712
+ await fsPromises.mkdir(backupsDir, {
1713
1713
  recursive: true,
1714
1714
  mode: 448
1715
1715
  });
@@ -1720,7 +1720,7 @@ async function takePreImportLegacySnapshot(params) {
1720
1720
  dbPath,
1721
1721
  destPath
1722
1722
  });
1723
- if (dbId !== void 0) await fs$1.writeFile(path.join(backupsDir, snapshotMarkerFile(canonicalDbPath)), `${JSON.stringify({
1723
+ if (dbId !== void 0) await fsPromises.writeFile(path.join(backupsDir, snapshotMarkerFile(canonicalDbPath)), `${JSON.stringify({
1724
1724
  path: backup.path,
1725
1725
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1726
1726
  canonicalDbPath,
@@ -1738,17 +1738,17 @@ async function takePreImportLegacySnapshot(params) {
1738
1738
  */
1739
1739
  async function cleanupPartialLegacyBackups(stateDir) {
1740
1740
  const backupsDir = path.join(stateDir, "backups");
1741
- const names = await fs$1.readdir(backupsDir).catch(() => []);
1741
+ const names = await fsPromises.readdir(backupsDir).catch(() => []);
1742
1742
  for (const name of names) {
1743
1743
  if (!name.endsWith(".partial")) continue;
1744
- await fs$1.rm(path.join(backupsDir, name), { force: true }).catch(() => void 0);
1744
+ await fsPromises.rm(path.join(backupsDir, name), { force: true }).catch(() => void 0);
1745
1745
  }
1746
1746
  }
1747
1747
  async function readSnapshotMarker(backupsDir, canonicalDbPath) {
1748
1748
  const currentIncarnationId = await readDbIncarnationId(canonicalDbPath);
1749
1749
  const keyed = await readMarkerFile(path.join(backupsDir, snapshotMarkerFile(canonicalDbPath)), canonicalDbPath, currentIncarnationId);
1750
1750
  if (keyed !== void 0) return keyed;
1751
- const names = await fs$1.readdir(backupsDir).catch(() => []);
1751
+ const names = await fsPromises.readdir(backupsDir).catch(() => []);
1752
1752
  for (const name of names) {
1753
1753
  if (!name.startsWith(SNAPSHOT_MARKER_PREFIX) || !name.endsWith(".json")) continue;
1754
1754
  const found = await readMarkerFile(path.join(backupsDir, name), canonicalDbPath, currentIncarnationId);
@@ -1757,7 +1757,7 @@ async function readSnapshotMarker(backupsDir, canonicalDbPath) {
1757
1757
  return readMarkerFile(path.join(backupsDir, SNAPSHOT_MARKER_FILE), canonicalDbPath, currentIncarnationId);
1758
1758
  }
1759
1759
  async function readMarkerFile(markerFile, canonicalDbPath, currentIncarnationId) {
1760
- const raw = await fs$1.readFile(markerFile, "utf8").catch(() => void 0);
1760
+ const raw = await fsPromises.readFile(markerFile, "utf8").catch(() => void 0);
1761
1761
  if (!raw) return;
1762
1762
  try {
1763
1763
  const parsed = JSON.parse(raw);
@@ -1769,7 +1769,7 @@ async function readMarkerFile(markerFile, canonicalDbPath, currentIncarnationId)
1769
1769
  if (currentIncarnationId !== void 0 && currentIncarnationId === markerId) return markerPath;
1770
1770
  return;
1771
1771
  }
1772
- const [markerStat, dbStat] = await Promise.all([fs$1.stat(markerDbPath).catch(() => void 0), fs$1.stat(canonicalDbPath).catch(() => void 0)]);
1772
+ const [markerStat, dbStat] = await Promise.all([fsPromises.stat(markerDbPath).catch(() => void 0), fsPromises.stat(canonicalDbPath).catch(() => void 0)]);
1773
1773
  if (markerStat !== void 0 && dbStat !== void 0 ? markerStat.dev === dbStat.dev && markerStat.ino === dbStat.ino : markerDbPath === canonicalDbPath) return markerPath;
1774
1774
  }
1775
1775
  } catch {}
@@ -2035,7 +2035,7 @@ const log$9 = createSubsystemLogger("config/sessions/legacy-import/index-import"
2035
2035
  async function readLegacyIndexStore(storePath) {
2036
2036
  let raw;
2037
2037
  try {
2038
- raw = await fs$1.readFile(storePath, "utf8");
2038
+ raw = await fsPromises.readFile(storePath, "utf8");
2039
2039
  } catch (error) {
2040
2040
  throw new Error(`legacy index source unreadable: ${storePath}`, { cause: error });
2041
2041
  }
@@ -2274,7 +2274,7 @@ async function importLegacyIndex(runtime, source, opts = {}) {
2274
2274
  actorExplicit: entry.actor !== void 0
2275
2275
  }), opts.signal);
2276
2276
  if (transcriptPath && opts.discoveredTranscripts && path.resolve(transcriptPath) !== path.resolve(source.path)) try {
2277
- const stats = await fs$1.stat(transcriptPath);
2277
+ const stats = await fsPromises.stat(transcriptPath);
2278
2278
  if (stats.isFile()) opts.discoveredTranscripts.push({
2279
2279
  path: transcriptPath,
2280
2280
  kind: "transcript",
@@ -2390,7 +2390,7 @@ async function loadSessionKeyOverrides(stateDir) {
2390
2390
  const filePath = path.join(stateDir, "recovery", SESSION_KEY_OVERRIDES_FILENAME);
2391
2391
  let raw;
2392
2392
  try {
2393
- raw = await fs$1.readFile(filePath, "utf8");
2393
+ raw = await fsPromises.readFile(filePath, "utf8");
2394
2394
  } catch (error) {
2395
2395
  if (error.code !== "ENOENT") log$7.warn("session key overrides unreadable; ignoring", { error });
2396
2396
  return /* @__PURE__ */ new Map();
@@ -3937,7 +3937,7 @@ async function resolveGatewayOwnerStatus(pid, payload, platform, port) {
3937
3937
  }
3938
3938
  async function readLockPayload(lockPath) {
3939
3939
  try {
3940
- const raw = await fs$1.readFile(lockPath, "utf8");
3940
+ const raw = await fsPromises.readFile(lockPath, "utf8");
3941
3941
  const parsed = JSON.parse(raw);
3942
3942
  if (typeof parsed.pid !== "number") return null;
3943
3943
  if (typeof parsed.createdAt !== "string") return null;
@@ -3990,11 +3990,11 @@ async function acquireGatewayLock(opts = {}) {
3990
3990
  const platform = opts.platform ?? process.platform;
3991
3991
  const port = opts.port;
3992
3992
  const { lockPath, configPath } = resolveGatewayLockPath(env);
3993
- await fs$1.mkdir(path.dirname(lockPath), { recursive: true });
3993
+ await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
3994
3994
  const startedAt = Date.now();
3995
3995
  let lastPayload = null;
3996
3996
  while (Date.now() - startedAt < timeoutMs) try {
3997
- const handle = await fs$1.open(lockPath, "wx");
3997
+ const handle = await fsPromises.open(lockPath, "wx");
3998
3998
  const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
3999
3999
  const payload = {
4000
4000
  pid: process.pid,
@@ -4008,7 +4008,7 @@ async function acquireGatewayLock(opts = {}) {
4008
4008
  configPath,
4009
4009
  release: async () => {
4010
4010
  await handle.close().catch(() => void 0);
4011
- await fs$1.rm(lockPath, { force: true });
4011
+ await fsPromises.rm(lockPath, { force: true });
4012
4012
  }
4013
4013
  };
4014
4014
  } catch (err) {
@@ -4017,7 +4017,7 @@ async function acquireGatewayLock(opts = {}) {
4017
4017
  const ownerPid = lastPayload?.pid;
4018
4018
  const ownerStatus = ownerPid ? await resolveGatewayOwnerStatus(ownerPid, lastPayload, platform, port) : "unknown";
4019
4019
  if (ownerStatus === "dead" && ownerPid) {
4020
- await fs$1.rm(lockPath, { force: true });
4020
+ await fsPromises.rm(lockPath, { force: true });
4021
4021
  continue;
4022
4022
  }
4023
4023
  if (ownerStatus !== "alive") {
@@ -4027,13 +4027,13 @@ async function acquireGatewayLock(opts = {}) {
4027
4027
  stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
4028
4028
  }
4029
4029
  if (!stale) try {
4030
- const st = await fs$1.stat(lockPath);
4030
+ const st = await fsPromises.stat(lockPath);
4031
4031
  stale = Date.now() - st.mtimeMs > staleMs;
4032
4032
  } catch {
4033
4033
  stale = false;
4034
4034
  }
4035
4035
  if (stale) {
4036
- await fs$1.rm(lockPath, { force: true });
4036
+ await fsPromises.rm(lockPath, { force: true });
4037
4037
  continue;
4038
4038
  }
4039
4039
  }
@@ -1,6 +1,6 @@
1
- import { Ft as resolveStorePath } from "./plugins-U6rjKH4S.js";
2
- import { p as normalizeAgentId } from "./session-key-DCnSJLJC.js";
3
- import { d as resolveDefaultAgentId, r as listAgentIds } from "./agent-scope-Daay3L1Q.js";
1
+ import { Ft as resolveStorePath } from "./plugins-s69ApVox.js";
2
+ import { p as normalizeAgentId } from "./session-key-D0gYNgj1.js";
3
+ import { d as resolveDefaultAgentId, r as listAgentIds } from "./agent-scope-m37qEcFM.js";
4
4
  import path from "node:path";
5
5
 
6
6
  //#region src/commands/session-store-targets.ts
@@ -1,13 +1,13 @@
1
- import { H as openBoundaryFileSync } from "./globals-BRyHSrWD.js";
1
+ import { H as openBoundaryFileSync } from "./globals-3lUHnZas.js";
2
2
  import { g as resolveStateDir } from "./paths-BMo6kTge.js";
3
- import { t as createSubsystemLogger } from "./subsystem-BNf8H-Zm.js";
4
- import { $r as resolveDefaultModelForAgent, Dn as normalizeSessionDeliveryFields, Ft as resolveStorePath, Go as isAvatarHttpUrl, Hr as inferUniqueProviderFromConfiguredModels, Ht as resolveSessionEntryGroupId, J as StorageReadAccessError, Lc as DEFAULT_CONTEXT_TOKENS, Qr as resolveConfiguredModelRef, Rc as DEFAULT_MODEL, Rt as buildGroupDisplayName, Uo as AVATAR_MAX_BYTES, Wo as isAvatarDataUrl, X as getConversationReadQuery, Yo as isWorkspaceRelativeAvatarPath, Yr as parseModelRef, Zo as resolveAvatarMime, _t as resolveFreshSessionTotalTokens, it as loadSessionStore, qo as isPathWithinRoot, rr as loadConfig, rt as listConfiguredSessionStorageAgentIds, vc as resolveOpenClawAgentDir, zc as DEFAULT_PROVIDER } from "./plugins-U6rjKH4S.js";
5
- import { I as isCronRunSessionKey, V as parseAgentSessionKey, m as normalizeMainKey, p as normalizeAgentId } from "./session-key-DCnSJLJC.js";
6
- import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-Daay3L1Q.js";
7
- import { Dt as getMessageIngress } from "./storage-config-Dz2pNq3V.js";
8
- import { J as stripInlineDirectiveTagsForDisplay, Q as resolveAgentMainSessionKey, Z as canonicalizeMainSessionAlias, et as resolveMainSessionKey, j as eventOrder, k as isUserFacingSessionKey } from "./sessions-CiGjB89K.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
4
+ import { $r as resolveDefaultModelForAgent, Dn as normalizeSessionDeliveryFields, Ft as resolveStorePath, Go as isAvatarHttpUrl, Hr as inferUniqueProviderFromConfiguredModels, Ht as resolveSessionEntryGroupId, J as StorageReadAccessError, Lc as DEFAULT_CONTEXT_TOKENS, Qr as resolveConfiguredModelRef, Rc as DEFAULT_MODEL, Rt as buildGroupDisplayName, Uo as AVATAR_MAX_BYTES, Wo as isAvatarDataUrl, X as getConversationReadQuery, Yo as isWorkspaceRelativeAvatarPath, Yr as parseModelRef, Zo as resolveAvatarMime, _t as resolveFreshSessionTotalTokens, it as loadSessionStore, qo as isPathWithinRoot, rr as loadConfig, rt as listConfiguredSessionStorageAgentIds, vc as resolveOpenClawAgentDir, zc as DEFAULT_PROVIDER } from "./plugins-s69ApVox.js";
5
+ import { I as isCronRunSessionKey, V as parseAgentSessionKey, m as normalizeMainKey, p as normalizeAgentId } from "./session-key-D0gYNgj1.js";
6
+ import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-m37qEcFM.js";
7
+ import { Dt as getMessageIngress } from "./storage-config-JrkJ-0mD.js";
8
+ import { J as stripInlineDirectiveTagsForDisplay, Q as resolveAgentMainSessionKey, Z as canonicalizeMainSessionAlias, et as resolveMainSessionKey, j as eventOrder, k as isUserFacingSessionKey } from "./sessions-CbISkp7n.js";
9
9
  import { r as hasInterSessionUserProvenance } from "./input-provenance-CFnw8yhY.js";
10
- import { t as ensureOpenClawModelsJson } from "./models-config-CzWBExZR.js";
10
+ import { t as ensureOpenClawModelsJson } from "./models-config-MT7bTyDD.js";
11
11
  import { t as stripInboundMetadata } from "./strip-inbound-meta-DiC5t8zU.js";
12
12
  import path from "node:path";
13
13
  import fs from "node:fs";
@@ -192,7 +192,7 @@ function ensureContextWindowCacheLoaded() {
192
192
  await ensureOpenClawModelsJson(cfg);
193
193
  } catch {}
194
194
  try {
195
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-BGjjAfS_.js").then((n) => n.r);
195
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-Cv0FIBjp.js").then((n) => n.r);
196
196
  const agentDir = resolveOpenClawAgentDir();
197
197
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
198
198
  applyDiscoveredContextWindows({
@@ -1,25 +1,25 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Ot as truncateUtf16Safe, a as logVerbose } from "./globals-BRyHSrWD.js";
3
- import { t as createSubsystemLogger } from "./subsystem-BNf8H-Zm.js";
4
- import { In as normalizeSendPolicy, Jt as applyModelOverrideToSessionEntry, Or as clearBootstrapSnapshot, Xn as clearSessionQueues, Xt as parseVerboseOverride, Yt as applyVerboseOverride, b as compactEmbeddedPiSession, bn as incrementCompactionCount, dn as unbindThreadBindingsBySessionKey, fn as normalizeGroupActivation, vn as SessionExportCursorError, yn as buildSessionExportPageFromDb, zn as stopSubagentsForRequester } from "./agent-turn-execute-B4iUpIbf.js";
5
- import { $r as resolveDefaultModelForAgent, Bn as GATEWAY_CLIENT_IDS, Ft as resolveStorePath, G as createInternalHookEvent, J as StorageReadAccessError, Lt as snapshotSessionOrigin, On as INTERNAL_MESSAGE_CHANNEL, X as getConversationReadQuery, Xr as resolveAllowedModelRef, ft as updateSessionStore, it as loadSessionStore, nt as getConfiguredSessionStorageRuntime, q as triggerInternalHook, ri as resolveSubagentConfiguredModelSelection, rr as loadConfig } from "./plugins-U6rjKH4S.js";
6
- import { B as isSubagentSessionKey, D as toDeviceSenderId, V as parseAgentSessionKey, p as normalizeAgentId } from "./session-key-DCnSJLJC.js";
7
- import { a as resolveAgentDir, d as resolveDefaultAgentId, m as resolveSessionAgentId, r as listAgentIds, u as resolveAgentWorkspaceDir } from "./agent-scope-Daay3L1Q.js";
8
- import { on as hiddenHeartbeatRunsForEntries, sn as isHiddenHeartbeatMessage } from "./storage-config-Dz2pNq3V.js";
2
+ import { Ot as truncateUtf16Safe, a as logVerbose } from "./globals-3lUHnZas.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
4
+ import { In as normalizeSendPolicy, Jt as applyModelOverrideToSessionEntry, Or as clearBootstrapSnapshot, Xn as clearSessionQueues, Xt as parseVerboseOverride, Yt as applyVerboseOverride, b as compactEmbeddedPiSession, bn as incrementCompactionCount, dn as unbindThreadBindingsBySessionKey, fn as normalizeGroupActivation, vn as SessionExportCursorError, yn as buildSessionExportPageFromDb, zn as stopSubagentsForRequester } from "./agent-turn-execute-CM4O0yRh.js";
5
+ import { $r as resolveDefaultModelForAgent, Bn as GATEWAY_CLIENT_IDS, Ft as resolveStorePath, G as createInternalHookEvent, J as StorageReadAccessError, Lt as snapshotSessionOrigin, On as INTERNAL_MESSAGE_CHANNEL, X as getConversationReadQuery, Xr as resolveAllowedModelRef, ft as updateSessionStore, it as loadSessionStore, nt as getConfiguredSessionStorageRuntime, q as triggerInternalHook, ri as resolveSubagentConfiguredModelSelection, rr as loadConfig } from "./plugins-s69ApVox.js";
6
+ import { B as isSubagentSessionKey, D as toDeviceSenderId, V as parseAgentSessionKey, p as normalizeAgentId } from "./session-key-D0gYNgj1.js";
7
+ import { a as resolveAgentDir, d as resolveDefaultAgentId, m as resolveSessionAgentId, r as listAgentIds, u as resolveAgentWorkspaceDir } from "./agent-scope-m37qEcFM.js";
8
+ import { on as hiddenHeartbeatRunsForEntries, sn as isHiddenHeartbeatMessage } from "./storage-config-JrkJ-0mD.js";
9
9
  import { t as emitDiagnosticEvent } from "./diagnostic-events-D2ujPUHb.js";
10
10
  import { t as getGatewayInstanceId } from "./gateway-instance-id-BQasPXvd.js";
11
- import { et as resolveMainSessionKey, v as getGlobalHookRunner } from "./sessions-CiGjB89K.js";
11
+ import { et as resolveMainSessionKey, v as getGlobalHookRunner } from "./sessions-CbISkp7n.js";
12
12
  import { n as isRecoverableSessionRunStatus } from "./session-run-types-C8MYP8Sa.js";
13
13
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-C8O_Wyg8.js";
14
- import { b as resolveStuckSessionWarnMs } from "./diagnostic-DAPS8u-k.js";
14
+ import { b as resolveStuckSessionWarnMs } from "./diagnostic-DJz53yyc.js";
15
15
  import { a as getAllAgentIds, i as getAgentP95ThresholdMs, r as findDiagnosticStateByRunKey, u as snapshotActiveRuns } from "./diagnostic-session-state-DtZQSPqI.js";
16
- import { At as validateSessionsCompactionListParams, Bt as validateSessionsPreviewParams, Ft as validateSessionsExportParams, Gn as parseSessionLabel, Gt as validateSessionsRunsContinueParams, Hn as ErrorCodes, Ht as validateSessionsResolveParams, It as validateSessionsInterruptParams, Jt as validateSessionsRunsListParams, Kt as validateSessionsRunsEventsParams, Lt as validateSessionsListParams, Mt as validateSessionsDeleteParams, Nt as validateSessionsDescribeParams, Pt as validateSessionsDirectParams, Un as errorShape, Ut as validateSessionsRunHistoryParams, Vn as SESSIONS_CREATE_LABEL_MAX_LENGTH, Vt as validateSessionsResetParams, Wt as validateSessionsRunsCancelParams, Yt as validateSessionsRunsParams, i as formatValidationErrors, jt as validateSessionsCreateParams, kt as validateSessionsCompactParams, qt as validateSessionsRunsGetParams, tn as validateSessionsThresholdsParams, zt as validateSessionsPatchParams } from "./client-BHIM--Lw.js";
17
- import { t as getAcpSessionManager } from "./manager-ByvI6Ro3.js";
18
- import { _ as hasNarrowSessionScope } from "./call-xzY_YjPJ.js";
19
- import { g as waitForEmbeddedPiRunEnd, s as isEmbeddedPiRunActive, t as abortEmbeddedPiRun } from "./runs-CIwQKryx.js";
20
- import { a as loadAgentSessionStoreForGateway, c as pruneLegacyStoreKeys, g as jsonUtf8Bytes, i as listSessionsFromStore, l as resolveGatewaySessionStoreTarget, o as loadCombinedSessionStoreForGateway, p as readSessionPreviewItemsFromBackend, r as listAgentsForGateway, s as loadSessionEntry, u as resolveSessionModelRef } from "./session-utils-N1E2Os2e.js";
21
- import { t as buildAgentSessionKey } from "./resolve-route-CrsHJxmf.js";
22
- import { n as buildRecoveryPrompt, r as enqueueRecoveryTurn, t as SESSION_RUN_RECOVERY_TURN_STAGE_FAILED } from "./recovery-prompt-BNuvIRHh.js";
16
+ import { At as validateSessionsCompactionListParams, Bt as validateSessionsPreviewParams, Ft as validateSessionsExportParams, Gn as parseSessionLabel, Gt as validateSessionsRunsContinueParams, Hn as ErrorCodes, Ht as validateSessionsResolveParams, It as validateSessionsInterruptParams, Jt as validateSessionsRunsListParams, Kt as validateSessionsRunsEventsParams, Lt as validateSessionsListParams, Mt as validateSessionsDeleteParams, Nt as validateSessionsDescribeParams, Pt as validateSessionsDirectParams, Un as errorShape, Ut as validateSessionsRunHistoryParams, Vn as SESSIONS_CREATE_LABEL_MAX_LENGTH, Vt as validateSessionsResetParams, Wt as validateSessionsRunsCancelParams, Yt as validateSessionsRunsParams, i as formatValidationErrors, jt as validateSessionsCreateParams, kt as validateSessionsCompactParams, qt as validateSessionsRunsGetParams, tn as validateSessionsThresholdsParams, zt as validateSessionsPatchParams } from "./client-B3-vuVAE.js";
17
+ import { t as getAcpSessionManager } from "./manager-kfVhbDC5.js";
18
+ import { _ as hasNarrowSessionScope } from "./call-DiXPYDxn.js";
19
+ import { g as waitForEmbeddedPiRunEnd, s as isEmbeddedPiRunActive, t as abortEmbeddedPiRun } from "./runs-C1AHoTDq.js";
20
+ import { a as loadAgentSessionStoreForGateway, c as pruneLegacyStoreKeys, g as jsonUtf8Bytes, i as listSessionsFromStore, l as resolveGatewaySessionStoreTarget, o as loadCombinedSessionStoreForGateway, p as readSessionPreviewItemsFromBackend, r as listAgentsForGateway, s as loadSessionEntry, u as resolveSessionModelRef } from "./session-utils-Qu1Mxoz3.js";
21
+ import { t as buildAgentSessionKey } from "./resolve-route-yDs92eUQ.js";
22
+ import { n as buildRecoveryPrompt, r as enqueueRecoveryTurn, t as SESSION_RUN_RECOVERY_TURN_STAGE_FAILED } from "./recovery-prompt-BDu5Z1ac.js";
23
23
  import path from "node:path";
24
24
  import { randomUUID } from "node:crypto";
25
25
  import { z } from "zod";
@@ -2646,7 +2646,7 @@ const sessionsHandlers = {
2646
2646
  }, void 0);
2647
2647
  return;
2648
2648
  }
2649
- const { tryGetAgentTurnRuntime } = await import("./agent-turn-runner-y6DgnCcB.js").then((n) => n.t);
2649
+ const { tryGetAgentTurnRuntime } = await import("./agent-turn-runner-DoUxdVA8.js").then((n) => n.t);
2650
2650
  respond(true, await handleSessionsRunsContinue({
2651
2651
  params: p,
2652
2652
  store,
@@ -1,9 +1,9 @@
1
- import { Dt as sliceUtf16Safe, vt as normalizeE164 } from "./globals-BRyHSrWD.js";
1
+ import { Dt as sliceUtf16Safe, vt as normalizeE164 } from "./globals-3lUHnZas.js";
2
2
  import { n as resolveProcessScopedMap } from "./plain-object-Doc_YkH1.js";
3
- import { t as createSubsystemLogger } from "./subsystem-BNf8H-Zm.js";
4
- import { At as resolveSessionFilePath, Ft as resolveStorePath, Q as requireSessionStorageRuntime, X as getConversationReadQuery, ft as updateSessionStore, it as loadSessionStore, kt as resolveDefaultSessionStorePath, nt as getConfiguredSessionStorageRuntime, rr as loadConfig, zt as resolveGroupSessionKey } from "./plugins-U6rjKH4S.js";
5
- import { V as parseAgentSessionKey, a as buildAgentMainSessionKey, m as normalizeMainKey, p as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-DCnSJLJC.js";
6
- import { St as toStoredAgentMessage, an as HIDDEN_HEARTBEAT_CUSTOM_TYPE, bt as mergePromptContributions, gt as normalizeSessionEntryForStorage, on as hiddenHeartbeatRunsForEntries, sn as isHiddenHeartbeatMessage, vt as sha256 } from "./storage-config-Dz2pNq3V.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
4
+ import { At as resolveSessionFilePath, Ft as resolveStorePath, Q as requireSessionStorageRuntime, X as getConversationReadQuery, ft as updateSessionStore, it as loadSessionStore, kt as resolveDefaultSessionStorePath, nt as getConfiguredSessionStorageRuntime, rr as loadConfig, zt as resolveGroupSessionKey } from "./plugins-s69ApVox.js";
5
+ import { V as parseAgentSessionKey, a as buildAgentMainSessionKey, m as normalizeMainKey, p as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-D0gYNgj1.js";
6
+ import { St as toStoredAgentMessage, an as HIDDEN_HEARTBEAT_CUSTOM_TYPE, bt as mergePromptContributions, gt as normalizeSessionEntryForStorage, on as hiddenHeartbeatRunsForEntries, sn as isHiddenHeartbeatMessage, vt as sha256 } from "./storage-config-JrkJ-0mD.js";
7
7
  import { t as emitDiagnosticEvent } from "./diagnostic-events-D2ujPUHb.js";
8
8
  import { n as applyInputProvenanceToUserMessage } from "./input-provenance-CFnw8yhY.js";
9
9
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-B3T8sCtD.js";
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { f as isRich, n as info, p as theme } from "./globals-BRyHSrWD.js";
3
- import { Lc as DEFAULT_CONTEXT_TOKENS, Qr as resolveConfiguredModelRef, Rc as DEFAULT_MODEL, Z as SessionStorageUnavailableError, _t as resolveFreshSessionTotalTokens, it as loadSessionStore, rr as loadConfig, zc as DEFAULT_PROVIDER } from "./plugins-U6rjKH4S.js";
4
- import { V as parseAgentSessionKey } from "./session-key-DCnSJLJC.js";
2
+ import { f as isRich, n as info, p as theme } from "./globals-3lUHnZas.js";
3
+ import { Lc as DEFAULT_CONTEXT_TOKENS, Qr as resolveConfiguredModelRef, Rc as DEFAULT_MODEL, Z as SessionStorageUnavailableError, _t as resolveFreshSessionTotalTokens, it as loadSessionStore, rr as loadConfig, zc as DEFAULT_PROVIDER } from "./plugins-s69ApVox.js";
4
+ import { V as parseAgentSessionKey } from "./session-key-D0gYNgj1.js";
5
5
  import { n as formatTimeAgo } from "./format-relative-8ufJCb1A.js";
6
- import { n as classifySessionKey, u as resolveSessionModelRef, x as lookupContextTokens } from "./session-utils-N1E2Os2e.js";
7
- import { n as callSessionStorageGateway, r as resolveSessionStorageRoute } from "./session-storage-owner-C2S5c5Ct.js";
8
- import { r as resolveSessionStoreTargetsOrExit } from "./session-store-targets-Dfi0lJu6.js";
6
+ import { n as classifySessionKey, u as resolveSessionModelRef, x as lookupContextTokens } from "./session-utils-Qu1Mxoz3.js";
7
+ import { n as callSessionStorageGateway, r as resolveSessionStorageRoute } from "./session-storage-owner-CE7dPxVq.js";
8
+ import { r as resolveSessionStoreTargetsOrExit } from "./session-store-targets-DSlE2YTH.js";
9
9
 
10
10
  //#region src/commands/sessions-table.ts
11
11
  const SESSION_KEY_PAD = 26;
@@ -1,22 +1,22 @@
1
- import { p as theme } from "./globals-BRyHSrWD.js";
1
+ import { p as theme } from "./globals-3lUHnZas.js";
2
2
  import "./paths-BMo6kTge.js";
3
- import "./subsystem-BNf8H-Zm.js";
3
+ import "./subsystem-xTuYkxuQ.js";
4
4
  import "./boolean-C71HJEcH.js";
5
- import { Hn as GATEWAY_CLIENT_NAMES, Vn as GATEWAY_CLIENT_MODES } from "./plugins-U6rjKH4S.js";
5
+ import { Hn as GATEWAY_CLIENT_NAMES, Vn as GATEWAY_CLIENT_MODES } from "./plugins-s69ApVox.js";
6
6
  import "./retry-policy-By-oqFVH.js";
7
7
  import "./version-BdUvZ8Ep.js";
8
- import "./agent-scope-Daay3L1Q.js";
9
- import "./exec-DgfbhlVq.js";
8
+ import "./agent-scope-m37qEcFM.js";
9
+ import "./exec-BadOxgw_.js";
10
10
  import "./github-copilot-token-CmScvpk-.js";
11
- import "./pid-alive-SdfUhiUL.js";
11
+ import "./pid-alive-dd2LsB9B.js";
12
12
  import "./static-app-y2aJYHKZ.js";
13
- import "./tailnet-CImZKZJW.js";
14
- import "./ws-CQqP1z5x.js";
13
+ import "./tailnet-QfxqR4vE.js";
14
+ import "./ws-B_HpEvRE.js";
15
15
  import "./task-run-types-B6K2PtcI.js";
16
- import "./client-BHIM--Lw.js";
16
+ import "./client-B3-vuVAE.js";
17
17
  import "./pairing-token-BA4694nz.js";
18
- import { n as callGateway } from "./call-xzY_YjPJ.js";
19
- import { t as renderTable } from "./table-C7H5Lwhe.js";
18
+ import { n as callGateway } from "./call-DiXPYDxn.js";
19
+ import { t as renderTable } from "./table-BVq_qQUE.js";
20
20
 
21
21
  //#region src/commands/sessions-claims-status.ts
22
22
  async function sessionsClaimsStatusCommand(opts) {
@@ -1,18 +1,18 @@
1
1
  import { g as resolveStateDir } from "./paths-BMo6kTge.js";
2
- import { t as createSubsystemLogger } from "./subsystem-BNf8H-Zm.js";
3
- import { Et as resolveUpdatedAfterPageSize, St as resolveMaintenanceConfig, Zn as encodeCtxProjectionCorruptionError, bt as capEntryCount, ft as updateSessionStore, it as loadSessionStore, nt as getConfiguredSessionStorageRuntime, rr as loadConfig, xt as pruneStaleEntries, yt as backfillUserIds } from "./plugins-U6rjKH4S.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-xTuYkxuQ.js";
3
+ import { Et as resolveUpdatedAfterPageSize, St as resolveMaintenanceConfig, Zn as encodeCtxProjectionCorruptionError, bt as capEntryCount, ft as updateSessionStore, it as loadSessionStore, nt as getConfiguredSessionStorageRuntime, rr as loadConfig, xt as pruneStaleEntries, yt as backfillUserIds } from "./plugins-s69ApVox.js";
4
4
  import { a as serializeRetryPolicy, i as parseRetryPolicy, n as computeNextAvailableAtMs, r as isRetryExhausted } from "./retry-policy-By-oqFVH.js";
5
- import { $ as normalizeKeysetLimit, $t as SQLITE_TASK_RUN_CREATED_AT_INDEX_SQL, A as mintClaimToken, Bt as SQLITE_CTX_ACTOR_INDEX_SQL, C as buildCompletionSideEvents, D as completionIdFor, E as claimTokenFromLeaseOwner, F as resolvePreemption, Ft as CTX_TURN_AFFECTED_CTE_SQL, G as sessionIndexReconcileEntriesEqual, Gt as SQLITE_CTX_IDENTITY_LINK_INDEX_SQL, Ht as SQLITE_CTX_IDENTITY_BACKFILL_UPDATE_SQL, I as runStatusForOutcome, It as CTX_TURN_CAPS_CTE_SQL, J as legacyRawIdentityMatches, Jt as SQLITE_CTX_USAGE_COLUMNS_BACKFILL_UPDATE_SQL, K as buildEqualityProjection, Kt as SQLITE_CTX_SCHEMA_BACKFILL_MARKER_INSERT_SQL, L as taskLeaseOwner, Lt as CTX_TURN_TOTALS_RECOMPUTE_TAIL_SQL, M as preemptionCountOf, Mt as computeActorSnapshotBindValues, N as reclaimOutcomePayload, Nt as runActorMetaBackfillSqlite, O as deriveTaskRunEventId, P as recoveryCancelEventId, Q as isoToKeysetMs, Qt as SQLITE_TASK_RUN_CREATED_AT_BACKFILL_SQL, Rt as CTX_TURN_UPDATED_VALUES_PREFIX_SQL, T as bumpPreemptionCountJson, Ut as SQLITE_CTX_IDENTITY_LINK_BACKFILL_SELECT_SQL, Vt as SQLITE_CTX_IDENTITY_BACKFILL_SELECT_SQL, W as isReconcileTombstone, Wt as SQLITE_CTX_IDENTITY_LINK_BACKFILL_UPDATE_SQL, X as decodeKeysetCursor, Xt as SQLITE_HYDRATION_INDEX_SQL, Y as withReplaySourceTimestampPreserved, Yt as SQLITE_ECONOMICS_INDEX_SQL, Zt as SQLITE_RECOVERY_MARKER_PREDICATE, _ as sessionRunEventToRowValues, _t as sanitizeJsonb, a as createSqliteStorageWorkerClient, at as deriveLegacyActorIdentity, b as nextClaimSegment, bn as SQLITE_SESSION_RUN_EVENT_SEQUENCE_BACKFILL_SQL, c as validateCtxStorage, cn as CONVERSATION_STATS_LEGACY_INDEX_DROP_SQL, ct as isoToEpochMs, d as taskRunEventsBatchSql, dn as conversationStatsSaveSql, dt as rowToStoredEntry, en as SQLITE_TRIGGER_SOURCE_INDEX_SQL, et as sliceKeysetPage, f as toTaskRunEventsBatch, fn as formatBusWorkClaimId, ft as sanitizeAppendEntry, g as sessionRunAttemptToRowValues, h as rowToSessionRunRecord, i as createSqliteCtxStorageRuntime, in as hiddenHeartbeatRunsSql, it as CTX_SCHEMA_BACKFILL_MARKER_NAME, j as parseTaskClaimHandle, k as formatTaskClaimHandle, l as taskRunEventsBatchParams, ln as conversationStatsIndexSql, lt as parseJsonObject, m as rowToSessionRunEvent, mt as stringifyJson, nn as SQLITE_TS_INDEX_SQL, nt as CTX_IDENTITY_LINK_KEYS_BACKFILL_PAGE_SIZE, o as encodeVerificationWireError, ot as readLatestHumanSenderProbe, p as RESTART_LEDGER_SCOPE, pn as parseBusWorkClaimId, pt as sanitizeOptionalText, q as equalityProjectionsEqual, qt as SQLITE_CTX_USAGE_COLUMNS_BACKFILL_SELECT_SQL, r as resolveSessionStorageConfig, rn as SQLITE_USER_ID_INDEX_SQL, rt as deriveIdentityLinkMatchKeysFromStoredFacts, s as initCtxStorage, st as deriveUsageColumnsFromMessage, t as attachPgPoolErrorListeners, tn as SQLITE_TS_BACKFILL_SQL, tt as CTX_IDENTITY_LINK_KEYS_BACKFILL_MARKER_NAME, u as taskRunEventsBatchRunsSql, un as conversationStatsReadSql, ut as parseJsonValue, v as sessionRunRecordToRowValues, vn as normalizeUsage, w as buildOutcomeEventPayload, x as createSessionConsumerClaimSegmentSql, y as sessionRunVerificationToColumnValue, yn as SESSION_RUN_EVENT_SEQUENCE_INDEX_SQL, zt as CTX_USAGE_COLUMNS_BACKFILL_MARKER_NAME } from "./storage-config-Dz2pNq3V.js";
5
+ import { $ as normalizeKeysetLimit, $t as SQLITE_TASK_RUN_CREATED_AT_INDEX_SQL, A as mintClaimToken, Bt as SQLITE_CTX_ACTOR_INDEX_SQL, C as buildCompletionSideEvents, D as completionIdFor, E as claimTokenFromLeaseOwner, F as resolvePreemption, Ft as CTX_TURN_AFFECTED_CTE_SQL, G as sessionIndexReconcileEntriesEqual, Gt as SQLITE_CTX_IDENTITY_LINK_INDEX_SQL, Ht as SQLITE_CTX_IDENTITY_BACKFILL_UPDATE_SQL, I as runStatusForOutcome, It as CTX_TURN_CAPS_CTE_SQL, J as legacyRawIdentityMatches, Jt as SQLITE_CTX_USAGE_COLUMNS_BACKFILL_UPDATE_SQL, K as buildEqualityProjection, Kt as SQLITE_CTX_SCHEMA_BACKFILL_MARKER_INSERT_SQL, L as taskLeaseOwner, Lt as CTX_TURN_TOTALS_RECOMPUTE_TAIL_SQL, M as preemptionCountOf, Mt as computeActorSnapshotBindValues, N as reclaimOutcomePayload, Nt as runActorMetaBackfillSqlite, O as deriveTaskRunEventId, P as recoveryCancelEventId, Q as isoToKeysetMs, Qt as SQLITE_TASK_RUN_CREATED_AT_BACKFILL_SQL, Rt as CTX_TURN_UPDATED_VALUES_PREFIX_SQL, T as bumpPreemptionCountJson, Ut as SQLITE_CTX_IDENTITY_LINK_BACKFILL_SELECT_SQL, Vt as SQLITE_CTX_IDENTITY_BACKFILL_SELECT_SQL, W as isReconcileTombstone, Wt as SQLITE_CTX_IDENTITY_LINK_BACKFILL_UPDATE_SQL, X as decodeKeysetCursor, Xt as SQLITE_HYDRATION_INDEX_SQL, Y as withReplaySourceTimestampPreserved, Yt as SQLITE_ECONOMICS_INDEX_SQL, Zt as SQLITE_RECOVERY_MARKER_PREDICATE, _ as sessionRunEventToRowValues, _t as sanitizeJsonb, a as createSqliteStorageWorkerClient, at as deriveLegacyActorIdentity, b as nextClaimSegment, bn as SQLITE_SESSION_RUN_EVENT_SEQUENCE_BACKFILL_SQL, c as validateCtxStorage, cn as CONVERSATION_STATS_LEGACY_INDEX_DROP_SQL, ct as isoToEpochMs, d as taskRunEventsBatchSql, dn as conversationStatsSaveSql, dt as rowToStoredEntry, en as SQLITE_TRIGGER_SOURCE_INDEX_SQL, et as sliceKeysetPage, f as toTaskRunEventsBatch, fn as formatBusWorkClaimId, ft as sanitizeAppendEntry, g as sessionRunAttemptToRowValues, h as rowToSessionRunRecord, i as createSqliteCtxStorageRuntime, in as hiddenHeartbeatRunsSql, it as CTX_SCHEMA_BACKFILL_MARKER_NAME, j as parseTaskClaimHandle, k as formatTaskClaimHandle, l as taskRunEventsBatchParams, ln as conversationStatsIndexSql, lt as parseJsonObject, m as rowToSessionRunEvent, mt as stringifyJson, nn as SQLITE_TS_INDEX_SQL, nt as CTX_IDENTITY_LINK_KEYS_BACKFILL_PAGE_SIZE, o as encodeVerificationWireError, ot as readLatestHumanSenderProbe, p as RESTART_LEDGER_SCOPE, pn as parseBusWorkClaimId, pt as sanitizeOptionalText, q as equalityProjectionsEqual, qt as SQLITE_CTX_USAGE_COLUMNS_BACKFILL_SELECT_SQL, r as resolveSessionStorageConfig, rn as SQLITE_USER_ID_INDEX_SQL, rt as deriveIdentityLinkMatchKeysFromStoredFacts, s as initCtxStorage, st as deriveUsageColumnsFromMessage, t as attachPgPoolErrorListeners, tn as SQLITE_TS_BACKFILL_SQL, tt as CTX_IDENTITY_LINK_KEYS_BACKFILL_MARKER_NAME, u as taskRunEventsBatchRunsSql, un as conversationStatsReadSql, ut as parseJsonValue, v as sessionRunRecordToRowValues, vn as normalizeUsage, w as buildOutcomeEventPayload, x as createSessionConsumerClaimSegmentSql, y as sessionRunVerificationToColumnValue, yn as SESSION_RUN_EVENT_SEQUENCE_INDEX_SQL, zt as CTX_USAGE_COLUMNS_BACKFILL_MARKER_NAME } from "./storage-config-JrkJ-0mD.js";
6
6
  import { t as emitDiagnosticEvent } from "./diagnostic-events-D2ujPUHb.js";
7
7
  import { i as clientResumeRecordArtifactId, t as CLIENT_RESUME_RECORD_KIND } from "./verification-store-B7uvH8bi.js";
8
- import { n as computeJobNextRunAtMs } from "./jobs-Dh5LHEXG.js";
8
+ import { n as computeJobNextRunAtMs } from "./jobs-BXFDvC34.js";
9
9
  import { n as toTaskRunTimeIso, t as parseTaskRunTimeMs } from "./task-run-time-Dgf17j1h.js";
10
10
  import { t as TASK_RUN_IN_FLIGHT_STATUSES } from "./task-run-types-B6K2PtcI.js";
11
- import { n as resolveSessionStoreTargets } from "./session-store-targets-Dfi0lJu6.js";
11
+ import { n as resolveSessionStoreTargets } from "./session-store-targets-DSlE2YTH.js";
12
12
  import { createRequire } from "node:module";
13
13
  import path from "node:path";
14
14
  import fs, { existsSync, statSync } from "node:fs";
15
- import fs$1 from "node:fs/promises";
15
+ import fsPromises from "node:fs/promises";
16
16
  import { randomUUID } from "node:crypto";
17
17
  import { isMainThread, parentPort } from "node:worker_threads";
18
18
  import { DatabaseSync } from "node:sqlite";
@@ -6093,7 +6093,7 @@ async function initSessionStorageCore(params) {
6093
6093
  dryRun: true,
6094
6094
  actions: [...SQLITE_INIT_ACTIONS]
6095
6095
  };
6096
- await fs$1.mkdir(path.dirname(path.resolve(sqlitePath)), {
6096
+ await fsPromises.mkdir(path.dirname(path.resolve(sqlitePath)), {
6097
6097
  recursive: true,
6098
6098
  mode: 448
6099
6099
  });
@@ -6114,7 +6114,7 @@ async function initSessionStorageCore(params) {
6114
6114
  await runtime.flush();
6115
6115
  } finally {
6116
6116
  await runtime.close();
6117
- await fs$1.chmod(sqlitePath, 384).catch(() => {});
6117
+ await fsPromises.chmod(sqlitePath, 384).catch(() => {});
6118
6118
  }
6119
6119
  return {
6120
6120
  backend: "sqlite",
@@ -1,4 +1,4 @@
1
- import { O as DEFAULT_ACCOUNT_ID } from "./session-key-DCnSJLJC.js";
1
+ import { O as DEFAULT_ACCOUNT_ID } from "./session-key-D0gYNgj1.js";
2
2
 
3
3
  //#region src/channels/plugins/setup-helpers.ts
4
4
  const COMMON_SINGLE_ACCOUNT_KEYS_TO_MOVE = new Set([
@@ -1,8 +1,8 @@
1
- import { Wr as modelKey, ar as readConfigFileSnapshot, lr as writeConfigFile, ti as resolveModelRefFromString, zc as DEFAULT_PROVIDER, zr as buildModelAliasIndex } from "./plugins-U6rjKH4S.js";
2
- import { p as normalizeAgentId } from "./session-key-DCnSJLJC.js";
3
- import { I as toAgentModelListLike, r as listAgentIds } from "./agent-scope-Daay3L1Q.js";
1
+ import { Wr as modelKey, ar as readConfigFileSnapshot, lr as writeConfigFile, ti as resolveModelRefFromString, zc as DEFAULT_PROVIDER, zr as buildModelAliasIndex } from "./plugins-s69ApVox.js";
2
+ import { p as normalizeAgentId } from "./session-key-D0gYNgj1.js";
3
+ import { I as toAgentModelListLike, r as listAgentIds } from "./agent-scope-m37qEcFM.js";
4
4
  import { t as formatCliCommand } from "./command-format-DZa6U7Yk.js";
5
- import { n as formatConfigIssueLines } from "./issue-format-CcyrT_ll.js";
5
+ import { n as formatConfigIssueLines } from "./issue-format-CEhsl7Wj.js";
6
6
 
7
7
  //#region src/commands/models/shared.ts
8
8
  const ensureFlagCompatibility = (opts) => {