wednesdayai 0.4.12-dev.719 → 0.4.12-dev.721

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 (487) hide show
  1. package/dist/{acp-cli-BYoOiK6T.js → acp-cli-BWtNp40J.js} +2 -2
  2. package/dist/{acp-cli-dvFCSROw.js → acp-cli-DXVeP5by.js} +2 -2
  3. package/dist/{agent-scope-DxKPMu8w.js → agent-scope-cbxkoURo.js} +3 -3
  4. package/dist/{agent-turn-enqueue-DEStltEg.js → agent-turn-enqueue-CsHMHVsf.js} +4 -4
  5. package/dist/{agent-turn-enqueue-DzWOPhgy.js → agent-turn-enqueue-QcHb-Wlq.js} +4 -4
  6. package/dist/{agent-turn-execute-CzOC4mHw.js → agent-turn-execute-pkDSwyuf.js} +41 -30
  7. package/dist/{agent-turn-recovery-adapter-DnvjgbK0.js → agent-turn-recovery-adapter-CL4IrGUo.js} +1 -1
  8. package/dist/{agent-turn-recovery-adapter-CdLD3DuI.js → agent-turn-recovery-adapter-Dw5-XbMI.js} +1 -1
  9. package/dist/{agent-turn-runner-BEvwtTis.js → agent-turn-runner-CUoz_Fkl.js} +1 -1
  10. package/dist/{agent-turn-runner-BsxQBFRB.js → agent-turn-runner-CXf6g-6f.js} +5 -5
  11. package/dist/{agent-turn-runner-DpICdamt.js → agent-turn-runner-DHNZdQJB.js} +3 -3
  12. package/dist/{agent-turn-runner-C1u8sVfA.js → agent-turn-runner-DoHGgNPh.js} +1 -1
  13. package/dist/{agents-C61lzbyw.js → agents-TOaKn6gk.js} +5 -5
  14. package/dist/{agents.config-DAh5Ah1J.js → agents.config-96ueVlOH.js} +1 -1
  15. package/dist/{agents.config-BcD-ZJ0N.js → agents.config-DWMgN4qH.js} +1 -1
  16. package/dist/{api-key-rotation-Br7_jaAV.js → api-key-rotation-BMnyfyGD.js} +2 -2
  17. package/dist/{artifacts-QHme-vnS.js → artifacts-DUhYSSmK.js} +4 -4
  18. package/dist/{audio-preflight-CehYz7wU.js → audio-preflight-CO3ozqOb.js} +6 -6
  19. package/dist/{audio-preflight-B_5sTSyb.js → audio-preflight-ifCgpG3c.js} +27 -27
  20. package/dist/{audio-preflight-uatGs8bC.js → audio-preflight-p84ph4C7.js} +6 -6
  21. package/dist/{audio-transcription-runner-BvZFFknx.js → audio-transcription-runner-CsQR8LpS.js} +1 -1
  22. package/dist/{audio-transcription-runner-CJ8YdMv-.js → audio-transcription-runner-Gr8vN3AS.js} +1 -1
  23. package/dist/{audio-transcription-runner-XFfvRPXl.js → audio-transcription-runner-ipSQoPp8.js} +11 -11
  24. package/dist/{audit-UMAK8rQC.js → audit-8O6sjQPv.js} +6 -6
  25. package/dist/{audit-C0WHA5BX.js → audit-CzREkjwC.js} +6 -6
  26. package/dist/{auth-choice-CHzuLxTp.js → auth-choice-DtRePxUx.js} +2 -2
  27. package/dist/{auth-choice-BHU_G3if.js → auth-choice-s0pWvSbn.js} +2 -2
  28. package/dist/{banner-BAtbMrrp.js → banner-BwICuMvl.js} +1 -1
  29. package/dist/{browser-cli-DvjIut0z.js → browser-cli-Ci3F1b7y.js} +3 -3
  30. package/dist/{browser-cli-FTpdxTqL.js → browser-cli-NV-pdj3F.js} +3 -3
  31. package/dist/build-info.json +3 -3
  32. package/dist/bundled/boot-md/handler.js +58 -58
  33. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  34. package/dist/bundled/command-logger/handler.js +2 -2
  35. package/dist/bundled/session-journal/handler.js +58 -58
  36. package/dist/bundled/session-memory/handler.js +58 -58
  37. package/dist/{call-Cl6Q0T5z.js → call-DFhcVchO.js} +1 -1
  38. package/dist/{call-BIVg1gmJ.js → call-PE59cW0J.js} +1 -1
  39. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  40. package/dist/{channel-activity-DNq7LYjU.js → channel-activity-BJHm_pDV.js} +3 -3
  41. package/dist/{channel-options-CsgHOF5l.js → channel-options-BmfLwNE6.js} +1 -1
  42. package/dist/{channel-options-DRnowLFK.js → channel-options-CurDeT7Z.js} +1 -1
  43. package/dist/{channels-cli-Cn1IUfM3.js → channels-cli-CZqlXMjZ.js} +28 -28
  44. package/dist/{channels-cli-BN4oTmr6.js → channels-cli-D2PB80Ed.js} +28 -28
  45. package/dist/{chrome-FHxGdLnd.js → chrome-DTJprCGv.js} +15 -15
  46. package/dist/{chunk-BhntPUH_.js → chunk-eNEsWhab.js} +3 -3
  47. package/dist/{clawbot-cli-C-wEI2Wc.js → clawbot-cli-BL_gdm6D.js} +5 -5
  48. package/dist/{clawbot-cli-DWWHmqlt.js → clawbot-cli-C91sysrP.js} +5 -5
  49. package/dist/cli/daemon-cli.js +1 -1
  50. package/dist/{cli-CFIRmNaZ.js → cli-DJUeQG1g.js} +22 -22
  51. package/dist/{cli-BGAvAUiU.js → cli-YKA_HQlq.js} +22 -22
  52. package/dist/{client-BbpMX08n.js → client-D7IpaFCL.js} +2 -1
  53. package/dist/{client-BMkNNUux.js → client-DN-SMVBn.js} +2 -1
  54. package/dist/{client-profiles-DP8BWND2.js → client-profiles-DEoACLX5.js} +1 -1
  55. package/dist/{client-profiles-BNQu4_Z_.js → client-profiles-soWN7eGC.js} +1 -1
  56. package/dist/{command-queue-zXu22yak.js → command-queue-B3_VRNOr.js} +8 -2
  57. package/dist/{command-queue-CmpLmuvI.js → command-queue-Bjb4nYXi.js} +8 -2
  58. package/dist/{command-queue-DtybAhHH.js → command-queue-Bn2PHabT.js} +8 -2
  59. package/dist/{command-queue-SzKgkaS6.js → command-queue-smA8JaO_.js} +9 -3
  60. package/dist/{command-registry-DBfEAwIt.js → command-registry-Dok3-b8T.js} +12 -12
  61. package/dist/{command-secret-targets-DtDJB3vv.js → command-secret-targets-BAFcvtYe.js} +2 -2
  62. package/dist/{command-secret-targets-B54n8F_3.js → command-secret-targets-CJ1czw_Q.js} +2 -2
  63. package/dist/{commands-registry-DC0fovy_.js → commands-registry-DdQg21ct.js} +2 -2
  64. package/dist/{completion-cli-BfRsix3J.js → completion-cli-Ctg9QIDB.js} +2 -2
  65. package/dist/{completion-cli-L5YP0rxV.js → completion-cli-DzgbSYNf.js} +1 -1
  66. package/dist/{config-cli-dgRsXbD3.js → config-cli-BUrIABmo.js} +1 -1
  67. package/dist/{config-cli-D4Gxd0pm.js → config-cli-Bp3NVXJ8.js} +1 -1
  68. package/dist/config.js +9 -9
  69. package/dist/{configure-DtRyMLwO.js → configure-CAdfZJx3.js} +6 -6
  70. package/dist/{configure-BN-JNKf7.js → configure-CFjjPHas.js} +6 -6
  71. package/dist/{cron-cli-_Mwn7mzJ.js → cron-cli-BuVrA_FU.js} +3 -3
  72. package/dist/{cron-cli-BuO3qskK.js → cron-cli-CEOGOJUA.js} +3 -3
  73. package/dist/{daemon-cli-YmPcKhvo.js → daemon-cli-BTld-maF.js} +2 -2
  74. package/dist/{daemon-cli-CiPY543O.js → daemon-cli-D874Hxry.js} +2 -2
  75. package/dist/daemon-cli.js +2 -1
  76. package/dist/{deliver-Aw7d03gL.js → deliver-BLp1Q7uO.js} +1 -1
  77. package/dist/{deliver-CXqNQ8yi.js → deliver-CVWbwPkb.js} +24 -24
  78. package/dist/{deliver-D37woOwV.js → deliver-rLn-23ud.js} +1 -1
  79. package/dist/{devices-cli-HXNfviPB.js → devices-cli-CVrx_5o-.js} +2 -2
  80. package/dist/{devices-cli-CxSEOWZs.js → devices-cli-PIMtgiCQ.js} +2 -2
  81. package/dist/{diagnostic-Cid_Tw67.js → diagnostic-85mWzvQi.js} +1 -1
  82. package/dist/{diagnostic-Bbg-zObh.js → diagnostic-DI-K8155.js} +5 -5
  83. package/dist/{diagnostic-lG00b_zg.js → diagnostic-u64kcpDQ.js} +1 -1
  84. package/dist/{dm-policy-shared-BJNH9gNN.js → dm-policy-shared-CV1uWhMc.js} +1 -1
  85. package/dist/{doctor-completion-ChF4A40n.js → doctor-completion-Cfe2nTpN.js} +1 -1
  86. package/dist/{doctor-completion-DIFx6d6S.js → doctor-completion-CpGKbe63.js} +1 -1
  87. package/dist/entry.js +2 -2
  88. package/dist/{exec-approvals-cli-BAJ3sxzP.js → exec-approvals-cli-BShAvkW4.js} +4 -4
  89. package/dist/{exec-approvals-cli-DIUYxvM0.js → exec-approvals-cli-CABBuuEP.js} +4 -4
  90. package/dist/extensionAPI.js +3 -3
  91. package/dist/{fetch-BoHKSk-O.js → fetch-BzXaK9px.js} +8 -8
  92. package/dist/{fetch-guard-TJjLK0FV.js → fetch-guard-0mkjBgri.js} +3 -3
  93. package/dist/{frontmatter-saAwiKEb.js → frontmatter-PMByWrfP.js} +5 -5
  94. package/dist/{fs-safe-LRpYbPaA.js → fs-safe-DwICJjkN.js} +4 -4
  95. package/dist/{gateway-cli-BJ9wa3Hc.js → gateway-cli-3YUOWIal.js} +415 -169
  96. package/dist/{gateway-cli-CVnksdlt.js → gateway-cli-CDCwUJ0Z.js} +415 -169
  97. package/dist/{gateway-rpc-DNsG0xAN.js → gateway-rpc-Bs4EcgS4.js} +1 -1
  98. package/dist/{gateway-rpc-BeRn5nUX.js → gateway-rpc-DOfMq6W1.js} +1 -1
  99. package/dist/{github-copilot-token-zGOMIGSh.js → github-copilot-token-WSjo05vB.js} +7 -7
  100. package/dist/{health-Cxv6ou16.js → health-B5jHSu9i.js} +3 -3
  101. package/dist/{health-Q4hCJ8O2.js → health-BEgp6PEF.js} +3 -3
  102. package/dist/{hooks-cli-ChZY2urb.js → hooks-cli-D1_UuIh4.js} +24 -24
  103. package/dist/{hooks-cli-DOHX--ha.js → hooks-cli-Dy5LfGKt.js} +24 -24
  104. package/dist/{image-ops-D_fm2PuR.js → image-ops-O8pHxo7i.js} +1 -1
  105. package/dist/index.js +26 -26
  106. package/dist/{installs-Du8n8Do9.js → installs-4lGALZOo.js} +1 -1
  107. package/dist/{installs-78zhoWuO.js → installs-puN7yKHH.js} +1 -1
  108. package/dist/{ir-C4MMLUJr.js → ir-fzpdYPWw.js} +5 -5
  109. package/dist/{legacy-names-vLJrYADD.js → legacy-names-CLlrMq8r.js} +1 -1
  110. package/dist/llm-slug-generator.js +58 -58
  111. package/dist/{logger-a0-zAY5a.js → logger-DNehzD_s.js} +1 -1
  112. package/dist/{logs-cli-BrL9UDGB.js → logs-cli-CrUZySOS.js} +3 -3
  113. package/dist/{logs-cli-BdR6-Q3U.js → logs-cli-CwN6ZrMz.js} +3 -3
  114. package/dist/{manager-DdA_cy40.js → manager-DH-MILAU.js} +12 -12
  115. package/dist/{markdown-tables-Dd7jV1JF.js → markdown-tables-UWspJNAH.js} +2 -2
  116. package/dist/{memory-cli-DZyEfnsr.js → memory-cli-CqS6VXEu.js} +1 -1
  117. package/dist/{memory-cli-D_89Y9nb.js → memory-cli-DVqLwNhN.js} +1 -1
  118. package/dist/{model-selection-CdZITU0t.js → model-selection-9qbqwsOT.js} +86 -86
  119. package/dist/{models-BbhdUY5g.js → models-Kq9m-LfF.js} +3 -3
  120. package/dist/{models-cli-BekoSHw2.js → models-cli-B4wVcMjJ.js} +23 -23
  121. package/dist/{models-cli-BmL2dpSq.js → models-cli-dyUiDMqX.js} +22 -22
  122. package/dist/{node-cli-BVgH-DXq.js → node-cli-DGi3DELS.js} +4 -4
  123. package/dist/{node-cli-BTywy8AL.js → node-cli-Dm9lnwVF.js} +4 -4
  124. package/dist/{node-command-policy-B9A0wAU6.js → node-command-policy-6yjbNtx-.js} +1 -1
  125. package/dist/{node-command-policy-wwMY6dIH.js → node-command-policy-C1Fy9dcA.js} +1 -1
  126. package/dist/{nodes-cli-OzWTp207.js → nodes-cli-Bp2RePXd.js} +3 -3
  127. package/dist/{nodes-cli-D9vz6Yaa.js → nodes-cli-CLzaLC3L.js} +3 -3
  128. package/dist/{npm-pack-install-opyKYSmS.js → npm-pack-install-BgBpeTJk.js} +1 -1
  129. package/dist/{npm-pack-install-B-cOWuiF.js → npm-pack-install-Dlm0MIZy.js} +1 -1
  130. package/dist/{npm-resolution-6WKQ6nBu.js → npm-resolution-DWE5khjC.js} +2 -2
  131. package/dist/{npm-resolution-51BBOWpQ.js → npm-resolution-Ey8dK3VI.js} +2 -2
  132. package/dist/{onboard-CnRiqboN.js → onboard-CneU0GqJ.js} +3 -3
  133. package/dist/{onboard-channels-DAwHVQ1P.js → onboard-channels-B1oC1rop.js} +3 -3
  134. package/dist/{onboard-channels-DYRTySsa.js → onboard-channels-Bm2XVN3C.js} +3 -3
  135. package/dist/{onboard-helpers-ziqfw3UR.js → onboard-helpers-DLBTH9b_.js} +1 -1
  136. package/dist/{onboard-helpers-BgbRKH4z.js → onboard-helpers-DNbkQX5v.js} +1 -1
  137. package/dist/{onboard-remote-BsnRgDQj.js → onboard-remote-DUy7Ew-K.js} +1 -1
  138. package/dist/{onboard-remote-NW_cPnaV.js → onboard-remote-DsBkNMeO.js} +1 -1
  139. package/dist/{onboard-skills-DwbAJ4nt.js → onboard-skills-D3L4yX2A.js} +1 -1
  140. package/dist/{onboard-skills-DCYqOaTS.js → onboard-skills-DX_x-MfC.js} +1 -1
  141. package/dist/{onboard-Cj-sLY2K.js → onboard-trNO818c.js} +3 -3
  142. package/dist/{onboarding-CujUbWy2.js → onboarding-BKoaWOxQ.js} +7 -7
  143. package/dist/{onboarding-DidWWI3X.js → onboarding-R2m4j7Dp.js} +7 -7
  144. package/dist/{onboarding.finalize-CDE1nAu8.js → onboarding.finalize-B6K3hYJZ.js} +28 -28
  145. package/dist/{onboarding.finalize-DTqRxVZH.js → onboarding.finalize-C0X_xaHh.js} +27 -27
  146. package/dist/{onboarding.gateway-config-DOvEzkIo.js → onboarding.gateway-config-CFRbyVyW.js} +4 -4
  147. package/dist/{onboarding.gateway-config-SrBY4Yem.js → onboarding.gateway-config-DKLUe3Ul.js} +4 -4
  148. package/dist/{operator-commands-Ct0WXISe.js → operator-commands-BmGo9Ngv.js} +2 -2
  149. package/dist/{operator-commands-Bfd55UfE.js → operator-commands-EsKoI4yV.js} +2 -2
  150. package/dist/{outbound-attachment-CqtMGpsJ.js → outbound-attachment-DVKqk30B.js} +2 -2
  151. package/dist/{outbound-message-hooks-RBQbGzGm.js → outbound-message-hooks-S_VhlJs3.js} +4 -4
  152. package/dist/{path-alias-guards-Zj-NwKjV.js → path-alias-guards-Cd5yHmTq.js} +1 -1
  153. package/dist/{paths-C6TxBCvO.js → paths-Cvc9EM8Y.js} +5 -5
  154. package/dist/{pi-embedded-B6sr5IdC.js → pi-embedded-B7d9LrI1.js} +16 -4
  155. package/dist/{pi-embedded-helpers-BYLOFsUc.js → pi-embedded-helpers-5JApWu7A.js} +24 -24
  156. package/dist/{pi-embedded-helpers-BAjtRn7m.js → pi-embedded-helpers-C9XqX-Jq.js} +1 -1
  157. package/dist/{pi-embedded-helpers-CPorV-Mk.js → pi-embedded-helpers-DIUrv2Ua.js} +1 -1
  158. package/dist/{pi-embedded-B9bOSjfE.js → pi-embedded-maiK_yr9.js} +183 -171
  159. package/dist/{pi-embedded-recovery-adapter-Cs1EJElw.js → pi-embedded-recovery-adapter-8xq2SINa.js} +8 -8
  160. package/dist/{pi-embedded-recovery-adapter-B8Goyik3.js → pi-embedded-recovery-adapter-BHTdeEKa.js} +8 -8
  161. package/dist/{pi-embedded-recovery-adapter-swbNIWgT.js → pi-embedded-recovery-adapter-DPjgp8q4.js} +2 -2
  162. package/dist/{pi-embedded-recovery-adapter-ZPyX9YC1.js → pi-embedded-recovery-adapter-DytV4fjp.js} +2 -2
  163. package/dist/{pi-embedded-utils-CT_f_S3Y.js → pi-embedded-utils-BV_Dtzrw.js} +1 -1
  164. package/dist/{pi-embedded-utils-lp-U3XQ9.js → pi-embedded-utils-BetZbS6i.js} +1 -1
  165. package/dist/{pi-embedded-utils-DOtaZ7KV.js → pi-embedded-utils-kHMmP2Xh.js} +3 -3
  166. package/dist/{pi-model-discovery-B9KKtGuw.js → pi-model-discovery-CsC6yTDG.js} +7 -7
  167. package/dist/{pi-tools.policy-r9H_A-NQ.js → pi-tools.policy-B7YiM0PW.js} +1 -1
  168. package/dist/{plugin-registry-CwGfmKsn.js → plugin-registry-AEemJBCl.js} +1 -1
  169. package/dist/{plugin-registry-EHKfjAoe.js → plugin-registry-BjZ0q-dW.js} +1 -1
  170. package/dist/plugin-sdk/{agent-scope-BLF4nZUv.js → agent-scope-BYp_CjdU.js} +2 -2
  171. package/dist/plugin-sdk/{agent-turn-execute-BVPDW02i.js → agent-turn-execute-BRJa_EBt.js} +12 -12
  172. package/dist/plugin-sdk/agent-turn-execute-lFEMcNl2.js +61 -0
  173. package/dist/plugin-sdk/{agent-turn-runner-DDIT9POj.js → agent-turn-runner-CqIBwx4o.js} +3 -3
  174. package/dist/plugin-sdk/agent-turn-runner-LfHz7Qc1.js +11 -0
  175. package/dist/plugin-sdk/{agent-turn-runner-DjK-LdTA.js → agent-turn-runner-nXQCZaSU.js} +6 -6
  176. package/dist/plugin-sdk/{api-key-rotation-XDUKz2gd.js → api-key-rotation-CDNf_4cI.js} +2 -2
  177. package/dist/plugin-sdk/{artifacts-HAYpGlG1.js → artifacts-BMLMg3MG.js} +1 -1
  178. package/dist/plugin-sdk/{audio-preflight-Bi8RI9zM.js → audio-preflight-BVO3xBbT.js} +5 -5
  179. package/dist/plugin-sdk/{audio-preflight-BS29OWk3.js → audio-preflight-BmKL6FNP.js} +2 -2
  180. package/dist/plugin-sdk/audio-preflight-DlGohKMs.js +28 -0
  181. package/dist/plugin-sdk/{audio-transcription-runner-CGgNZVZv.js → audio-transcription-runner-DXiOiQMw.js} +1 -1
  182. package/dist/plugin-sdk/{audio-transcription-runner-BNafitZj.js → audio-transcription-runner-TBjJv_mZ.js} +10 -10
  183. package/dist/plugin-sdk/{auth-profiles-CCJQoedi.js → auth-profiles-DHZjW8Vk.js} +5 -5
  184. package/dist/plugin-sdk/{channel-activity-BKwRzYJb.js → channel-activity-Dr4PYej7.js} +3 -3
  185. package/dist/plugin-sdk/{chrome-D0eLSqkP.js → chrome-BDy1zYAr.js} +4 -4
  186. package/dist/plugin-sdk/{chrome-CT_6RvJg.js → chrome-DDIL8pIX.js} +8 -8
  187. package/dist/plugin-sdk/{chunk-DI-5pBck.js → chunk-BTSnO1wn.js} +6 -6
  188. package/dist/plugin-sdk/{chunk-CDvvv9SU.js → chunk-DGQdf0JN.js} +3 -3
  189. package/dist/plugin-sdk/{command-detection-WNHSrul-.js → command-detection-O-osZdkd.js} +99 -87
  190. package/dist/plugin-sdk/command-queue-BYvVRYdf.js +13 -0
  191. package/dist/plugin-sdk/{command-queue-DH8k55DC.js → command-queue-Cveon04f.js} +9 -3
  192. package/dist/plugin-sdk/{command-queue-CHiQj9Ji.js → command-queue-d5XPm8KU.js} +7 -2
  193. package/dist/plugin-sdk/{commands-registry-Do_g2It_.js → commands-registry-8sy0wsK_.js} +6 -6
  194. package/dist/plugin-sdk/{commands-registry-DpLk11E7.js → commands-registry-N6f_lsxF.js} +2 -2
  195. package/dist/plugin-sdk/{config-CQNfmIC8.js → config-Biusjzx-.js} +7 -7
  196. package/dist/plugin-sdk/{deliver-_UyigkEK.js → deliver-BD3gpFAY.js} +1 -1
  197. package/dist/plugin-sdk/{deliver-L6eu6zyG.js → deliver-BgHA8c9F.js} +11 -11
  198. package/dist/plugin-sdk/deliver-DBCz1GqU.js +32 -0
  199. package/dist/plugin-sdk/{deliver-DuDcszu1.js → deliver-DZoYhDxC.js} +3 -3
  200. package/dist/plugin-sdk/{diagnostic-Dk57KVjE.js → diagnostic-BhLorIrS.js} +1 -1
  201. package/dist/plugin-sdk/{diagnostic-DfxuMWHd.js → diagnostic-Bni_8VyY.js} +7 -7
  202. package/dist/plugin-sdk/{diagnostic-C7lPoqyv.js → diagnostic-D6hSjxiv.js} +5 -5
  203. package/dist/plugin-sdk/{fetch-guard-CZT8FU1i.js → fetch-guard-C1a1KfEb.js} +3 -3
  204. package/dist/plugin-sdk/{fs-safe-B0JgGdXa.js → fs-safe-CbZ6uRVv.js} +3 -3
  205. package/dist/plugin-sdk/{hook-runner-global-WRI53ibi.js → hook-runner-global-BvxlnAyu.js} +3 -3
  206. package/dist/plugin-sdk/{image-ops-kuILYHZv.js → image-ops-DY_SZfXk.js} +1 -1
  207. package/dist/plugin-sdk/index.js +54 -54
  208. package/dist/plugin-sdk/{ir-Bm7oqkwT.js → ir-BNohi6ZW.js} +5 -5
  209. package/dist/plugin-sdk/{local-roots-D-CHzVr1.js → local-roots-Bm7nDW20.js} +7 -7
  210. package/dist/plugin-sdk/{logger-BSK-0Yjx.js → logger-D6KsqbNW.js} +1 -1
  211. package/dist/plugin-sdk/{manager-D2jffdjH.js → manager-B_vK9MbM.js} +8 -8
  212. package/dist/plugin-sdk/manager-ByaW_O4Y.js +16 -0
  213. package/dist/plugin-sdk/{markdown-tables-DIWQQ2W1.js → markdown-tables-G4vK24xc.js} +2 -2
  214. package/dist/plugin-sdk/markdown-tables-J4hZ7eWU.js +10 -0
  215. package/dist/plugin-sdk/{outbound-attachment-CtKKNyms.js → outbound-attachment-Cw7T2Mrt.js} +2 -2
  216. package/dist/plugin-sdk/{path-alias-guards-CHfCMaeX.js → path-alias-guards-CVybi_GQ.js} +1 -1
  217. package/dist/plugin-sdk/{pi-embedded-helpers-BRymkO_1.js → pi-embedded-helpers-B_jgacW8.js} +11 -11
  218. package/dist/plugin-sdk/{pi-embedded-helpers-CELD3Ns3.js → pi-embedded-helpers-D74AHWBs.js} +3 -3
  219. package/dist/plugin-sdk/{pi-embedded-utils-BHmc3RVS.js → pi-embedded-utils-DOXEm_H8.js} +3 -3
  220. package/dist/plugin-sdk/{pi-embedded-utils-AFQ-oCFM.js → pi-embedded-utils-DQaOun1y.js} +1 -1
  221. package/dist/plugin-sdk/{pi-model-discovery-6BBajZds.js → pi-model-discovery-DWUrLRLg.js} +1 -1
  222. package/dist/plugin-sdk/{pi-model-discovery-4X7_2_nP.js → pi-model-discovery-DWw1ReX-.js} +6 -6
  223. package/dist/plugin-sdk/provider-dispatcher-CC6PgYPM.js +61 -0
  224. package/dist/plugin-sdk/{provider-dispatcher-D7UK3G8K.js → provider-dispatcher-NB8R-FyS.js} +12 -12
  225. package/dist/plugin-sdk/provider-image-B_dJDOl5.js +22 -0
  226. package/dist/plugin-sdk/{provider-image-DBye3Ln5.js → provider-image-CEQrHWYz.js} +5 -5
  227. package/dist/plugin-sdk/{provider-image-CbZOYl0b.js → provider-image-Cy9HRMER.js} +1 -1
  228. package/dist/plugin-sdk/{provider-image-Bumd1GBG.js → provider-image-g3vmjlkZ.js} +4 -4
  229. package/dist/plugin-sdk/provider-media-understanding.js +7 -7
  230. package/dist/plugin-sdk/{proxy-DJ2nskkh.js → proxy-BWc9guJs.js} +1 -1
  231. package/dist/plugin-sdk/proxy-DwbYzxBy.js +7 -0
  232. package/dist/plugin-sdk/{proxy-fetch-CuQpjpkI.js → proxy-fetch-BYkGxQnh.js} +1 -1
  233. package/dist/plugin-sdk/{pw-ai-BJrhPMHJ.js → pw-ai-DQv6Xhce.js} +10 -10
  234. package/dist/plugin-sdk/{pw-ai-hVucoF_I.js → pw-ai-DlM8D_uP.js} +1 -1
  235. package/dist/plugin-sdk/{qmd-manager-DhW_frb3.js → qmd-manager-CpV0SFnY.js} +8 -8
  236. package/dist/plugin-sdk/{query-expansion-NpBeKA8F.js → query-expansion-CwmHvvV_.js} +3 -3
  237. package/dist/plugin-sdk/{recorder-DdbAQ2HO.js → recorder-BXZMRSjO.js} +4 -4
  238. package/dist/plugin-sdk/{redact-CUjmZn2Y.js → redact-C88Ryyfs.js} +1 -1
  239. package/dist/plugin-sdk/replies-B9uDLFOE.js +25 -0
  240. package/dist/plugin-sdk/{replies-Dw3jvqpR.js → replies-l2hZAzbt.js} +4 -4
  241. package/dist/plugin-sdk/{reply-directives-BS8Ge06Z.js → reply-directives-BwxzQXmX.js} +2 -2
  242. package/dist/plugin-sdk/reply-prefix-BQMEQam1.js +7 -0
  243. package/dist/plugin-sdk/{reply-prefix-Dt1hESHJ.js → reply-prefix-qLQRxqrf.js} +1 -1
  244. package/dist/plugin-sdk/{resolve-route-BpLuk-wC.js → resolve-route-50KoArP9.js} +4 -4
  245. package/dist/plugin-sdk/{resolve-route-DiQTL1qI.js → resolve-route-6v1HVvWk.js} +6 -6
  246. package/dist/plugin-sdk/{runs-CPWQbljV.js → runs-B4G4Txj3.js} +3 -3
  247. package/dist/plugin-sdk/runs-BQhYekhr.js +25 -0
  248. package/dist/plugin-sdk/{runs-D6fAvItC.js → runs-CiohhBb8.js} +7 -7
  249. package/dist/plugin-sdk/{runs-B3DB63tB.js → runs-Dzlj-BO5.js} +5 -5
  250. package/dist/plugin-sdk/{send-CpXGZgrS.js → send-BMSqETcU.js} +6 -6
  251. package/dist/plugin-sdk/send-CeWqZTK0.js +23 -0
  252. package/dist/plugin-sdk/{send-BDwTyH6I.js → send-Cv2CGnsK.js} +8 -8
  253. package/dist/plugin-sdk/{send-Ce2XBaKF.js → send-Cx6gHjnA.js} +6 -6
  254. package/dist/plugin-sdk/send-CzcKgBBf.js +25 -0
  255. package/dist/plugin-sdk/{send-R0HB1-l-.js → send-DG4MQPPm.js} +13 -13
  256. package/dist/plugin-sdk/{send-C28pxKhC.js → send-DHNKlQPv.js} +2 -2
  257. package/dist/plugin-sdk/{send-CE_6VOiQ.js → send-DM6RpDCL.js} +7 -7
  258. package/dist/plugin-sdk/{send-GMYUhBtJ.js → send-DO0C4Uva.js} +19 -19
  259. package/dist/plugin-sdk/send-Dvna5ey-.js +27 -0
  260. package/dist/plugin-sdk/{send-DE9YP1gQ.js → send-Tg5PT6ci.js} +1 -1
  261. package/dist/plugin-sdk/send-xPV0QIjh.js +24 -0
  262. package/dist/plugin-sdk/{session-meta-BU2WXD0N.js → session-meta-CiqJP0pO.js} +2 -2
  263. package/dist/plugin-sdk/session-meta-n4SCcAbJ.js +10 -0
  264. package/dist/plugin-sdk/skill-commands-BOV3NIbU.js +14 -0
  265. package/dist/plugin-sdk/{skill-commands-BYfWIPfV.js → skill-commands-CE_SkRQk.js} +5 -5
  266. package/dist/plugin-sdk/{skills-BuJjEYto.js → skills-CjW6uGTa.js} +6 -6
  267. package/dist/plugin-sdk/src/auto-reply/reply/agent-runner-execution.d.ts +2 -0
  268. package/dist/plugin-sdk/src/config/talk.d.ts +0 -4
  269. package/dist/plugin-sdk/src/gateway/storage-startup-gate.d.ts +28 -8
  270. package/dist/plugin-sdk/src/process/command-queue.d.ts +3 -0
  271. package/dist/plugin-sdk/src/talk/realtime-transcription-provider-types.d.ts +4 -1
  272. package/dist/plugin-sdk/src/talk/streaming-speech-provider-types.d.ts +2 -0
  273. package/dist/plugin-sdk/{ssrf-DiAz1Z_z.js → ssrf-BUCEDxp5.js} +2 -2
  274. package/dist/plugin-sdk/{store-Bl3Yjf_w.js → store-yBNTHg3N.js} +2 -2
  275. package/dist/plugin-sdk/{subagent-registry-Bxwla-0-.js → subagent-registry-B5xaoVWq.js} +12 -12
  276. package/dist/plugin-sdk/subagent-registry-BiarU1g8.js +61 -0
  277. package/dist/plugin-sdk/{subsystem-B2x33s9h.js → subsystem-CUUKL6Fr.js} +4 -4
  278. package/dist/plugin-sdk/{tables-CTmQQyfU.js → tables-DKYi6grj.js} +1 -1
  279. package/dist/plugin-sdk/testing.js +12 -12
  280. package/dist/plugin-sdk/{tokens-DxJSOoJn.js → tokens-ysZUkYZZ.js} +1 -1
  281. package/dist/plugin-sdk/{tool-loop-detection-Buouaxew.js → tool-loop-detection-LsvZ1dIY.js} +1 -1
  282. package/dist/plugin-sdk/{tools-iyXmO6p1.js → tools-Sk-IqHBP.js} +46 -34
  283. package/dist/plugin-sdk/{user-run-recording-juCW_uQ-.js → user-run-recording-BMaK7jNR.js} +2 -2
  284. package/dist/plugin-sdk/user-run-recording-DiKcNdjn.js +11 -0
  285. package/dist/{plugins-cli-CmYpruM_.js → plugins-cli-CjgLVUxJ.js} +27 -27
  286. package/dist/{plugins-cli-B0I1Xkrz.js → plugins-cli-Di9VhU7J.js} +27 -27
  287. package/dist/{program-CA1rDqtK.js → program-Dus5j4vB.js} +28 -28
  288. package/dist/{program-context-BCo6By7P.js → program-context-CQrxOpXH.js} +36 -36
  289. package/dist/{prompt-select-styled-cL1dmYcO.js → prompt-select-styled-D1Kc5Amb.js} +9 -9
  290. package/dist/{prompt-select-styled-BAmwLkut.js → prompt-select-styled-D3Li9uy2.js} +9 -9
  291. package/dist/{provider-image-CIpRvhkS.js → provider-image-BICZzOki.js} +1 -1
  292. package/dist/{provider-image-D9B_J5Ys.js → provider-image-Bsivqxw8.js} +1 -1
  293. package/dist/{provider-image-BllyLBJM.js → provider-image-Cb4z6zUu.js} +5 -5
  294. package/dist/{proxy-fWL7CKDP.js → proxy-C9sq6M-h.js} +1 -1
  295. package/dist/{proxy-env-CzGKpJY_.js → proxy-env-i0jn5uxB.js} +2 -2
  296. package/dist/{proxy-fetch-DCI0KuH6.js → proxy-fetch-CK5AQAYw.js} +1 -1
  297. package/dist/{push-apns-Bhf8qK68.js → push-apns-BcZzA03X.js} +2 -2
  298. package/dist/{push-apns-BmrddV2R.js → push-apns-qUm5cL9P.js} +2 -2
  299. package/dist/{pw-ai-CKjrjwfw.js → pw-ai-Ci1kADkJ.js} +1 -1
  300. package/dist/{pw-ai-Cd08hlBj.js → pw-ai-DT3fj2Kt.js} +1 -1
  301. package/dist/{pw-ai-CXSJw34w.js → pw-ai-DziGw6Jy.js} +14 -14
  302. package/dist/{qmd-manager-BwZ0V5fL.js → qmd-manager-p036XU01.js} +10 -10
  303. package/dist/{qr-cli-BCIfpQUF.js → qr-cli-BE3QWMP3.js} +3 -3
  304. package/dist/{qr-cli-BTOCXqFJ.js → qr-cli-DhJ37DZK.js} +3 -3
  305. package/dist/{query-expansion-31VWpPCz.js → query-expansion-30x7RlZY.js} +5 -5
  306. package/dist/{reconcile-bundled-Bl6XpmI5.js → reconcile-bundled-CAKTvY-C.js} +1 -1
  307. package/dist/{reconcile-bundled-TswjG3xv.js → reconcile-bundled-DJKaKSgk.js} +1 -1
  308. package/dist/{recorder-DNRxe9C8.js → recorder-C_ViZLf1.js} +4 -4
  309. package/dist/{recovery-adapter-DyPV7syS.js → recovery-adapter-BT12fVyO.js} +8 -8
  310. package/dist/{recovery-adapter-DW0R_vFE.js → recovery-adapter-DF25-zSH.js} +1 -1
  311. package/dist/{recovery-adapter-DOizlZvv.js → recovery-adapter-Df87xZQp.js} +8 -8
  312. package/dist/{recovery-adapter-mi8jbyvy.js → recovery-adapter-okaOo6tO.js} +1 -1
  313. package/dist/{redact-DZne_lu8.js → redact-BOHmCPP_.js} +1 -1
  314. package/dist/{register.agent-B3BSgQcW.js → register.agent-BCNYDn8G.js} +27 -27
  315. package/dist/{register.agent-CSHtI9uN.js → register.agent-CqGVQ2N1.js} +28 -28
  316. package/dist/{register.configure-CYwDM9d3.js → register.configure-CPTDt8eL.js} +30 -30
  317. package/dist/{register.configure-Cu4CPpm4.js → register.configure-DxdNTBIk.js} +30 -30
  318. package/dist/{register.maintenance-BXiHFIyG.js → register.maintenance-BOCv2N1t.js} +28 -28
  319. package/dist/{register.maintenance-C6vjRY-I.js → register.maintenance-CFjB31Z5.js} +29 -29
  320. package/dist/{register.message-BsBClRov.js → register.message-CiT53tgD.js} +23 -23
  321. package/dist/{register.message-DNpBTvto.js → register.message-dqrK9EsG.js} +23 -23
  322. package/dist/{register.onboard-BKQLGJhh.js → register.onboard-BKoeYDAF.js} +5 -5
  323. package/dist/{register.onboard-t_7lOkRu.js → register.onboard-xtBBqce9.js} +5 -5
  324. package/dist/{register.setup-B7QHn0Qv.js → register.setup-qHCNX6LC.js} +5 -5
  325. package/dist/{register.setup-DEg7fSPZ.js → register.setup-xIVMlLYx.js} +5 -5
  326. package/dist/{register.status-health-sessions-7E-y6cw7.js → register.status-health-sessions-CaxJw1rr.js} +27 -27
  327. package/dist/{register.status-health-sessions-D9iuSOb8.js → register.status-health-sessions-D4hMq0I7.js} +27 -27
  328. package/dist/{register.subclis-R6keQnon.js → register.subclis-srwCZnD0.js} +25 -25
  329. package/dist/{replies-NkETqb6B.js → replies-BsctLhfp.js} +4 -4
  330. package/dist/{reply-B4TgvJrJ.js → reply-B_SiN91-.js} +41 -30
  331. package/dist/{reply-directives-DGITtNUL.js → reply-directives-D9wYtPPy.js} +2 -2
  332. package/dist/{reply-prefix-DVkNDBNe.js → reply-prefix-C7WlN3qm.js} +1 -1
  333. package/dist/{resolve-route-jDAjkfZE.js → resolve-route-BV8k5qjX.js} +5 -5
  334. package/dist/{rpc-B2GRFhpM.js → rpc-BgMIbqpb.js} +1 -1
  335. package/dist/{rpc-BljNUarN.js → rpc-htgXg_yf.js} +1 -1
  336. package/dist/{run-main-CMTfGYjG.js → run-main-BzfK-GcH.js} +36 -36
  337. package/dist/{runs-B0TxOQnF.js → runs-BW5fW5nB.js} +3 -3
  338. package/dist/{runs-BMp7jOLL.js → runs-BjLs5ozo.js} +3 -3
  339. package/dist/{runs-DGWNXyKA.js → runs-ucQd8Fc-.js} +8 -8
  340. package/dist/{sandbox-DbfWdQha.js → sandbox-7YCCMJoM.js} +1 -1
  341. package/dist/{sandbox-CQwpubTx.js → sandbox-BpdiWabc.js} +1 -1
  342. package/dist/{sandbox-cli-CSjghLhl.js → sandbox-cli-Dv0Viev8.js} +2 -2
  343. package/dist/{sandbox-cli-DwhgE7u4.js → sandbox-cli-UfXu5kvh.js} +2 -2
  344. package/dist/{secrets-cli-jj1RZiK2.js → secrets-cli-DD5pd5lU.js} +3 -3
  345. package/dist/{secrets-cli-mfGtyiPb.js → secrets-cli-DMX3vuhP.js} +3 -3
  346. package/dist/{security-cli-DSB1NLa6.js → security-cli-DCKCspHc.js} +7 -7
  347. package/dist/{security-cli-DlMcCXl1.js → security-cli-DRALCMFL.js} +7 -7
  348. package/dist/{send-Do1AlhD5.js → send-BGps2i_C.js} +8 -8
  349. package/dist/{send-ENMm5qbW.js → send-Ba3pDq6E.js} +7 -7
  350. package/dist/{send-Dq8ChBfS.js → send-BiDcVZSc.js} +6 -6
  351. package/dist/{send-l57G-s8y.js → send-CZsC4D3G.js} +1 -1
  352. package/dist/{send-DEFcgo-1.js → send-TscXeVY8.js} +27 -27
  353. package/dist/{send-CNLmncRW.js → send-Tx-ew59_.js} +6 -6
  354. package/dist/{send-DAYMV49d.js → send-s0RNLFLX.js} +1 -1
  355. package/dist/{server-BAGUd2MH.js → server-DWJmtex3.js} +4 -4
  356. package/dist/{server-context-BUX61Gwl.js → server-context-BEjWhzMi.js} +2 -2
  357. package/dist/{server-context-FPrSnBNG.js → server-context-CQQ6Q5Kp.js} +2 -2
  358. package/dist/{server-lifecycle-7QoL5fyb.js → server-lifecycle-B9IQKSom.js} +1 -1
  359. package/dist/{server-lifecycle-DXRap2AR.js → server-lifecycle-C3hCCbXm.js} +1 -1
  360. package/dist/{server-node-events-DSTI4JnV.js → server-node-events-8k0OLCvW.js} +23 -23
  361. package/dist/{server-node-events-MOX6FUiJ.js → server-node-events-BYTgaAay.js} +23 -23
  362. package/dist/{server-IDopagLT.js → server-y8WhCQvu.js} +4 -4
  363. package/dist/{session-meta-DuK_BrWT.js → session-meta-DH__PMKt.js} +2 -2
  364. package/dist/{sessions-Dcu0bdQ7.js → sessions-BlXxa7bM.js} +6 -6
  365. package/dist/{sessions-CgVN798h.js → sessions-DFDrcshi.js} +6 -6
  366. package/dist/{sessions-claims-status-D5th0G34.js → sessions-claims-status-BWkOZDb1.js} +2 -2
  367. package/dist/{sessions-claims-status-Bt9unG8h.js → sessions-claims-status-BzqTiwuz.js} +2 -2
  368. package/dist/{skill-commands-BhMQp_i8.js → skill-commands-CRZajtK_.js} +9 -9
  369. package/dist/{skills-ckuLxkyg.js → skills-DOc6uEd1.js} +21 -21
  370. package/dist/{status-B3eNMcE3.js → status-BacPIpt6.js} +8 -8
  371. package/dist/{status-C5pbfqhh.js → status-BsGjriqM.js} +8 -8
  372. package/dist/{store-gQ6FSjVk.js → store-xxN6qyAh.js} +2 -2
  373. package/dist/{subsystem-CPYnUTN4.js → subsystem-BCjklMkJ.js} +64 -64
  374. package/dist/{system-cli-B-THY8xp.js → system-cli-DaeSeaNj.js} +3 -3
  375. package/dist/{system-cli-BqCA8eq3.js → system-cli-LSxX4WjX.js} +3 -3
  376. package/dist/{tables-DEyD0zuy.js → tables-o3ZpyPWV.js} +1 -1
  377. package/dist/{task-pipeline-boot-BLEjtMkt.js → task-pipeline-boot-CM-3tH09.js} +23 -23
  378. package/dist/{task-pipeline-boot-DKqT4VdZ.js → task-pipeline-boot-Dihxq0Tg.js} +23 -23
  379. package/dist/{task-runlog-retention-cEBecqvb.js → task-runlog-retention-DCbMK2T8.js} +65 -10
  380. package/dist/{task-runlog-retention-BZrnJGL1.js → task-runlog-retention-GZu-QuBY.js} +65 -10
  381. package/dist/{tasks-DXPXCFmn.js → tasks-DCbYQt5N.js} +2 -2
  382. package/dist/{tasks-YUokA114.js → tasks-Dm1ljmuN.js} +2 -2
  383. package/dist/{tokens-9BPY4SaX.js → tokens-9Mla_HDp.js} +1 -1
  384. package/dist/{tool-loop-detection-C1fqyXXD.js → tool-loop-detection-8uvf8mSd.js} +2 -2
  385. package/dist/{tui-CetFSZIt.js → tui-DQwfx20_.js} +3 -3
  386. package/dist/{tui-5QhX2Lcm.js → tui-X8LP2ykY.js} +3 -3
  387. package/dist/{tui-cli-Bo-8qeoa.js → tui-cli-DFen3XYb.js} +6 -6
  388. package/dist/{tui-cli-DFak7s89.js → tui-cli-Dhj11694.js} +6 -6
  389. package/dist/{update-Dwt-MeRL.js → update-CYcHPlAS.js} +1 -1
  390. package/dist/{update-B3jJ2yVe.js → update-VuewNwzn.js} +1 -1
  391. package/dist/{update-cli-Dhxx3iie.js → update-cli-DE0ttohR.js} +32 -32
  392. package/dist/{update-cli-D5knJbn5.js → update-cli-DECVfh7L.js} +33 -33
  393. package/dist/{update-runner-18yD5NLo.js → update-runner-C8NxlRy7.js} +1 -1
  394. package/dist/{update-runner-DohE1D7D.js → update-runner-CBbs-iN_.js} +1 -1
  395. package/dist/{user-run-recording-B0XAAUwL.js → user-run-recording-CAk1Ketk.js} +2 -2
  396. package/dist/{validation-cli-Dfac8Duq.js → validation-cli-D8dTZ830.js} +23 -23
  397. package/dist/{validation-cli-CAge8d_F.js → validation-cli-Di7B-mhn.js} +23 -23
  398. package/dist/{with-timeout-DD5bV7yq.js → with-timeout-BfG7k9-4.js} +2 -2
  399. package/dist/{with-timeout-1SSQaGSz.js → with-timeout-CpZZ4mMw.js} +2 -2
  400. package/dist/{workspace-B707AGIc.js → workspace-Dbn4gFdH.js} +9 -9
  401. package/extensions/acpx/package.json +1 -1
  402. package/extensions/anthropic/package.json +1 -1
  403. package/extensions/bifrost/package.json +1 -1
  404. package/extensions/bluebubbles/package.json +1 -1
  405. package/extensions/copilot-proxy/package.json +1 -1
  406. package/extensions/deepgram/package.json +1 -1
  407. package/extensions/deepinfra/package.json +1 -1
  408. package/extensions/diagnostics-otel/package.json +1 -1
  409. package/extensions/diffs/package.json +1 -1
  410. package/extensions/discord/package.json +1 -1
  411. package/extensions/dream-cycle/package.json +1 -1
  412. package/extensions/elevenlabs/package.json +1 -1
  413. package/extensions/elevenlabs/src/realtime-transcription-provider-faults.test.ts +0 -39
  414. package/extensions/elevenlabs/src/realtime-transcription-provider.test.ts +34 -32
  415. package/extensions/elevenlabs/src/realtime-transcription-provider.ts +5 -34
  416. package/extensions/elevenlabs/src/streaming-speech-provider.ts +5 -0
  417. package/extensions/feishu/package.json +1 -1
  418. package/extensions/gemini-search/package.json +1 -1
  419. package/extensions/google/package.json +1 -1
  420. package/extensions/google-gemini-cli-auth/package.json +1 -1
  421. package/extensions/googlechat/package.json +1 -1
  422. package/extensions/grok-search/package.json +1 -1
  423. package/extensions/groq/package.json +1 -1
  424. package/extensions/imessage/package.json +1 -1
  425. package/extensions/irc/package.json +1 -1
  426. package/extensions/kimi-search/package.json +1 -1
  427. package/extensions/learning-core/package.json +1 -1
  428. package/extensions/line/package.json +1 -1
  429. package/extensions/llm-task/package.json +1 -1
  430. package/extensions/lobster/package.json +1 -1
  431. package/extensions/matrix/CHANGELOG.md +1 -1
  432. package/extensions/matrix/package.json +1 -1
  433. package/extensions/mattermost/package.json +1 -1
  434. package/extensions/memory-core/package.json +1 -1
  435. package/extensions/memory-lancedb/package.json +1 -1
  436. package/extensions/minimax/package.json +1 -1
  437. package/extensions/minimax-portal-auth/package.json +1 -1
  438. package/extensions/mistral/package.json +1 -1
  439. package/extensions/moonshot/package.json +1 -1
  440. package/extensions/msteams/CHANGELOG.md +1 -1
  441. package/extensions/msteams/package.json +1 -1
  442. package/extensions/nextcloud-talk/package.json +1 -1
  443. package/extensions/nostr/CHANGELOG.md +1 -1
  444. package/extensions/nostr/package.json +1 -1
  445. package/extensions/open-prose/package.json +1 -1
  446. package/extensions/openai/package.json +1 -1
  447. package/extensions/openai-realtime/package.json +1 -1
  448. package/extensions/openrouter/package.json +1 -1
  449. package/extensions/perplexity-search/package.json +1 -1
  450. package/extensions/searxng-search/package.json +1 -1
  451. package/extensions/signal/package.json +1 -1
  452. package/extensions/slack/package.json +1 -1
  453. package/extensions/synology-chat/package.json +1 -1
  454. package/extensions/telegram/package.json +1 -1
  455. package/extensions/tlon/package.json +1 -1
  456. package/extensions/twitch/CHANGELOG.md +1 -1
  457. package/extensions/twitch/package.json +1 -1
  458. package/extensions/voice-call/CHANGELOG.md +1 -1
  459. package/extensions/voice-call/package.json +1 -1
  460. package/extensions/whatsapp/package.json +1 -1
  461. package/extensions/zai/package.json +1 -1
  462. package/extensions/zalo/CHANGELOG.md +1 -1
  463. package/extensions/zalo/package.json +1 -1
  464. package/extensions/zalouser/CHANGELOG.md +1 -1
  465. package/extensions/zalouser/package.json +1 -1
  466. package/package.json +1 -1
  467. package/dist/plugin-sdk/agent-turn-execute-zuw0S_Lh.js +0 -61
  468. package/dist/plugin-sdk/agent-turn-runner-BcrkoR1M.js +0 -11
  469. package/dist/plugin-sdk/audio-preflight-DE04bi4M.js +0 -28
  470. package/dist/plugin-sdk/command-queue-BnJsJc_w.js +0 -13
  471. package/dist/plugin-sdk/deliver-D4fWK65M.js +0 -32
  472. package/dist/plugin-sdk/manager-BlYRVNJI.js +0 -16
  473. package/dist/plugin-sdk/markdown-tables-cZSKCBuW.js +0 -10
  474. package/dist/plugin-sdk/provider-dispatcher-B4PdTha5.js +0 -61
  475. package/dist/plugin-sdk/provider-image-CNlYbRab.js +0 -22
  476. package/dist/plugin-sdk/proxy-D2uiu68M.js +0 -7
  477. package/dist/plugin-sdk/replies-XUkqz_7S.js +0 -25
  478. package/dist/plugin-sdk/reply-prefix-MU3uY52y.js +0 -7
  479. package/dist/plugin-sdk/runs-R28wdt7j.js +0 -25
  480. package/dist/plugin-sdk/send-Cg2VXcO0.js +0 -27
  481. package/dist/plugin-sdk/send-DAs6FmWB.js +0 -23
  482. package/dist/plugin-sdk/send-UIQH_kN6.js +0 -25
  483. package/dist/plugin-sdk/send-tASIQF-Q.js +0 -24
  484. package/dist/plugin-sdk/session-meta-Dd1ZONel.js +0 -10
  485. package/dist/plugin-sdk/skill-commands-C7ZE3rKj.js +0 -14
  486. package/dist/plugin-sdk/subagent-registry-CTZBVVPF.js +0 -61
  487. package/dist/plugin-sdk/user-run-recording-BMikDBXR.js +0 -11
@@ -17,17 +17,17 @@ import { c as optionalStringEnum, l as stringEnum } from "./retry-policy-BdHwnvO
17
17
  import { c as resolveSessionFilePath, l as resolveSessionFilePathOptions, m as resolveStorePath, p as resolveSessionTranscriptsDirForAgent, u as resolveSessionTranscriptPath } from "./artifacts-C9Cr_S5Y.js";
18
18
  import "./send-B_t3X0hK.js";
19
19
  import "./send-BBFfvgK9.js";
20
- import { $ as buildHistoryContextFromEntries, $n as getTtsProvider, $t as consumeGatewaySigusr1RestartAuthorization, A as loadOpenClawPlugins, An as extractImageContentFromSource, Bt as buildSafeExternalPrompt, C as buildDefaultToolPolicyPipelineSteps, Ct as resetDirectoryCache, Dn as DEFAULT_INPUT_MAX_REDIRECTS, Dt as consumeRestartSentinel, E as resolvePluginTools, En as DEFAULT_INPUT_IMAGE_MIMES, F as resolveAgentOutboundIdentity, Fn as isAbortRequestText, Ft as normalizeCronJobPatch, G as resolveAgentOutboundTarget, Gn as clearSessionQueues, Gt as persistBrowserProxyFiles, H as agentCommandFromIngress, Hn as resolveAnnounceTargetFromKey, Ht as getHookType, It as migrateLegacyCronPayload, J as createOutboundSendDeps$1, Jn as getAcpSessionManager, K as createOutboundSendDeps, Kn as getExistingFollowupQueue, Kt as resolveSessionAuthProfileOverride, L as handleSlackHttpRequest, Ln as countActiveDescendantRuns, Lt as buildDeliveryFromLegacyPayload, M as createPluginRuntime, Mn as resolveInputFileLimits, N as requestNudge, Nt as writeRestartSentinel, O as clearPluginRegistryCaches, On as DEFAULT_INPUT_TIMEOUT_MS, Ot as formatDoctorNonInteractiveHint, Pn as resolveSendPolicy, Pt as normalizeCronJobCreate, Qn as DEFAULT_MAX_PARALLEL, R as readJsonBodyWithLimit, Rn as initSubagentRegistry, Rt as hasLegacyDeliveryHints, S as applyToolPolicyPipeline, T as getPluginToolMeta, Tn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as runWithModelFallback, Un as readLatestAssistantReply, Ut as isExternalHookSession, Vn as runSubagentAnnounceFlow, Vt as detectSuspiciousPatterns, W as resolveAgentDeliveryPlan, Wn as resolveAgentTimeoutMs, Wt as applyBrowserProxyPaths, Xn as ToolInputError, Y as resolveAgentAvatar, Yn as resolveAgentSessionDirs, Zn as setTaskPipelineStatus, _ as prepareSessionManagerForRun, _n as isSystemEventContextChanged, _t as resolveOutboundSessionRoute, a as runHeartbeatOnce, an as setGatewaySigusr1RestartPolicy, ar as resolveTtsPrefsPath, bt as resolveSessionDeliveryTarget, c as startHeartbeatRunner, cr as setTtsProvider, d as getLastHeartbeatEvent, dr as OPENAI_TTS_VOICES, dt as getCliSessionId, en as deferGatewayRestartUntilIdle, er as isTtsEnabled, f as onHeartbeatEvent, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ft as setCliSessionId, g as runEmbeddedPiAgent, gn as enqueueSystemEvent, gt as ensureOutboundSessionEntry, h as resolveCronSession, hr as resolveUserTimezone, i as resolveHeartbeatSummaryForAgent, in as scheduleGatewaySigusr1Restart, ir as resolveTtsConfig, it as getTotalPendingReplies, j as takePendingActivationMigration, jn as normalizeMimeList, jt as summarizeRestartSentinel, k as getLoadedAnalysisConcurrency, kn as extractFileContentFromSource, kt as formatRestartSentinelMessage, l as runWakeGate, lr as textToSpeech, lt as resolveChannelAccountEnabled, m as isCronSystemEvent, mr as resolveCronStyleNow, mt as createOpenClawTools, n as runMainAgentTurn, nn as isGatewaySigusr1RestartExternallyAllowed, nr as resolveTtsApiKey, nt as setDispatchInboundAdmissionRejectionFor, on as setPreRestartDeferralCheck, or as resolveTtsProviderOrder, p as redactSensitiveHeartbeatEvent, pr as stripHeartbeatToken, pt as runCliAgent, q as createDefaultDeps, qn as removeQueuedFollowupRun, r as resolveHeartbeatConfig, rn as markGatewaySigusr1RestartHandled, rr as resolveTtsAutoMode, rt as createReplyDispatcher, s as setHeartbeatsEnabled, sn as triggerOpenClawRestart, sr as setTtsEnabled, tn as emitGatewayRestart, tr as isTtsProviderConfigured, tt as dispatchInboundMessage, u as resolveHeartbeatVisibility, un as loadProviderUsageSummary, ur as OPENAI_TTS_MODELS, ut as BARE_SESSION_RESET_PROMPT, v as snapshotRunPendingWrites, vt as resolveHeartbeatDeliveryTarget, wn as ACP_SESSION_IDENTITY_RENDERER_VERSION, x as resolveExecConfig, xn as requestHeartbeatNow, xt as resolveOutboundChannelPlugin, y as waitForPendingWrites, yt as resolveOutboundTarget, z as requestBodyErrorToText, zn as listDescendantRunsForRequester, zt as stripLegacyDeliveryFields } from "./agent-turn-execute-CzOC4mHw.js";
20
+ import { $ as buildHistoryContextFromEntries, $n as DEFAULT_MAX_PARALLEL, $t as consumeGatewaySigusr1RestartAuthorization, A as loadOpenClawPlugins, An as extractImageContentFromSource, Bt as buildSafeExternalPrompt, C as buildDefaultToolPolicyPipelineSteps, Ct as resetDirectoryCache, Dn as DEFAULT_INPUT_MAX_REDIRECTS, Dt as consumeRestartSentinel, E as resolvePluginTools, En as DEFAULT_INPUT_IMAGE_MIMES, F as resolveAgentOutboundIdentity, Fn as isAbortRequestText, Ft as normalizeCronJobPatch, G as resolveAgentOutboundTarget, Gn as clearSessionQueues, Gt as persistBrowserProxyFiles, H as agentCommandFromIngress, Hn as resolveAnnounceTargetFromKey, Ht as getHookType, It as migrateLegacyCronPayload, J as createOutboundSendDeps$1, Jn as getAcpSessionManager, K as createOutboundSendDeps, Kn as getExistingFollowupQueue, Kt as resolveSessionAuthProfileOverride, L as handleSlackHttpRequest, Ln as countActiveDescendantRuns, Lt as buildDeliveryFromLegacyPayload, M as createPluginRuntime, Mn as resolveInputFileLimits, N as requestNudge, Nt as writeRestartSentinel, O as clearPluginRegistryCaches, On as DEFAULT_INPUT_TIMEOUT_MS, Ot as formatDoctorNonInteractiveHint, Pn as resolveSendPolicy, Pt as normalizeCronJobCreate, Qn as setTaskPipelineStatus, R as readJsonBodyWithLimit, Rn as initSubagentRegistry, Rt as hasLegacyDeliveryHints, S as applyToolPolicyPipeline, T as getPluginToolMeta, Tn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as runWithModelFallback, Un as readLatestAssistantReply, Ut as isExternalHookSession, Vn as runSubagentAnnounceFlow, Vt as detectSuspiciousPatterns, W as resolveAgentDeliveryPlan, Wn as resolveAgentTimeoutMs, Wt as applyBrowserProxyPaths, Xn as ToolInputError, Y as resolveAgentAvatar, Yn as resolveAgentSessionDirs, _ as prepareSessionManagerForRun, _n as isSystemEventContextChanged, _t as resolveOutboundSessionRoute, a as runHeartbeatOnce, an as setGatewaySigusr1RestartPolicy, ar as resolveTtsConfig, bt as resolveSessionDeliveryTarget, c as startHeartbeatRunner, cr as setTtsEnabled, d as getLastHeartbeatEvent, dr as OPENAI_TTS_MODELS, dt as getCliSessionId, en as deferGatewayRestartUntilIdle, er as getTtsProvider, f as onHeartbeatEvent, fr as OPENAI_TTS_VOICES, ft as setCliSessionId, g as runEmbeddedPiAgent, gn as enqueueSystemEvent, gr as resolveUserTimezone, gt as ensureOutboundSessionEntry, h as resolveCronSession, hr as resolveCronStyleNow, i as resolveHeartbeatSummaryForAgent, in as scheduleGatewaySigusr1Restart, ir as resolveTtsAutoMode, it as getTotalPendingReplies, j as takePendingActivationMigration, jn as normalizeMimeList, jt as summarizeRestartSentinel, k as getLoadedAnalysisConcurrency, kn as extractFileContentFromSource, kt as formatRestartSentinelMessage, l as runWakeGate, lr as setTtsProvider, lt as resolveChannelAccountEnabled, m as isCronSystemEvent, mr as stripHeartbeatToken, mt as createOpenClawTools, n as runMainAgentTurn, nn as isGatewaySigusr1RestartExternallyAllowed, nr as isTtsProviderConfigured, nt as setDispatchInboundAdmissionRejectionFor, on as setPreRestartDeferralCheck, or as resolveTtsPrefsPath, p as redactSensitiveHeartbeatEvent, pr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, pt as runCliAgent, q as createDefaultDeps, qn as removeQueuedFollowupRun, r as resolveHeartbeatConfig, rn as markGatewaySigusr1RestartHandled, rr as resolveTtsApiKey, rt as createReplyDispatcher, s as setHeartbeatsEnabled, sn as triggerOpenClawRestart, sr as resolveTtsProviderOrder, tn as emitGatewayRestart, tr as isTtsEnabled, tt as dispatchInboundMessage, u as resolveHeartbeatVisibility, un as loadProviderUsageSummary, ur as textToSpeech, ut as BARE_SESSION_RESET_PROMPT, v as snapshotRunPendingWrites, vt as resolveHeartbeatDeliveryTarget, wn as ACP_SESSION_IDENTITY_RENDERER_VERSION, x as resolveExecConfig, xn as requestHeartbeatNow, xt as resolveOutboundChannelPlugin, y as waitForPendingWrites, yt as resolveOutboundTarget, z as requestBodyErrorToText, zn as listDescendantRunsForRequester, zt as stripLegacyDeliveryFields } from "./agent-turn-execute-pkDSwyuf.js";
21
21
  import { l as deriveSessionTotalTokens, u as hasNonzeroUsage } from "./chat-envelope-DfuAGxmg.js";
22
22
  import { c as isDiagnosticsEnabled, l as onDiagnosticEvent, s as emitDiagnosticEvent } from "./task-run-types-B6n0W8Rb.js";
23
23
  import { n as USER_CLIENT_ID, o as buildUserClientRuntimeConfig, s as handleUserClientHttpRequest } from "./static-server-CRGPIP-a.js";
24
24
  import { t as redactIdentifier } from "./redact-identifier-BcqQpFrh.js";
25
- import { a as cancelDelayedAgentTurnWaiters, c as enqueueAgentTurn, i as agentTurnIdempotencyKey, l as isClaimableAgentTurnWorkId, r as AGENT_TURN_TOPIC, s as createRecoveryAgentTurnStager } from "./agent-turn-enqueue-DEStltEg.js";
25
+ import { a as cancelDelayedAgentTurnWaiters, c as enqueueAgentTurn, i as agentTurnIdempotencyKey, l as isClaimableAgentTurnWorkId, r as AGENT_TURN_TOPIC, s as createRecoveryAgentTurnStager } from "./agent-turn-enqueue-CsHMHVsf.js";
26
26
  import { t as CommandLane } from "./lanes-BN1DVTrA.js";
27
- import { A as registerBeforeCreate, C as artifactTokenFor, D as markRemoved, E as markClientRemovedAcknowledged, M as buildVerificationEnvelope, N as redactVerificationProjection, O as markRetained, P as verificationEnvelopeFingerprint, S as accountSessionArtifactsAtTerminalSweep, T as listSessionArtifacts, _ as requireProcessBootIdentityPair, a as setAgentTurnRuntime, b as installGatewayRestartRecoveryRuntime, d as isSoakError, f as readTrustedBuildInfo, g as isBootIdentityError, h as deriveBootIdentityPair, i as getAgentTurnRuntime, j as VERIFICATION_CONFIG_SCENARIO, k as redactArtifactLogId, l as buildSoakDeploymentRecord, m as armBarrier, n as createAgentTurnRuntimeFromStorage, o as tryGetAgentTurnRuntime, p as acceptSuccessorExecution, r as getActiveAgentTurnCount, u as evaluateSoak, v as clearGatewayRestartRecoveryRuntimeIf, w as isArtifactRegistrationError, x as RETAINED_ARTIFACT_KIND, y as getGatewayRestartRecoveryRuntime } from "./agent-turn-runner-C1u8sVfA.js";
27
+ import { A as registerBeforeCreate, C as artifactTokenFor, D as markRemoved, E as markClientRemovedAcknowledged, M as buildVerificationEnvelope, N as redactVerificationProjection, O as markRetained, P as verificationEnvelopeFingerprint, S as accountSessionArtifactsAtTerminalSweep, T as listSessionArtifacts, _ as requireProcessBootIdentityPair, a as setAgentTurnRuntime, b as installGatewayRestartRecoveryRuntime, d as isSoakError, f as readTrustedBuildInfo, g as isBootIdentityError, h as deriveBootIdentityPair, i as getAgentTurnRuntime, j as VERIFICATION_CONFIG_SCENARIO, k as redactArtifactLogId, l as buildSoakDeploymentRecord, m as armBarrier, n as createAgentTurnRuntimeFromStorage, o as tryGetAgentTurnRuntime, p as acceptSuccessorExecution, r as getActiveAgentTurnCount, u as evaluateSoak, v as clearGatewayRestartRecoveryRuntimeIf, w as isArtifactRegistrationError, x as RETAINED_ARTIFACT_KIND, y as getGatewayRestartRecoveryRuntime } from "./agent-turn-runner-DoHGgNPh.js";
28
28
  import { a as getGatewayInstanceId, o as resolveSessionRunStore, t as createSessionRunRecorder } from "./recorder-Ca_njjjH.js";
29
- import "./pi-embedded-helpers-BAjtRn7m.js";
30
- import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-CQwpubTx.js";
29
+ import "./pi-embedded-helpers-C9XqX-Jq.js";
30
+ import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-BpdiWabc.js";
31
31
  import { i as listCoreToolSections, n as PROFILE_OPTIONS, o as resolveCoreToolProfiles } from "./tool-catalog-BWgva5h1.js";
32
32
  import { i as resolveRelayAuthTokenForPort, n as resolveGatewayRelayToken } from "./extension-relay-auth-DD-U9VUc.js";
33
33
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-BrZL_MiW.js";
@@ -35,7 +35,7 @@ import { t as safeEqualSecret } from "./secret-equal-CQn9WoXt.js";
35
35
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-BSKE3pk_.js";
36
36
  import { c as normalizeHostHeader, d as resolveGatewayBindHost, f as resolveGatewayListenHosts, i as isLoopbackHost, l as pickPrimaryLanIPv4, n as isLocalishHost, o as isTrustedProxyAddress, r as isLoopbackAddress, s as isValidIPv4, t as rawDataToString, u as resolveClientIp } from "./ws-DESjYW7M.js";
37
37
  import { a as isDirectLoopbackProvenance, c as AUTH_RATE_LIMIT_SCOPE_BROWSER_EXTENSION, d as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, f as createAuthRateLimiter, i as captureTransportProvenance, l as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, n as authorizeHttpGatewayConnect, o as isLocalDirectRequest, p as normalizeRateLimitClientIp, r as authorizeWsControlUiGatewayConnect, s as resolveGatewayAuth, t as assertGatewayAuthConfigured, u as AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH } from "./auth-Cx-Q9zgv.js";
38
- import { o as ensureGatewayStartupAuth, s as mergeGatewayTailscaleConfig } from "./server-context-BUX61Gwl.js";
38
+ import { o as ensureGatewayStartupAuth, s as mergeGatewayTailscaleConfig } from "./server-context-BEjWhzMi.js";
39
39
  import { d as hasBinary } from "./frontmatter-Dn2qUSOb.js";
40
40
  import { i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-D3kpiNaJ.js";
41
41
  import { n as assertNoPathAliasEscape } from "./path-alias-guards-CHFrrzxZ.js";
@@ -53,12 +53,12 @@ import "./server-middleware-CrJMxxfQ.js";
53
53
  import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-NawgaQgc.js";
54
54
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-B8M4IWrd.js";
55
55
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-B6PaaeVv.js";
56
- import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-1SSQaGSz.js";
56
+ import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-CpZZ4mMw.js";
57
57
  import { f as getGlobalHookRunner, h as runGlobalGatewayStopSafely, m as resetGlobalHookRunner, u as buildOutboundSessionContext } from "./outbound-message-hooks-BBtH97ZV.js";
58
- import { A as setActiveRunProbe, M as stopDiagnosticHeartbeat, j as startDiagnosticHeartbeat, k as resolveStuckSessionWarnMs, t as clearActiveRunProbe } from "./diagnostic-lG00b_zg.js";
58
+ import { A as setActiveRunProbe, M as stopDiagnosticHeartbeat, j as startDiagnosticHeartbeat, k as resolveStuckSessionWarnMs, t as clearActiveRunProbe } from "./diagnostic-u64kcpDQ.js";
59
59
  import { u as snapshotActiveRuns } from "./diagnostic-session-state-DCr9T3zW.js";
60
- import { a as getActiveTaskCount, c as getTotalQueueSize, d as setCommandLaneConcurrency, f as setGatewayDrainState, l as markGatewayDraining, p as waitForActiveTasks, u as resetAllLanes } from "./command-queue-zXu22yak.js";
61
- import { F as resolveCronStorePath, I as saveCronStore, P as loadCronStore, S as collectTelegramDuplicatePollerDiagnostics } from "./send-l57G-s8y.js";
60
+ import { a as getActiveTaskCount, c as getTotalQueueSize, d as resetAllLanes, f as setCommandLaneConcurrency, m as waitForActiveTasks, p as setGatewayDrainState, u as markGatewayDraining } from "./command-queue-B3_VRNOr.js";
61
+ import { F as resolveCronStorePath, I as saveCronStore, P as loadCronStore, S as collectTelegramDuplicatePollerDiagnostics } from "./send-CZsC4D3G.js";
62
62
  import { n as resolveModel } from "./model-BbeosLtF.js";
63
63
  import "./pi-model-discovery-CZ9wxcE8.js";
64
64
  import "./models-config-BMgEFu57.js";
@@ -67,12 +67,12 @@ import "./exec-safe-bin-runtime-policy-C3eU8CKJ.js";
67
67
  import "./session-consumer-agents-5ORspv9c.js";
68
68
  import { n as loadModelCatalog } from "./model-catalog-Bjfzg68Q.js";
69
69
  import "./fetch-ByEEe-Yd.js";
70
- import { D as registerUnhandledRejectionHandler, _ as getProviderDeclaredEnvVars, c as transcribeBufferedPcmWithMediaUnderstanding, f as resolveModelEntries, n as buildProviderRegistry, u as resolveCapabilityConfig, v as listAutoDetectableProviders, y as normalizeMediaProviderId } from "./audio-transcription-runner-CJ8YdMv-.js";
70
+ import { D as registerUnhandledRejectionHandler, _ as getProviderDeclaredEnvVars, c as transcribeBufferedPcmWithMediaUnderstanding, f as resolveModelEntries, n as buildProviderRegistry, u as resolveCapabilityConfig, v as listAutoDetectableProviders, y as normalizeMediaProviderId } from "./audio-transcription-runner-Gr8vN3AS.js";
71
71
  import { t as fetchWithSsrFGuard } from "./fetch-guard-BzXFjlMV.js";
72
72
  import "./proxy-fetch-BqVhGKFd.js";
73
73
  import "./api-key-rotation-DiMQTef3.js";
74
- import "./provider-image-D9B_J5Ys.js";
75
- import { h as extractTextFromChatContent } from "./pi-embedded-utils-CT_f_S3Y.js";
74
+ import "./provider-image-Bsivqxw8.js";
75
+ import { h as extractTextFromChatContent } from "./pi-embedded-utils-BV_Dtzrw.js";
76
76
  import "./tool-display-DiZGbhL2.js";
77
77
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-DFNB1c7t.js";
78
78
  import "./chunk-DiXpyRAz.js";
@@ -82,11 +82,11 @@ import "./render-BBWKrfmg.js";
82
82
  import { r as isRestartEnabled } from "./commands-Csxgimkc.js";
83
83
  import "./commands-registry-Dx5QvNqH.js";
84
84
  import "./registry-DXmhuMNN.js";
85
- import { $ as validateNodeListParams, $t as validateTalkSessionCreateParams, A as validateCronRunParams, B as validateExecApprovalRequestParams, Bn as verifyDeviceToken, Bt as validateTalkConfigParams, C as validateConfigPatchParams, Cn as normalizeDeviceMetadataForAuth, D as validateCronAddParams, Dn as consumeDeviceBootstrapToken, E as validateConnectParams, En as approveDevicePairing, F as validateDevicePairListParams, Fn as revokeDeviceToken, Ft as validateSkillsBinsParams, G as validateExecApprovalsSetParams, Gt as validateTalkRealtimeSessionParams, H as validateExecApprovalsGetParams, Ht as validateTalkRealtimeAudioParams, I as validateDevicePairRejectParams, In as rotateDeviceToken, It as validateSkillsInstallParams, J as validateModelsListParams, Jt as validateTalkRealtimeToolResultParams, K as validateLogsTailParams, Kt as validateTalkRealtimeStatusParams, L as validateDevicePairRemoveParams, Ln as summarizeDeviceTokens, Lt as validateSkillsStatusParams, M as validateCronStatusParams, Mn as rejectDevicePairing, N as validateCronUpdateParams, Nn as removePairedDevice, Nt as validateSessionsTitlePrepareParams, O as validateCronListParams, On as ensureDeviceToken, P as validateDevicePairApproveParams, Pn as requestDevicePairing, Pt as validateSessionsUsageParams, Q as validateNodeInvokeResultParams, Qt as validateTalkSessionCloseParams, R as validateDeviceTokenRevokeParams, Rn as updatePairedDeviceMetadata, Rt as validateSkillsUpdateParams, S as validateConfigGetParams, Sn as buildDeviceAuthPayloadV3, T as validateConfigSetParams, Tn as approveBootstrapDevicePairing, U as validateExecApprovalsNodeGetParams, Un as operatorScopeSatisfied, Ut as validateTalkRealtimeBargeInParams, V as validateExecApprovalResolveParams, Vt as validateTalkModeParams, W as validateExecApprovalsNodeSetParams, Wn as roleScopesAllow, Wt as validateTalkRealtimeMarkParams, X as validateNodeEventParams, Xn as verifyDeviceSignature, Xt as validateTalkSessionBargeInParams, Y as validateNodeDescribeParams, Yn as normalizeDevicePublicKeyBase64Url, Yt as validateTalkSessionAppendAudioParams, Z as validateNodeInvokeParams, Zt as validateTalkSessionCancelTurnParams, _ as validateChatAbortParams, _n as ErrorCodes, a as validateAgentNudgeParams, an as validateToolsCatalogParams, at as validateNodeRenameParams, b as validateChatSendParams, c as validateAgentsCreateParams, cn as validateWebLoginStartParams, ct as validateRequestFrame, d as validateAgentsFilesListParams, dn as validateWizardNextParams, dt as validateSendParams, en as validateTalkSessionMarkParams, et as validateNodePairApproveParams, f as validateAgentsFilesSetParams, fn as validateWizardStartParams, ft as validateSessionsAbortParams, g as validateChannelsStatusParams, h as validateChannelsLogoutParams, hn as RUNS_INVALIDATED_EVENT, i as validateAgentIdentityParams, in as validateTasksRunsListParams, it as validateNodePairVerifyParams, j as validateCronRunsParams, jn as listDevicePairing, jt as validateSessionsSteerParams, k as validateCronRemoveParams, kn as getPairedDevice, l as validateAgentsDeleteParams, ln as validateWebLoginWaitParams, lt as validateSecretsResolveParams, m as validateAgentsUpdateParams, mn as PROTOCOL_VERSION, nn as validateTasksRunsEventsParams, nt as validateNodePairRejectParams, o as validateAgentParams, on as validateUpdateRunParams, ot as validatePollParams, p as validateAgentsListParams, pn as validateWizardStatusParams, q as validateModelsAuthStatusParams, qn as deriveDeviceIdFromPublicKey, qt as validateTalkRealtimeStopParams, r as formatValidationErrors, rn as validateTasksRunsGetParams, rt as validateNodePairRequestParams, s as validateAgentWaitParams, sn as validateWakeParams, st as validatePushTestParams, tn as validateTasksRunEventsParams, tt as validateNodePairListParams, u as validateAgentsFilesGetParams, un as validateWizardCancelParams, ut as validateSecretsResolveResult, v as validateChatHistoryParams, vn as errorShape, w as validateConfigSchemaParams, x as validateConfigApplyParams, xn as buildDeviceAuthPayload, y as validateChatInjectParams, z as validateDeviceTokenRotateParams, zn as verifyDeviceBootstrapToken, zt as validateTalkCatalogParams } from "./client-BMkNNUux.js";
86
- import { _ as hasNarrowSessionScope, d as APPROVALS_SCOPE, f as PAIRING_SCOPE, g as authorizeOperatorScopesForMethod, h as WRITE_SCOPE, m as SESSION_READ_SCOPE, n as callGateway, p as READ_SCOPE, u as ADMIN_SCOPE$1, v as isHealthProbeAllowedForScopes, x as loadGatewayTlsRuntime$1, y as isNodeRoleMethod } from "./call-BIVg1gmJ.js";
85
+ import { $ as validateNodeListParams, $t as validateTalkSessionCreateParams, A as validateCronRunParams, B as validateExecApprovalRequestParams, Bn as verifyDeviceToken, Bt as validateTalkConfigParams, C as validateConfigPatchParams, Cn as normalizeDeviceMetadataForAuth, D as validateCronAddParams, Dn as consumeDeviceBootstrapToken, E as validateConnectParams, En as approveDevicePairing, F as validateDevicePairListParams, Fn as revokeDeviceToken, Ft as validateSkillsBinsParams, G as validateExecApprovalsSetParams, Gt as validateTalkRealtimeSessionParams, H as validateExecApprovalsGetParams, Ht as validateTalkRealtimeAudioParams, I as validateDevicePairRejectParams, In as rotateDeviceToken, It as validateSkillsInstallParams, J as validateModelsListParams, Jt as validateTalkRealtimeToolResultParams, K as validateLogsTailParams, Kt as validateTalkRealtimeStatusParams, L as validateDevicePairRemoveParams, Ln as summarizeDeviceTokens, Lt as validateSkillsStatusParams, M as validateCronStatusParams, Mn as rejectDevicePairing, N as validateCronUpdateParams, Nn as removePairedDevice, Nt as validateSessionsTitlePrepareParams, O as validateCronListParams, On as ensureDeviceToken, P as validateDevicePairApproveParams, Pn as requestDevicePairing, Pt as validateSessionsUsageParams, Q as validateNodeInvokeResultParams, Qt as validateTalkSessionCloseParams, R as validateDeviceTokenRevokeParams, Rn as updatePairedDeviceMetadata, Rt as validateSkillsUpdateParams, S as validateConfigGetParams, Sn as buildDeviceAuthPayloadV3, T as validateConfigSetParams, Tn as approveBootstrapDevicePairing, U as validateExecApprovalsNodeGetParams, Un as operatorScopeSatisfied, Ut as validateTalkRealtimeBargeInParams, V as validateExecApprovalResolveParams, Vt as validateTalkModeParams, W as validateExecApprovalsNodeSetParams, Wn as roleScopesAllow, Wt as validateTalkRealtimeMarkParams, X as validateNodeEventParams, Xn as verifyDeviceSignature, Xt as validateTalkSessionBargeInParams, Y as validateNodeDescribeParams, Yn as normalizeDevicePublicKeyBase64Url, Yt as validateTalkSessionAppendAudioParams, Z as validateNodeInvokeParams, Zt as validateTalkSessionCancelTurnParams, _ as validateChatAbortParams, _n as ErrorCodes, a as validateAgentNudgeParams, an as validateToolsCatalogParams, at as validateNodeRenameParams, b as validateChatSendParams, c as validateAgentsCreateParams, cn as validateWebLoginStartParams, ct as validateRequestFrame, d as validateAgentsFilesListParams, dn as validateWizardNextParams, dt as validateSendParams, en as validateTalkSessionMarkParams, et as validateNodePairApproveParams, f as validateAgentsFilesSetParams, fn as validateWizardStartParams, ft as validateSessionsAbortParams, g as validateChannelsStatusParams, h as validateChannelsLogoutParams, hn as RUNS_INVALIDATED_EVENT, i as validateAgentIdentityParams, in as validateTasksRunsListParams, it as validateNodePairVerifyParams, j as validateCronRunsParams, jn as listDevicePairing, jt as validateSessionsSteerParams, k as validateCronRemoveParams, kn as getPairedDevice, l as validateAgentsDeleteParams, ln as validateWebLoginWaitParams, lt as validateSecretsResolveParams, m as validateAgentsUpdateParams, mn as PROTOCOL_VERSION, nn as validateTasksRunsEventsParams, nt as validateNodePairRejectParams, o as validateAgentParams, on as validateUpdateRunParams, ot as validatePollParams, p as validateAgentsListParams, pn as validateWizardStatusParams, q as validateModelsAuthStatusParams, qn as deriveDeviceIdFromPublicKey, qt as validateTalkRealtimeStopParams, r as formatValidationErrors, rn as validateTasksRunsGetParams, rt as validateNodePairRequestParams, s as validateAgentWaitParams, sn as validateWakeParams, st as validatePushTestParams, tn as validateTasksRunEventsParams, tt as validateNodePairListParams, u as validateAgentsFilesGetParams, un as validateWizardCancelParams, ut as validateSecretsResolveResult, v as validateChatHistoryParams, vn as errorShape, w as validateConfigSchemaParams, x as validateConfigApplyParams, xn as buildDeviceAuthPayload, y as validateChatInjectParams, z as validateDeviceTokenRotateParams, zn as verifyDeviceBootstrapToken, zt as validateTalkCatalogParams } from "./client-DN-SMVBn.js";
86
+ import { _ as hasNarrowSessionScope, d as APPROVALS_SCOPE, f as PAIRING_SCOPE, g as authorizeOperatorScopesForMethod, h as WRITE_SCOPE, m as SESSION_READ_SCOPE, n as callGateway, p as READ_SCOPE, u as ADMIN_SCOPE$1, v as isHealthProbeAllowedForScopes, x as loadGatewayTlsRuntime$1, y as isNodeRoleMethod } from "./call-PE59cW0J.js";
87
87
  import "./pairing-token-BfRB0jVM.js";
88
- import { D as onAgentEvent, E as getAgentRunContext, O as registerAgentRunContext, T as emitAgentEvent, a as getActiveEmbeddedRunCount, c as isEmbeddedPiRunInFlight, d as isInFlightVoiceAttempt, f as peekActiveEmbeddedRun, g as waitForEmbeddedPiRunEnd, l as isEmbeddedPiRunSteerable, o as getActiveEmbeddedRunOwner, r as clearActiveEmbeddedRun, s as isEmbeddedPiRunActive, t as abortEmbeddedPiRun, w as clearAgentRunContext } from "./runs-BMp7jOLL.js";
89
- import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-Aw7d03gL.js";
88
+ import { D as onAgentEvent, E as getAgentRunContext, O as registerAgentRunContext, T as emitAgentEvent, a as getActiveEmbeddedRunCount, c as isEmbeddedPiRunInFlight, d as isInFlightVoiceAttempt, f as peekActiveEmbeddedRun, g as waitForEmbeddedPiRunEnd, l as isEmbeddedPiRunSteerable, o as getActiveEmbeddedRunOwner, r as clearActiveEmbeddedRun, s as isEmbeddedPiRunActive, t as abortEmbeddedPiRun, w as clearAgentRunContext } from "./runs-BjLs5ozo.js";
89
+ import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BLp1Q7uO.js";
90
90
  import "./user-run-recording-DXNyfjMq.js";
91
91
  import "./fetch--Fn4tlfW.js";
92
92
  import { a as readChannelAllowFromStoreSync } from "./pairing-store-BZFrD-fJ.js";
@@ -100,10 +100,10 @@ import { a as buildBaseHints, i as applySensitiveHints, n as redactConfigSnapsho
100
100
  import { i as normalizePollInput, t as getChannelActivity } from "./channel-activity-SqK9nKf7.js";
101
101
  import "./tables-CCEXTXTG.js";
102
102
  import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-BTDAzt-T.js";
103
- import "./server-lifecycle-DXRap2AR.js";
103
+ import "./server-lifecycle-C3hCCbXm.js";
104
104
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CT5G1TCV.js";
105
105
  import { a as normalizeHttpWebhookUrl, l as normalizeOptionalText, o as inferLegacyName } from "./heartbeat-tick-By0WI8YD.js";
106
- import { d as resolveGroupToolPolicy, f as resolveSubagentToolPolicy, u as resolveEffectiveToolPolicy } from "./dm-policy-shared-BJNH9gNN.js";
106
+ import { d as resolveGroupToolPolicy, f as resolveSubagentToolPolicy, u as resolveEffectiveToolPolicy } from "./dm-policy-shared-CV1uWhMc.js";
107
107
  import "./reply-directives-Bc2RQAcJ.js";
108
108
  import { n as resolveMessageChannelSelection } from "./channel-selection-DfNPCJXK.js";
109
109
  import { i as applyPluginAutoEnable, n as collectUnsafeTelegramPollingTimeouts, s as buildChannelUiCatalog } from "./polling-timeout-DoMlNx_D.js";
@@ -115,12 +115,12 @@ import "./resolve-route-KBL5oj6U.js";
115
115
  import "./proxy-Ba9wFNmC.js";
116
116
  import "./replies-BNP-F_lm.js";
117
117
  import { n as GATEWAY_AUTH_SURFACE_PATHS, p as isKnownSecretTargetId, r as evaluateGatewayAuthSurfaceStates } from "./runtime-config-collectors-BVWO6FhK.js";
118
- import "./command-secret-targets-B54n8F_3.js";
119
- import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-BgbRKH4z.js";
118
+ import "./command-secret-targets-CJ1czw_Q.js";
119
+ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-DNbkQX5v.js";
120
120
  import "./prompt-style-XoPngT10.js";
121
121
  import "./pairing-labels-DYgJqxe0.js";
122
122
  import "./session-meta-Bd0mS7MT.js";
123
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-D_89Y9nb.js";
123
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-DVqLwNhN.js";
124
124
  import { r as resolveMemorySearchConfig } from "./manager-PSj0t5kg.js";
125
125
  import "./query-expansion-BydaUlRH.js";
126
126
  import { t as formatDocsLink } from "./links-BZDTcdHU.js";
@@ -135,16 +135,16 @@ import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-C2gmG0PE.
135
135
  import { n as inheritOptionFromParent } from "./command-options-vZSwrzpA.js";
136
136
  import { t as WizardCancelledError } from "./prompts-BBkof-cQ.js";
137
137
  import { t as resolveChannelDefaultAccountId } from "./helpers-GPI9o9AS.js";
138
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DAh5Ah1J.js";
138
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-96ueVlOH.js";
139
139
  import { t as isWithinDir } from "./path-safety-CCSB65fm.js";
140
140
  import "./install-safe-path-4YfMRsxN.js";
141
- import "./npm-pack-install-B-cOWuiF.js";
141
+ import "./npm-pack-install-Dlm0MIZy.js";
142
142
  import "./skill-scanner-BrEkff8K.js";
143
- import "./installs-Du8n8Do9.js";
143
+ import "./installs-4lGALZOo.js";
144
144
  import { n as formatConfigIssueLines } from "./issue-format-BG8o87sf.js";
145
145
  import { t as buildChannelAccountSnapshot } from "./status-yrDGXYZM.js";
146
146
  import "./channels-status-issues-B4p6AXBG.js";
147
- import { i as resolveGatewayClientProfile, t as WEB_CLIENT_ALLOWED_ORIGINS_CONFIG_KEY } from "./client-profiles-DP8BWND2.js";
147
+ import { i as resolveGatewayClientProfile, t as WEB_CLIENT_ALLOWED_ORIGINS_CONFIG_KEY } from "./client-profiles-DEoACLX5.js";
148
148
  import "./daemon-install-helpers-CKbnFsNZ.js";
149
149
  import "./runtime-guard-DchtXvGj.js";
150
150
  import "./service-Dkcqg-rd.js";
@@ -152,37 +152,37 @@ import "./systemd-BJqlwupF.js";
152
152
  import "./lifecycle-core-CuMY0U_8.js";
153
153
  import "./systemd-hints-Cp0IfOPD.js";
154
154
  import { t as parsePort$1 } from "./parse-port-CshWaSQ9.js";
155
- import { n as addGatewayServiceCommands } from "./daemon-cli-CiPY543O.js";
155
+ import { n as addGatewayServiceCommands } from "./daemon-cli-D874Hxry.js";
156
156
  import "./diagnostics-C6ntZHc3.js";
157
157
  import "./table-H366JkfJ.js";
158
158
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-B1ALOpPn.js";
159
159
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-Cj18nzyW.js";
160
- import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-UMAK8rQC.js";
160
+ import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-8O6sjQPv.js";
161
161
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-B1GbNHC3.js";
162
- import { a as getStorageV1Snapshot, c as pickGatewaySelfPresence, i as createStorageSupervisor, o as noteStorageReplayResult, r as getStatusSummary, s as noteStorageRestartRequired } from "./status-B3eNMcE3.js";
163
- import { c as redactOwner, d as redactSensitiveHealthSummary, f as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-Cxv6ou16.js";
162
+ import { a as getStorageV1Snapshot, c as pickGatewaySelfPresence, i as createStorageSupervisor, o as noteStorageReplayResult, r as getStatusSummary, s as noteStorageRestartRequired } from "./status-BacPIpt6.js";
163
+ import { c as redactOwner, d as redactSensitiveHealthSummary, f as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-B5jHSu9i.js";
164
164
  import { a as readPostQuiesceTranscriptDelta, i as readBulkTranscriptLines, o as replaySource, r as mergeBulkTranscriptSnapshotAndDelta, t as ReplayRowConflictError } from "./replay-B9P8F4Td.js";
165
165
  import "./session-key-resolution-CvnTXaSw.js";
166
- import { c as waitForStopDrain, l as withTimeout, o as tasksHandlers, r as getTaskOperatorRegistry, s as retryDelayMs, t as DEFAULT_RETENTION_DAYS } from "./task-runlog-retention-cEBecqvb.js";
166
+ import { a as respondTaskRegistryUnavailable, c as tasksHandlers, d as withTimeout, i as resolveTaskOperatorRegistry, l as retryDelayMs, r as getTaskOperatorRegistry, t as DEFAULT_RETENTION_DAYS, u as waitForStopDrain } from "./task-runlog-retention-DCbMK2T8.js";
167
167
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BXkk_vKO.js";
168
168
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-DM1npKXX.js";
169
- import { t as reconcileBundledInstalls } from "./reconcile-bundled-Bl6XpmI5.js";
169
+ import { t as reconcileBundledInstalls } from "./reconcile-bundled-CAKTvY-C.js";
170
170
  import { a as resolveCommandSecretsFromActiveRuntimeSnapshot, i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-ACR3KU8j.js";
171
171
  import "./onboarding.secret-input-YvW1rg1V.js";
172
- import { t as runOnboardingWizard } from "./onboarding-DidWWI3X.js";
172
+ import { t as runOnboardingWizard } from "./onboarding-R2m4j7Dp.js";
173
173
  import { a as computeJobNextRunAtMs, c as findJobOrThrow, d as recomputeNextRuns, f as recomputeNextRunsForMaintenance, h as produceCronAgentTurn, i as applyJobPatch, l as isJobDue, m as resolveJobPayloadTextForMain, o as createJob, p as recordScheduleComputeError, r as resolveStaleClaimAdoptionMs, s as cronShapeSupportsIdentity, t as CRON_HEARTBEAT_ADAPTER_ID, u as nextWakeAtMs } from "./recovery-adapter-CPQ9-014.js";
174
- import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-Bhf8qK68.js";
174
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-BcZzA03X.js";
175
175
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-BzuIKryU.js";
176
- import { a as readChatHistoryPage, c as unsubscribeSessionChanges, i as decodeHistoryCursor, l as assertValidParams, o as resolveDbLeafEntryId, r as InvalidHistoryCursorError, s as resolveDbMessageEntryById, t as sessionsHandlers } from "./sessions-CgVN798h.js";
177
- import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-wwMY6dIH.js";
176
+ import { a as readChatHistoryPage, c as unsubscribeSessionChanges, i as decodeHistoryCursor, l as assertValidParams, o as resolveDbLeafEntryId, r as InvalidHistoryCursorError, s as resolveDbMessageEntryById, t as sessionsHandlers } from "./sessions-DFDrcshi.js";
177
+ import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-C1Fy9dcA.js";
178
178
  import "./node-service-Ys7JZFz-.js";
179
179
  import "./status.update-C4YRQzqD.js";
180
180
  import { i as resolveActiveLogFile, n as readLogSlice } from "./log-tail-Dg2oYTZ6.js";
181
181
  import { t as installSkill } from "./skills-install-B23U6yk5.js";
182
- import { r as runGatewayUpdate } from "./update-runner-18yD5NLo.js";
182
+ import { r as runGatewayUpdate } from "./update-runner-C8NxlRy7.js";
183
183
  import { n as resolveWebClientPackagedRootSync, t as WEB_CLIENT_BUNDLE_MISSING_MESSAGE } from "./web-client-assets-nkeo2cLh.js";
184
184
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-DkkkJ4GX.js";
185
- import { c as heartbeatProbeRunArtifactId, d as runIsolatedHeartbeatProbe, i as HEARTBEAT_PROBE_REASON, l as isHeartbeatProbeError, o as assertHeartbeatProbeDeliveryIsSafe, p as readValidationActivation, r as HEARTBEAT_PROBE_ALLOWED_TARGET, s as assertHeartbeatProbeParamsAreClosed, t as VALIDATION_ABORT_COMMAND, u as probeSessionKey$1 } from "./operator-commands-Ct0WXISe.js";
185
+ import { c as heartbeatProbeRunArtifactId, d as runIsolatedHeartbeatProbe, i as HEARTBEAT_PROBE_REASON, l as isHeartbeatProbeError, o as assertHeartbeatProbeDeliveryIsSafe, p as readValidationActivation, r as HEARTBEAT_PROBE_ALLOWED_TARGET, s as assertHeartbeatProbeParamsAreClosed, t as VALIDATION_ABORT_COMMAND, u as probeSessionKey$1 } from "./operator-commands-BmGo9Ngv.js";
186
186
  import { n as forceFreePortAndWait } from "./ports-BxjQwKMc.js";
187
187
  import { createRequire } from "node:module";
188
188
  import { spawn, spawnSync } from "node:child_process";
@@ -1083,7 +1083,7 @@ function resolveVerificationStore(params = {}) {
1083
1083
 
1084
1084
  //#endregion
1085
1085
  //#region src/infra/exec-approval-forwarder.ts
1086
- const log$29 = createSubsystemLogger("gateway/exec-approvals");
1086
+ const log$30 = createSubsystemLogger("gateway/exec-approvals");
1087
1087
  const DEFAULT_MODE = "session";
1088
1088
  function normalizeMode(mode) {
1089
1089
  return mode ?? DEFAULT_MODE;
@@ -1221,7 +1221,7 @@ async function deliverToTargets(params) {
1221
1221
  payloads: [{ text: params.text }]
1222
1222
  });
1223
1223
  } catch (err) {
1224
- log$29.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1224
+ log$30.error(`exec approvals: failed to deliver to ${channel}:${target.to}: ${String(err)}`);
1225
1225
  }
1226
1226
  });
1227
1227
  await Promise.allSettled(deliveries);
@@ -1310,7 +1310,7 @@ function createExecApprovalForwarder(deps = {}) {
1310
1310
  deliver,
1311
1311
  shouldSend: () => pending.get(request.id) === pendingEntry
1312
1312
  }).catch((err) => {
1313
- log$29.error(`exec approvals: failed to deliver request ${request.id}: ${String(err)}`);
1313
+ log$30.error(`exec approvals: failed to deliver request ${request.id}: ${String(err)}`);
1314
1314
  });
1315
1315
  return true;
1316
1316
  };
@@ -1682,7 +1682,7 @@ function scheduleGatewayUpdateCheck(params) {
1682
1682
 
1683
1683
  //#endregion
1684
1684
  //#region src/sessions/session-runs/restart-transitions.ts
1685
- const log$28 = createSubsystemLogger("sessions/restart-transitions");
1685
+ const log$29 = createSubsystemLogger("sessions/restart-transitions");
1686
1686
  async function transition(input, recoveryEnabled) {
1687
1687
  const store = input.store ?? getConfiguredSessionStorageRuntime()?.runtime?.runs;
1688
1688
  if (!store) return [];
@@ -1693,14 +1693,14 @@ async function transition(input, recoveryEnabled) {
1693
1693
  recoveryReason: input.reason,
1694
1694
  recoveryEnabled
1695
1695
  });
1696
- if (transitioned.length > 0) log$28.info("transitioned active runs for restart", {
1696
+ if (transitioned.length > 0) log$29.info("transitioned active runs for restart", {
1697
1697
  count: transitioned.length,
1698
1698
  recoveryEnabled,
1699
1699
  reason: input.reason
1700
1700
  });
1701
1701
  return transitioned;
1702
1702
  } catch (err) {
1703
- log$28.warn("failed to transition active runs for restart", {
1703
+ log$29.warn("failed to transition active runs for restart", {
1704
1704
  recoveryEnabled,
1705
1705
  error: String(err)
1706
1706
  });
@@ -1769,7 +1769,7 @@ function resolveChannelRestartReason(snapshot, evaluation) {
1769
1769
 
1770
1770
  //#endregion
1771
1771
  //#region src/gateway/channel-health-monitor.ts
1772
- const log$27 = createSubsystemLogger("gateway/health-monitor");
1772
+ const log$28 = createSubsystemLogger("gateway/health-monitor");
1773
1773
  const DEFAULT_CHECK_INTERVAL_MS = 5 * 6e4;
1774
1774
  const DEFAULT_MONITOR_STARTUP_GRACE_MS = 6e4;
1775
1775
  const DEFAULT_COOLDOWN_CYCLES = 2;
@@ -1829,11 +1829,11 @@ function startChannelHealthMonitor(deps) {
1829
1829
  if (now - record.lastRestartAt <= cooldownMs) continue;
1830
1830
  pruneOldRestarts(record, now);
1831
1831
  if (record.restartsThisHour.length >= maxRestartsPerHour) {
1832
- log$27.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
1832
+ log$28.warn?.(`[${channelId}:${accountId}] health-monitor: hit ${maxRestartsPerHour} restarts/hour limit, skipping`);
1833
1833
  continue;
1834
1834
  }
1835
1835
  const reason = resolveChannelRestartReason(status, health);
1836
- log$27.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
1836
+ log$28.info?.(`[${channelId}:${accountId}] health-monitor: restarting (reason: ${reason})`);
1837
1837
  try {
1838
1838
  if (status.running) await channelManager.stopChannel(channelId, accountId);
1839
1839
  channelManager.resetRestartAttempts(channelId, accountId);
@@ -1842,7 +1842,7 @@ function startChannelHealthMonitor(deps) {
1842
1842
  record.restartsThisHour.push({ at: now });
1843
1843
  restartRecords.set(key, record);
1844
1844
  } catch (err) {
1845
- log$27.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
1845
+ log$28.error?.(`[${channelId}:${accountId}] health-monitor: restart failed: ${String(err)}`);
1846
1846
  }
1847
1847
  }
1848
1848
  }
@@ -1862,7 +1862,7 @@ function startChannelHealthMonitor(deps) {
1862
1862
  abortSignal?.addEventListener("abort", stop, { once: true });
1863
1863
  timer = setInterval(() => void runCheck(), checkIntervalMs);
1864
1864
  if (typeof timer === "object" && "unref" in timer) timer.unref();
1865
- log$27.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, startup-grace: ${Math.round(timing.monitorStartupGraceMs / 1e3)}s, channel-connect-grace: ${Math.round(timing.channelConnectGraceMs / 1e3)}s)`);
1865
+ log$28.info?.(`started (interval: ${Math.round(checkIntervalMs / 1e3)}s, startup-grace: ${Math.round(timing.monitorStartupGraceMs / 1e3)}s, channel-connect-grace: ${Math.round(timing.channelConnectGraceMs / 1e3)}s)`);
1866
1866
  }
1867
1867
  return { stop };
1868
1868
  }
@@ -3068,10 +3068,10 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3068
3068
  const { getConfiguredSessionStorageRuntime } = await import("./config-BPACL-n5.js").then((n) => n.Hn);
3069
3069
  const runtime = getConfiguredSessionStorageRuntime()?.runtime;
3070
3070
  const gatewayInstanceId = getGatewayInstanceId();
3071
- const { tryGetAgentTurnRuntime } = await import("./agent-turn-runner-C1u8sVfA.js").then((n) => n.t);
3071
+ const { tryGetAgentTurnRuntime } = await import("./agent-turn-runner-DoHGgNPh.js").then((n) => n.t);
3072
3072
  const backbone = tryGetAgentTurnRuntime()?.backbone;
3073
3073
  const { createOutboundDeliveryRecoveryAdapter } = await import("./delivery-recovery-adapter-Bj3mCcg9.js");
3074
- const { deliverOutboundPayloads } = await import("./deliver-Aw7d03gL.js").then((n) => n.n);
3074
+ const { deliverOutboundPayloads } = await import("./deliver-BLp1Q7uO.js").then((n) => n.n);
3075
3075
  adapters.push(createOutboundDeliveryRecoveryAdapter({
3076
3076
  cfg,
3077
3077
  deliver: deliverOutboundPayloads,
@@ -3085,7 +3085,7 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3085
3085
  sessionRuns = void 0;
3086
3086
  }
3087
3087
  if (sessionRuns && wiring?.agentTurnStager) {
3088
- const { createSessionRunRecoveryAdapter } = await import("./recovery-adapter-mi8jbyvy.js");
3088
+ const { createSessionRunRecoveryAdapter } = await import("./recovery-adapter-okaOo6tO.js");
3089
3089
  adapters.push(createSessionRunRecoveryAdapter({
3090
3090
  store: sessionRuns,
3091
3091
  cfg,
@@ -3101,7 +3101,7 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3101
3101
  lease: wiring?.lease ? () => wiring.lease?.() ?? { isArmed: () => false } : void 0
3102
3102
  }));
3103
3103
  if (backbone && wiring?.agentTurnStager) {
3104
- const { createAgentTurnRecoveryAdapter } = await import("./agent-turn-recovery-adapter-CdLD3DuI.js");
3104
+ const { createAgentTurnRecoveryAdapter } = await import("./agent-turn-recovery-adapter-Dw5-XbMI.js");
3105
3105
  adapters.push(createAgentTurnRecoveryAdapter({
3106
3106
  backbone,
3107
3107
  stager: wiring.agentTurnStager
@@ -3123,7 +3123,7 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3123
3123
  }));
3124
3124
  }
3125
3125
  if (sessionRuns) {
3126
- const { createEmbeddedPiRecoveryAdapter } = await import("./pi-embedded-recovery-adapter-Cs1EJElw.js");
3126
+ const { createEmbeddedPiRecoveryAdapter } = await import("./pi-embedded-recovery-adapter-8xq2SINa.js");
3127
3127
  adapters.push(createEmbeddedPiRecoveryAdapter({
3128
3128
  sessionRuns,
3129
3129
  cfg,
@@ -3131,7 +3131,7 @@ async function assembleFirstPartyAdapters(cfg, wiring) {
3131
3131
  stager: wiring?.agentTurnStager,
3132
3132
  isRunActive: isEmbeddedPiRunActive
3133
3133
  }));
3134
- const { createAcpRuntimeRecoveryAdapter } = await import("./recovery-adapter-DOizlZvv.js");
3134
+ const { createAcpRuntimeRecoveryAdapter } = await import("./recovery-adapter-Df87xZQp.js");
3135
3135
  adapters.push(createAcpRuntimeRecoveryAdapter({ sessionRuns }));
3136
3136
  }
3137
3137
  if (backbone) {
@@ -3772,7 +3772,7 @@ function createChannelManager(opts) {
3772
3772
 
3773
3773
  //#endregion
3774
3774
  //#region src/gateway/server-chat.ts
3775
- const log$26 = createSubsystemLogger("gateway/chat-final");
3775
+ const log$27 = createSubsystemLogger("gateway/chat-final");
3776
3776
  const CHAT_TERMINAL_DURABILITY_TIMEOUT_MS = 5e3;
3777
3777
  function resolveHeartbeatAckMaxChars$1() {
3778
3778
  try {
@@ -4014,14 +4014,14 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
4014
4014
  const pending = pendingTerminalBySession.get(sessionKey);
4015
4015
  const durability = waitForPendingWrites(writes, CHAT_TERMINAL_DURABILITY_TIMEOUT_MS);
4016
4016
  const gate = (pending ?? Promise.resolve()).then(() => durability).then((outcome) => {
4017
- if (outcome === "timeout") log$26.warn("chat terminal broadcast before transcript durability (timeout)", {
4017
+ if (outcome === "timeout") log$27.warn("chat terminal broadcast before transcript durability (timeout)", {
4018
4018
  runId: sourceRunId,
4019
4019
  sessionKey,
4020
4020
  timeoutMs: CHAT_TERMINAL_DURABILITY_TIMEOUT_MS
4021
4021
  });
4022
4022
  sendChatTerminal(sessionKey, payload);
4023
4023
  }).catch((err) => {
4024
- log$26.warn("chat terminal broadcast failed while waiting for transcript durability", {
4024
+ log$27.warn("chat terminal broadcast failed while waiting for transcript durability", {
4025
4025
  runId: sourceRunId,
4026
4026
  sessionKey,
4027
4027
  err
@@ -4128,7 +4128,7 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
4128
4128
  * Automatically starts `gog gmail watch serve` when the gateway starts,
4129
4129
  * if hooks.gmail is configured with an account.
4130
4130
  */
4131
- const log$25 = createSubsystemLogger("gmail-watcher");
4131
+ const log$26 = createSubsystemLogger("gmail-watcher");
4132
4132
  const ADDRESS_IN_USE_RE = /address already in use|EADDRINUSE/i;
4133
4133
  function isAddressInUseError(line) {
4134
4134
  return ADDRESS_IN_USE_RE.test(line);
@@ -4152,13 +4152,13 @@ async function startGmailWatch(cfg) {
4152
4152
  const result = await runCommandWithTimeout(args, { timeoutMs: 12e4 });
4153
4153
  if (result.code !== 0) {
4154
4154
  const message = result.stderr || result.stdout || "gog watch start failed";
4155
- log$25.error(`watch start failed: ${message}`);
4155
+ log$26.error(`watch start failed: ${message}`);
4156
4156
  return false;
4157
4157
  }
4158
- log$25.info(`watch started for ${cfg.account}`);
4158
+ log$26.info(`watch started for ${cfg.account}`);
4159
4159
  return true;
4160
4160
  } catch (err) {
4161
- log$25.error(`watch start error: ${String(err)}`);
4161
+ log$26.error(`watch start error: ${String(err)}`);
4162
4162
  return false;
4163
4163
  }
4164
4164
  }
@@ -4167,7 +4167,7 @@ async function startGmailWatch(cfg) {
4167
4167
  */
4168
4168
  function spawnGogServe(cfg) {
4169
4169
  const args = buildGogWatchServeArgs(cfg);
4170
- log$25.info(`starting gog ${args.join(" ")}`);
4170
+ log$26.info(`starting gog ${args.join(" ")}`);
4171
4171
  let addressInUse = false;
4172
4172
  const child = spawn("gog", args, {
4173
4173
  stdio: [
@@ -4179,25 +4179,25 @@ function spawnGogServe(cfg) {
4179
4179
  });
4180
4180
  child.stdout?.on("data", (data) => {
4181
4181
  const line = data.toString().trim();
4182
- if (line) log$25.info(`[gog] ${line}`);
4182
+ if (line) log$26.info(`[gog] ${line}`);
4183
4183
  });
4184
4184
  child.stderr?.on("data", (data) => {
4185
4185
  const line = data.toString().trim();
4186
4186
  if (!line) return;
4187
4187
  if (isAddressInUseError(line)) addressInUse = true;
4188
- log$25.warn(`[gog] ${line}`);
4188
+ log$26.warn(`[gog] ${line}`);
4189
4189
  });
4190
4190
  child.on("error", (err) => {
4191
- log$25.error(`gog process error: ${String(err)}`);
4191
+ log$26.error(`gog process error: ${String(err)}`);
4192
4192
  });
4193
4193
  child.on("exit", (code, signal) => {
4194
4194
  if (shuttingDown) return;
4195
4195
  if (addressInUse) {
4196
- log$25.warn("gog serve failed to bind (address already in use); stopping restarts. Another watcher is likely running. Set OPENCLAW_SKIP_GMAIL_WATCHER=1 or stop the other process.");
4196
+ log$26.warn("gog serve failed to bind (address already in use); stopping restarts. Another watcher is likely running. Set OPENCLAW_SKIP_GMAIL_WATCHER=1 or stop the other process.");
4197
4197
  watcherProcess = null;
4198
4198
  return;
4199
4199
  }
4200
- log$25.warn(`gog exited (code=${code}, signal=${signal}); restarting in 5s`);
4200
+ log$26.warn(`gog exited (code=${code}, signal=${signal}); restarting in 5s`);
4201
4201
  watcherProcess = null;
4202
4202
  setTimeout(() => {
4203
4203
  if (shuttingDown || !currentConfig) return;
@@ -4237,15 +4237,15 @@ async function startGmailWatcher(cfg) {
4237
4237
  port: runtimeConfig.serve.port,
4238
4238
  target: runtimeConfig.tailscale.target
4239
4239
  });
4240
- log$25.info(`tailscale ${runtimeConfig.tailscale.mode} configured for port ${runtimeConfig.serve.port}`);
4240
+ log$26.info(`tailscale ${runtimeConfig.tailscale.mode} configured for port ${runtimeConfig.serve.port}`);
4241
4241
  } catch (err) {
4242
- log$25.error(`tailscale setup failed: ${String(err)}`);
4242
+ log$26.error(`tailscale setup failed: ${String(err)}`);
4243
4243
  return {
4244
4244
  started: false,
4245
4245
  reason: `tailscale setup failed: ${String(err)}`
4246
4246
  };
4247
4247
  }
4248
- if (!await startGmailWatch(runtimeConfig)) log$25.warn("gmail watch start failed, but continuing with serve");
4248
+ if (!await startGmailWatch(runtimeConfig)) log$26.warn("gmail watch start failed, but continuing with serve");
4249
4249
  shuttingDown = false;
4250
4250
  watcherProcess = spawnGogServe(runtimeConfig);
4251
4251
  const renewMs = runtimeConfig.renewEveryMinutes * 6e4;
@@ -4253,7 +4253,7 @@ async function startGmailWatcher(cfg) {
4253
4253
  if (shuttingDown) return;
4254
4254
  startGmailWatch(runtimeConfig);
4255
4255
  }, renewMs);
4256
- log$25.info(`gmail watcher started for ${runtimeConfig.account} (renew every ${runtimeConfig.renewEveryMinutes}m)`);
4256
+ log$26.info(`gmail watcher started for ${runtimeConfig.account} (renew every ${runtimeConfig.renewEveryMinutes}m)`);
4257
4257
  return { started: true };
4258
4258
  }
4259
4259
  /**
@@ -4266,7 +4266,7 @@ async function stopGmailWatcher() {
4266
4266
  renewInterval = null;
4267
4267
  }
4268
4268
  if (watcherProcess) {
4269
- log$25.info("stopping gmail watcher");
4269
+ log$26.info("stopping gmail watcher");
4270
4270
  watcherProcess.kill("SIGTERM");
4271
4271
  await new Promise((resolve) => {
4272
4272
  const timeout = setTimeout(() => {
@@ -4281,7 +4281,7 @@ async function stopGmailWatcher() {
4281
4281
  watcherProcess = null;
4282
4282
  }
4283
4283
  currentConfig = null;
4284
- log$25.info("gmail watcher stopped");
4284
+ log$26.info("gmail watcher stopped");
4285
4285
  }
4286
4286
 
4287
4287
  //#endregion
@@ -5657,7 +5657,7 @@ async function runCronIsolatedAgentTurn(params) {
5657
5657
 
5658
5658
  //#endregion
5659
5659
  //#region src/cron/run-log.ts
5660
- const log$24 = createSubsystemLogger("cron/run-log");
5660
+ const log$25 = createSubsystemLogger("cron/run-log");
5661
5661
  function assertSafeCronRunLogJobId(jobId) {
5662
5662
  const trimmed = jobId.trim();
5663
5663
  if (!trimmed) throw new Error("invalid cron run log job id");
@@ -5699,7 +5699,7 @@ async function pruneIfNeeded(filePath, opts) {
5699
5699
  const stat = await fs$1.stat(filePath).catch(() => null);
5700
5700
  if (!stat || stat.size <= opts.maxBytes) return;
5701
5701
  const raw = await fs$1.readFile(filePath, "utf-8").catch((err) => {
5702
- log$24.warn("cron run-log: prune skipped (read failed)", {
5702
+ log$25.warn("cron run-log: prune skipped (read failed)", {
5703
5703
  filePath,
5704
5704
  err: String(err)
5705
5705
  });
@@ -11742,9 +11742,6 @@ const VOICE_INTERRUPTED_MARKER = " [interrupted]";
11742
11742
  const CHAT_HISTORY_TEXT_MAX_CHARS = 12e3;
11743
11743
  const CHAT_HISTORY_MAX_SINGLE_MESSAGE_BYTES = 128 * 1024;
11744
11744
  const CHAT_HISTORY_OVERSIZED_PLACEHOLDER = "[chat.history omitted: message too large]";
11745
- /** Twice the default storage probe timeout: how long chat.history waits for a booting gateway's session storage before it answers UNAVAILABLE. */
11746
- const CHAT_HISTORY_STORAGE_START_WAIT_MS = 1e4;
11747
- const CHAT_HISTORY_STORAGE_START_RETRY_AFTER_MS = 1e3;
11748
11745
  let chatHistoryPlaceholderEmitCount = 0;
11749
11746
  function stripDisallowedChatControlChars(message) {
11750
11747
  let output = "";
@@ -12546,13 +12543,6 @@ const chatHandlers = {
12546
12543
  return;
12547
12544
  }
12548
12545
  const { sessionKey, limit, maxChars, before } = params;
12549
- if (!(await context.storageStartup?.whenReleased(CHAT_HISTORY_STORAGE_START_WAIT_MS) ?? true)) {
12550
- respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "session storage is still starting", {
12551
- retryable: true,
12552
- retryAfterMs: CHAT_HISTORY_STORAGE_START_RETRY_AFTER_MS
12553
- }));
12554
- return;
12555
- }
12556
12546
  const { cfg, storePath, entry } = loadSessionEntry(sessionKey);
12557
12547
  const sessionId = entry?.sessionId;
12558
12548
  const sessionAgentId = resolveSessionAgentId({
@@ -14743,7 +14733,7 @@ async function replayApproval(ctx) {
14743
14733
 
14744
14734
  //#endregion
14745
14735
  //#region src/infra/exec-audit.ts
14746
- const log$23 = createSubsystemLogger("infra/exec-audit");
14736
+ const log$24 = createSubsystemLogger("infra/exec-audit");
14747
14737
  function emitAuditRecord(request, decision) {
14748
14738
  const inv = request.invocation;
14749
14739
  const argvSummary = inv.mode === "argv" ? `${inv.executable} ${redactArgvForAudit(inv.args).join(" ")}` : inv.mode === "shell" ? redactCommandText(inv.command) : inv.mode === "approved-script" ? inv.scriptId : `${inv.serverId}/${inv.toolName}`;
@@ -14774,7 +14764,7 @@ function emitAuditRecord(request, decision) {
14774
14764
  timeoutMs: request.timeoutMs,
14775
14765
  stdinPresent: request.stdin === "present-redacted"
14776
14766
  };
14777
- if (record.outcome === "deny") log$23.warn("exec-audit deny", {
14767
+ if (record.outcome === "deny") log$24.warn("exec-audit deny", {
14778
14768
  effect: record.effect,
14779
14769
  sourceRule: record.sourceRule,
14780
14770
  reason: record.reason,
@@ -14783,7 +14773,7 @@ function emitAuditRecord(request, decision) {
14783
14773
  normalizedArgv: record.normalizedArgv,
14784
14774
  policyId: record.policyId
14785
14775
  });
14786
- else log$23.info("exec-audit", {
14776
+ else log$24.info("exec-audit", {
14787
14777
  effect: record.effect,
14788
14778
  sourceRule: record.sourceRule,
14789
14779
  outcome: record.outcome,
@@ -15131,7 +15121,7 @@ function reEvaluatePoliciesForPath(reResolvedRequest, envSanitization, policies
15131
15121
 
15132
15122
  //#endregion
15133
15123
  //#region src/infra/load-policies-for-request.ts
15134
- const log$22 = createSubsystemLogger("infra/load-policies-for-request");
15124
+ const log$23 = createSubsystemLogger("infra/load-policies-for-request");
15135
15125
  /**
15136
15126
  * User-scoped policy source backed by the v2 exec-approvals store
15137
15127
  * (`~/.openclaw/exec-approvals.json`). The store is migrated v1→v2 on load
@@ -15150,7 +15140,7 @@ function createUserPolicySource() {
15150
15140
  try {
15151
15141
  return (await loadExecApprovalsV2()).policies;
15152
15142
  } catch (error) {
15153
- log$22.warn("user policy store load failed; user policies will not apply", { error });
15143
+ log$23.warn("user policy store load failed; user policies will not apply", { error });
15154
15144
  return [];
15155
15145
  }
15156
15146
  } };
@@ -16295,7 +16285,7 @@ const nodeHandlers = {
16295
16285
  const p = params;
16296
16286
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
16297
16287
  await respondUnavailableOnThrow(respond, async () => {
16298
- const { handleNodeEvent } = await import("./server-node-events-DSTI4JnV.js");
16288
+ const { handleNodeEvent } = await import("./server-node-events-8k0OLCvW.js");
16299
16289
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
16300
16290
  await handleNodeEvent({
16301
16291
  deps: context.deps,
@@ -17092,7 +17082,7 @@ function resolveSteerResult(params) {
17092
17082
 
17093
17083
  //#endregion
17094
17084
  //#region src/gateway/session-title-completion.ts
17095
- const log$21 = createSubsystemLogger("gateway/session-title-completion");
17085
+ const log$22 = createSubsystemLogger("gateway/session-title-completion");
17096
17086
  const SESSION_TITLE_COMPLETION_TIMEOUT_MS = 15e3;
17097
17087
  const SESSION_TITLE_MAX_CHARS = 60;
17098
17088
  /** Upstream openclaw's dashboard-session-title prompt wording (ADR 0084 s5, mission M4). */
@@ -17143,7 +17133,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17143
17133
  try {
17144
17134
  const resolved = deps.resolveModel(provider, model, agentDir, cfg);
17145
17135
  if (!resolved.model) {
17146
- log$21.warn("session title model unresolved", {
17136
+ log$22.warn("session title model unresolved", {
17147
17137
  ...logFields,
17148
17138
  error: resolved.error
17149
17139
  });
@@ -17157,7 +17147,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17157
17147
  let apiKey;
17158
17148
  if (!auth.apiKey) {
17159
17149
  if (auth.mode !== "aws-sdk") {
17160
- log$21.warn("session title no api key resolved", {
17150
+ log$22.warn("session title no api key resolved", {
17161
17151
  ...logFields,
17162
17152
  mode: auth.mode
17163
17153
  });
@@ -17172,7 +17162,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17172
17162
  })).token;
17173
17163
  else apiKey = auth.apiKey;
17174
17164
  if (controller.signal.aborted) {
17175
- log$21.warn("session title generation timed out before dispatch", logFields);
17165
+ log$22.warn("session title generation timed out before dispatch", logFields);
17176
17166
  return null;
17177
17167
  }
17178
17168
  const response = await deps.completeSimple(resolved.model, {
@@ -17189,11 +17179,11 @@ async function generateSessionTitleCompletion(req, overrides) {
17189
17179
  signal: controller.signal
17190
17180
  });
17191
17181
  if (response.stopReason === "aborted") {
17192
- log$21.warn("session title generation timed out", logFields);
17182
+ log$22.warn("session title generation timed out", logFields);
17193
17183
  return null;
17194
17184
  }
17195
17185
  if (response.stopReason === "error") {
17196
- log$21.warn("session title generation provider error", {
17186
+ log$22.warn("session title generation provider error", {
17197
17187
  ...logFields,
17198
17188
  error: response.errorMessage
17199
17189
  });
@@ -17203,7 +17193,7 @@ async function generateSessionTitleCompletion(req, overrides) {
17203
17193
  if (!text) return null;
17204
17194
  return normalizeSessionTitle(text);
17205
17195
  } catch (error) {
17206
- log$21.warn("session title generation failed", {
17196
+ log$22.warn("session title generation failed", {
17207
17197
  ...logFields,
17208
17198
  error: error instanceof Error ? error.message : String(error)
17209
17199
  });
@@ -17384,6 +17374,218 @@ const skillsHandlers = {
17384
17374
  }
17385
17375
  };
17386
17376
 
17377
+ //#endregion
17378
+ //#region src/gateway/storage-method-policy.ts
17379
+ const STORAGE_METHOD_POLICY_REQUIRED = [
17380
+ "chat.history",
17381
+ "sessions.claims.status",
17382
+ "sessions.runHistory",
17383
+ "sessions.runs.cancel",
17384
+ "sessions.runs.continue",
17385
+ "sessions.runs.events",
17386
+ "sessions.runs.get",
17387
+ "sessions.runs.list",
17388
+ "tasks.resetBudget",
17389
+ "tasks.rollback",
17390
+ "tasks.runDryRun",
17391
+ "tasks.runEvents",
17392
+ "tasks.runs.get",
17393
+ "tasks.runs.events",
17394
+ "tasks.runs.list",
17395
+ "tasks.status"
17396
+ ];
17397
+ const STORAGE_METHOD_POLICY_BOOT_WRITE = [
17398
+ "chat.inject",
17399
+ "sessions.compact",
17400
+ "sessions.create",
17401
+ "sessions.delete",
17402
+ "sessions.patch",
17403
+ "sessions.reset"
17404
+ ];
17405
+ const STORAGE_METHOD_POLICY_NONE = [
17406
+ "connect",
17407
+ "health",
17408
+ "status",
17409
+ "logs.tail",
17410
+ "voicewake.get",
17411
+ "voicewake.set",
17412
+ "channels.status",
17413
+ "channels.logout",
17414
+ "chat.abort",
17415
+ "chat.send",
17416
+ "sessions.abort",
17417
+ "wake",
17418
+ "cron.list",
17419
+ "cron.status",
17420
+ "cron.add",
17421
+ "cron.update",
17422
+ "cron.remove",
17423
+ "cron.run",
17424
+ "cron.runs",
17425
+ "device.pair.list",
17426
+ "device.pair.approve",
17427
+ "device.pair.reject",
17428
+ "device.pair.remove",
17429
+ "device.token.rotate",
17430
+ "device.token.revoke",
17431
+ "diagnostics.runtime.snapshot",
17432
+ "diagnostics.capture.cpu",
17433
+ "diagnostics.capture.heap",
17434
+ "diagnostics.capture.report",
17435
+ "diagnostics.profiling.start",
17436
+ "diagnostics.profiling.stop",
17437
+ "doctor.memory.status",
17438
+ "doctor.recovery.inspect",
17439
+ "doctor.recovery.plan",
17440
+ "doctor.recovery.apply",
17441
+ "exec.approvals.get",
17442
+ "exec.approvals.set",
17443
+ "exec.approvals.node.get",
17444
+ "exec.approvals.node.set",
17445
+ "web.login.start",
17446
+ "web.login.wait",
17447
+ "models.authStatus",
17448
+ "models.list",
17449
+ "config.get",
17450
+ "config.schema",
17451
+ "config.set",
17452
+ "config.patch",
17453
+ "config.apply",
17454
+ "wizard.start",
17455
+ "wizard.next",
17456
+ "wizard.cancel",
17457
+ "wizard.status",
17458
+ "talk.config",
17459
+ "talk.mode",
17460
+ "talk.catalog",
17461
+ "talk.session.create",
17462
+ "talk.session.appendAudio",
17463
+ "talk.session.close",
17464
+ "talk.session.cancelTurn",
17465
+ "talk.session.mark",
17466
+ "talk.session.bargeIn",
17467
+ "talk.realtime.session",
17468
+ "talk.realtime.audio",
17469
+ "talk.realtime.mark",
17470
+ "talk.realtime.toolResult",
17471
+ "talk.realtime.bargeIn",
17472
+ "talk.realtime.stop",
17473
+ "talk.realtime.status",
17474
+ "talk.metrics",
17475
+ "tools.catalog",
17476
+ "tts.status",
17477
+ "tts.enable",
17478
+ "tts.disable",
17479
+ "tts.convert",
17480
+ "tts.setProvider",
17481
+ "tts.providers",
17482
+ "skills.status",
17483
+ "skills.bins",
17484
+ "skills.install",
17485
+ "skills.update",
17486
+ "sessions.subscribe",
17487
+ "sessions.list",
17488
+ "sessions.describe",
17489
+ "sessions.compaction.list",
17490
+ "sessions.runs",
17491
+ "sessions.thresholds",
17492
+ "sessions.interrupt",
17493
+ "sessions.preview",
17494
+ "sessions.resolve",
17495
+ "sessions.title.prepare",
17496
+ "sessions.steer",
17497
+ "last-heartbeat",
17498
+ "set-heartbeats",
17499
+ "system-presence",
17500
+ "system-event",
17501
+ "update.run",
17502
+ "node.pair.request",
17503
+ "node.pair.list",
17504
+ "node.pair.approve",
17505
+ "node.pair.reject",
17506
+ "node.pair.verify",
17507
+ "node.rename",
17508
+ "node.list",
17509
+ "node.describe",
17510
+ "node.canvas.capability.refresh",
17511
+ "node.invoke",
17512
+ "node.invoke.result",
17513
+ "node.event",
17514
+ "plugins/health",
17515
+ "push.test",
17516
+ "send",
17517
+ "poll",
17518
+ "usage.status",
17519
+ "usage.cost",
17520
+ "sessions.usage",
17521
+ "sessions.usage.timeseries",
17522
+ "sessions.usage.logs",
17523
+ "agent",
17524
+ "agent.identity.get",
17525
+ "agent.wait",
17526
+ "agent.nudge",
17527
+ "agents.list",
17528
+ "agents.create",
17529
+ "agents.update",
17530
+ "agents.delete",
17531
+ "agents.files.list",
17532
+ "agents.files.get",
17533
+ "agents.files.set",
17534
+ "browser.request"
17535
+ ];
17536
+ const STORAGE_METHOD_POLICY = Object.freeze({
17537
+ ...Object.fromEntries(STORAGE_METHOD_POLICY_REQUIRED.map((method) => [method, "required"])),
17538
+ ...Object.fromEntries(STORAGE_METHOD_POLICY_BOOT_WRITE.map((method) => [method, "boot-write"])),
17539
+ ...Object.fromEntries(STORAGE_METHOD_POLICY_NONE.map((method) => [method, "none"]))
17540
+ });
17541
+
17542
+ //#endregion
17543
+ //#region src/gateway/server-methods/storage-fence.ts
17544
+ const STORAGE_START_WAIT_MS = 1e4;
17545
+ const log$21 = createSubsystemLogger("gateway/storage-fence");
17546
+ const warnedGates = /* @__PURE__ */ new WeakSet();
17547
+ /**
17548
+ * Returns true when this call has been answered by the fence (held out, or answered a typed
17549
+ * error), so dispatch must not run the handler. Runs after authorization and the method-set
17550
+ * rate limits, so an unauthorized caller never learns storage readiness. Absent context gate or
17551
+ * `none`/missing classification means no storage decision applies to the method.
17552
+ */
17553
+ async function guardStorageRpc(method, context, respond) {
17554
+ const policy = Object.hasOwn(STORAGE_METHOD_POLICY, method) ? STORAGE_METHOD_POLICY[method] : void 0;
17555
+ const gate = context.storageStartup;
17556
+ if (policy === void 0 || policy === "none" || !gate) return false;
17557
+ let state = gate.state();
17558
+ if (state.phase === "ready") return false;
17559
+ state = await gate.whenSettled(STORAGE_START_WAIT_MS);
17560
+ if (state.phase === "ready") return false;
17561
+ if (state.phase === "failed") {
17562
+ if (policy === "boot-write") return false;
17563
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "session storage failed to start", {
17564
+ retryable: false,
17565
+ details: {
17566
+ code: "storage_start_failed",
17567
+ reasonCodes: state.reasonCodes
17568
+ }
17569
+ }));
17570
+ return true;
17571
+ }
17572
+ if (state.phase === "starting" && !warnedGates.has(gate)) {
17573
+ warnedGates.add(gate);
17574
+ log$21.warn("session storage still starting after 10000ms; storage-backed methods answer RECOVERY_NOT_READY");
17575
+ }
17576
+ const stopping = state.phase === "stopping";
17577
+ respond(false, void 0, errorShape(ErrorCodes.RECOVERY_NOT_READY, stopping ? "gateway is stopping" : "session storage is still starting", {
17578
+ retryable: true,
17579
+ retryAfterMs: 500,
17580
+ details: {
17581
+ producer: "session-storage",
17582
+ phase: state.phase,
17583
+ reasonCodes: [stopping ? "storage_stopping" : "storage_starting"]
17584
+ }
17585
+ }));
17586
+ return true;
17587
+ }
17588
+
17387
17589
  //#endregion
17388
17590
  //#region src/gateway/server/presence-events.ts
17389
17591
  function broadcastPresenceSnapshot(params) {
@@ -19309,10 +19511,6 @@ function createSttTtsTurnController(params) {
19309
19511
  const sm = new SttTtsLoopStateMachine();
19310
19512
  let sessionClosed = false;
19311
19513
  let currentTurn;
19312
- /** The utterance text whose eager end-of-turn produced (or last resumed) the current turn.
19313
- * Lives only as long as that turn does: retireTurn() clears it, so a later identical
19314
- * utterance is a genuine new turn, never a swallowed stale confirmation. */
19315
- let eagerUtterance;
19316
19514
  /** VAL-LOOP-001: every state transition is logged (never the wire — these never carry
19317
19515
  * transcript/audio content, only the state names and a short reason tag). */
19318
19516
  function transitionState(to, reason) {
@@ -19427,10 +19625,7 @@ function createSttTtsTurnController(params) {
19427
19625
  turn.unsubscribeAgentEvents();
19428
19626
  sm.resetTurn();
19429
19627
  transitionState("listening", "turn-settled");
19430
- if (currentTurn === turn) {
19431
- currentTurn = void 0;
19432
- eagerUtterance = void 0;
19433
- }
19628
+ if (currentTurn === turn) currentTurn = void 0;
19434
19629
  }
19435
19630
  function emitTurnCancelled(turn, reason) {
19436
19631
  if (turn.fillerPlayed || turn.fillerTimer) broadcast(sequencer.next({
@@ -19578,6 +19773,15 @@ function createSttTtsTurnController(params) {
19578
19773
  text
19579
19774
  });
19580
19775
  }
19776
+ function resumeCandidate(turn, text) {
19777
+ if (turn.cancelled || turn.finished) return false;
19778
+ if (text === turn.userText) return false;
19779
+ if (turn.sawTtsAudio) {
19780
+ turnBargeIn.evaluateCandidateText(turn, text);
19781
+ return false;
19782
+ }
19783
+ return wordCount(text) >= 1;
19784
+ }
19581
19785
  function handleEndOfTurn(result) {
19582
19786
  if (sessionClosed) return;
19583
19787
  const text = result.text.trim();
@@ -19585,29 +19789,25 @@ function createSttTtsTurnController(params) {
19585
19789
  if (text) startNewTurn(text);
19586
19790
  return;
19587
19791
  }
19588
- handlePossibleResume(text);
19792
+ if (resumeCandidate(currentTurn, text)) {
19793
+ teardownTurnForCancel(currentTurn, "turn-resumed");
19794
+ startNewTurn(text);
19795
+ }
19589
19796
  }
19590
- /** VAL-LOOP-006: a partial/second-EOT with >=1 word, arriving after end-of-turn but before the
19591
- * first real assistant audio, cancels the in-flight run (turn-resumed) and starts a fresh turn
19592
- * from the new text. Once real audio has started, further speech is a barge-in concern — out
19593
- * of scope here (the dedicated turn-taking task owns it) — so this never fires past that point. */
19797
+ /** VAL-LOOP-006 (ADR 0087 section 4.5): a worded partial/transcript arriving after
19798
+ * end-of-turn but before the first real assistant audio only cancels the in-flight run
19799
+ * (turn-resumed); it never starts a turn itself - the continuation's own end-of-turn starts
19800
+ * it. Once real audio has started, further speech is a barge-in concern - out of scope here
19801
+ * (the dedicated turn-taking task owns it) - so this never fires past that point. */
19594
19802
  function handlePossibleResume(text) {
19595
19803
  if (sessionClosed) return;
19596
19804
  const turn = currentTurn;
19597
- if (!turn || turn.cancelled || turn.finished) return;
19598
- if (eagerUtterance !== void 0 && text === eagerUtterance) return;
19599
- if (turn.sawTtsAudio) {
19600
- turnBargeIn.evaluateCandidateText(turn, text);
19601
- return;
19602
- }
19603
- if (wordCount(text) < 1) return;
19604
- teardownTurnForCancel(turn, "turn-resumed");
19605
- startNewTurn(text);
19805
+ if (!turn) return;
19806
+ if (resumeCandidate(turn, text.trim())) teardownTurnForCancel(turn, "turn-resumed");
19606
19807
  }
19607
- /** ADR 0087 section 5: a provider-native resume signal carries no text, so unlike
19608
- * handlePossibleResume this only cancels - the continuation's own onPartial/onTranscript/
19609
- * onEndOfTurn (routed through handlePossibleResume/handleEndOfTurn as usual) is what actually
19610
- * starts the next turn, once it arrives with real text. */
19808
+ /** ADR 0087 section 5: a provider-native resume signal carries no text. Like
19809
+ * handlePossibleResume, this only cancels; the continuation's own end-of-turn (routed through
19810
+ * handleEndOfTurn) starts the next turn once it arrives with real text. */
19611
19811
  function handleProviderTurnResumed() {
19612
19812
  if (sessionClosed) return;
19613
19813
  const turn = currentTurn;
@@ -19619,15 +19819,6 @@ function createSttTtsTurnController(params) {
19619
19819
  if (sessionClosed) return;
19620
19820
  bargeInSurface.handleBargeIn(speechDetectedAt, playbackPausedAt);
19621
19821
  }
19622
- /** A fused-detection provider's early, not-yet-committed end-of-turn: handled exactly like a
19623
- * committed one, then the utterance is remembered so its committed confirmation (the matching
19624
- * onTranscript/onEndOfTurn pair) does not re-enter the resume path. Set AFTER handling so this
19625
- * very event starts/resumes the turn instead of consuming itself. */
19626
- function handleEagerEndOfTurn(result) {
19627
- if (sessionClosed) return;
19628
- handleEndOfTurn(result);
19629
- eagerUtterance = result.text.trim() || void 0;
19630
- }
19631
19822
  /** Monotonic: a stale/out-of-order mark ack can only hold or advance `heardChars`, never move
19632
19823
  * it backward. */
19633
19824
  function acknowledgeMark(markName, timestamp) {
@@ -19637,7 +19828,6 @@ function createSttTtsTurnController(params) {
19637
19828
  }
19638
19829
  return {
19639
19830
  handleEndOfTurn,
19640
- handleEagerEndOfTurn,
19641
19831
  handlePossibleResume,
19642
19832
  handleProviderTurnResumed,
19643
19833
  cancelActiveTurn,
@@ -19763,7 +19953,7 @@ function createSttTtsLoopSession(params) {
19763
19953
  },
19764
19954
  onEagerEndOfTurn: (result) => {
19765
19955
  clearSpeechCapTimer();
19766
- turnController.handleEagerEndOfTurn(result);
19956
+ turnController.handleEndOfTurn(result);
19767
19957
  },
19768
19958
  onTurnResumed: () => {
19769
19959
  clearSpeechCapTimer();
@@ -20891,6 +21081,9 @@ async function buildTalkCatalogStreamingTranscriptionSection(params) {
20891
21081
  rows
20892
21082
  };
20893
21083
  }
21084
+ function resolveSpeechVoiceId(provider, config) {
21085
+ return config?.voiceId?.trim() || provider.defaultVoiceId?.trim() || void 0;
21086
+ }
20894
21087
  async function buildTalkCatalogSpeechSection(params) {
20895
21088
  const providers = getRegisteredStreamingSpeechProviders();
20896
21089
  const configuredId = params.configuredTtsProviderId?.trim();
@@ -20902,11 +21095,12 @@ async function buildTalkCatalogSpeechSection(params) {
20902
21095
  cfg: params.cfg,
20903
21096
  apiKey: providerConfig?.apiKey
20904
21097
  });
21098
+ const voiceMissing = status.configured && !resolveSpeechVoiceId(provider, providerConfig);
20905
21099
  rows.push({
20906
21100
  id: provider.id,
20907
21101
  label: provider.label,
20908
- configured: status.configured,
20909
- ...status.diagnostic ? { diagnostic: status.diagnostic } : {},
21102
+ configured: status.configured && !voiceMissing,
21103
+ ...status.diagnostic ? { diagnostic: status.diagnostic } : voiceMissing ? { diagnostic: "missing-voice-id" } : {},
20910
21104
  modes: ["streaming"],
20911
21105
  transports: ["gateway-relay"]
20912
21106
  });
@@ -21075,9 +21269,10 @@ const talkHandlers = {
21075
21269
  if (p.mode === "stt-tts") {
21076
21270
  const sttCandidateId = conversationConfig.sttProvider.trim().toLowerCase();
21077
21271
  const sttProvider = getRegisteredRealtimeTranscriptionProviders().find((candidate) => candidate.id.trim().toLowerCase() === sttCandidateId);
21078
- const { provider: ttsProviderId, config: ttsConfig } = resolveActiveTalkProviderConfig(snapshot.config.talk);
21272
+ const { provider: ttsProviderId, config: ttsEntry } = resolveActiveTalkProviderConfig(snapshot.config.talk);
21273
+ const ttsConfig = ttsEntry ?? {};
21079
21274
  const ttsProvider = ttsProviderId ? getRegisteredStreamingSpeechProviders().find((candidate) => candidate.id.trim().toLowerCase() === ttsProviderId.trim().toLowerCase()) : void 0;
21080
- if (!sttProvider || !ttsProvider || !ttsConfig?.voiceId) {
21275
+ if (!sttProvider || !ttsProvider) {
21081
21276
  respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "stt-tts requires a configured STT and TTS provider"));
21082
21277
  return;
21083
21278
  }
@@ -21089,14 +21284,26 @@ const talkHandlers = {
21089
21284
  cfg: snapshot.config,
21090
21285
  providerConfig: ttsConfig
21091
21286
  });
21092
- if (!sttProvider.isConfigured({
21287
+ const unconfigured = !sttProvider.isConfigured({
21093
21288
  cfg: snapshot.config,
21094
21289
  providerConfig: resolvedSttProviderConfig
21095
- }) || !ttsProvider.isConfigured({
21290
+ }) ? {
21291
+ seam: "transcription",
21292
+ id: sttProvider.id
21293
+ } : !ttsProvider.isConfigured({
21096
21294
  cfg: snapshot.config,
21097
21295
  providerConfig: resolvedTtsProviderConfig
21098
- })) {
21099
- respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "stt-tts requires a configured STT and TTS provider"));
21296
+ }) ? {
21297
+ seam: "speech",
21298
+ id: ttsProviderId
21299
+ } : void 0;
21300
+ if (unconfigured) {
21301
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `stt-tts requires a configured STT and TTS provider: ${unconfigured.seam} provider "${unconfigured.id}" is not configured; check talk.providers.${unconfigured.id}.apiKey`));
21302
+ return;
21303
+ }
21304
+ const voiceId = resolveSpeechVoiceId(ttsProvider, ttsConfig);
21305
+ if (!voiceId) {
21306
+ respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, `stt-tts requires talk.providers.${ttsProviderId}.voiceId: speech provider "${ttsProvider.id}" has no default voice`));
21100
21307
  return;
21101
21308
  }
21102
21309
  const rawSessionKey = p.sessionKey;
@@ -21119,7 +21326,7 @@ const talkHandlers = {
21119
21326
  },
21120
21327
  ttsProvider,
21121
21328
  ttsProviderConfig: resolvedTtsProviderConfig,
21122
- voiceId: ttsConfig.voiceId,
21329
+ voiceId,
21123
21330
  modelId: ttsConfig.modelId ?? DEFAULT_TALK_CONVERSATION_MODEL_ID,
21124
21331
  outputFormat: ttsConfig.outputFormat ?? "pcm_24000",
21125
21332
  locale: conversationConfig.locale,
@@ -22232,9 +22439,9 @@ function toRedactedEvent(event) {
22232
22439
  };
22233
22440
  }
22234
22441
  async function listQueuedView(params, runtime, respond) {
22235
- const registry = getTaskOperatorRegistry();
22442
+ const registry = await resolveTaskOperatorRegistry();
22236
22443
  if (!registry) {
22237
- respond(false, void 0, errorShape(ErrorCodes.UNAVAILABLE, "task_registry_unavailable", { details: { code: "task_registry_unavailable" } }));
22444
+ respondTaskRegistryUnavailable(respond);
22238
22445
  return;
22239
22446
  }
22240
22447
  const busWork = runtime.busWork;
@@ -23910,6 +24117,7 @@ async function handleGatewayRequest(opts) {
23910
24117
  return;
23911
24118
  }
23912
24119
  }
24120
+ if (await guardStorageRpc(req.method, context, respond)) return;
23913
24121
  await handler({
23914
24122
  req,
23915
24123
  params: req.params ?? {},
@@ -24854,7 +25062,7 @@ function normalizeAgentPayload(payload) {
24854
25062
  async function startBrowserControlServerIfEnabled() {
24855
25063
  if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER)) return null;
24856
25064
  const override = process.env.OPENCLAW_BROWSER_CONTROL_MODULE?.trim();
24857
- const mod = override ? await import(override) : await import("./server-IDopagLT.js");
25065
+ const mod = override ? await import(override) : await import("./server-y8WhCQvu.js");
24858
25066
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
24859
25067
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
24860
25068
  if (!start) return null;
@@ -31212,29 +31420,56 @@ function createStorageRecoveryContainment(deps) {
31212
31420
  //#endregion
31213
31421
  //#region src/gateway/storage-startup-gate.ts
31214
31422
  function createStorageStartupGate() {
31423
+ let phase = { phase: "ready" };
31215
31424
  let held = false;
31216
31425
  const waiters = /* @__PURE__ */ new Set();
31426
+ const wakeAll = () => {
31427
+ for (const wake of waiters) wake();
31428
+ };
31217
31429
  return {
31218
31430
  hold() {
31219
- held = true;
31431
+ if (!held && phase.phase === "ready") {
31432
+ held = true;
31433
+ phase = { phase: "starting" };
31434
+ }
31220
31435
  },
31221
- release() {
31222
- held = false;
31223
- for (const wake of waiters) wake();
31436
+ markReady() {
31437
+ if (phase.phase === "starting") {
31438
+ phase = { phase: "ready" };
31439
+ wakeAll();
31440
+ }
31224
31441
  },
31225
- whenReleased(timeoutMs) {
31226
- if (!held) return Promise.resolve(true);
31227
- return new Promise((resolve) => {
31228
- const wake = () => {
31229
- clearTimeout(timer);
31230
- waiters.delete(wake);
31231
- resolve(true);
31442
+ markFailed(reasonCodes) {
31443
+ if (phase.phase === "starting") {
31444
+ phase = {
31445
+ phase: "failed",
31446
+ reasonCodes: [...reasonCodes]
31232
31447
  };
31448
+ wakeAll();
31449
+ }
31450
+ },
31451
+ markStopping() {
31452
+ if (phase.phase !== "stopping") {
31453
+ phase = { phase: "stopping" };
31454
+ wakeAll();
31455
+ }
31456
+ },
31457
+ state() {
31458
+ return phase;
31459
+ },
31460
+ whenSettled(timeoutMs) {
31461
+ if (phase.phase !== "starting" && phase.phase !== "stopping") return Promise.resolve(phase);
31462
+ return new Promise((resolve) => {
31233
31463
  const timer = setTimeout(() => {
31234
31464
  waiters.delete(wake);
31235
- resolve(false);
31465
+ resolve(phase);
31236
31466
  }, timeoutMs);
31237
31467
  timer.unref?.();
31468
+ const wake = () => {
31469
+ clearTimeout(timer);
31470
+ waiters.delete(wake);
31471
+ resolve(phase);
31472
+ };
31238
31473
  waiters.add(wake);
31239
31474
  });
31240
31475
  }
@@ -35179,7 +35414,12 @@ async function bootGatewayServer(port, opts) {
35179
35414
  };
35180
35415
  fencedStorageSupervisorStart = async () => {
35181
35416
  await supervisor.start();
35182
- storageStartup.release();
35417
+ if (supervisor.getState() !== "healthy" && !params.resolved.fallbackToJsonlOnError) {
35418
+ await storageSupervisorStop?.();
35419
+ storageSupervisorStop = null;
35420
+ throw new FatalConfiguredStorageStartError();
35421
+ }
35422
+ storageStartup.markReady();
35183
35423
  try {
35184
35424
  const { installIncidentAsset } = await import("./incident-install-B626HvYY.js");
35185
35425
  await installIncidentAsset({
@@ -35212,11 +35452,6 @@ async function bootGatewayServer(port, opts) {
35212
35452
  noteStorageRestartRequired("session-run-startup-recovery");
35213
35453
  noteStorageRestartRequired("shutdown-run-reconciliation");
35214
35454
  }
35215
- if (supervisor.getState() !== "healthy" && !params.resolved.fallbackToJsonlOnError) {
35216
- await storageSupervisorStop?.();
35217
- storageSupervisorStop = null;
35218
- throw new FatalConfiguredStorageStartError();
35219
- }
35220
35455
  };
35221
35456
  if (params.bootImmediately) await fencedStorageSupervisorStart();
35222
35457
  else storageStartup.hold();
@@ -35578,7 +35813,7 @@ async function bootGatewayServer(port, opts) {
35578
35813
  const sweepLog = log.child("session-consumer-claim-sweep");
35579
35814
  const { createDiagnosticRingBuffer } = await import("./session-consumer-diagnostics-BUKxP8bu.js");
35580
35815
  const diagnostics = createDiagnosticRingBuffer();
35581
- const { setDiagnostics } = await import("./sessions-CgVN798h.js").then((n) => n.n);
35816
+ const { setDiagnostics } = await import("./sessions-DFDrcshi.js").then((n) => n.n);
35582
35817
  if (sessionConsumerClaimSweepCancelled) return;
35583
35818
  setDiagnostics(diagnostics);
35584
35819
  const lastKnownEnabledState = /* @__PURE__ */ new Map();
@@ -35617,7 +35852,7 @@ async function bootGatewayServer(port, opts) {
35617
35852
  lastKnownEnabledState,
35618
35853
  cfg: loadConfig()
35619
35854
  });
35620
- const { setLastSweepTimestamp } = await import("./sessions-CgVN798h.js").then((n) => n.n);
35855
+ const { setLastSweepTimestamp } = await import("./sessions-DFDrcshi.js").then((n) => n.n);
35621
35856
  setLastSweepTimestamp(Date.now());
35622
35857
  } catch (err) {
35623
35858
  sweepLog.warn(`session consumer-claim sweep failed: ${String(err)}`);
@@ -35639,7 +35874,7 @@ async function bootGatewayServer(port, opts) {
35639
35874
  prepare: () => {
35640
35875
  taskPipelineBoot = (async () => {
35641
35876
  const { getConfiguredSessionStorageRuntime } = await import("./config-BPACL-n5.js").then((n) => n.Hn);
35642
- const { startTaskPipeline } = await import("./task-pipeline-boot-BLEjtMkt.js");
35877
+ const { startTaskPipeline } = await import("./task-pipeline-boot-CM-3tH09.js");
35643
35878
  const pipeline = startTaskPipeline({
35644
35879
  getConfigured: getConfiguredSessionStorageRuntime,
35645
35880
  cfg: cfgAtStart,
@@ -35808,7 +36043,17 @@ async function bootGatewayServer(port, opts) {
35808
36043
  });
35809
36044
  try {
35810
36045
  recoveryRuntime = await Promise.race([ownInstalled, recoveryStarted]) ?? null;
36046
+ if (storageStartup.state().phase === "starting") {
36047
+ let codes = [];
36048
+ try {
36049
+ codes = recoveryRuntime?.snapshot().reasonCodes ?? [];
36050
+ } catch {
36051
+ codes = [];
36052
+ }
36053
+ storageStartup.markFailed(codes.length > 0 ? codes : ["recovery_start_failed"]);
36054
+ }
35811
36055
  } catch (err) {
36056
+ if (storageStartup.state().phase === "starting") storageStartup.markFailed(["recovery_start_failed"]);
35812
36057
  if (skillsRefreshTimer) {
35813
36058
  clearTimeout(skillsRefreshTimer);
35814
36059
  skillsRefreshTimer = null;
@@ -36019,6 +36264,7 @@ async function bootGatewayServer(port, opts) {
36019
36264
  startDiagnosticHeartbeat();
36020
36265
  }
36021
36266
  return { close: async (opts) => {
36267
+ storageStartup.markStopping();
36022
36268
  recoveryAdmission.closeAdmission();
36023
36269
  await runGlobalGatewayStopSafely({
36024
36270
  event: { reason: opts?.reason ?? "gateway stopping" },