@symerian/symi 2.8.11 → 2.8.13
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/{agents-BbVxJTp2.js → agents-CgCg4syn.js} +4 -4
- package/dist/{agents.config-LE2JxgiS.js → agents.config-BnPC7uct.js} +1 -1
- package/dist/{agents.config-DckCExUX.js → agents.config-DqWxpgkX.js} +1 -1
- package/dist/{audio-preflight-rjCWpcfE.js → audio-preflight-Cb-T0r6e.js} +4 -4
- package/dist/{audit-CNU0I_UT.js → audit-Bi9Je9FZ.js} +1 -1
- package/dist/{audit-F5zQ_Wk9.js → audit-Oa5dsn5p.js} +1 -1
- package/dist/{auth-choice-DnKOB8Gs.js → auth-choice-BIlBt2d0.js} +1 -1
- package/dist/{auth-choice-j1FEYnxv.js → auth-choice-BKwypsnS.js} +1 -1
- package/dist/{banner-BFr8n0of.js → banner-CX5CuLWQ.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +7 -7
- package/dist/bundled/session-memory/handler.js +7 -7
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-BtmFCQOB.js → channel-options-7y9EuPLO.js} +1 -1
- package/dist/{channel-options-DrBxsMlw.js → channel-options-mUKQVJQl.js} +1 -1
- package/dist/{channel-web-YgdajAXX.js → channel-web-Dldh4zVI.js} +1 -1
- package/dist/{channels-cli-ChS_nQcP.js → channels-cli-Dz9vV1KL.js} +7 -7
- package/dist/{channels-cli-fYbw-4gz.js → channels-cli-Q6Q8LokG.js} +7 -7
- package/dist/{chrome-C08Z0XAa.js → chrome-ROtrXlNs.js} +7 -7
- package/dist/{cli-NfoZJEPh.js → cli-D4WYEtu4.js} +4 -4
- package/dist/{cli-CA4qcSFY.js → cli-DMsLCQbO.js} +4 -4
- package/dist/{command-registry-BZfKQQev.js → command-registry-cEqGIx4b.js} +10 -10
- package/dist/{completion-cli-B4YP0Otu.js → completion-cli-Bw0jbNaG.js} +1 -1
- package/dist/{completion-cli-B1JkGibL.js → completion-cli-C5GCKfKT.js} +2 -2
- package/dist/{config-cli-Dm2QMcwn.js → config-cli-DP0hP7WR.js} +1 -1
- package/dist/{config-cli-CgC3xSoL.js → config-cli-DgHooQ4_.js} +1 -1
- package/dist/{configure-DiDXmX3E.js → configure-BQUkaPdS.js} +3 -3
- package/dist/{configure-COCCg2tV.js → configure-OUiXvgMg.js} +3 -3
- package/dist/{deliver-qUx-eLKt.js → deliver-B0OUq6RP.js} +1 -1
- package/dist/{doctor-completion-CophMO9P.js → doctor-completion-BSMAyCq_.js} +1 -1
- package/dist/{doctor-completion-CjlRDZow.js → doctor-completion-DlKvncR9.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +2 -2
- package/dist/{gateway-cli-Dlcx0rsS.js → gateway-cli-BlRNLVfU.js} +182 -13
- package/dist/{gateway-cli-CAPtJ_VJ.js → gateway-cli-NI7W2QxR.js} +182 -13
- package/dist/{glass-ui-ws-hIgOh0Ub.js → glass-ui-ws-BBkFBsKB.js} +11 -11
- package/dist/{glass-ui-ws-GEiZsdru.js → glass-ui-ws-DxrESDzy.js} +11 -11
- package/dist/{health-BAjSATWA.js → health-D4vU-wV-.js} +1 -1
- package/dist/{health-D-0xOxV8.js → health-fOu0S75U.js} +1 -1
- package/dist/{hooks-cli-ZZaM2xfC.js → hooks-cli-BdgnXYmw.js} +5 -5
- package/dist/{hooks-cli-BaoCFIbQ.js → hooks-cli-DdSggQYs.js} +5 -5
- package/dist/{image-C6rCON9L.js → image-BuVL0jHI.js} +1 -1
- package/dist/index.js +9 -9
- package/dist/llm-slug-generator.js +7 -7
- package/dist/{manager-B5JWZL0E.js → manager-DRrGn88w.js} +1 -1
- package/dist/{manager-BpvcDr-7.js → manager-TOeH0D8K.js} +1 -1
- package/dist/{manager-DUuPE1N1.js → manager-_RGWWymD.js} +1 -1
- package/dist/{manager-BxJ9BhQe.js → manager-syNf_ZrI.js} +1 -1
- package/dist/{memory-cli-BQZ0rTKC.js → memory-cli-0jm-n36m.js} +3 -3
- package/dist/{memory-cli-r-ulsUBa.js → memory-cli-BSOOwpt1.js} +3 -3
- package/dist/{models-cli-BGpB4PAp.js → models-cli-CtkoEyh3.js} +5 -5
- package/dist/{models-cli-Ch-4PBud.js → models-cli-DV-J1cm0.js} +6 -6
- package/dist/{models-B1__62Qo.js → models-sGeWQOmg.js} +2 -2
- package/dist/{onboard-CNiwcGJT.js → onboard-CWBYuaCm.js} +2 -2
- package/dist/{onboard-Bub0X2iR.js → onboard-FeTHeA1y.js} +2 -2
- package/dist/{onboard-channels-CYlZtWF6.js → onboard-channels-D8bDJYPc.js} +1 -1
- package/dist/{onboard-channels-BgA4i9TU.js → onboard-channels-DpZkjldS.js} +1 -1
- package/dist/{onboarding-CvK25SU5.js → onboarding-BsPnnH5g.js} +3 -3
- package/dist/{onboarding-DFNiU6QZ.js → onboarding-c2qhwP0x.js} +3 -3
- package/dist/{onboarding.finalize-CvXSAjuU.js → onboarding.finalize-7St3fmk2.js} +9 -9
- package/dist/{onboarding.finalize-_r8l4FJ1.js → onboarding.finalize-id9EHg1P.js} +8 -8
- package/dist/{pi-embedded-HSRJqesT.js → pi-embedded-DCBB1_SC.js} +14 -10
- package/dist/{pi-embedded-helpers-P13adotN.js → pi-embedded-helpers-D1_Sab0M.js} +4 -4
- package/dist/{pi-tools.policy-BPVIDK7o.js → pi-tools.policy-BZrM6a-w.js} +8 -1
- package/dist/{pi-tools.policy-dbCkhLDL.js → pi-tools.policy-QIVWAVVI.js} +8 -1
- package/dist/{plugin-registry-DEKq3ti3.js → plugin-registry-BJSfTT8c.js} +1 -1
- package/dist/{plugin-registry-Chvg6kT0.js → plugin-registry-Cy1kfzAy.js} +1 -1
- package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
- package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
- package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
- package/dist/plugin-sdk/{active-listener-CJuvR4C2.js → active-listener-DYjn3fML.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
- package/dist/plugin-sdk/{api-key-rotation-CBsLb_4V.js → api-key-rotation-DGJZ8SVa.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-DucGa8w7.js → audio-preflight-CiVw8470.js} +24 -24
- package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
- package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
- package/dist/plugin-sdk/{channel-web-CfaamthT.js → channel-web-BSDjZSwm.js} +22 -22
- package/dist/plugin-sdk/{chrome-D9kN9org.js → chrome-CEqfiEs0.js} +3 -3
- package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
- package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-BuYpmEx-.js → commands-registry-BhW_oGNt.js} +4 -4
- package/dist/plugin-sdk/{config-BzupW6LN.js → config-Ckum15iC.js} +9 -9
- package/dist/plugin-sdk/{consolidate-CafShdsH.js → consolidate-COuTEt4Z.js} +2 -2
- package/dist/plugin-sdk/{deliver-CKgFosI5.js → deliver-B8Y2t-RH.js} +10 -10
- package/dist/plugin-sdk/{diagnostic-_oc91gNi.js → diagnostic-BR07buTm.js} +1 -1
- package/dist/plugin-sdk/{image-DFyINnvE.js → image-CCmNHDV0.js} +4 -4
- package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
- package/dist/plugin-sdk/index.js +54 -54
- package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
- package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
- package/dist/plugin-sdk/{login-K1YB_7-t.js → login-g_rQAcuM.js} +7 -7
- package/dist/plugin-sdk/{login-qr-lMl_OqDj.js → login-qr-BOUmLSY3.js} +9 -9
- package/dist/plugin-sdk/{manager-B3jEviU1.js → manager-B9GigLWj.js} +9 -9
- package/dist/plugin-sdk/{manifest-registry-hy3Bn-r9.js → manifest-registry-BRx4JDK0.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
- package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
- package/dist/plugin-sdk/{model-selection-CtVwtb6y.js → model-selection-Bbs4XGPG.js} +4 -4
- package/dist/plugin-sdk/{outbound-DW3cqlQW.js → outbound-BVhSNFy0.js} +7 -7
- package/dist/plugin-sdk/{outbound-attachment-D7ME_Kib.js → outbound-attachment-B56R1Wi4.js} +2 -2
- package/dist/plugin-sdk/{pi-auth-json-DiyK6bgV.js → pi-auth-json-CB2bV0Jd.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-BL7ZRhGv.js → pi-embedded-helpers-dd3G9Hfi.js} +17 -17
- package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
- package/dist/plugin-sdk/{pw-ai-B3T0mTHr.js → pw-ai-BXeOYCz_.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-BlUikj9s.js → qmd-manager-wIr8qz2n.js} +4 -4
- package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
- package/dist/plugin-sdk/{replies-BR2TPTVW.js → replies-CQ4szNhV.js} +3 -3
- package/dist/plugin-sdk/{reply-DWwxgBtH.js → reply-DD8z_dUW.js} +87 -83
- package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
- package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-CHQ7BTlU.js → resolve-route-CWfcnhza.js} +3 -3
- package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
- package/dist/plugin-sdk/{runner-BhifC1J_.js → runner-BuxCHv_O.js} +9 -9
- package/dist/plugin-sdk/{send-CGhw9mO3.js → send-BtO-7fHs.js} +6 -6
- package/dist/plugin-sdk/{send-DLO_yV5_.js → send-CKXzQuXo.js} +10 -10
- package/dist/plugin-sdk/{send-ZhAe1nXO.js → send-Djq5IPRa.js} +10 -10
- package/dist/plugin-sdk/{send-jsofmTfJ.js → send-XSuwT1PC.js} +7 -7
- package/dist/plugin-sdk/{send-BP5pSPaZ.js → send-fNRDT21N.js} +6 -6
- package/dist/plugin-sdk/{session-BfyK_04G.js → session-ARbcLHE9.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-DEfqC_kJ.js → skill-commands-yzJVuTIW.js} +5 -5
- package/dist/plugin-sdk/{skills-C9DbB-Kp.js → skills-BfsaS1F9.js} +7 -7
- package/dist/plugin-sdk/{sqlite-CmVrFEYD.js → sqlite-A3wGzttn.js} +1 -1
- package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
- package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
- package/dist/plugin-sdk/{synthesis-C_u94H_P.js → synthesis-Dv5GwSky.js} +49 -49
- package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
- package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
- package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
- package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
- package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
- package/dist/plugin-sdk/{tool-loop-detection-DseOlBug.js → tool-loop-detection-gmtzSlNZ.js} +2 -2
- package/dist/plugin-sdk/web-CmKqZEsX.js +66 -0
- package/dist/plugin-sdk/{whatsapp-actions-eTefsWhW.js → whatsapp-actions-B_1l8JMU.js} +21 -21
- package/dist/{plugins-cli-QZlpLtva.js → plugins-cli-6UYkZBH0.js} +5 -5
- package/dist/{plugins-cli-Cd99p333.js → plugins-cli-DPetEhfv.js} +5 -5
- package/dist/{program-DtyqJT55.js → program-CVy9LVoS.js} +10 -10
- package/dist/{program-context-D0rHgaWi.js → program-context-CBI6gIf-.js} +19 -19
- package/dist/{prompt-select-styled-Dw0GkMPo.js → prompt-select-styled-BlXl_Qf7.js} +6 -6
- package/dist/{prompt-select-styled-DqjIswKp.js → prompt-select-styled-Bv675D48.js} +6 -6
- package/dist/{provider-auth-helpers-DCEiDG3X.js → provider-auth-helpers-BB1lhCy5.js} +1 -1
- package/dist/{provider-auth-helpers-KFQclkJT.js → provider-auth-helpers-RUQD5XAm.js} +1 -1
- package/dist/{push-apns-CB_8WzQ9.js → push-apns-Cr-a1KBt.js} +1 -1
- package/dist/{push-apns-tfhjtI57.js → push-apns-rPetW5cI.js} +1 -1
- package/dist/{pw-ai-CeWN4iD9.js → pw-ai-DWkC5eGA.js} +1 -1
- package/dist/{register.agent-i2wi1-vo.js → register.agent-DKDwNHQi.js} +9 -9
- package/dist/{register.agent--QTUjLu9.js → register.agent-j6OlKEU-.js} +8 -8
- package/dist/{register.configure-B9JysEK8.js → register.configure-BgIXIq9d.js} +9 -9
- package/dist/{register.configure-ByJcC9t4.js → register.configure-CopgSygi.js} +9 -9
- package/dist/{register.maintenance-TB5RRHQv.js → register.maintenance-BKsCM6NG.js} +11 -11
- package/dist/{register.maintenance-D67PVhC5.js → register.maintenance-DjaGkVtr.js} +10 -10
- package/dist/{register.message-DT_TqsFl.js → register.message-C3oHvmdl.js} +5 -5
- package/dist/{register.message-G6-UeGON.js → register.message-bxhUcSyj.js} +5 -5
- package/dist/{register.onboard-BPcP1dJD.js → register.onboard-D0DHcb20.js} +7 -7
- package/dist/{register.onboard-jbp1Eeea.js → register.onboard-DijWH8Vd.js} +7 -7
- package/dist/{register.setup-Le3LEqeh.js → register.setup-CrFzd94c.js} +7 -7
- package/dist/{register.setup-D4QeCLuQ.js → register.setup-XlCTnTm_.js} +7 -7
- package/dist/{register.status-health-sessions-BACExyrd.js → register.status-health-sessions-AWCg_uLf.js} +7 -7
- package/dist/{register.status-health-sessions-B03EDfwZ.js → register.status-health-sessions-VwvDWUxZ.js} +7 -7
- package/dist/{register.subclis-CTnvwrsP.js → register.subclis-Bw8k5Z5C.js} +10 -10
- package/dist/{reply-C5VU6T-F.js → reply-D7_t00Jt.js} +6 -9
- package/dist/{run-main-DmgESA-W.js → run-main-7BEaNeDG.js} +18 -18
- package/dist/{runner-D633VT13.js → runner-ecX1WzDt.js} +1 -1
- package/dist/{security-cli-ChPAyhec.js → security-cli-BpnzAB5_.js} +2 -2
- package/dist/{security-cli-Cq56CAVI.js → security-cli-D9WEiEjD.js} +2 -2
- package/dist/{server-methods-EJZ_r3g7.js → server-methods-CTeJHJSZ.js} +8 -8
- package/dist/{server-methods-kM6zF8qf.js → server-methods-FQ-PqiVC.js} +8 -8
- package/dist/{server-node-events-ZgCh4sCg.js → server-node-events-BqvcHbuK.js} +5 -5
- package/dist/{server-node-events-BM-APRHy.js → server-node-events-Z7epDloV.js} +5 -5
- package/dist/{status-Nf53o222.js → status-CKROJwI2.js} +1 -1
- package/dist/{status-C_gwgMp4.js → status-DLFbpd9v.js} +4 -4
- package/dist/{status-WMQ2CpbK.js → status-DMigoL7q.js} +4 -4
- package/dist/{status-BhQk3JSz.js → status-x7WCSVhG.js} +1 -1
- package/dist/{subagent-registry-BCWbFTGF.js → subagent-registry-BvP8AGdE.js} +6 -9
- package/dist/{synthesis-DIKBPZgB.js → synthesis-By7KPUAm.js} +4 -4
- package/dist/{synthesis-CJIAYDoU.js → synthesis-DDId6n26.js} +4 -4
- package/dist/{synthesis-CWsrtigA.js → synthesis-DgQz6kPf.js} +2 -2
- package/dist/{synthesis-VfWtSYrv.js → synthesis-E4flT91F.js} +7 -7
- package/dist/{unified-runner-yPBTU4xt.js → unified-runner-DaSb-TsZ.js} +28 -24
- package/dist/{update-cli-sTB4AuZ6.js → update-cli-C5H6DkNM.js} +10 -10
- package/dist/{update-cli-NRTVUdGw.js → update-cli-D0relAZw.js} +11 -11
- package/dist/{update-runner-BQJSshFU.js → update-runner-B_yVOk8Z.js} +1 -1
- package/dist/{update-runner-DG5x7t--.js → update-runner-D99V_zHX.js} +1 -1
- package/dist/{web-D9_FatXM.js → web-BBz1kF_9.js} +7 -7
- package/dist/{web-Dpfsnk-b.js → web-BQh2S6oq.js} +4 -4
- package/dist/{web-TVVa5EDS.js → web-Bdebat5l.js} +5 -5
- package/dist/{web-eJWNRwV5.js → web-CiYoJfrl.js} +2 -2
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/learning-loop/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- 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-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/index.ts +12 -2
- package/extensions/outlook/package.json +1 -1
- package/extensions/pipeline/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/skills/long-task/scripts/detach-task.sh +57 -5
- package/dist/plugin-sdk/web-DFvYfej5.js +0 -66
|
@@ -11,14 +11,14 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
|
|
|
11
11
|
import { t as note$1 } from "./note-DewoEWtc.js";
|
|
12
12
|
import { t as WizardCancelledError } from "./prompts-DbHSz44H.js";
|
|
13
13
|
import { t as createClackPrompter } from "./clack-prompter-CTPf_777.js";
|
|
14
|
-
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-
|
|
14
|
+
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-D8bDJYPc.js";
|
|
15
15
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-D_elkkFW.js";
|
|
16
16
|
import { t as resolveGatewayService } from "./service-RxN7lQKN.js";
|
|
17
|
-
import { r as healthCommand } from "./health-
|
|
17
|
+
import { r as healthCommand } from "./health-fOu0S75U.js";
|
|
18
18
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Clf7H-Sm.js";
|
|
19
19
|
import { n as logConfigUpdated } from "./logging-PVQxLC6I.js";
|
|
20
20
|
import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-DF6R_pgV.js";
|
|
21
|
-
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-
|
|
21
|
+
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-BKwypsnS.js";
|
|
22
22
|
import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-n7beL1F5.js";
|
|
23
23
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-ipoPa7o0.js";
|
|
24
24
|
import { a as promptCustomApiConfig } from "./onboard-custom-CJGSIPt3.js";
|
|
@@ -13,14 +13,14 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
|
|
|
13
13
|
import { t as note$1 } from "./note-ByDX0v9V.js";
|
|
14
14
|
import { t as WizardCancelledError } from "./prompts-NOUgk6FH.js";
|
|
15
15
|
import { t as createClackPrompter } from "./clack-prompter-CM5UgVAv.js";
|
|
16
|
-
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-
|
|
16
|
+
import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-DpZkjldS.js";
|
|
17
17
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Cp7obV7Q.js";
|
|
18
18
|
import { t as resolveGatewayService } from "./service-DzLem5vL.js";
|
|
19
|
-
import { r as healthCommand } from "./health-
|
|
19
|
+
import { r as healthCommand } from "./health-D4vU-wV-.js";
|
|
20
20
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BrP31IQR.js";
|
|
21
21
|
import { n as logConfigUpdated } from "./logging-CZuxhCZR.js";
|
|
22
22
|
import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-PeQmwVpp.js";
|
|
23
|
-
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-
|
|
23
|
+
import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-BIlBt2d0.js";
|
|
24
24
|
import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-BNWV-jU4.js";
|
|
25
25
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-0C265XKH.js";
|
|
26
26
|
import { a as promptCustomApiConfig } from "./onboard-custom-Dk9cL3Uu.js";
|
|
@@ -3,7 +3,7 @@ import { s as resolveStateDir } from "./paths-CE7eVGHg.js";
|
|
|
3
3
|
import { m as normalizeOptionalAccountId, p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
|
|
4
4
|
import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-DYq1AYOv.js";
|
|
5
5
|
import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
|
|
6
|
-
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-
|
|
6
|
+
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-D1_Sab0M.js";
|
|
7
7
|
import { d as getChannelDock } from "./thinking-BprCy23Z.js";
|
|
8
8
|
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BzmbgY7s.js";
|
|
9
9
|
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-W0JzCJJM.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
2
2
|
import { r as resolveCliName } from "./command-format-COaS-S7B.js";
|
|
3
3
|
import { t as note } from "./note-ByDX0v9V.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Bw0jbNaG.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { spawnSync } from "node:child_process";
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as resolveCliName } from "./command-format-BtYOfWxC.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
|
|
3
3
|
import { t as note } from "./note-DewoEWtc.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-C5GCKfKT.js";
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
package/dist/entry.js
CHANGED
|
@@ -2500,7 +2500,7 @@ if (!ensureExperimentalWarningSuppressed()) {
|
|
|
2500
2500
|
applyCliProfileEnv({ profile: parsed.profile });
|
|
2501
2501
|
process$1.argv = parsed.argv;
|
|
2502
2502
|
}
|
|
2503
|
-
import("./run-main-
|
|
2503
|
+
import("./run-main-7BEaNeDG.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
|
|
2504
2504
|
console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
2505
2505
|
process$1.exitCode = 1;
|
|
2506
2506
|
});
|
package/dist/extensionAPI.js
CHANGED
|
@@ -7,7 +7,7 @@ import { a as resolveAgentIdentity } from "./reply-prefix-K_J_nfgx.js";
|
|
|
7
7
|
import "./github-copilot-token-BbsJ0Qbo.js";
|
|
8
8
|
import "./env-CQ_DQOwT.js";
|
|
9
9
|
import "./tokens-Cn6drXx2.js";
|
|
10
|
-
import { O as resolveAgentTimeoutMs, m as runEmbeddedPiAgent } from "./pi-embedded-
|
|
10
|
+
import { O as resolveAgentTimeoutMs, m as runEmbeddedPiAgent } from "./pi-embedded-DCBB1_SC.js";
|
|
11
11
|
import "./plugins-71oIavrF.js";
|
|
12
12
|
import "./accounts-DDEyGwby.js";
|
|
13
13
|
import "./bindings-DYVakimr.js";
|
|
@@ -35,7 +35,7 @@ import "./accounts-DImOt9jX.js";
|
|
|
35
35
|
import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-DkMamAQ-.js";
|
|
36
36
|
import "./tool-images-ChC2CXaN.js";
|
|
37
37
|
import "./image-tzIqIuKx.js";
|
|
38
|
-
import "./manager-
|
|
38
|
+
import "./manager-DRrGn88w.js";
|
|
39
39
|
import "./gemini-auth-DVcG-42i.js";
|
|
40
40
|
import "./retry-QGp0jvVi.js";
|
|
41
41
|
import "./sqlite-Bo4pHfp8.js";
|
|
@@ -22,7 +22,7 @@ import "./pairing-token-Byh6drgn.js";
|
|
|
22
22
|
import { t as safeEqualSecret } from "./secret-equal-CbntzRkh.js";
|
|
23
23
|
import { a as isValidIPv4, c as resolveClientIp, d as resolveHostName, f as rawDataToString, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, t as isLoopbackAddress, u as resolveGatewayListenHosts } from "./net-DZ5Ayk-W.js";
|
|
24
24
|
import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-Cmumpn76.js";
|
|
25
|
-
import { $ as getCliSessionId, $t as setPreRestartDeferralCheck, An as DEFAULT_INPUT_TIMEOUT_MS, At as normalizeOptionalSessionKey, Bt as buildSafeExternalPrompt, Cn as enqueueSystemEvent, Cr as onAgentEvent, Dn as DEFAULT_INPUT_IMAGE_MAX_BYTES, E as createDefaultDeps, F as buildHistoryContextFromEntries, Ft as buildDeliveryFromLegacyPayload, H as getTotalPendingReplies, Ht as getHookType, In as resolveAgentTimeoutMs, It as hasLegacyDeliveryHints, J as runAgentTurn, Jt as emitGatewayRestart, Kt as consumeGatewaySigusr1RestartAuthorization, Lt as stripLegacyDeliveryFields, Mn as extractImageContentFromSource, Mt as normalizePayloadToSystemText, Nn as normalizeMimeList, Nt as normalizeRequiredName, O as resolveAgentAvatar, On as DEFAULT_INPUT_IMAGE_MIMES, Ot as inferLegacyName, Pn as resolveInputFileLimits, Pt as migrateLegacyCronPayload, Q as resolveModelProfile, Qt as setGatewaySigusr1RestartPolicy, Sr as getAgentRunContext, St as summarizeRestartSentinel, T as createOutboundSendDeps, Tt as normalizeHttpWebhookUrl, Ut as isExternalHookSession, Vt as detectSuspiciousPatterns, X as getActiveEmbeddedRunCount, Xt as markGatewaySigusr1RestartHandled, Yt as isGatewaySigusr1RestartExternallyAllowed, _ as readJsonBodyWithLimit, at as resolveAnnounceTargetFromKey, b as sleepWithAbort, br as clearAgentRunContext, bt as formatRestartSentinelMessage, cr as getActiveTaskCount, ct as resolveOutboundSessionRoute, dn as requestHeartbeatNow, dr as resetAllLanes, dt as resolveOutboundTarget, et as setCliSessionId, f as getPluginToolMeta, fr as setCommandLaneConcurrency, ft as resolveSessionDeliveryTarget, g as handleSlackHttpRequest, gt as runWithModelFallback, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, i as listDescendantRunsForRequester, it as readLatestAssistantReply, jn as extractFileContentFromSource, jt as normalizeOptionalText, kn as DEFAULT_INPUT_MAX_REDIRECTS, kt as normalizeOptionalAgentId, l as applyToolPolicyPipeline, m as loadSymiPlugins, mr as CommandLane, mt as resetDirectoryCache, n as countActiveRunsForSession, pr as waitForActiveTasks, q as resolveCronStyleNow, qt as deferGatewayRestartUntilIdle, r as initSubagentRegistry, rt as createSymiTools, s as runSubagentAnnounceFlow, t as countActiveDescendantRuns, tt as runCliAgent, u as buildDefaultToolPolicyPipelineSteps, ur as getTotalQueueSize, v as requestBodyErrorToText, vt as consumeRestartSentinel, wr as registerAgentRunContext, x as agentCommand, xr as emitAgentEvent, y as computeBackoff, yr as stripHeartbeatToken } from "./subagent-registry-
|
|
25
|
+
import { $ as getCliSessionId, $t as setPreRestartDeferralCheck, An as DEFAULT_INPUT_TIMEOUT_MS, At as normalizeOptionalSessionKey, Bt as buildSafeExternalPrompt, Cn as enqueueSystemEvent, Cr as onAgentEvent, Dn as DEFAULT_INPUT_IMAGE_MAX_BYTES, E as createDefaultDeps, F as buildHistoryContextFromEntries, Ft as buildDeliveryFromLegacyPayload, H as getTotalPendingReplies, Ht as getHookType, In as resolveAgentTimeoutMs, It as hasLegacyDeliveryHints, J as runAgentTurn, Jt as emitGatewayRestart, Kt as consumeGatewaySigusr1RestartAuthorization, Lt as stripLegacyDeliveryFields, Mn as extractImageContentFromSource, Mt as normalizePayloadToSystemText, Nn as normalizeMimeList, Nt as normalizeRequiredName, O as resolveAgentAvatar, On as DEFAULT_INPUT_IMAGE_MIMES, Ot as inferLegacyName, Pn as resolveInputFileLimits, Pt as migrateLegacyCronPayload, Q as resolveModelProfile, Qt as setGatewaySigusr1RestartPolicy, Sr as getAgentRunContext, St as summarizeRestartSentinel, T as createOutboundSendDeps, Tt as normalizeHttpWebhookUrl, Ut as isExternalHookSession, Vt as detectSuspiciousPatterns, X as getActiveEmbeddedRunCount, Xt as markGatewaySigusr1RestartHandled, Yt as isGatewaySigusr1RestartExternallyAllowed, _ as readJsonBodyWithLimit, at as resolveAnnounceTargetFromKey, b as sleepWithAbort, br as clearAgentRunContext, bt as formatRestartSentinelMessage, cr as getActiveTaskCount, ct as resolveOutboundSessionRoute, dn as requestHeartbeatNow, dr as resetAllLanes, dt as resolveOutboundTarget, et as setCliSessionId, f as getPluginToolMeta, fr as setCommandLaneConcurrency, ft as resolveSessionDeliveryTarget, g as handleSlackHttpRequest, gt as runWithModelFallback, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, i as listDescendantRunsForRequester, it as readLatestAssistantReply, jn as extractFileContentFromSource, jt as normalizeOptionalText, kn as DEFAULT_INPUT_MAX_REDIRECTS, kt as normalizeOptionalAgentId, l as applyToolPolicyPipeline, m as loadSymiPlugins, mr as CommandLane, mt as resetDirectoryCache, n as countActiveRunsForSession, pr as waitForActiveTasks, q as resolveCronStyleNow, qt as deferGatewayRestartUntilIdle, r as initSubagentRegistry, rt as createSymiTools, s as runSubagentAnnounceFlow, t as countActiveDescendantRuns, tt as runCliAgent, u as buildDefaultToolPolicyPipelineSteps, ur as getTotalQueueSize, v as requestBodyErrorToText, vt as consumeRestartSentinel, wr as registerAgentRunContext, x as agentCommand, xr as emitAgentEvent, y as computeBackoff, yr as stripHeartbeatToken } from "./subagent-registry-BvP8AGdE.js";
|
|
26
26
|
import { D as resolveSessionResetPolicy, F as resolveMainSessionKey, H as cleanStaleLockFiles, I as resolveMainSessionKeyFromConfig, K as mergeDeliveryContext, M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, T as evaluateSessionFreshness, W as deliveryContextFromSession, d as updateSessionStore, n as parseSessionThreadInfo, o as loadSessionStore } from "./sessions-BPD85pWA.js";
|
|
27
27
|
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Csntmwwn.js";
|
|
28
28
|
import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
|
|
@@ -60,8 +60,8 @@ import "./tool-images-CVLISeRT.js";
|
|
|
60
60
|
import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-8sKPnzpp.js";
|
|
61
61
|
import "./models-config-J1x_DaPn.js";
|
|
62
62
|
import { a as resolveAgentIdentity } from "./reply-prefix-BUN71nd5.js";
|
|
63
|
-
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-
|
|
64
|
-
import { a as resolveMemorySearchConfig } from "./manager-
|
|
63
|
+
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BSOOwpt1.js";
|
|
64
|
+
import { a as resolveMemorySearchConfig } from "./manager-syNf_ZrI.js";
|
|
65
65
|
import "./gemini-auth-DEakvf-D.js";
|
|
66
66
|
import "./retry-C4Q_VPOo.js";
|
|
67
67
|
import "./sqlite-BP8tiuca.js";
|
|
@@ -106,7 +106,7 @@ import "./replies-Sxbew659.js";
|
|
|
106
106
|
import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-CF0Cp3OB.js";
|
|
107
107
|
import "./prompt-style-BxVdnrLq.js";
|
|
108
108
|
import "./pairing-labels-BHx_CdbP.js";
|
|
109
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-
|
|
109
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-QIVWAVVI.js";
|
|
110
110
|
import { i as onHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-D0_vbMWW.js";
|
|
111
111
|
import { t as ensureSymiCliOnPath } from "./path-env-CaiY2aOj.js";
|
|
112
112
|
import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-Cw6NBIXW.js";
|
|
@@ -129,22 +129,22 @@ import "./diagnostics-C6xPE2ln.js";
|
|
|
129
129
|
import "./table-Bka4fasy.js";
|
|
130
130
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BrG9qS1M.js";
|
|
131
131
|
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-vevi4OAS.js";
|
|
132
|
-
import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-
|
|
132
|
+
import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-Oa5dsn5p.js";
|
|
133
133
|
import { t as discoverGatewayBeacons } from "./bonjour-discovery-BWaTCKHh.js";
|
|
134
|
-
import { i as pickGatewaySelfPresence } from "./status-
|
|
135
|
-
import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-
|
|
134
|
+
import { i as pickGatewaySelfPresence } from "./status-DMigoL7q.js";
|
|
135
|
+
import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-fOu0S75U.js";
|
|
136
136
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Clf7H-Sm.js";
|
|
137
137
|
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-BNjupSIM.js";
|
|
138
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
139
|
-
import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-
|
|
140
|
-
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-
|
|
138
|
+
import { t as runOnboardingWizard } from "./onboarding-BsPnnH5g.js";
|
|
139
|
+
import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-CTeJHJSZ.js";
|
|
140
|
+
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-rPetW5cI.js";
|
|
141
141
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-YTXXLbHH.js";
|
|
142
|
-
import "./agents.config-
|
|
142
|
+
import "./agents.config-BnPC7uct.js";
|
|
143
143
|
import "./dm-policy-shared-JiSNSaKz.js";
|
|
144
144
|
import "./node-service-B-qdOCNb.js";
|
|
145
145
|
import "./status.update-B5zI1_Id.js";
|
|
146
146
|
import "./skills-install-BnEN_qla.js";
|
|
147
|
-
import "./update-runner-
|
|
147
|
+
import "./update-runner-B_yVOk8Z.js";
|
|
148
148
|
import { t as resolveAgentSessionDirs } from "./session-dirs-Dgz7kkUM.js";
|
|
149
149
|
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-mCPSj6kV.js";
|
|
150
150
|
import { n as forceFreePortAndWait } from "./ports-DQg7kV5s.js";
|
|
@@ -5405,6 +5405,174 @@ function applyGatewayLaneConcurrency(cfg) {
|
|
|
5405
5405
|
setCommandLaneConcurrency(CommandLane.Subagent, resolveSubagentMaxConcurrent(cfg));
|
|
5406
5406
|
}
|
|
5407
5407
|
|
|
5408
|
+
//#endregion
|
|
5409
|
+
//#region src/infra/long-task-janitor.ts
|
|
5410
|
+
const TASK_FILE_SUFFIXES = [
|
|
5411
|
+
".pid",
|
|
5412
|
+
".cmd",
|
|
5413
|
+
".started",
|
|
5414
|
+
".log",
|
|
5415
|
+
".status"
|
|
5416
|
+
];
|
|
5417
|
+
const TASK_FILE_PREFIX = "task-";
|
|
5418
|
+
const DEFAULT_TASK_FILE_AGE_MS = 10080 * 60 * 1e3;
|
|
5419
|
+
const DEFAULT_SWEEP_INTERVAL_MS = 1440 * 60 * 1e3;
|
|
5420
|
+
function defaultIsPidAlive(pid) {
|
|
5421
|
+
try {
|
|
5422
|
+
process.kill(pid, 0);
|
|
5423
|
+
return true;
|
|
5424
|
+
} catch (err) {
|
|
5425
|
+
if (err.code === "EPERM") return true;
|
|
5426
|
+
return false;
|
|
5427
|
+
}
|
|
5428
|
+
}
|
|
5429
|
+
/**
|
|
5430
|
+
* Sweep dead-task state files from a single workspace directory.
|
|
5431
|
+
*
|
|
5432
|
+
* A task-id is eligible for sweep when its recorded PID is no longer alive
|
|
5433
|
+
* AND the oldest of its state files is older than ageMs. Conservative on
|
|
5434
|
+
* purpose: leaving a stale set for one extra cycle is harmless; deleting
|
|
5435
|
+
* the state of a live task is not.
|
|
5436
|
+
*
|
|
5437
|
+
* Orphans without a `.pid` file (parent crashed before line 180) are also
|
|
5438
|
+
* caught — we key on any task-<id>.<suffix> match.
|
|
5439
|
+
*/
|
|
5440
|
+
async function sweepLongTaskFiles(workdir, options = {}) {
|
|
5441
|
+
const result = {
|
|
5442
|
+
scanned: 0,
|
|
5443
|
+
swept: 0,
|
|
5444
|
+
errors: 0,
|
|
5445
|
+
sweptIds: []
|
|
5446
|
+
};
|
|
5447
|
+
const now = options.now ?? Date.now();
|
|
5448
|
+
const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
|
|
5449
|
+
const isPidAlive = options.isPidAlive ?? defaultIsPidAlive;
|
|
5450
|
+
let entries;
|
|
5451
|
+
try {
|
|
5452
|
+
entries = await fs.promises.readdir(workdir);
|
|
5453
|
+
} catch {
|
|
5454
|
+
return result;
|
|
5455
|
+
}
|
|
5456
|
+
const taskIds = /* @__PURE__ */ new Set();
|
|
5457
|
+
for (const entry of entries) {
|
|
5458
|
+
if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
|
|
5459
|
+
for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
|
|
5460
|
+
const id = entry.slice(5, -suffix.length);
|
|
5461
|
+
if (id.length > 0) taskIds.add(id);
|
|
5462
|
+
break;
|
|
5463
|
+
}
|
|
5464
|
+
}
|
|
5465
|
+
for (const taskId of taskIds) {
|
|
5466
|
+
result.scanned++;
|
|
5467
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
|
|
5468
|
+
let pid = 0;
|
|
5469
|
+
let pidStatMs = null;
|
|
5470
|
+
try {
|
|
5471
|
+
const pidText = await fs.promises.readFile(pidPath, "utf8");
|
|
5472
|
+
pid = Number.parseInt(pidText.trim(), 10);
|
|
5473
|
+
pidStatMs = (await fs.promises.stat(pidPath)).mtimeMs;
|
|
5474
|
+
} catch (err) {
|
|
5475
|
+
if (err.code !== "ENOENT") {
|
|
5476
|
+
result.errors++;
|
|
5477
|
+
continue;
|
|
5478
|
+
}
|
|
5479
|
+
}
|
|
5480
|
+
if (pid > 0 && Number.isFinite(pid) && isPidAlive(pid)) continue;
|
|
5481
|
+
let oldestMs = pidStatMs ?? Number.POSITIVE_INFINITY;
|
|
5482
|
+
for (const suffix of TASK_FILE_SUFFIXES) {
|
|
5483
|
+
if (suffix === ".pid" && pidStatMs !== null) continue;
|
|
5484
|
+
try {
|
|
5485
|
+
const stat = await fs.promises.stat(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
|
|
5486
|
+
if (stat.mtimeMs < oldestMs) oldestMs = stat.mtimeMs;
|
|
5487
|
+
} catch {}
|
|
5488
|
+
}
|
|
5489
|
+
if (!Number.isFinite(oldestMs)) continue;
|
|
5490
|
+
if (now - oldestMs < ageMs) continue;
|
|
5491
|
+
let unlinkErrors = 0;
|
|
5492
|
+
for (const suffix of TASK_FILE_SUFFIXES) try {
|
|
5493
|
+
await fs.promises.unlink(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
|
|
5494
|
+
} catch (err) {
|
|
5495
|
+
if (err.code !== "ENOENT") unlinkErrors++;
|
|
5496
|
+
}
|
|
5497
|
+
if (unlinkErrors > 0) result.errors++;
|
|
5498
|
+
else {
|
|
5499
|
+
result.swept++;
|
|
5500
|
+
result.sweptIds.push(taskId);
|
|
5501
|
+
}
|
|
5502
|
+
}
|
|
5503
|
+
return result;
|
|
5504
|
+
}
|
|
5505
|
+
async function collectAgentWorkspaces(cfg) {
|
|
5506
|
+
const config = cfg ?? loadConfig();
|
|
5507
|
+
const seen = /* @__PURE__ */ new Set();
|
|
5508
|
+
for (const agentId of listAgentIds(config)) try {
|
|
5509
|
+
const ws = resolveAgentWorkspaceDir(config, agentId);
|
|
5510
|
+
if (ws) seen.add(ws);
|
|
5511
|
+
} catch {}
|
|
5512
|
+
return [...seen];
|
|
5513
|
+
}
|
|
5514
|
+
let janitorTimer = null;
|
|
5515
|
+
let janitorBootKick = null;
|
|
5516
|
+
function startLongTaskJanitor(options = {}) {
|
|
5517
|
+
if (janitorTimer) return () => stopLongTaskJanitor();
|
|
5518
|
+
const log = getChildLogger({ module: "long-task-janitor" });
|
|
5519
|
+
const intervalMs = options.intervalMs ?? DEFAULT_SWEEP_INTERVAL_MS;
|
|
5520
|
+
const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
|
|
5521
|
+
const getWorkspaces = options.getWorkspaces ?? (() => collectAgentWorkspaces());
|
|
5522
|
+
const nowFn = options.now ?? Date.now;
|
|
5523
|
+
const sweep = async () => {
|
|
5524
|
+
let workspaces = [];
|
|
5525
|
+
try {
|
|
5526
|
+
workspaces = await getWorkspaces();
|
|
5527
|
+
} catch (err) {
|
|
5528
|
+
log.warn({ err: String(err) }, "long-task-janitor: collect workspaces failed");
|
|
5529
|
+
return;
|
|
5530
|
+
}
|
|
5531
|
+
let scanned = 0;
|
|
5532
|
+
let swept = 0;
|
|
5533
|
+
let errors = 0;
|
|
5534
|
+
for (const ws of workspaces) try {
|
|
5535
|
+
const r = await sweepLongTaskFiles(ws, {
|
|
5536
|
+
now: nowFn(),
|
|
5537
|
+
ageMs
|
|
5538
|
+
});
|
|
5539
|
+
scanned += r.scanned;
|
|
5540
|
+
swept += r.swept;
|
|
5541
|
+
errors += r.errors;
|
|
5542
|
+
} catch (err) {
|
|
5543
|
+
errors++;
|
|
5544
|
+
log.warn({
|
|
5545
|
+
err: String(err),
|
|
5546
|
+
workdir: ws
|
|
5547
|
+
}, "long-task-janitor: sweep failed");
|
|
5548
|
+
}
|
|
5549
|
+
if (swept > 0 || errors > 0) log.info({
|
|
5550
|
+
scanned,
|
|
5551
|
+
swept,
|
|
5552
|
+
errors
|
|
5553
|
+
}, "long-task-janitor: sweep complete");
|
|
5554
|
+
};
|
|
5555
|
+
janitorBootKick = setTimeout(() => {
|
|
5556
|
+
sweep();
|
|
5557
|
+
}, 6e4);
|
|
5558
|
+
janitorBootKick.unref?.();
|
|
5559
|
+
janitorTimer = setInterval(() => {
|
|
5560
|
+
sweep();
|
|
5561
|
+
}, intervalMs);
|
|
5562
|
+
janitorTimer.unref?.();
|
|
5563
|
+
return () => stopLongTaskJanitor();
|
|
5564
|
+
}
|
|
5565
|
+
function stopLongTaskJanitor() {
|
|
5566
|
+
if (janitorTimer) {
|
|
5567
|
+
clearInterval(janitorTimer);
|
|
5568
|
+
janitorTimer = null;
|
|
5569
|
+
}
|
|
5570
|
+
if (janitorBootKick) {
|
|
5571
|
+
clearTimeout(janitorBootKick);
|
|
5572
|
+
janitorBootKick = null;
|
|
5573
|
+
}
|
|
5574
|
+
}
|
|
5575
|
+
|
|
5408
5576
|
//#endregion
|
|
5409
5577
|
//#region src/gateway/server/health-state.ts
|
|
5410
5578
|
let presenceVersion = 1;
|
|
@@ -5493,6 +5661,7 @@ function startGatewayMaintenanceTimers(params) {
|
|
|
5493
5661
|
params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`refresh failed: ${formatError(err)}`));
|
|
5494
5662
|
}, HEALTH_REFRESH_INTERVAL_MS);
|
|
5495
5663
|
params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`initial refresh failed: ${formatError(err)}`));
|
|
5664
|
+
startLongTaskJanitor();
|
|
5496
5665
|
return {
|
|
5497
5666
|
tickInterval,
|
|
5498
5667
|
healthInterval,
|
|
@@ -11955,7 +12124,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
11955
12124
|
});
|
|
11956
12125
|
let glassUiBridgeCleanup = null;
|
|
11957
12126
|
if (!minimalTestGateway) {
|
|
11958
|
-
const { createGlassUiBridge } = await import("./glass-ui-ws-
|
|
12127
|
+
const { createGlassUiBridge } = await import("./glass-ui-ws-DxrESDzy.js");
|
|
11959
12128
|
glassUiBridgeCleanup = createGlassUiBridge({
|
|
11960
12129
|
wss: glassUiWss,
|
|
11961
12130
|
context: gatewayRequestContext,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ as expandHomePrefix, g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, E as truncateUtf16Safe, H as getLogger, P as setVerbose, R as colorize, S as shortenHomePath, U as getResolvedLoggerSettings, V as getChildLogger, c as ensureDir, t as CONFIG_DIR, y as resolveUserPath, z as isRich } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
|
|
4
|
-
import { $ as buildDeliveryFromLegacyPayload, A as emitGatewayRestart, An as initSubagentRegistry, Ar as extractImageContentFromSource, B as summarizeRestartSentinel, Bn as registerAgentRunContext, Ct as requestBodyErrorToText, Dr as DEFAULT_INPUT_MAX_REDIRECTS, E as resetDirectoryCache, Er as DEFAULT_INPUT_IMAGE_MIMES, Et as agentCommand, F as setPreRestartDeferralCheck, Fn as readLatestAssistantReply, Gt as getCliSessionId, I as consumeRestartSentinel, In as clearAgentRunContext, J as normalizeOptionalSessionKey, K as inferLegacyName, Kt as setCliSessionId, Ln as emitAgentEvent, Lt as createDefaultDeps, M as markGatewaySigusr1RestartHandled, Mr as resolveInputFileLimits, Mt as resolveOutboundTarget, Nt as resolveSessionDeliveryTarget, O as consumeGatewaySigusr1RestartAuthorization, On as countActiveDescendantRuns, Or as DEFAULT_INPUT_TIMEOUT_MS, P as setGatewaySigusr1RestartPolicy, Pn as runSubagentAnnounceFlow, Pr as resolveAgentTimeoutMs, Pt as createOutboundSendDeps, Q as migrateLegacyCronPayload, R as formatRestartSentinelMessage, Rn as getAgentRunContext, St as readJsonBodyWithLimit, Tr as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as sleepWithAbort, U as normalizeHttpWebhookUrl, Ut as resolveModelProfile, Vt as getActiveEmbeddedRunCount, Wt as runWithModelFallback, X as normalizePayloadToSystemText, Xt as resolveAgentAvatar, Y as normalizeOptionalText, Z as normalizeRequiredName, _ as loadCombinedSessionStoreForGateway, ar as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, d as createSymiTools, en as buildSafeExternalPrompt, et as hasLegacyDeliveryHints, f as resolveAnnounceTargetFromKey, fr as stripHeartbeatToken, ft as loadSymiPlugins, g as listSessionsFromStore, hn as getTotalPendingReplies, i as resolveCronStyleNow, ir as resetAllLanes, j as isGatewaySigusr1RestartExternallyAllowed, jn as listDescendantRunsForRequester, jr as normalizeMimeList, k as deferGatewayRestartUntilIdle, kn as countActiveRunsForSession, kr as extractFileContentFromSource, l as applyToolPolicyPipeline, nn as getHookType, or as waitForActiveTasks, pr as lookupContextTokens, q as normalizeOptionalAgentId, qt as runCliAgent, rn as isExternalHookSession, rr as getTotalQueueSize, sr as CommandLane, st as requestHeartbeatNow, tn as detectSuspiciousPatterns, tr as getActiveTaskCount, tt as stripLegacyDeliveryFields, u as buildDefaultToolPolicyPipelineSteps, ut as getPluginToolMeta, v as loadSessionEntry, w as resolveOutboundSessionRoute, wt as computeBackoff, xr as enqueueSystemEvent, xt as handleSlackHttpRequest, zn as onAgentEvent, zt as runAgentTurn } from "./reply-
|
|
4
|
+
import { $ as buildDeliveryFromLegacyPayload, A as emitGatewayRestart, An as initSubagentRegistry, Ar as extractImageContentFromSource, B as summarizeRestartSentinel, Bn as registerAgentRunContext, Ct as requestBodyErrorToText, Dr as DEFAULT_INPUT_MAX_REDIRECTS, E as resetDirectoryCache, Er as DEFAULT_INPUT_IMAGE_MIMES, Et as agentCommand, F as setPreRestartDeferralCheck, Fn as readLatestAssistantReply, Gt as getCliSessionId, I as consumeRestartSentinel, In as clearAgentRunContext, J as normalizeOptionalSessionKey, K as inferLegacyName, Kt as setCliSessionId, Ln as emitAgentEvent, Lt as createDefaultDeps, M as markGatewaySigusr1RestartHandled, Mr as resolveInputFileLimits, Mt as resolveOutboundTarget, Nt as resolveSessionDeliveryTarget, O as consumeGatewaySigusr1RestartAuthorization, On as countActiveDescendantRuns, Or as DEFAULT_INPUT_TIMEOUT_MS, P as setGatewaySigusr1RestartPolicy, Pn as runSubagentAnnounceFlow, Pr as resolveAgentTimeoutMs, Pt as createOutboundSendDeps, Q as migrateLegacyCronPayload, R as formatRestartSentinelMessage, Rn as getAgentRunContext, St as readJsonBodyWithLimit, Tr as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as sleepWithAbort, U as normalizeHttpWebhookUrl, Ut as resolveModelProfile, Vt as getActiveEmbeddedRunCount, Wt as runWithModelFallback, X as normalizePayloadToSystemText, Xt as resolveAgentAvatar, Y as normalizeOptionalText, Z as normalizeRequiredName, _ as loadCombinedSessionStoreForGateway, ar as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, d as createSymiTools, en as buildSafeExternalPrompt, et as hasLegacyDeliveryHints, f as resolveAnnounceTargetFromKey, fr as stripHeartbeatToken, ft as loadSymiPlugins, g as listSessionsFromStore, hn as getTotalPendingReplies, i as resolveCronStyleNow, ir as resetAllLanes, j as isGatewaySigusr1RestartExternallyAllowed, jn as listDescendantRunsForRequester, jr as normalizeMimeList, k as deferGatewayRestartUntilIdle, kn as countActiveRunsForSession, kr as extractFileContentFromSource, l as applyToolPolicyPipeline, nn as getHookType, or as waitForActiveTasks, pr as lookupContextTokens, q as normalizeOptionalAgentId, qt as runCliAgent, rn as isExternalHookSession, rr as getTotalQueueSize, sr as CommandLane, st as requestHeartbeatNow, tn as detectSuspiciousPatterns, tr as getActiveTaskCount, tt as stripLegacyDeliveryFields, u as buildDefaultToolPolicyPipelineSteps, ut as getPluginToolMeta, v as loadSessionEntry, w as resolveOutboundSessionRoute, wt as computeBackoff, xr as enqueueSystemEvent, xt as handleSlackHttpRequest, zn as onAgentEvent, zt as runAgentTurn } from "./reply-D7_t00Jt.js";
|
|
5
5
|
import { S as parseAgentSessionKey, c as normalizeMainKey, f as toAgentRequestSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, p as toAgentStoreSessionKey, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
|
|
6
6
|
import { r as matchesSkillFilter, t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
7
7
|
import { C as createInternalHookEvent, S as clearInternalHooks, T as triggerInternalHook, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL, w as registerInternalHook } from "./registry-Cja8eT7G.js";
|
|
@@ -67,8 +67,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
|
|
|
67
67
|
import "./send-DpMnSIi5.js";
|
|
68
68
|
import "./model-ECsJuJew.js";
|
|
69
69
|
import { a as resolveAgentIdentity } from "./reply-prefix-CE2YmmsD.js";
|
|
70
|
-
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-
|
|
71
|
-
import { a as resolveMemorySearchConfig } from "./manager-
|
|
70
|
+
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-0jm-n36m.js";
|
|
71
|
+
import { a as resolveMemorySearchConfig } from "./manager-TOeH0D8K.js";
|
|
72
72
|
import "./retry-BoS4e4X_.js";
|
|
73
73
|
import "./sqlite-D55gRQbH.js";
|
|
74
74
|
import { a as ToolInputError } from "./target-errors-C9e6dMU_.js";
|
|
@@ -106,7 +106,7 @@ import "./pairing-labels-CTL1gXZb.js";
|
|
|
106
106
|
import { n as formatTokenCount, r as formatUsd } from "./usage-format-D4P4IiJ6.js";
|
|
107
107
|
import { t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-DEigTi7M.js";
|
|
108
108
|
import "./nodes-screen-BZS89z6C.js";
|
|
109
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-
|
|
109
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-BZrM6a-w.js";
|
|
110
110
|
import "./control-service-C0pRqIFv.js";
|
|
111
111
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CZ1Rrj7O.js";
|
|
112
112
|
import { n as resolveMessageChannelSelection } from "./channel-selection-9fIQGtZy.js";
|
|
@@ -134,22 +134,22 @@ import "./diagnostics-1uBuB9IE.js";
|
|
|
134
134
|
import "./table-BWuvjnmY.js";
|
|
135
135
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-Curv3BNf.js";
|
|
136
136
|
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-pJIdlnB5.js";
|
|
137
|
-
import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-
|
|
137
|
+
import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-Bi9Je9FZ.js";
|
|
138
138
|
import { t as discoverGatewayBeacons } from "./bonjour-discovery-CDkyebpA.js";
|
|
139
|
-
import { r as pickGatewaySelfPresence } from "./status-
|
|
140
|
-
import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-
|
|
139
|
+
import { r as pickGatewaySelfPresence } from "./status-DLFbpd9v.js";
|
|
140
|
+
import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-D4vU-wV-.js";
|
|
141
141
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BrP31IQR.js";
|
|
142
142
|
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-Bbvpax6u.js";
|
|
143
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
144
|
-
import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-
|
|
145
|
-
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-
|
|
143
|
+
import { t as runOnboardingWizard } from "./onboarding-c2qhwP0x.js";
|
|
144
|
+
import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-FQ-PqiVC.js";
|
|
145
|
+
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-Cr-a1KBt.js";
|
|
146
146
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CjltkjCx.js";
|
|
147
|
-
import "./agents.config-
|
|
147
|
+
import "./agents.config-DqWxpgkX.js";
|
|
148
148
|
import "./dm-policy-shared-KlzpDeT_.js";
|
|
149
149
|
import "./node-service-DxPZ_ZFk.js";
|
|
150
150
|
import "./status.update-8HXdAdwz.js";
|
|
151
151
|
import "./skills-install-B8r7cGKR.js";
|
|
152
|
-
import "./update-runner-
|
|
152
|
+
import "./update-runner-D99V_zHX.js";
|
|
153
153
|
import { t as resolveAgentSessionDirs } from "./session-dirs-CBqamQff.js";
|
|
154
154
|
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-D2fHsr-Z.js";
|
|
155
155
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -5409,6 +5409,174 @@ function applyGatewayLaneConcurrency(cfg) {
|
|
|
5409
5409
|
setCommandLaneConcurrency(CommandLane.Subagent, resolveSubagentMaxConcurrent(cfg));
|
|
5410
5410
|
}
|
|
5411
5411
|
|
|
5412
|
+
//#endregion
|
|
5413
|
+
//#region src/infra/long-task-janitor.ts
|
|
5414
|
+
const TASK_FILE_SUFFIXES = [
|
|
5415
|
+
".pid",
|
|
5416
|
+
".cmd",
|
|
5417
|
+
".started",
|
|
5418
|
+
".log",
|
|
5419
|
+
".status"
|
|
5420
|
+
];
|
|
5421
|
+
const TASK_FILE_PREFIX = "task-";
|
|
5422
|
+
const DEFAULT_TASK_FILE_AGE_MS = 10080 * 60 * 1e3;
|
|
5423
|
+
const DEFAULT_SWEEP_INTERVAL_MS = 1440 * 60 * 1e3;
|
|
5424
|
+
function defaultIsPidAlive(pid) {
|
|
5425
|
+
try {
|
|
5426
|
+
process.kill(pid, 0);
|
|
5427
|
+
return true;
|
|
5428
|
+
} catch (err) {
|
|
5429
|
+
if (err.code === "EPERM") return true;
|
|
5430
|
+
return false;
|
|
5431
|
+
}
|
|
5432
|
+
}
|
|
5433
|
+
/**
|
|
5434
|
+
* Sweep dead-task state files from a single workspace directory.
|
|
5435
|
+
*
|
|
5436
|
+
* A task-id is eligible for sweep when its recorded PID is no longer alive
|
|
5437
|
+
* AND the oldest of its state files is older than ageMs. Conservative on
|
|
5438
|
+
* purpose: leaving a stale set for one extra cycle is harmless; deleting
|
|
5439
|
+
* the state of a live task is not.
|
|
5440
|
+
*
|
|
5441
|
+
* Orphans without a `.pid` file (parent crashed before line 180) are also
|
|
5442
|
+
* caught — we key on any task-<id>.<suffix> match.
|
|
5443
|
+
*/
|
|
5444
|
+
async function sweepLongTaskFiles(workdir, options = {}) {
|
|
5445
|
+
const result = {
|
|
5446
|
+
scanned: 0,
|
|
5447
|
+
swept: 0,
|
|
5448
|
+
errors: 0,
|
|
5449
|
+
sweptIds: []
|
|
5450
|
+
};
|
|
5451
|
+
const now = options.now ?? Date.now();
|
|
5452
|
+
const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
|
|
5453
|
+
const isPidAlive = options.isPidAlive ?? defaultIsPidAlive;
|
|
5454
|
+
let entries;
|
|
5455
|
+
try {
|
|
5456
|
+
entries = await fs.promises.readdir(workdir);
|
|
5457
|
+
} catch {
|
|
5458
|
+
return result;
|
|
5459
|
+
}
|
|
5460
|
+
const taskIds = /* @__PURE__ */ new Set();
|
|
5461
|
+
for (const entry of entries) {
|
|
5462
|
+
if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
|
|
5463
|
+
for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
|
|
5464
|
+
const id = entry.slice(5, -suffix.length);
|
|
5465
|
+
if (id.length > 0) taskIds.add(id);
|
|
5466
|
+
break;
|
|
5467
|
+
}
|
|
5468
|
+
}
|
|
5469
|
+
for (const taskId of taskIds) {
|
|
5470
|
+
result.scanned++;
|
|
5471
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
|
|
5472
|
+
let pid = 0;
|
|
5473
|
+
let pidStatMs = null;
|
|
5474
|
+
try {
|
|
5475
|
+
const pidText = await fs.promises.readFile(pidPath, "utf8");
|
|
5476
|
+
pid = Number.parseInt(pidText.trim(), 10);
|
|
5477
|
+
pidStatMs = (await fs.promises.stat(pidPath)).mtimeMs;
|
|
5478
|
+
} catch (err) {
|
|
5479
|
+
if (err.code !== "ENOENT") {
|
|
5480
|
+
result.errors++;
|
|
5481
|
+
continue;
|
|
5482
|
+
}
|
|
5483
|
+
}
|
|
5484
|
+
if (pid > 0 && Number.isFinite(pid) && isPidAlive(pid)) continue;
|
|
5485
|
+
let oldestMs = pidStatMs ?? Number.POSITIVE_INFINITY;
|
|
5486
|
+
for (const suffix of TASK_FILE_SUFFIXES) {
|
|
5487
|
+
if (suffix === ".pid" && pidStatMs !== null) continue;
|
|
5488
|
+
try {
|
|
5489
|
+
const stat = await fs.promises.stat(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
|
|
5490
|
+
if (stat.mtimeMs < oldestMs) oldestMs = stat.mtimeMs;
|
|
5491
|
+
} catch {}
|
|
5492
|
+
}
|
|
5493
|
+
if (!Number.isFinite(oldestMs)) continue;
|
|
5494
|
+
if (now - oldestMs < ageMs) continue;
|
|
5495
|
+
let unlinkErrors = 0;
|
|
5496
|
+
for (const suffix of TASK_FILE_SUFFIXES) try {
|
|
5497
|
+
await fs.promises.unlink(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
|
|
5498
|
+
} catch (err) {
|
|
5499
|
+
if (err.code !== "ENOENT") unlinkErrors++;
|
|
5500
|
+
}
|
|
5501
|
+
if (unlinkErrors > 0) result.errors++;
|
|
5502
|
+
else {
|
|
5503
|
+
result.swept++;
|
|
5504
|
+
result.sweptIds.push(taskId);
|
|
5505
|
+
}
|
|
5506
|
+
}
|
|
5507
|
+
return result;
|
|
5508
|
+
}
|
|
5509
|
+
async function collectAgentWorkspaces(cfg) {
|
|
5510
|
+
const config = cfg ?? loadConfig();
|
|
5511
|
+
const seen = /* @__PURE__ */ new Set();
|
|
5512
|
+
for (const agentId of listAgentIds(config)) try {
|
|
5513
|
+
const ws = resolveAgentWorkspaceDir(config, agentId);
|
|
5514
|
+
if (ws) seen.add(ws);
|
|
5515
|
+
} catch {}
|
|
5516
|
+
return [...seen];
|
|
5517
|
+
}
|
|
5518
|
+
let janitorTimer = null;
|
|
5519
|
+
let janitorBootKick = null;
|
|
5520
|
+
function startLongTaskJanitor(options = {}) {
|
|
5521
|
+
if (janitorTimer) return () => stopLongTaskJanitor();
|
|
5522
|
+
const log = getChildLogger({ module: "long-task-janitor" });
|
|
5523
|
+
const intervalMs = options.intervalMs ?? DEFAULT_SWEEP_INTERVAL_MS;
|
|
5524
|
+
const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
|
|
5525
|
+
const getWorkspaces = options.getWorkspaces ?? (() => collectAgentWorkspaces());
|
|
5526
|
+
const nowFn = options.now ?? Date.now;
|
|
5527
|
+
const sweep = async () => {
|
|
5528
|
+
let workspaces = [];
|
|
5529
|
+
try {
|
|
5530
|
+
workspaces = await getWorkspaces();
|
|
5531
|
+
} catch (err) {
|
|
5532
|
+
log.warn({ err: String(err) }, "long-task-janitor: collect workspaces failed");
|
|
5533
|
+
return;
|
|
5534
|
+
}
|
|
5535
|
+
let scanned = 0;
|
|
5536
|
+
let swept = 0;
|
|
5537
|
+
let errors = 0;
|
|
5538
|
+
for (const ws of workspaces) try {
|
|
5539
|
+
const r = await sweepLongTaskFiles(ws, {
|
|
5540
|
+
now: nowFn(),
|
|
5541
|
+
ageMs
|
|
5542
|
+
});
|
|
5543
|
+
scanned += r.scanned;
|
|
5544
|
+
swept += r.swept;
|
|
5545
|
+
errors += r.errors;
|
|
5546
|
+
} catch (err) {
|
|
5547
|
+
errors++;
|
|
5548
|
+
log.warn({
|
|
5549
|
+
err: String(err),
|
|
5550
|
+
workdir: ws
|
|
5551
|
+
}, "long-task-janitor: sweep failed");
|
|
5552
|
+
}
|
|
5553
|
+
if (swept > 0 || errors > 0) log.info({
|
|
5554
|
+
scanned,
|
|
5555
|
+
swept,
|
|
5556
|
+
errors
|
|
5557
|
+
}, "long-task-janitor: sweep complete");
|
|
5558
|
+
};
|
|
5559
|
+
janitorBootKick = setTimeout(() => {
|
|
5560
|
+
sweep();
|
|
5561
|
+
}, 6e4);
|
|
5562
|
+
janitorBootKick.unref?.();
|
|
5563
|
+
janitorTimer = setInterval(() => {
|
|
5564
|
+
sweep();
|
|
5565
|
+
}, intervalMs);
|
|
5566
|
+
janitorTimer.unref?.();
|
|
5567
|
+
return () => stopLongTaskJanitor();
|
|
5568
|
+
}
|
|
5569
|
+
function stopLongTaskJanitor() {
|
|
5570
|
+
if (janitorTimer) {
|
|
5571
|
+
clearInterval(janitorTimer);
|
|
5572
|
+
janitorTimer = null;
|
|
5573
|
+
}
|
|
5574
|
+
if (janitorBootKick) {
|
|
5575
|
+
clearTimeout(janitorBootKick);
|
|
5576
|
+
janitorBootKick = null;
|
|
5577
|
+
}
|
|
5578
|
+
}
|
|
5579
|
+
|
|
5412
5580
|
//#endregion
|
|
5413
5581
|
//#region src/gateway/server/health-state.ts
|
|
5414
5582
|
let presenceVersion = 1;
|
|
@@ -5497,6 +5665,7 @@ function startGatewayMaintenanceTimers(params) {
|
|
|
5497
5665
|
params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`refresh failed: ${formatError(err)}`));
|
|
5498
5666
|
}, HEALTH_REFRESH_INTERVAL_MS);
|
|
5499
5667
|
params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`initial refresh failed: ${formatError(err)}`));
|
|
5668
|
+
startLongTaskJanitor();
|
|
5500
5669
|
return {
|
|
5501
5670
|
tickInterval,
|
|
5502
5671
|
healthInterval,
|
|
@@ -11959,7 +12128,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
11959
12128
|
});
|
|
11960
12129
|
let glassUiBridgeCleanup = null;
|
|
11961
12130
|
if (!minimalTestGateway) {
|
|
11962
|
-
const { createGlassUiBridge } = await import("./glass-ui-ws-
|
|
12131
|
+
const { createGlassUiBridge } = await import("./glass-ui-ws-BBkFBsKB.js");
|
|
11963
12132
|
glassUiBridgeCleanup = createGlassUiBridge({
|
|
11964
12133
|
wss: glassUiWss,
|
|
11965
12134
|
context: gatewayRequestContext,
|