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.
- package/dist/{acp-cli-BYoOiK6T.js → acp-cli-BWtNp40J.js} +2 -2
- package/dist/{acp-cli-dvFCSROw.js → acp-cli-DXVeP5by.js} +2 -2
- package/dist/{agent-scope-DxKPMu8w.js → agent-scope-cbxkoURo.js} +3 -3
- package/dist/{agent-turn-enqueue-DEStltEg.js → agent-turn-enqueue-CsHMHVsf.js} +4 -4
- package/dist/{agent-turn-enqueue-DzWOPhgy.js → agent-turn-enqueue-QcHb-Wlq.js} +4 -4
- package/dist/{agent-turn-execute-CzOC4mHw.js → agent-turn-execute-pkDSwyuf.js} +41 -30
- package/dist/{agent-turn-recovery-adapter-DnvjgbK0.js → agent-turn-recovery-adapter-CL4IrGUo.js} +1 -1
- package/dist/{agent-turn-recovery-adapter-CdLD3DuI.js → agent-turn-recovery-adapter-Dw5-XbMI.js} +1 -1
- package/dist/{agent-turn-runner-BEvwtTis.js → agent-turn-runner-CUoz_Fkl.js} +1 -1
- package/dist/{agent-turn-runner-BsxQBFRB.js → agent-turn-runner-CXf6g-6f.js} +5 -5
- package/dist/{agent-turn-runner-DpICdamt.js → agent-turn-runner-DHNZdQJB.js} +3 -3
- package/dist/{agent-turn-runner-C1u8sVfA.js → agent-turn-runner-DoHGgNPh.js} +1 -1
- package/dist/{agents-C61lzbyw.js → agents-TOaKn6gk.js} +5 -5
- package/dist/{agents.config-DAh5Ah1J.js → agents.config-96ueVlOH.js} +1 -1
- package/dist/{agents.config-BcD-ZJ0N.js → agents.config-DWMgN4qH.js} +1 -1
- package/dist/{api-key-rotation-Br7_jaAV.js → api-key-rotation-BMnyfyGD.js} +2 -2
- package/dist/{artifacts-QHme-vnS.js → artifacts-DUhYSSmK.js} +4 -4
- package/dist/{audio-preflight-CehYz7wU.js → audio-preflight-CO3ozqOb.js} +6 -6
- package/dist/{audio-preflight-B_5sTSyb.js → audio-preflight-ifCgpG3c.js} +27 -27
- package/dist/{audio-preflight-uatGs8bC.js → audio-preflight-p84ph4C7.js} +6 -6
- package/dist/{audio-transcription-runner-BvZFFknx.js → audio-transcription-runner-CsQR8LpS.js} +1 -1
- package/dist/{audio-transcription-runner-CJ8YdMv-.js → audio-transcription-runner-Gr8vN3AS.js} +1 -1
- package/dist/{audio-transcription-runner-XFfvRPXl.js → audio-transcription-runner-ipSQoPp8.js} +11 -11
- package/dist/{audit-UMAK8rQC.js → audit-8O6sjQPv.js} +6 -6
- package/dist/{audit-C0WHA5BX.js → audit-CzREkjwC.js} +6 -6
- package/dist/{auth-choice-CHzuLxTp.js → auth-choice-DtRePxUx.js} +2 -2
- package/dist/{auth-choice-BHU_G3if.js → auth-choice-s0pWvSbn.js} +2 -2
- package/dist/{banner-BAtbMrrp.js → banner-BwICuMvl.js} +1 -1
- package/dist/{browser-cli-DvjIut0z.js → browser-cli-Ci3F1b7y.js} +3 -3
- package/dist/{browser-cli-FTpdxTqL.js → browser-cli-NV-pdj3F.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +58 -58
- package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
- package/dist/bundled/command-logger/handler.js +2 -2
- package/dist/bundled/session-journal/handler.js +58 -58
- package/dist/bundled/session-memory/handler.js +58 -58
- package/dist/{call-Cl6Q0T5z.js → call-DFhcVchO.js} +1 -1
- package/dist/{call-BIVg1gmJ.js → call-PE59cW0J.js} +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-activity-DNq7LYjU.js → channel-activity-BJHm_pDV.js} +3 -3
- package/dist/{channel-options-CsgHOF5l.js → channel-options-BmfLwNE6.js} +1 -1
- package/dist/{channel-options-DRnowLFK.js → channel-options-CurDeT7Z.js} +1 -1
- package/dist/{channels-cli-Cn1IUfM3.js → channels-cli-CZqlXMjZ.js} +28 -28
- package/dist/{channels-cli-BN4oTmr6.js → channels-cli-D2PB80Ed.js} +28 -28
- package/dist/{chrome-FHxGdLnd.js → chrome-DTJprCGv.js} +15 -15
- package/dist/{chunk-BhntPUH_.js → chunk-eNEsWhab.js} +3 -3
- package/dist/{clawbot-cli-C-wEI2Wc.js → clawbot-cli-BL_gdm6D.js} +5 -5
- package/dist/{clawbot-cli-DWWHmqlt.js → clawbot-cli-C91sysrP.js} +5 -5
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-CFIRmNaZ.js → cli-DJUeQG1g.js} +22 -22
- package/dist/{cli-BGAvAUiU.js → cli-YKA_HQlq.js} +22 -22
- package/dist/{client-BbpMX08n.js → client-D7IpaFCL.js} +2 -1
- package/dist/{client-BMkNNUux.js → client-DN-SMVBn.js} +2 -1
- package/dist/{client-profiles-DP8BWND2.js → client-profiles-DEoACLX5.js} +1 -1
- package/dist/{client-profiles-BNQu4_Z_.js → client-profiles-soWN7eGC.js} +1 -1
- package/dist/{command-queue-zXu22yak.js → command-queue-B3_VRNOr.js} +8 -2
- package/dist/{command-queue-CmpLmuvI.js → command-queue-Bjb4nYXi.js} +8 -2
- package/dist/{command-queue-DtybAhHH.js → command-queue-Bn2PHabT.js} +8 -2
- package/dist/{command-queue-SzKgkaS6.js → command-queue-smA8JaO_.js} +9 -3
- package/dist/{command-registry-DBfEAwIt.js → command-registry-Dok3-b8T.js} +12 -12
- package/dist/{command-secret-targets-DtDJB3vv.js → command-secret-targets-BAFcvtYe.js} +2 -2
- package/dist/{command-secret-targets-B54n8F_3.js → command-secret-targets-CJ1czw_Q.js} +2 -2
- package/dist/{commands-registry-DC0fovy_.js → commands-registry-DdQg21ct.js} +2 -2
- package/dist/{completion-cli-BfRsix3J.js → completion-cli-Ctg9QIDB.js} +2 -2
- package/dist/{completion-cli-L5YP0rxV.js → completion-cli-DzgbSYNf.js} +1 -1
- package/dist/{config-cli-dgRsXbD3.js → config-cli-BUrIABmo.js} +1 -1
- package/dist/{config-cli-D4Gxd0pm.js → config-cli-Bp3NVXJ8.js} +1 -1
- package/dist/config.js +9 -9
- package/dist/{configure-DtRyMLwO.js → configure-CAdfZJx3.js} +6 -6
- package/dist/{configure-BN-JNKf7.js → configure-CFjjPHas.js} +6 -6
- package/dist/{cron-cli-_Mwn7mzJ.js → cron-cli-BuVrA_FU.js} +3 -3
- package/dist/{cron-cli-BuO3qskK.js → cron-cli-CEOGOJUA.js} +3 -3
- package/dist/{daemon-cli-YmPcKhvo.js → daemon-cli-BTld-maF.js} +2 -2
- package/dist/{daemon-cli-CiPY543O.js → daemon-cli-D874Hxry.js} +2 -2
- package/dist/daemon-cli.js +2 -1
- package/dist/{deliver-Aw7d03gL.js → deliver-BLp1Q7uO.js} +1 -1
- package/dist/{deliver-CXqNQ8yi.js → deliver-CVWbwPkb.js} +24 -24
- package/dist/{deliver-D37woOwV.js → deliver-rLn-23ud.js} +1 -1
- package/dist/{devices-cli-HXNfviPB.js → devices-cli-CVrx_5o-.js} +2 -2
- package/dist/{devices-cli-CxSEOWZs.js → devices-cli-PIMtgiCQ.js} +2 -2
- package/dist/{diagnostic-Cid_Tw67.js → diagnostic-85mWzvQi.js} +1 -1
- package/dist/{diagnostic-Bbg-zObh.js → diagnostic-DI-K8155.js} +5 -5
- package/dist/{diagnostic-lG00b_zg.js → diagnostic-u64kcpDQ.js} +1 -1
- package/dist/{dm-policy-shared-BJNH9gNN.js → dm-policy-shared-CV1uWhMc.js} +1 -1
- package/dist/{doctor-completion-ChF4A40n.js → doctor-completion-Cfe2nTpN.js} +1 -1
- package/dist/{doctor-completion-DIFx6d6S.js → doctor-completion-CpGKbe63.js} +1 -1
- package/dist/entry.js +2 -2
- package/dist/{exec-approvals-cli-BAJ3sxzP.js → exec-approvals-cli-BShAvkW4.js} +4 -4
- package/dist/{exec-approvals-cli-DIUYxvM0.js → exec-approvals-cli-CABBuuEP.js} +4 -4
- package/dist/extensionAPI.js +3 -3
- package/dist/{fetch-BoHKSk-O.js → fetch-BzXaK9px.js} +8 -8
- package/dist/{fetch-guard-TJjLK0FV.js → fetch-guard-0mkjBgri.js} +3 -3
- package/dist/{frontmatter-saAwiKEb.js → frontmatter-PMByWrfP.js} +5 -5
- package/dist/{fs-safe-LRpYbPaA.js → fs-safe-DwICJjkN.js} +4 -4
- package/dist/{gateway-cli-BJ9wa3Hc.js → gateway-cli-3YUOWIal.js} +415 -169
- package/dist/{gateway-cli-CVnksdlt.js → gateway-cli-CDCwUJ0Z.js} +415 -169
- package/dist/{gateway-rpc-DNsG0xAN.js → gateway-rpc-Bs4EcgS4.js} +1 -1
- package/dist/{gateway-rpc-BeRn5nUX.js → gateway-rpc-DOfMq6W1.js} +1 -1
- package/dist/{github-copilot-token-zGOMIGSh.js → github-copilot-token-WSjo05vB.js} +7 -7
- package/dist/{health-Cxv6ou16.js → health-B5jHSu9i.js} +3 -3
- package/dist/{health-Q4hCJ8O2.js → health-BEgp6PEF.js} +3 -3
- package/dist/{hooks-cli-ChZY2urb.js → hooks-cli-D1_UuIh4.js} +24 -24
- package/dist/{hooks-cli-DOHX--ha.js → hooks-cli-Dy5LfGKt.js} +24 -24
- package/dist/{image-ops-D_fm2PuR.js → image-ops-O8pHxo7i.js} +1 -1
- package/dist/index.js +26 -26
- package/dist/{installs-Du8n8Do9.js → installs-4lGALZOo.js} +1 -1
- package/dist/{installs-78zhoWuO.js → installs-puN7yKHH.js} +1 -1
- package/dist/{ir-C4MMLUJr.js → ir-fzpdYPWw.js} +5 -5
- package/dist/{legacy-names-vLJrYADD.js → legacy-names-CLlrMq8r.js} +1 -1
- package/dist/llm-slug-generator.js +58 -58
- package/dist/{logger-a0-zAY5a.js → logger-DNehzD_s.js} +1 -1
- package/dist/{logs-cli-BrL9UDGB.js → logs-cli-CrUZySOS.js} +3 -3
- package/dist/{logs-cli-BdR6-Q3U.js → logs-cli-CwN6ZrMz.js} +3 -3
- package/dist/{manager-DdA_cy40.js → manager-DH-MILAU.js} +12 -12
- package/dist/{markdown-tables-Dd7jV1JF.js → markdown-tables-UWspJNAH.js} +2 -2
- package/dist/{memory-cli-DZyEfnsr.js → memory-cli-CqS6VXEu.js} +1 -1
- package/dist/{memory-cli-D_89Y9nb.js → memory-cli-DVqLwNhN.js} +1 -1
- package/dist/{model-selection-CdZITU0t.js → model-selection-9qbqwsOT.js} +86 -86
- package/dist/{models-BbhdUY5g.js → models-Kq9m-LfF.js} +3 -3
- package/dist/{models-cli-BekoSHw2.js → models-cli-B4wVcMjJ.js} +23 -23
- package/dist/{models-cli-BmL2dpSq.js → models-cli-dyUiDMqX.js} +22 -22
- package/dist/{node-cli-BVgH-DXq.js → node-cli-DGi3DELS.js} +4 -4
- package/dist/{node-cli-BTywy8AL.js → node-cli-Dm9lnwVF.js} +4 -4
- package/dist/{node-command-policy-B9A0wAU6.js → node-command-policy-6yjbNtx-.js} +1 -1
- package/dist/{node-command-policy-wwMY6dIH.js → node-command-policy-C1Fy9dcA.js} +1 -1
- package/dist/{nodes-cli-OzWTp207.js → nodes-cli-Bp2RePXd.js} +3 -3
- package/dist/{nodes-cli-D9vz6Yaa.js → nodes-cli-CLzaLC3L.js} +3 -3
- package/dist/{npm-pack-install-opyKYSmS.js → npm-pack-install-BgBpeTJk.js} +1 -1
- package/dist/{npm-pack-install-B-cOWuiF.js → npm-pack-install-Dlm0MIZy.js} +1 -1
- package/dist/{npm-resolution-6WKQ6nBu.js → npm-resolution-DWE5khjC.js} +2 -2
- package/dist/{npm-resolution-51BBOWpQ.js → npm-resolution-Ey8dK3VI.js} +2 -2
- package/dist/{onboard-CnRiqboN.js → onboard-CneU0GqJ.js} +3 -3
- package/dist/{onboard-channels-DAwHVQ1P.js → onboard-channels-B1oC1rop.js} +3 -3
- package/dist/{onboard-channels-DYRTySsa.js → onboard-channels-Bm2XVN3C.js} +3 -3
- package/dist/{onboard-helpers-ziqfw3UR.js → onboard-helpers-DLBTH9b_.js} +1 -1
- package/dist/{onboard-helpers-BgbRKH4z.js → onboard-helpers-DNbkQX5v.js} +1 -1
- package/dist/{onboard-remote-BsnRgDQj.js → onboard-remote-DUy7Ew-K.js} +1 -1
- package/dist/{onboard-remote-NW_cPnaV.js → onboard-remote-DsBkNMeO.js} +1 -1
- package/dist/{onboard-skills-DwbAJ4nt.js → onboard-skills-D3L4yX2A.js} +1 -1
- package/dist/{onboard-skills-DCYqOaTS.js → onboard-skills-DX_x-MfC.js} +1 -1
- package/dist/{onboard-Cj-sLY2K.js → onboard-trNO818c.js} +3 -3
- package/dist/{onboarding-CujUbWy2.js → onboarding-BKoaWOxQ.js} +7 -7
- package/dist/{onboarding-DidWWI3X.js → onboarding-R2m4j7Dp.js} +7 -7
- package/dist/{onboarding.finalize-CDE1nAu8.js → onboarding.finalize-B6K3hYJZ.js} +28 -28
- package/dist/{onboarding.finalize-DTqRxVZH.js → onboarding.finalize-C0X_xaHh.js} +27 -27
- package/dist/{onboarding.gateway-config-DOvEzkIo.js → onboarding.gateway-config-CFRbyVyW.js} +4 -4
- package/dist/{onboarding.gateway-config-SrBY4Yem.js → onboarding.gateway-config-DKLUe3Ul.js} +4 -4
- package/dist/{operator-commands-Ct0WXISe.js → operator-commands-BmGo9Ngv.js} +2 -2
- package/dist/{operator-commands-Bfd55UfE.js → operator-commands-EsKoI4yV.js} +2 -2
- package/dist/{outbound-attachment-CqtMGpsJ.js → outbound-attachment-DVKqk30B.js} +2 -2
- package/dist/{outbound-message-hooks-RBQbGzGm.js → outbound-message-hooks-S_VhlJs3.js} +4 -4
- package/dist/{path-alias-guards-Zj-NwKjV.js → path-alias-guards-Cd5yHmTq.js} +1 -1
- package/dist/{paths-C6TxBCvO.js → paths-Cvc9EM8Y.js} +5 -5
- package/dist/{pi-embedded-B6sr5IdC.js → pi-embedded-B7d9LrI1.js} +16 -4
- package/dist/{pi-embedded-helpers-BYLOFsUc.js → pi-embedded-helpers-5JApWu7A.js} +24 -24
- package/dist/{pi-embedded-helpers-BAjtRn7m.js → pi-embedded-helpers-C9XqX-Jq.js} +1 -1
- package/dist/{pi-embedded-helpers-CPorV-Mk.js → pi-embedded-helpers-DIUrv2Ua.js} +1 -1
- package/dist/{pi-embedded-B9bOSjfE.js → pi-embedded-maiK_yr9.js} +183 -171
- package/dist/{pi-embedded-recovery-adapter-Cs1EJElw.js → pi-embedded-recovery-adapter-8xq2SINa.js} +8 -8
- package/dist/{pi-embedded-recovery-adapter-B8Goyik3.js → pi-embedded-recovery-adapter-BHTdeEKa.js} +8 -8
- package/dist/{pi-embedded-recovery-adapter-swbNIWgT.js → pi-embedded-recovery-adapter-DPjgp8q4.js} +2 -2
- package/dist/{pi-embedded-recovery-adapter-ZPyX9YC1.js → pi-embedded-recovery-adapter-DytV4fjp.js} +2 -2
- package/dist/{pi-embedded-utils-CT_f_S3Y.js → pi-embedded-utils-BV_Dtzrw.js} +1 -1
- package/dist/{pi-embedded-utils-lp-U3XQ9.js → pi-embedded-utils-BetZbS6i.js} +1 -1
- package/dist/{pi-embedded-utils-DOtaZ7KV.js → pi-embedded-utils-kHMmP2Xh.js} +3 -3
- package/dist/{pi-model-discovery-B9KKtGuw.js → pi-model-discovery-CsC6yTDG.js} +7 -7
- package/dist/{pi-tools.policy-r9H_A-NQ.js → pi-tools.policy-B7YiM0PW.js} +1 -1
- package/dist/{plugin-registry-CwGfmKsn.js → plugin-registry-AEemJBCl.js} +1 -1
- package/dist/{plugin-registry-EHKfjAoe.js → plugin-registry-BjZ0q-dW.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-BLF4nZUv.js → agent-scope-BYp_CjdU.js} +2 -2
- package/dist/plugin-sdk/{agent-turn-execute-BVPDW02i.js → agent-turn-execute-BRJa_EBt.js} +12 -12
- package/dist/plugin-sdk/agent-turn-execute-lFEMcNl2.js +61 -0
- package/dist/plugin-sdk/{agent-turn-runner-DDIT9POj.js → agent-turn-runner-CqIBwx4o.js} +3 -3
- package/dist/plugin-sdk/agent-turn-runner-LfHz7Qc1.js +11 -0
- package/dist/plugin-sdk/{agent-turn-runner-DjK-LdTA.js → agent-turn-runner-nXQCZaSU.js} +6 -6
- package/dist/plugin-sdk/{api-key-rotation-XDUKz2gd.js → api-key-rotation-CDNf_4cI.js} +2 -2
- package/dist/plugin-sdk/{artifacts-HAYpGlG1.js → artifacts-BMLMg3MG.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-Bi8RI9zM.js → audio-preflight-BVO3xBbT.js} +5 -5
- package/dist/plugin-sdk/{audio-preflight-BS29OWk3.js → audio-preflight-BmKL6FNP.js} +2 -2
- package/dist/plugin-sdk/audio-preflight-DlGohKMs.js +28 -0
- package/dist/plugin-sdk/{audio-transcription-runner-CGgNZVZv.js → audio-transcription-runner-DXiOiQMw.js} +1 -1
- package/dist/plugin-sdk/{audio-transcription-runner-BNafitZj.js → audio-transcription-runner-TBjJv_mZ.js} +10 -10
- package/dist/plugin-sdk/{auth-profiles-CCJQoedi.js → auth-profiles-DHZjW8Vk.js} +5 -5
- package/dist/plugin-sdk/{channel-activity-BKwRzYJb.js → channel-activity-Dr4PYej7.js} +3 -3
- package/dist/plugin-sdk/{chrome-D0eLSqkP.js → chrome-BDy1zYAr.js} +4 -4
- package/dist/plugin-sdk/{chrome-CT_6RvJg.js → chrome-DDIL8pIX.js} +8 -8
- package/dist/plugin-sdk/{chunk-DI-5pBck.js → chunk-BTSnO1wn.js} +6 -6
- package/dist/plugin-sdk/{chunk-CDvvv9SU.js → chunk-DGQdf0JN.js} +3 -3
- package/dist/plugin-sdk/{command-detection-WNHSrul-.js → command-detection-O-osZdkd.js} +99 -87
- package/dist/plugin-sdk/command-queue-BYvVRYdf.js +13 -0
- package/dist/plugin-sdk/{command-queue-DH8k55DC.js → command-queue-Cveon04f.js} +9 -3
- package/dist/plugin-sdk/{command-queue-CHiQj9Ji.js → command-queue-d5XPm8KU.js} +7 -2
- package/dist/plugin-sdk/{commands-registry-Do_g2It_.js → commands-registry-8sy0wsK_.js} +6 -6
- package/dist/plugin-sdk/{commands-registry-DpLk11E7.js → commands-registry-N6f_lsxF.js} +2 -2
- package/dist/plugin-sdk/{config-CQNfmIC8.js → config-Biusjzx-.js} +7 -7
- package/dist/plugin-sdk/{deliver-_UyigkEK.js → deliver-BD3gpFAY.js} +1 -1
- package/dist/plugin-sdk/{deliver-L6eu6zyG.js → deliver-BgHA8c9F.js} +11 -11
- package/dist/plugin-sdk/deliver-DBCz1GqU.js +32 -0
- package/dist/plugin-sdk/{deliver-DuDcszu1.js → deliver-DZoYhDxC.js} +3 -3
- package/dist/plugin-sdk/{diagnostic-Dk57KVjE.js → diagnostic-BhLorIrS.js} +1 -1
- package/dist/plugin-sdk/{diagnostic-DfxuMWHd.js → diagnostic-Bni_8VyY.js} +7 -7
- package/dist/plugin-sdk/{diagnostic-C7lPoqyv.js → diagnostic-D6hSjxiv.js} +5 -5
- package/dist/plugin-sdk/{fetch-guard-CZT8FU1i.js → fetch-guard-C1a1KfEb.js} +3 -3
- package/dist/plugin-sdk/{fs-safe-B0JgGdXa.js → fs-safe-CbZ6uRVv.js} +3 -3
- package/dist/plugin-sdk/{hook-runner-global-WRI53ibi.js → hook-runner-global-BvxlnAyu.js} +3 -3
- package/dist/plugin-sdk/{image-ops-kuILYHZv.js → image-ops-DY_SZfXk.js} +1 -1
- package/dist/plugin-sdk/index.js +54 -54
- package/dist/plugin-sdk/{ir-Bm7oqkwT.js → ir-BNohi6ZW.js} +5 -5
- package/dist/plugin-sdk/{local-roots-D-CHzVr1.js → local-roots-Bm7nDW20.js} +7 -7
- package/dist/plugin-sdk/{logger-BSK-0Yjx.js → logger-D6KsqbNW.js} +1 -1
- package/dist/plugin-sdk/{manager-D2jffdjH.js → manager-B_vK9MbM.js} +8 -8
- package/dist/plugin-sdk/manager-ByaW_O4Y.js +16 -0
- package/dist/plugin-sdk/{markdown-tables-DIWQQ2W1.js → markdown-tables-G4vK24xc.js} +2 -2
- package/dist/plugin-sdk/markdown-tables-J4hZ7eWU.js +10 -0
- package/dist/plugin-sdk/{outbound-attachment-CtKKNyms.js → outbound-attachment-Cw7T2Mrt.js} +2 -2
- package/dist/plugin-sdk/{path-alias-guards-CHfCMaeX.js → path-alias-guards-CVybi_GQ.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-BRymkO_1.js → pi-embedded-helpers-B_jgacW8.js} +11 -11
- package/dist/plugin-sdk/{pi-embedded-helpers-CELD3Ns3.js → pi-embedded-helpers-D74AHWBs.js} +3 -3
- package/dist/plugin-sdk/{pi-embedded-utils-BHmc3RVS.js → pi-embedded-utils-DOXEm_H8.js} +3 -3
- package/dist/plugin-sdk/{pi-embedded-utils-AFQ-oCFM.js → pi-embedded-utils-DQaOun1y.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-6BBajZds.js → pi-model-discovery-DWUrLRLg.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-4X7_2_nP.js → pi-model-discovery-DWw1ReX-.js} +6 -6
- package/dist/plugin-sdk/provider-dispatcher-CC6PgYPM.js +61 -0
- package/dist/plugin-sdk/{provider-dispatcher-D7UK3G8K.js → provider-dispatcher-NB8R-FyS.js} +12 -12
- package/dist/plugin-sdk/provider-image-B_dJDOl5.js +22 -0
- package/dist/plugin-sdk/{provider-image-DBye3Ln5.js → provider-image-CEQrHWYz.js} +5 -5
- package/dist/plugin-sdk/{provider-image-CbZOYl0b.js → provider-image-Cy9HRMER.js} +1 -1
- package/dist/plugin-sdk/{provider-image-Bumd1GBG.js → provider-image-g3vmjlkZ.js} +4 -4
- package/dist/plugin-sdk/provider-media-understanding.js +7 -7
- package/dist/plugin-sdk/{proxy-DJ2nskkh.js → proxy-BWc9guJs.js} +1 -1
- package/dist/plugin-sdk/proxy-DwbYzxBy.js +7 -0
- package/dist/plugin-sdk/{proxy-fetch-CuQpjpkI.js → proxy-fetch-BYkGxQnh.js} +1 -1
- package/dist/plugin-sdk/{pw-ai-BJrhPMHJ.js → pw-ai-DQv6Xhce.js} +10 -10
- package/dist/plugin-sdk/{pw-ai-hVucoF_I.js → pw-ai-DlM8D_uP.js} +1 -1
- package/dist/plugin-sdk/{qmd-manager-DhW_frb3.js → qmd-manager-CpV0SFnY.js} +8 -8
- package/dist/plugin-sdk/{query-expansion-NpBeKA8F.js → query-expansion-CwmHvvV_.js} +3 -3
- package/dist/plugin-sdk/{recorder-DdbAQ2HO.js → recorder-BXZMRSjO.js} +4 -4
- package/dist/plugin-sdk/{redact-CUjmZn2Y.js → redact-C88Ryyfs.js} +1 -1
- package/dist/plugin-sdk/replies-B9uDLFOE.js +25 -0
- package/dist/plugin-sdk/{replies-Dw3jvqpR.js → replies-l2hZAzbt.js} +4 -4
- package/dist/plugin-sdk/{reply-directives-BS8Ge06Z.js → reply-directives-BwxzQXmX.js} +2 -2
- package/dist/plugin-sdk/reply-prefix-BQMEQam1.js +7 -0
- package/dist/plugin-sdk/{reply-prefix-Dt1hESHJ.js → reply-prefix-qLQRxqrf.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-BpLuk-wC.js → resolve-route-50KoArP9.js} +4 -4
- package/dist/plugin-sdk/{resolve-route-DiQTL1qI.js → resolve-route-6v1HVvWk.js} +6 -6
- package/dist/plugin-sdk/{runs-CPWQbljV.js → runs-B4G4Txj3.js} +3 -3
- package/dist/plugin-sdk/runs-BQhYekhr.js +25 -0
- package/dist/plugin-sdk/{runs-D6fAvItC.js → runs-CiohhBb8.js} +7 -7
- package/dist/plugin-sdk/{runs-B3DB63tB.js → runs-Dzlj-BO5.js} +5 -5
- package/dist/plugin-sdk/{send-CpXGZgrS.js → send-BMSqETcU.js} +6 -6
- package/dist/plugin-sdk/send-CeWqZTK0.js +23 -0
- package/dist/plugin-sdk/{send-BDwTyH6I.js → send-Cv2CGnsK.js} +8 -8
- package/dist/plugin-sdk/{send-Ce2XBaKF.js → send-Cx6gHjnA.js} +6 -6
- package/dist/plugin-sdk/send-CzcKgBBf.js +25 -0
- package/dist/plugin-sdk/{send-R0HB1-l-.js → send-DG4MQPPm.js} +13 -13
- package/dist/plugin-sdk/{send-C28pxKhC.js → send-DHNKlQPv.js} +2 -2
- package/dist/plugin-sdk/{send-CE_6VOiQ.js → send-DM6RpDCL.js} +7 -7
- package/dist/plugin-sdk/{send-GMYUhBtJ.js → send-DO0C4Uva.js} +19 -19
- package/dist/plugin-sdk/send-Dvna5ey-.js +27 -0
- package/dist/plugin-sdk/{send-DE9YP1gQ.js → send-Tg5PT6ci.js} +1 -1
- package/dist/plugin-sdk/send-xPV0QIjh.js +24 -0
- package/dist/plugin-sdk/{session-meta-BU2WXD0N.js → session-meta-CiqJP0pO.js} +2 -2
- package/dist/plugin-sdk/session-meta-n4SCcAbJ.js +10 -0
- package/dist/plugin-sdk/skill-commands-BOV3NIbU.js +14 -0
- package/dist/plugin-sdk/{skill-commands-BYfWIPfV.js → skill-commands-CE_SkRQk.js} +5 -5
- package/dist/plugin-sdk/{skills-BuJjEYto.js → skills-CjW6uGTa.js} +6 -6
- package/dist/plugin-sdk/src/auto-reply/reply/agent-runner-execution.d.ts +2 -0
- package/dist/plugin-sdk/src/config/talk.d.ts +0 -4
- package/dist/plugin-sdk/src/gateway/storage-startup-gate.d.ts +28 -8
- package/dist/plugin-sdk/src/process/command-queue.d.ts +3 -0
- package/dist/plugin-sdk/src/talk/realtime-transcription-provider-types.d.ts +4 -1
- package/dist/plugin-sdk/src/talk/streaming-speech-provider-types.d.ts +2 -0
- package/dist/plugin-sdk/{ssrf-DiAz1Z_z.js → ssrf-BUCEDxp5.js} +2 -2
- package/dist/plugin-sdk/{store-Bl3Yjf_w.js → store-yBNTHg3N.js} +2 -2
- package/dist/plugin-sdk/{subagent-registry-Bxwla-0-.js → subagent-registry-B5xaoVWq.js} +12 -12
- package/dist/plugin-sdk/subagent-registry-BiarU1g8.js +61 -0
- package/dist/plugin-sdk/{subsystem-B2x33s9h.js → subsystem-CUUKL6Fr.js} +4 -4
- package/dist/plugin-sdk/{tables-CTmQQyfU.js → tables-DKYi6grj.js} +1 -1
- package/dist/plugin-sdk/testing.js +12 -12
- package/dist/plugin-sdk/{tokens-DxJSOoJn.js → tokens-ysZUkYZZ.js} +1 -1
- package/dist/plugin-sdk/{tool-loop-detection-Buouaxew.js → tool-loop-detection-LsvZ1dIY.js} +1 -1
- package/dist/plugin-sdk/{tools-iyXmO6p1.js → tools-Sk-IqHBP.js} +46 -34
- package/dist/plugin-sdk/{user-run-recording-juCW_uQ-.js → user-run-recording-BMaK7jNR.js} +2 -2
- package/dist/plugin-sdk/user-run-recording-DiKcNdjn.js +11 -0
- package/dist/{plugins-cli-CmYpruM_.js → plugins-cli-CjgLVUxJ.js} +27 -27
- package/dist/{plugins-cli-B0I1Xkrz.js → plugins-cli-Di9VhU7J.js} +27 -27
- package/dist/{program-CA1rDqtK.js → program-Dus5j4vB.js} +28 -28
- package/dist/{program-context-BCo6By7P.js → program-context-CQrxOpXH.js} +36 -36
- package/dist/{prompt-select-styled-cL1dmYcO.js → prompt-select-styled-D1Kc5Amb.js} +9 -9
- package/dist/{prompt-select-styled-BAmwLkut.js → prompt-select-styled-D3Li9uy2.js} +9 -9
- package/dist/{provider-image-CIpRvhkS.js → provider-image-BICZzOki.js} +1 -1
- package/dist/{provider-image-D9B_J5Ys.js → provider-image-Bsivqxw8.js} +1 -1
- package/dist/{provider-image-BllyLBJM.js → provider-image-Cb4z6zUu.js} +5 -5
- package/dist/{proxy-fWL7CKDP.js → proxy-C9sq6M-h.js} +1 -1
- package/dist/{proxy-env-CzGKpJY_.js → proxy-env-i0jn5uxB.js} +2 -2
- package/dist/{proxy-fetch-DCI0KuH6.js → proxy-fetch-CK5AQAYw.js} +1 -1
- package/dist/{push-apns-Bhf8qK68.js → push-apns-BcZzA03X.js} +2 -2
- package/dist/{push-apns-BmrddV2R.js → push-apns-qUm5cL9P.js} +2 -2
- package/dist/{pw-ai-CKjrjwfw.js → pw-ai-Ci1kADkJ.js} +1 -1
- package/dist/{pw-ai-Cd08hlBj.js → pw-ai-DT3fj2Kt.js} +1 -1
- package/dist/{pw-ai-CXSJw34w.js → pw-ai-DziGw6Jy.js} +14 -14
- package/dist/{qmd-manager-BwZ0V5fL.js → qmd-manager-p036XU01.js} +10 -10
- package/dist/{qr-cli-BCIfpQUF.js → qr-cli-BE3QWMP3.js} +3 -3
- package/dist/{qr-cli-BTOCXqFJ.js → qr-cli-DhJ37DZK.js} +3 -3
- package/dist/{query-expansion-31VWpPCz.js → query-expansion-30x7RlZY.js} +5 -5
- package/dist/{reconcile-bundled-Bl6XpmI5.js → reconcile-bundled-CAKTvY-C.js} +1 -1
- package/dist/{reconcile-bundled-TswjG3xv.js → reconcile-bundled-DJKaKSgk.js} +1 -1
- package/dist/{recorder-DNRxe9C8.js → recorder-C_ViZLf1.js} +4 -4
- package/dist/{recovery-adapter-DyPV7syS.js → recovery-adapter-BT12fVyO.js} +8 -8
- package/dist/{recovery-adapter-DW0R_vFE.js → recovery-adapter-DF25-zSH.js} +1 -1
- package/dist/{recovery-adapter-DOizlZvv.js → recovery-adapter-Df87xZQp.js} +8 -8
- package/dist/{recovery-adapter-mi8jbyvy.js → recovery-adapter-okaOo6tO.js} +1 -1
- package/dist/{redact-DZne_lu8.js → redact-BOHmCPP_.js} +1 -1
- package/dist/{register.agent-B3BSgQcW.js → register.agent-BCNYDn8G.js} +27 -27
- package/dist/{register.agent-CSHtI9uN.js → register.agent-CqGVQ2N1.js} +28 -28
- package/dist/{register.configure-CYwDM9d3.js → register.configure-CPTDt8eL.js} +30 -30
- package/dist/{register.configure-Cu4CPpm4.js → register.configure-DxdNTBIk.js} +30 -30
- package/dist/{register.maintenance-BXiHFIyG.js → register.maintenance-BOCv2N1t.js} +28 -28
- package/dist/{register.maintenance-C6vjRY-I.js → register.maintenance-CFjB31Z5.js} +29 -29
- package/dist/{register.message-BsBClRov.js → register.message-CiT53tgD.js} +23 -23
- package/dist/{register.message-DNpBTvto.js → register.message-dqrK9EsG.js} +23 -23
- package/dist/{register.onboard-BKQLGJhh.js → register.onboard-BKoeYDAF.js} +5 -5
- package/dist/{register.onboard-t_7lOkRu.js → register.onboard-xtBBqce9.js} +5 -5
- package/dist/{register.setup-B7QHn0Qv.js → register.setup-qHCNX6LC.js} +5 -5
- package/dist/{register.setup-DEg7fSPZ.js → register.setup-xIVMlLYx.js} +5 -5
- package/dist/{register.status-health-sessions-7E-y6cw7.js → register.status-health-sessions-CaxJw1rr.js} +27 -27
- package/dist/{register.status-health-sessions-D9iuSOb8.js → register.status-health-sessions-D4hMq0I7.js} +27 -27
- package/dist/{register.subclis-R6keQnon.js → register.subclis-srwCZnD0.js} +25 -25
- package/dist/{replies-NkETqb6B.js → replies-BsctLhfp.js} +4 -4
- package/dist/{reply-B4TgvJrJ.js → reply-B_SiN91-.js} +41 -30
- package/dist/{reply-directives-DGITtNUL.js → reply-directives-D9wYtPPy.js} +2 -2
- package/dist/{reply-prefix-DVkNDBNe.js → reply-prefix-C7WlN3qm.js} +1 -1
- package/dist/{resolve-route-jDAjkfZE.js → resolve-route-BV8k5qjX.js} +5 -5
- package/dist/{rpc-B2GRFhpM.js → rpc-BgMIbqpb.js} +1 -1
- package/dist/{rpc-BljNUarN.js → rpc-htgXg_yf.js} +1 -1
- package/dist/{run-main-CMTfGYjG.js → run-main-BzfK-GcH.js} +36 -36
- package/dist/{runs-B0TxOQnF.js → runs-BW5fW5nB.js} +3 -3
- package/dist/{runs-BMp7jOLL.js → runs-BjLs5ozo.js} +3 -3
- package/dist/{runs-DGWNXyKA.js → runs-ucQd8Fc-.js} +8 -8
- package/dist/{sandbox-DbfWdQha.js → sandbox-7YCCMJoM.js} +1 -1
- package/dist/{sandbox-CQwpubTx.js → sandbox-BpdiWabc.js} +1 -1
- package/dist/{sandbox-cli-CSjghLhl.js → sandbox-cli-Dv0Viev8.js} +2 -2
- package/dist/{sandbox-cli-DwhgE7u4.js → sandbox-cli-UfXu5kvh.js} +2 -2
- package/dist/{secrets-cli-jj1RZiK2.js → secrets-cli-DD5pd5lU.js} +3 -3
- package/dist/{secrets-cli-mfGtyiPb.js → secrets-cli-DMX3vuhP.js} +3 -3
- package/dist/{security-cli-DSB1NLa6.js → security-cli-DCKCspHc.js} +7 -7
- package/dist/{security-cli-DlMcCXl1.js → security-cli-DRALCMFL.js} +7 -7
- package/dist/{send-Do1AlhD5.js → send-BGps2i_C.js} +8 -8
- package/dist/{send-ENMm5qbW.js → send-Ba3pDq6E.js} +7 -7
- package/dist/{send-Dq8ChBfS.js → send-BiDcVZSc.js} +6 -6
- package/dist/{send-l57G-s8y.js → send-CZsC4D3G.js} +1 -1
- package/dist/{send-DEFcgo-1.js → send-TscXeVY8.js} +27 -27
- package/dist/{send-CNLmncRW.js → send-Tx-ew59_.js} +6 -6
- package/dist/{send-DAYMV49d.js → send-s0RNLFLX.js} +1 -1
- package/dist/{server-BAGUd2MH.js → server-DWJmtex3.js} +4 -4
- package/dist/{server-context-BUX61Gwl.js → server-context-BEjWhzMi.js} +2 -2
- package/dist/{server-context-FPrSnBNG.js → server-context-CQQ6Q5Kp.js} +2 -2
- package/dist/{server-lifecycle-7QoL5fyb.js → server-lifecycle-B9IQKSom.js} +1 -1
- package/dist/{server-lifecycle-DXRap2AR.js → server-lifecycle-C3hCCbXm.js} +1 -1
- package/dist/{server-node-events-DSTI4JnV.js → server-node-events-8k0OLCvW.js} +23 -23
- package/dist/{server-node-events-MOX6FUiJ.js → server-node-events-BYTgaAay.js} +23 -23
- package/dist/{server-IDopagLT.js → server-y8WhCQvu.js} +4 -4
- package/dist/{session-meta-DuK_BrWT.js → session-meta-DH__PMKt.js} +2 -2
- package/dist/{sessions-Dcu0bdQ7.js → sessions-BlXxa7bM.js} +6 -6
- package/dist/{sessions-CgVN798h.js → sessions-DFDrcshi.js} +6 -6
- package/dist/{sessions-claims-status-D5th0G34.js → sessions-claims-status-BWkOZDb1.js} +2 -2
- package/dist/{sessions-claims-status-Bt9unG8h.js → sessions-claims-status-BzqTiwuz.js} +2 -2
- package/dist/{skill-commands-BhMQp_i8.js → skill-commands-CRZajtK_.js} +9 -9
- package/dist/{skills-ckuLxkyg.js → skills-DOc6uEd1.js} +21 -21
- package/dist/{status-B3eNMcE3.js → status-BacPIpt6.js} +8 -8
- package/dist/{status-C5pbfqhh.js → status-BsGjriqM.js} +8 -8
- package/dist/{store-gQ6FSjVk.js → store-xxN6qyAh.js} +2 -2
- package/dist/{subsystem-CPYnUTN4.js → subsystem-BCjklMkJ.js} +64 -64
- package/dist/{system-cli-B-THY8xp.js → system-cli-DaeSeaNj.js} +3 -3
- package/dist/{system-cli-BqCA8eq3.js → system-cli-LSxX4WjX.js} +3 -3
- package/dist/{tables-DEyD0zuy.js → tables-o3ZpyPWV.js} +1 -1
- package/dist/{task-pipeline-boot-BLEjtMkt.js → task-pipeline-boot-CM-3tH09.js} +23 -23
- package/dist/{task-pipeline-boot-DKqT4VdZ.js → task-pipeline-boot-Dihxq0Tg.js} +23 -23
- package/dist/{task-runlog-retention-cEBecqvb.js → task-runlog-retention-DCbMK2T8.js} +65 -10
- package/dist/{task-runlog-retention-BZrnJGL1.js → task-runlog-retention-GZu-QuBY.js} +65 -10
- package/dist/{tasks-DXPXCFmn.js → tasks-DCbYQt5N.js} +2 -2
- package/dist/{tasks-YUokA114.js → tasks-Dm1ljmuN.js} +2 -2
- package/dist/{tokens-9BPY4SaX.js → tokens-9Mla_HDp.js} +1 -1
- package/dist/{tool-loop-detection-C1fqyXXD.js → tool-loop-detection-8uvf8mSd.js} +2 -2
- package/dist/{tui-CetFSZIt.js → tui-DQwfx20_.js} +3 -3
- package/dist/{tui-5QhX2Lcm.js → tui-X8LP2ykY.js} +3 -3
- package/dist/{tui-cli-Bo-8qeoa.js → tui-cli-DFen3XYb.js} +6 -6
- package/dist/{tui-cli-DFak7s89.js → tui-cli-Dhj11694.js} +6 -6
- package/dist/{update-Dwt-MeRL.js → update-CYcHPlAS.js} +1 -1
- package/dist/{update-B3jJ2yVe.js → update-VuewNwzn.js} +1 -1
- package/dist/{update-cli-Dhxx3iie.js → update-cli-DE0ttohR.js} +32 -32
- package/dist/{update-cli-D5knJbn5.js → update-cli-DECVfh7L.js} +33 -33
- package/dist/{update-runner-18yD5NLo.js → update-runner-C8NxlRy7.js} +1 -1
- package/dist/{update-runner-DohE1D7D.js → update-runner-CBbs-iN_.js} +1 -1
- package/dist/{user-run-recording-B0XAAUwL.js → user-run-recording-CAk1Ketk.js} +2 -2
- package/dist/{validation-cli-Dfac8Duq.js → validation-cli-D8dTZ830.js} +23 -23
- package/dist/{validation-cli-CAge8d_F.js → validation-cli-Di7B-mhn.js} +23 -23
- package/dist/{with-timeout-DD5bV7yq.js → with-timeout-BfG7k9-4.js} +2 -2
- package/dist/{with-timeout-1SSQaGSz.js → with-timeout-CpZZ4mMw.js} +2 -2
- package/dist/{workspace-B707AGIc.js → workspace-Dbn4gFdH.js} +9 -9
- package/extensions/acpx/package.json +1 -1
- package/extensions/anthropic/package.json +1 -1
- package/extensions/bifrost/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/deepgram/package.json +1 -1
- package/extensions/deepinfra/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diffs/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/dream-cycle/package.json +1 -1
- package/extensions/elevenlabs/package.json +1 -1
- package/extensions/elevenlabs/src/realtime-transcription-provider-faults.test.ts +0 -39
- package/extensions/elevenlabs/src/realtime-transcription-provider.test.ts +34 -32
- package/extensions/elevenlabs/src/realtime-transcription-provider.ts +5 -34
- package/extensions/elevenlabs/src/streaming-speech-provider.ts +5 -0
- package/extensions/feishu/package.json +1 -1
- package/extensions/gemini-search/package.json +1 -1
- package/extensions/google/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/grok-search/package.json +1 -1
- package/extensions/groq/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/kimi-search/package.json +1 -1
- package/extensions/learning-core/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +1 -1
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/mistral/package.json +1 -1
- package/extensions/moonshot/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +1 -1
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +1 -1
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/openai/package.json +1 -1
- package/extensions/openai-realtime/package.json +1 -1
- package/extensions/openrouter/package.json +1 -1
- package/extensions/perplexity-search/package.json +1 -1
- package/extensions/searxng-search/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +1 -1
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +1 -1
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zai/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +1 -1
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +1 -1
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/plugin-sdk/agent-turn-execute-zuw0S_Lh.js +0 -61
- package/dist/plugin-sdk/agent-turn-runner-BcrkoR1M.js +0 -11
- package/dist/plugin-sdk/audio-preflight-DE04bi4M.js +0 -28
- package/dist/plugin-sdk/command-queue-BnJsJc_w.js +0 -13
- package/dist/plugin-sdk/deliver-D4fWK65M.js +0 -32
- package/dist/plugin-sdk/manager-BlYRVNJI.js +0 -16
- package/dist/plugin-sdk/markdown-tables-cZSKCBuW.js +0 -10
- package/dist/plugin-sdk/provider-dispatcher-B4PdTha5.js +0 -61
- package/dist/plugin-sdk/provider-image-CNlYbRab.js +0 -22
- package/dist/plugin-sdk/proxy-D2uiu68M.js +0 -7
- package/dist/plugin-sdk/replies-XUkqz_7S.js +0 -25
- package/dist/plugin-sdk/reply-prefix-MU3uY52y.js +0 -7
- package/dist/plugin-sdk/runs-R28wdt7j.js +0 -25
- package/dist/plugin-sdk/send-Cg2VXcO0.js +0 -27
- package/dist/plugin-sdk/send-DAs6FmWB.js +0 -23
- package/dist/plugin-sdk/send-UIQH_kN6.js +0 -25
- package/dist/plugin-sdk/send-tASIQF-Q.js +0 -24
- package/dist/plugin-sdk/session-meta-Dd1ZONel.js +0 -10
- package/dist/plugin-sdk/skill-commands-C7ZE3rKj.js +0 -14
- package/dist/plugin-sdk/subagent-registry-CTZBVVPF.js +0 -61
- 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
|
|
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-
|
|
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-
|
|
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-
|
|
30
|
-
import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
61
|
-
import { F as resolveCronStorePath, I as saveCronStore, P as loadCronStore, S as collectTelegramDuplicatePollerDiagnostics } from "./send-
|
|
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-
|
|
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-
|
|
75
|
-
import { h as extractTextFromChatContent } from "./pi-embedded-utils-
|
|
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-
|
|
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-
|
|
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-
|
|
89
|
-
import { o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-
|
|
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-
|
|
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-
|
|
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-
|
|
119
|
-
import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-
|
|
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-
|
|
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-
|
|
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-
|
|
141
|
+
import "./npm-pack-install-Dlm0MIZy.js";
|
|
142
142
|
import "./skill-scanner-BrEkff8K.js";
|
|
143
|
-
import "./installs-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
163
|
-
import { c as redactOwner, d as redactSensitiveHealthSummary, f as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
177
|
-
import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-
|
|
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-
|
|
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-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
4155
|
+
log$26.error(`watch start failed: ${message}`);
|
|
4156
4156
|
return false;
|
|
4157
4157
|
}
|
|
4158
|
-
log$
|
|
4158
|
+
log$26.info(`watch started for ${cfg.account}`);
|
|
4159
4159
|
return true;
|
|
4160
4160
|
} catch (err) {
|
|
4161
|
-
log$
|
|
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$
|
|
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$
|
|
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$
|
|
4188
|
+
log$26.warn(`[gog] ${line}`);
|
|
4189
4189
|
});
|
|
4190
4190
|
child.on("error", (err) => {
|
|
4191
|
-
log$
|
|
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$
|
|
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$
|
|
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$
|
|
4240
|
+
log$26.info(`tailscale ${runtimeConfig.tailscale.mode} configured for port ${runtimeConfig.serve.port}`);
|
|
4241
4241
|
} catch (err) {
|
|
4242
|
-
log$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
17182
|
+
log$22.warn("session title generation timed out", logFields);
|
|
17193
17183
|
return null;
|
|
17194
17184
|
}
|
|
17195
17185
|
if (response.stopReason === "error") {
|
|
17196
|
-
log$
|
|
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$
|
|
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
|
-
|
|
19792
|
+
if (resumeCandidate(currentTurn, text)) {
|
|
19793
|
+
teardownTurnForCancel(currentTurn, "turn-resumed");
|
|
19794
|
+
startNewTurn(text);
|
|
19795
|
+
}
|
|
19589
19796
|
}
|
|
19590
|
-
/** VAL-LOOP-006: a partial/
|
|
19591
|
-
* first real assistant audio
|
|
19592
|
-
*
|
|
19593
|
-
*
|
|
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
|
|
19598
|
-
if (
|
|
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
|
|
19608
|
-
* handlePossibleResume this only cancels
|
|
19609
|
-
*
|
|
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.
|
|
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:
|
|
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
|
|
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
|
-
|
|
21287
|
+
const unconfigured = !sttProvider.isConfigured({
|
|
21093
21288
|
cfg: snapshot.config,
|
|
21094
21289
|
providerConfig: resolvedSttProviderConfig
|
|
21095
|
-
})
|
|
21290
|
+
}) ? {
|
|
21291
|
+
seam: "transcription",
|
|
21292
|
+
id: sttProvider.id
|
|
21293
|
+
} : !ttsProvider.isConfigured({
|
|
21096
21294
|
cfg: snapshot.config,
|
|
21097
21295
|
providerConfig: resolvedTtsProviderConfig
|
|
21098
|
-
})
|
|
21099
|
-
|
|
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
|
|
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 =
|
|
22442
|
+
const registry = await resolveTaskOperatorRegistry();
|
|
22236
22443
|
if (!registry) {
|
|
22237
|
-
respond
|
|
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-
|
|
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
|
|
31431
|
+
if (!held && phase.phase === "ready") {
|
|
31432
|
+
held = true;
|
|
31433
|
+
phase = { phase: "starting" };
|
|
31434
|
+
}
|
|
31220
31435
|
},
|
|
31221
|
-
|
|
31222
|
-
|
|
31223
|
-
|
|
31436
|
+
markReady() {
|
|
31437
|
+
if (phase.phase === "starting") {
|
|
31438
|
+
phase = { phase: "ready" };
|
|
31439
|
+
wakeAll();
|
|
31440
|
+
}
|
|
31224
31441
|
},
|
|
31225
|
-
|
|
31226
|
-
if (
|
|
31227
|
-
|
|
31228
|
-
|
|
31229
|
-
|
|
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(
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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" },
|