@symerian/symi 2.8.13 → 2.8.14
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/{accounts-BuZxOb3B.js → accounts-Bsg6r6H7.js} +1 -1
- package/dist/{accounts-BRw8yhIW.js → accounts-BsgY6sda.js} +21 -21
- package/dist/{accounts-3dCrO3oZ.js → accounts-wWWkC0JH.js} +1 -1
- package/dist/{active-listener-BVZOh2T1.js → active-listener-AVNn5_U9.js} +1 -1
- package/dist/{agent-scope-CpEJ0B88.js → agent-scope-Cpm7a9ss.js} +3 -3
- package/dist/{agents-CgCg4syn.js → agents-DlAvDWxz.js} +4 -4
- package/dist/{agents.config-BnPC7uct.js → agents.config-BKKMbeeE.js} +1 -1
- package/dist/{agents.config-DqWxpgkX.js → agents.config-Dd-11klq.js} +1 -1
- package/dist/{audio-preflight-NdNUAZ0y.js → audio-preflight-C6vpFnOG.js} +4 -4
- package/dist/{audio-preflight-Cb-T0r6e.js → audio-preflight-rrz8KyHd.js} +29 -29
- package/dist/{audit-Bi9Je9FZ.js → audit-BhCJV2l6.js} +1 -1
- package/dist/{audit-Oa5dsn5p.js → audit-CB97BqHJ.js} +1 -1
- package/dist/{auth-choice-BKwypsnS.js → auth-choice-C6woT6k2.js} +1 -1
- package/dist/{auth-choice-BIlBt2d0.js → auth-choice-CRQRPwQt.js} +1 -1
- package/dist/{auth-profiles-C2vj6htZ.js → auth-profiles-BzB_Exeq.js} +17 -17
- package/dist/{banner-CX5CuLWQ.js → banner-DrNha2_N.js} +1 -1
- package/dist/{bindings-BsHoBLIE.js → bindings-xcRox9xM.js} +2 -2
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +54 -54
- package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
- package/dist/bundled/command-logger/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +54 -54
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-activity-D8QD7GoV.js → channel-activity-CzHaIUAp.js} +1 -1
- package/dist/{channel-options-mUKQVJQl.js → channel-options-D8q9En4T.js} +1 -1
- package/dist/{channel-options-7y9EuPLO.js → channel-options-DYy2sCfN.js} +1 -1
- package/dist/{channel-web-Dldh4zVI.js → channel-web-CRBU4eZk.js} +1 -1
- package/dist/{channels-cli-Dz9vV1KL.js → channels-cli-BUk43hHR.js} +7 -7
- package/dist/{channels-cli-Q6Q8LokG.js → channels-cli-Dk3kUw9A.js} +7 -7
- package/dist/{chrome-ROtrXlNs.js → chrome-B14NNyfm.js} +5 -5
- package/dist/{chrome-BUT--ob3.js → chrome-DwXnykXR.js} +23 -23
- package/dist/{chunk-BRe1o4Af.js → chunk-BcxcL1U3.js} +1 -1
- package/dist/{cli-DMsLCQbO.js → cli-5gWsnsB7.js} +4 -4
- package/dist/{cli-D4WYEtu4.js → cli-DjZzJy3t.js} +4 -4
- package/dist/{command-registry-cEqGIx4b.js → command-registry-LjFltTU9.js} +10 -10
- package/dist/{commands-registry-DxbSTLNQ.js → commands-registry-ByGkL6hs.js} +4 -4
- package/dist/{completion-cli-Bw0jbNaG.js → completion-cli-BVTGy8th.js} +1 -1
- package/dist/{completion-cli-C5GCKfKT.js → completion-cli-Cf6fYZWL.js} +2 -2
- package/dist/{config-BkZ9HOKT.js → config-C4WnAd-c.js} +17 -17
- package/dist/{config-cli-DP0hP7WR.js → config-cli-C7DIbGxx.js} +1 -1
- package/dist/{config-cli-DgHooQ4_.js → config-cli-EgWrCemi.js} +1 -1
- package/dist/{configure-OUiXvgMg.js → configure-B67uIawm.js} +3 -3
- package/dist/{configure-BQUkaPdS.js → configure-Bk-snuxh.js} +3 -3
- package/dist/{consolidate-07QMweFF.js → consolidate-DRtVvG2U.js} +4 -4
- package/dist/{deliver-B_Q_nWJV.js → deliver-D0bWiRCg.js} +1 -1
- package/dist/{deliver-B0OUq6RP.js → deliver-SLYAWE19.js} +20 -20
- package/dist/{diagnostic-BUcR3Meg.js → diagnostic-DTkZsRNM.js} +1 -1
- package/dist/{doctor-completion-DlKvncR9.js → doctor-completion-By066O3p.js} +1 -1
- package/dist/{doctor-completion-BSMAyCq_.js → doctor-completion-lE_33xaY.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{env-BDXYbTKj.js → env-CB65jmJQ.js} +1 -1
- package/dist/extensionAPI.js +7 -7
- package/dist/{frontmatter-CTR5f_Ez.js → frontmatter-CT1M0pRK.js} +4 -4
- package/dist/{gateway-cli-BlRNLVfU.js → gateway-cli-C6uT2x34.js} +13 -13
- package/dist/{gateway-cli-NI7W2QxR.js → gateway-cli-DqEgqVKC.js} +13 -13
- package/dist/{gemini-auth-BefM10YB.js → gemini-auth-D80BsXr2.js} +1 -1
- package/dist/{github-copilot-token-cCYzSU9h.js → github-copilot-token-B8B2pmph.js} +7 -7
- package/dist/{glass-ui-ws-BBkFBsKB.js → glass-ui-ws-77TY57IO.js} +11 -11
- package/dist/{glass-ui-ws-DxrESDzy.js → glass-ui-ws-CLAUHeZR.js} +11 -11
- package/dist/{health-fOu0S75U.js → health-2jkjZxY8.js} +1 -1
- package/dist/{health-D4vU-wV-.js → health-CvMHgR-L.js} +1 -1
- package/dist/{hooks-cli-BdgnXYmw.js → hooks-cli-CRZySOiz.js} +5 -5
- package/dist/{hooks-cli-DdSggQYs.js → hooks-cli-DSaezFsD.js} +5 -5
- package/dist/{image-BuVL0jHI.js → image-BHF_fnIp.js} +4 -4
- package/dist/{image-tzIqIuKx.js → image-MNvheU8U.js} +1 -1
- package/dist/{plugin-sdk/image-ops-BlQR__MN.js → image-ops-CY7v6vvp.js} +17 -17
- package/dist/index.js +9 -9
- package/dist/{internal-DjnxpF_K.js → internal-FNqguZSK.js} +11 -11
- package/dist/{ir-7tMVY7D_.js → ir-D6MiJpAy.js} +4 -4
- package/dist/llm-slug-generator.js +54 -54
- package/dist/{local-roots-ClipCZ9s.js → local-roots-tcdaIEhh.js} +5 -5
- package/dist/{login-D4rZWBXe.js → login-D4ZkmSrY.js} +7 -7
- package/dist/{login-qr-DdAVHOEC.js → login-qr-C9ftIq3n.js} +12 -12
- package/dist/{manager-DRrGn88w.js → manager-BtWtmpxN.js} +1 -1
- package/dist/{manager-syNf_ZrI.js → manager-DDELj5o9.js} +1 -1
- package/dist/{manager-TOeH0D8K.js → manager-DrmlegR2.js} +1 -1
- package/dist/{manager-_RGWWymD.js → manager-DxCmjSfP.js} +24 -24
- package/dist/{manifest-registry-CBCGTsIb.js → manifest-registry-BvGv6lp9.js} +19 -19
- package/dist/{markdown-tables-x2Xe2UXh.js → markdown-tables-CE-qSMGB.js} +1 -1
- package/dist/{memory-cli-0jm-n36m.js → memory-cli-ENCASZJk.js} +3 -3
- package/dist/{memory-cli-BSOOwpt1.js → memory-cli-Qgbcxvuf.js} +3 -3
- package/dist/{plugin-sdk/message-channel-COTAJzHd.js → message-channel-lwVT8QjK.js} +1 -1
- package/dist/{models-sGeWQOmg.js → models-COhUz7M9.js} +2 -2
- package/dist/{models-cli-CtkoEyh3.js → models-cli-CCxYcF4R.js} +5 -5
- package/dist/{models-cli-DV-J1cm0.js → models-cli-CYvXBvmZ.js} +6 -6
- package/dist/{onboard-FeTHeA1y.js → onboard-CQNUYBIp.js} +2 -2
- package/dist/{onboard-channels-DpZkjldS.js → onboard-channels-9erx07qe.js} +1 -1
- package/dist/{onboard-channels-D8bDJYPc.js → onboard-channels-CWw8G-6n.js} +1 -1
- package/dist/{onboard-CWBYuaCm.js → onboard-fVpLVnwg.js} +2 -2
- package/dist/{onboarding-BsPnnH5g.js → onboarding-CtEiH9WG.js} +3 -3
- package/dist/{onboarding-c2qhwP0x.js → onboarding-D-OIkDwZ.js} +3 -3
- package/dist/{onboarding.finalize-7St3fmk2.js → onboarding.finalize-BY3HNjX4.js} +9 -9
- package/dist/{onboarding.finalize-id9EHg1P.js → onboarding.finalize-DTbpLV-T.js} +8 -8
- package/dist/{outbound-Zmd7UyQH.js → outbound-C6Gm22UF.js} +7 -7
- package/dist/{outbound-attachment-DeCnZT-8.js → outbound-attachment-BWyKV1Gy.js} +2 -2
- package/dist/paths-CYmyCDsE.js +212 -0
- package/dist/{paths-CbQV9WEg.js → paths-DEuVuViW.js} +1 -1
- package/dist/{pi-auth-json-RXOlh8ar.js → pi-auth-json-Bv1NzJdR.js} +1 -1
- package/dist/{pi-embedded-DCBB1_SC.js → pi-embedded-CdOdQw2i.js} +278 -23
- package/dist/{pi-embedded-helpers-D1_Sab0M.js → pi-embedded-helpers-DwQ9wJeT.js} +73 -73
- package/dist/{pi-embedded-helpers-DjSdA5BG.js → pi-embedded-helpers-TcYQOZAY.js} +4 -4
- package/dist/{pi-tools.policy-BZrM6a-w.js → pi-tools.policy-Bx5zp45n.js} +2 -0
- package/dist/{pi-tools.policy-QIVWAVVI.js → pi-tools.policy-o0ytjRqu.js} +2 -0
- package/dist/{plugin-registry-BJSfTT8c.js → plugin-registry-BrJ0-qlu.js} +1 -1
- package/dist/{plugin-registry-Cy1kfzAy.js → plugin-registry-Cuc8ORuR.js} +1 -1
- package/dist/plugin-sdk/{accounts-BtaOa4z_.js → accounts-BToL3HlP.js} +1 -1
- package/dist/plugin-sdk/{accounts-Ddm33hQm.js → accounts-D9zGZU5t.js} +3 -3
- package/dist/plugin-sdk/{accounts-s-AdhXVR.js → accounts-Dtszw3Zn.js} +1 -1
- package/dist/plugin-sdk/{active-listener-DYjn3fML.js → active-listener-CJuvR4C2.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-CYYpcO9W.js → agent-scope-C3gMMKCU.js} +2 -2
- package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +7 -0
- package/dist/plugin-sdk/agents/tools/task-tool.d.ts +7 -0
- package/dist/plugin-sdk/{api-key-rotation-DGJZ8SVa.js → api-key-rotation-CBsLb_4V.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-CiVw8470.js → audio-preflight-DucGa8w7.js} +24 -24
- package/dist/plugin-sdk/{bindings-C7hRtgYW.js → bindings-BbwoUGPx.js} +2 -2
- package/dist/plugin-sdk/{channel-activity-DoC1xtDu.js → channel-activity-Ji7f0gqq.js} +1 -1
- package/dist/plugin-sdk/{channel-web-BSDjZSwm.js → channel-web-t8UOP6Zu.js} +22 -22
- package/dist/plugin-sdk/{chrome-CEqfiEs0.js → chrome-D9kN9org.js} +3 -3
- package/dist/plugin-sdk/{chunk-Dw2XBYXv.js → chunk-jvk9axTQ.js} +1 -1
- package/dist/plugin-sdk/{command-format-GKSevep4.js → command-format-DSdvQ_M5.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-BhW_oGNt.js → commands-registry-BuYpmEx-.js} +4 -4
- package/dist/plugin-sdk/{config-Ckum15iC.js → config-BzupW6LN.js} +9 -9
- package/dist/plugin-sdk/{consolidate-COuTEt4Z.js → consolidate-CafShdsH.js} +2 -2
- package/dist/plugin-sdk/{deliver-B8Y2t-RH.js → deliver-CKgFosI5.js} +10 -10
- package/dist/plugin-sdk/{diagnostic-BR07buTm.js → diagnostic-_oc91gNi.js} +1 -1
- package/dist/plugin-sdk/{image-CCmNHDV0.js → image-DFyINnvE.js} +4 -4
- package/dist/{image-ops-C7CauEK8.js → plugin-sdk/image-ops-Bnp6LXEx.js} +2 -2
- package/dist/plugin-sdk/index.js +54 -54
- package/dist/plugin-sdk/{ir-BJ6BHE5b.js → ir-Fb3qpcis.js} +4 -4
- package/dist/plugin-sdk/{local-roots-BHLNSI8U.js → local-roots-Ckk1QfzI.js} +3 -3
- package/dist/plugin-sdk/{login-g_rQAcuM.js → login-K1YB_7-t.js} +7 -7
- package/dist/plugin-sdk/{login-qr-BOUmLSY3.js → login-qr-lMl_OqDj.js} +9 -9
- package/dist/plugin-sdk/{manager-B9GigLWj.js → manager-BPm5oefC.js} +9 -9
- package/dist/plugin-sdk/{manifest-registry-BRx4JDK0.js → manifest-registry-hy3Bn-r9.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-BoYFajMu.js → markdown-tables-Dfaqilz6.js} +1 -1
- package/dist/{message-channel-OlFBYAw8.js → plugin-sdk/message-channel-BdI5Ra9S.js} +1 -1
- package/dist/plugin-sdk/{model-selection-Bbs4XGPG.js → model-selection-CtVwtb6y.js} +4 -4
- package/dist/plugin-sdk/{outbound-BVhSNFy0.js → outbound-DW3cqlQW.js} +7 -7
- package/dist/plugin-sdk/{outbound-attachment-B56R1Wi4.js → outbound-attachment-D7ME_Kib.js} +2 -2
- package/dist/plugin-sdk/{pi-auth-json-CB2bV0Jd.js → pi-auth-json-DiyK6bgV.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-dd3G9Hfi.js → pi-embedded-helpers-BL7ZRhGv.js} +17 -17
- package/dist/plugin-sdk/{plugins-BNByVCIH.js → plugins-BbAvhC25.js} +4 -4
- package/dist/plugin-sdk/{pw-ai-BXeOYCz_.js → pw-ai-B3T0mTHr.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-wIr8qz2n.js → qmd-manager-BlUikj9s.js} +4 -4
- package/dist/plugin-sdk/{registry-D0xTnUWt.js → registry--_pGht6S.js} +2 -2
- package/dist/plugin-sdk/{replies-CQ4szNhV.js → replies-BR2TPTVW.js} +3 -3
- package/dist/plugin-sdk/{reply-DD8z_dUW.js → reply-BKAHTugL.js} +337 -82
- package/dist/plugin-sdk/{reply-prefix-uxfMZW4p.js → reply-prefix-BHuV5t70.js} +1 -1
- package/dist/plugin-sdk/{resolve-outbound-target-BiyAyTWz.js → resolve-outbound-target-BkCUbYGV.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-CWfcnhza.js → resolve-route-CHQ7BTlU.js} +3 -3
- package/dist/plugin-sdk/{retry-CwQ_iIj8.js → retry-ilSJqnz9.js} +1 -1
- package/dist/plugin-sdk/{runner-BuxCHv_O.js → runner-BhifC1J_.js} +9 -9
- package/dist/plugin-sdk/{send-fNRDT21N.js → send-BP5pSPaZ.js} +6 -6
- package/dist/plugin-sdk/{send-BtO-7fHs.js → send-CGhw9mO3.js} +6 -6
- package/dist/plugin-sdk/{send-CKXzQuXo.js → send-DLO_yV5_.js} +10 -10
- package/dist/plugin-sdk/{send-Djq5IPRa.js → send-ZhAe1nXO.js} +10 -10
- package/dist/plugin-sdk/{send-XSuwT1PC.js → send-jsofmTfJ.js} +7 -7
- package/dist/plugin-sdk/{session-ARbcLHE9.js → session-BfyK_04G.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-yzJVuTIW.js → skill-commands-DEfqC_kJ.js} +5 -5
- package/dist/plugin-sdk/{skills-BfsaS1F9.js → skills-C9DbB-Kp.js} +7 -7
- package/dist/plugin-sdk/{sqlite-A3wGzttn.js → sqlite-CmVrFEYD.js} +1 -1
- package/dist/plugin-sdk/{store-BdrNabcU.js → store-Do3t33-c.js} +2 -2
- package/dist/plugin-sdk/{subsystem-B2uDN3TV.js → subsystem-Coz2AgU8.js} +1 -1
- package/dist/plugin-sdk/{synthesis-Dv5GwSky.js → synthesis-CVF7Fwhd.js} +49 -49
- package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
- package/dist/{target-errors-DeJTztcq.js → plugin-sdk/target-errors-B7YyMnIi.js} +2 -2
- package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
- package/dist/{tokens-W0JzCJJM.js → plugin-sdk/tokens-CWMflosr.js} +1 -1
- package/dist/plugin-sdk/{tool-images-HJ2sfZDV.js → tool-images-D7Lno-TE.js} +2 -2
- package/dist/plugin-sdk/{tool-loop-detection-gmtzSlNZ.js → tool-loop-detection-DseOlBug.js} +2 -2
- package/dist/plugin-sdk/web-D0DsmFvw.js +66 -0
- package/dist/plugin-sdk/{whatsapp-actions-B_1l8JMU.js → whatsapp-actions-eTefsWhW.js} +21 -21
- package/dist/{plugins-cli-6UYkZBH0.js → plugins-cli-BDalhI46.js} +5 -5
- package/dist/{plugins-cli-DPetEhfv.js → plugins-cli-DFmriy-c.js} +5 -5
- package/dist/{plugins-BzmbgY7s.js → plugins-v8k1XVOy.js} +9 -9
- package/dist/{program-CVy9LVoS.js → program-DKh41c2a.js} +10 -10
- package/dist/{program-context-CBI6gIf-.js → program-context-Cq7pqOrw.js} +19 -19
- package/dist/{prompt-select-styled-BlXl_Qf7.js → prompt-select-styled-BFCAZLwK.js} +6 -6
- package/dist/{prompt-select-styled-Bv675D48.js → prompt-select-styled-DvvSE_ni.js} +6 -6
- package/dist/{provider-auth-helpers-RUQD5XAm.js → provider-auth-helpers-B-LkDxxi.js} +1 -1
- package/dist/{provider-auth-helpers-BB1lhCy5.js → provider-auth-helpers-DXppgV1l.js} +1 -1
- package/dist/{push-apns-Cr-a1KBt.js → push-apns-DCA47WA5.js} +1 -1
- package/dist/{push-apns-rPetW5cI.js → push-apns-DvudhEAb.js} +1 -1
- package/dist/{pw-ai-CQtaPvM8.js → pw-ai-40Jf9QIb.js} +1 -1
- package/dist/{pw-ai-DWkC5eGA.js → pw-ai-XGqnSWju.js} +11 -11
- package/dist/{qmd-manager-BXkbA8Y9.js → qmd-manager-CbRJhonG.js} +8 -8
- package/dist/{register.agent-DKDwNHQi.js → register.agent-_BV5KyFb.js} +9 -9
- package/dist/{register.agent-j6OlKEU-.js → register.agent-aFj_SMi3.js} +8 -8
- package/dist/{register.configure-CopgSygi.js → register.configure-CvOoD5gE.js} +9 -9
- package/dist/{register.configure-BgIXIq9d.js → register.configure-Dx0Uhmlz.js} +9 -9
- package/dist/{register.maintenance-DjaGkVtr.js → register.maintenance-BuZpoSik.js} +10 -10
- package/dist/{register.maintenance-BKsCM6NG.js → register.maintenance-CMeJR7DG.js} +11 -11
- package/dist/{register.message-C3oHvmdl.js → register.message-qysZPg3G.js} +5 -5
- package/dist/{register.message-bxhUcSyj.js → register.message-xxGePuRC.js} +5 -5
- package/dist/{register.onboard-DijWH8Vd.js → register.onboard-1MP2I0q4.js} +7 -7
- package/dist/{register.onboard-D0DHcb20.js → register.onboard-D4Aow7Gc.js} +7 -7
- package/dist/{register.setup-XlCTnTm_.js → register.setup-BT74aXzA.js} +7 -7
- package/dist/{register.setup-CrFzd94c.js → register.setup-DzliKkWh.js} +7 -7
- package/dist/{register.status-health-sessions-VwvDWUxZ.js → register.status-health-sessions-B3K2gZ72.js} +7 -7
- package/dist/{register.status-health-sessions-AWCg_uLf.js → register.status-health-sessions-D7VYZlrU.js} +7 -7
- package/dist/{register.subclis-Bw8k5Z5C.js → register.subclis-BCy0IDRv.js} +10 -10
- package/dist/{registry-DYq1AYOv.js → registry-X6fUE0K7.js} +19 -19
- package/dist/{replies-CUWXgyx2.js → replies-86F3PldM.js} +3 -3
- package/dist/{reply-D7_t00Jt.js → reply-Dg1ZU3DZ.js} +262 -9
- package/dist/{reply-prefix-CvEIl6_d.js → reply-prefix-CI_IdwqH.js} +1 -1
- package/dist/{resolve-route-Jy5dFY67.js → resolve-route-BgSuN9c6.js} +4 -4
- package/dist/{retry-B-y5suGA.js → retry-4oEAHckB.js} +1 -1
- package/dist/{run-main-7BEaNeDG.js → run-main-OS2aFAJ2.js} +18 -18
- package/dist/{runner-ecX1WzDt.js → runner-B5oNTtgf.js} +22 -22
- package/dist/{runner-Dpjulwnm.js → runner-DFuAePEr.js} +1 -1
- package/dist/{security-cli-BpnzAB5_.js → security-cli-BadXDWTh.js} +2 -2
- package/dist/{security-cli-D9WEiEjD.js → security-cli-D5y28-RH.js} +2 -2
- package/dist/{send-DFtnbzqy.js → send-ASDB3AzC.js} +7 -7
- package/dist/{send-Bb4it0te.js → send-BTfqlrYd.js} +18 -18
- package/dist/{send-C0QjmPaf.js → send-CSydU49L.js} +10 -10
- package/dist/{send-Cpk3Ti6-.js → send-Du-IfSne.js} +6 -6
- package/dist/{send-BKo1T3HF.js → send-cCTQjuOZ.js} +6 -6
- package/dist/{server-methods-CTeJHJSZ.js → server-methods-BszFAkbJ.js} +8 -8
- package/dist/{server-methods-FQ-PqiVC.js → server-methods-D_iKJ-sj.js} +8 -8
- package/dist/{server-node-events-BqvcHbuK.js → server-node-events-CENHuAVz.js} +5 -5
- package/dist/{server-node-events-Z7epDloV.js → server-node-events-uBu3XOjd.js} +5 -5
- package/dist/{session-BTeY6Gn2.js → session-D8qLj_xN.js} +8 -8
- package/dist/{skill-commands-DG2lcozb.js → skill-commands-BcOduw6G.js} +16 -16
- package/dist/{skills-CXxrn_e2.js → skills-BrYDT4Jr.js} +24 -24
- package/dist/{sqlite-BN_hIcmu.js → sqlite-P-gMg7fi.js} +3 -3
- package/dist/{status-CKROJwI2.js → status-BvbJavmh.js} +1 -1
- package/dist/{status-DLFbpd9v.js → status-CA0mUJld.js} +4 -4
- package/dist/{status-DMigoL7q.js → status-CBnCPUMG.js} +4 -4
- package/dist/{status-x7WCSVhG.js → status-DJAeKN4G.js} +1 -1
- package/dist/{store-01F_JM7O.js → store-Ceagbc4L.js} +6 -6
- package/dist/{subagent-registry-BvP8AGdE.js → subagent-registry-C1OyZl-M.js} +262 -9
- package/dist/{subsystem-BjyjJF-d.js → subsystem-CzXhCdeY.js} +1 -1
- package/dist/{synthesis-DgQz6kPf.js → synthesis-DNTyB7JY.js} +7 -7
- package/dist/{synthesis-E4flT91F.js → synthesis-DuqSkHEr.js} +54 -54
- package/dist/{synthesis-DDId6n26.js → synthesis-brHrnNF2.js} +4 -4
- package/dist/{synthesis-By7KPUAm.js → synthesis-z5B41p_r.js} +4 -4
- package/dist/{tables-DoG-pFrf.js → tables-qbCoZrYA.js} +1 -1
- package/dist/{plugin-sdk/target-errors-Paro1BjP.js → target-errors-uNitqCCT.js} +2 -2
- package/dist/{thinking-BprCy23Z.js → thinking-BV7SCNJP.js} +5 -5
- package/dist/{plugin-sdk/tokens-bC3UVmVH.js → tokens-Bl5R3wPD.js} +1 -1
- package/dist/{tool-images-SqqWIT22.js → tool-images-JxNglLSr.js} +2 -2
- package/dist/{tool-loop-detection-Dj9h1ogr.js → tool-loop-detection-dfE771kg.js} +3 -3
- package/dist/{unified-runner-DaSb-TsZ.js → unified-runner-Czg3pdBc.js} +488 -233
- package/dist/{update-cli-D0relAZw.js → update-cli-0lyGyl31.js} +11 -11
- package/dist/{update-cli-C5H6DkNM.js → update-cli-CIzkVfmj.js} +10 -10
- package/dist/{update-runner-D99V_zHX.js → update-runner-D7-LDziQ.js} +1 -1
- package/dist/{update-runner-B_yVOk8Z.js → update-runner-aYPcKYAN.js} +1 -1
- package/dist/{web-BBz1kF_9.js → web-B90A99YU.js} +58 -58
- package/dist/{web-Bdebat5l.js → web-BJ5dUZso.js} +5 -5
- package/dist/{web-BQh2S6oq.js → web-CN7wnU7w.js} +4 -4
- package/dist/{web-CiYoJfrl.js → web-Wk1ay1eQ.js} +7 -7
- package/dist/{whatsapp-actions-DmVpLXmh.js → whatsapp-actions-llk0IUn2.js} +23 -23
- package/dist/{workspace-DscDraUb.js → workspace-CywO4ayZ.js} +27 -27
- 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 +6 -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 +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +6 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- 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 +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/plugin-sdk/web-CmKqZEsX.js +0 -66
|
@@ -49,7 +49,7 @@ const entries = [
|
|
|
49
49
|
description: "Run, inspect, and query the WebSocket Gateway",
|
|
50
50
|
hasSubcommands: true,
|
|
51
51
|
register: async (program) => {
|
|
52
|
-
(await import("./gateway-cli-
|
|
52
|
+
(await import("./gateway-cli-C6uT2x34.js")).registerGatewayCli(program);
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
{
|
|
@@ -81,7 +81,7 @@ const entries = [
|
|
|
81
81
|
description: "Discover, scan, and configure models",
|
|
82
82
|
hasSubcommands: true,
|
|
83
83
|
register: async (program) => {
|
|
84
|
-
(await import("./models-cli-
|
|
84
|
+
(await import("./models-cli-CYvXBvmZ.js")).registerModelsCli(program);
|
|
85
85
|
}
|
|
86
86
|
},
|
|
87
87
|
{
|
|
@@ -161,7 +161,7 @@ const entries = [
|
|
|
161
161
|
description: "Manage internal agent hooks",
|
|
162
162
|
hasSubcommands: true,
|
|
163
163
|
register: async (program) => {
|
|
164
|
-
(await import("./hooks-cli-
|
|
164
|
+
(await import("./hooks-cli-DSaezFsD.js")).registerHooksCli(program);
|
|
165
165
|
}
|
|
166
166
|
},
|
|
167
167
|
{
|
|
@@ -185,7 +185,7 @@ const entries = [
|
|
|
185
185
|
description: "Secure DM pairing (approve inbound requests)",
|
|
186
186
|
hasSubcommands: true,
|
|
187
187
|
register: async (program) => {
|
|
188
|
-
const { registerPluginCliCommands } = await import("./cli-
|
|
188
|
+
const { registerPluginCliCommands } = await import("./cli-DjZzJy3t.js");
|
|
189
189
|
registerPluginCliCommands(program, await loadConfig());
|
|
190
190
|
(await import("./pairing-cli-7X1qlhzF.js")).registerPairingCli(program);
|
|
191
191
|
}
|
|
@@ -195,8 +195,8 @@ const entries = [
|
|
|
195
195
|
description: "Manage Symi plugins and extensions",
|
|
196
196
|
hasSubcommands: true,
|
|
197
197
|
register: async (program) => {
|
|
198
|
-
(await import("./plugins-cli-
|
|
199
|
-
const { registerPluginCliCommands } = await import("./cli-
|
|
198
|
+
(await import("./plugins-cli-BDalhI46.js")).registerPluginsCli(program);
|
|
199
|
+
const { registerPluginCliCommands } = await import("./cli-DjZzJy3t.js");
|
|
200
200
|
registerPluginCliCommands(program, await loadConfig());
|
|
201
201
|
}
|
|
202
202
|
},
|
|
@@ -205,7 +205,7 @@ const entries = [
|
|
|
205
205
|
description: "Manage connected chat channels (Telegram, Discord, etc.)",
|
|
206
206
|
hasSubcommands: true,
|
|
207
207
|
register: async (program) => {
|
|
208
|
-
(await import("./channels-cli-
|
|
208
|
+
(await import("./channels-cli-Dk3kUw9A.js")).registerChannelsCli(program);
|
|
209
209
|
}
|
|
210
210
|
},
|
|
211
211
|
{
|
|
@@ -221,7 +221,7 @@ const entries = [
|
|
|
221
221
|
description: "Security tools and local config audits",
|
|
222
222
|
hasSubcommands: true,
|
|
223
223
|
register: async (program) => {
|
|
224
|
-
(await import("./security-cli-
|
|
224
|
+
(await import("./security-cli-BadXDWTh.js")).registerSecurityCli(program);
|
|
225
225
|
}
|
|
226
226
|
},
|
|
227
227
|
{
|
|
@@ -237,7 +237,7 @@ const entries = [
|
|
|
237
237
|
description: "Update Symi and inspect update channel status",
|
|
238
238
|
hasSubcommands: true,
|
|
239
239
|
register: async (program) => {
|
|
240
|
-
(await import("./update-cli-
|
|
240
|
+
(await import("./update-cli-0lyGyl31.js")).registerUpdateCli(program);
|
|
241
241
|
}
|
|
242
242
|
},
|
|
243
243
|
{
|
|
@@ -245,7 +245,7 @@ const entries = [
|
|
|
245
245
|
description: "Generate shell completion script",
|
|
246
246
|
hasSubcommands: false,
|
|
247
247
|
register: async (program) => {
|
|
248
|
-
(await import("./completion-cli-
|
|
248
|
+
(await import("./completion-cli-Cf6fYZWL.js").then((n) => n.n)).registerCompletionCli(program);
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
251
|
];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, n as resolveConfigPath, u as resolveRequiredHomeDir } from "./paths-
|
|
1
|
+
import { a as resolveOAuthDir, c as expandHomePrefix, l as resolveEffectiveHomeDir, n as resolveConfigPath, u as resolveRequiredHomeDir } from "./paths-CYmyCDsE.js";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import
|
|
3
|
+
import fsSync from "node:fs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import { Logger } from "tslog";
|
|
6
|
-
import
|
|
6
|
+
import json5 from "json5";
|
|
7
7
|
import chalk, { Chalk } from "chalk";
|
|
8
8
|
|
|
9
9
|
//#region src/infra/tmp-symi-dir.ts
|
|
@@ -12,9 +12,9 @@ function isNodeErrorWithCode(err, code) {
|
|
|
12
12
|
return typeof err === "object" && err !== null && "code" in err && err.code === code;
|
|
13
13
|
}
|
|
14
14
|
function resolvePreferredSymiTmpDir(options = {}) {
|
|
15
|
-
const accessSync = options.accessSync ??
|
|
16
|
-
const lstatSync = options.lstatSync ??
|
|
17
|
-
const mkdirSync = options.mkdirSync ??
|
|
15
|
+
const accessSync = options.accessSync ?? fsSync.accessSync;
|
|
16
|
+
const lstatSync = options.lstatSync ?? fsSync.lstatSync;
|
|
17
|
+
const mkdirSync = options.mkdirSync ?? fsSync.mkdirSync;
|
|
18
18
|
const getuid = options.getuid ?? (() => {
|
|
19
19
|
try {
|
|
20
20
|
return typeof process.getuid === "function" ? process.getuid() : void 0;
|
|
@@ -38,14 +38,14 @@ function resolvePreferredSymiTmpDir(options = {}) {
|
|
|
38
38
|
try {
|
|
39
39
|
const preferred = lstatSync(POSIX_SYMI_TMP_DIR);
|
|
40
40
|
if (!preferred.isDirectory() || preferred.isSymbolicLink()) return fallback();
|
|
41
|
-
accessSync(POSIX_SYMI_TMP_DIR,
|
|
41
|
+
accessSync(POSIX_SYMI_TMP_DIR, fsSync.constants.W_OK | fsSync.constants.X_OK);
|
|
42
42
|
if (!isSecureDirForUser(preferred)) return fallback();
|
|
43
43
|
return POSIX_SYMI_TMP_DIR;
|
|
44
44
|
} catch (err) {
|
|
45
45
|
if (!isNodeErrorWithCode(err, "ENOENT")) return fallback();
|
|
46
46
|
}
|
|
47
47
|
try {
|
|
48
|
-
accessSync("/tmp",
|
|
48
|
+
accessSync("/tmp", fsSync.constants.W_OK | fsSync.constants.X_OK);
|
|
49
49
|
mkdirSync(POSIX_SYMI_TMP_DIR, {
|
|
50
50
|
recursive: true,
|
|
51
51
|
mode: 448
|
|
@@ -68,9 +68,9 @@ function resolvePreferredSymiTmpDir(options = {}) {
|
|
|
68
68
|
function readLoggingConfig() {
|
|
69
69
|
const configPath = resolveConfigPath();
|
|
70
70
|
try {
|
|
71
|
-
if (!
|
|
72
|
-
const raw =
|
|
73
|
-
const logging =
|
|
71
|
+
if (!fsSync.existsSync(configPath)) return;
|
|
72
|
+
const raw = fsSync.readFileSync(configPath, "utf-8");
|
|
73
|
+
const logging = json5.parse(raw)?.logging;
|
|
74
74
|
if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
|
|
75
75
|
return logging;
|
|
76
76
|
} catch {
|
|
@@ -172,7 +172,7 @@ function isFileLogLevelEnabled(level) {
|
|
|
172
172
|
return levelToMinLevel(level) <= levelToMinLevel(settings.level);
|
|
173
173
|
}
|
|
174
174
|
function buildLogger(settings) {
|
|
175
|
-
|
|
175
|
+
fsSync.mkdirSync(path.dirname(settings.file), { recursive: true });
|
|
176
176
|
if (isRollingPath(settings.file)) pruneOldRollingLogs(path.dirname(settings.file));
|
|
177
177
|
const logger = new Logger({
|
|
178
178
|
name: "symi",
|
|
@@ -186,7 +186,7 @@ function buildLogger(settings) {
|
|
|
186
186
|
...logObj,
|
|
187
187
|
time
|
|
188
188
|
});
|
|
189
|
-
|
|
189
|
+
fsSync.appendFileSync(settings.file, `${line}\n`, { encoding: "utf8" });
|
|
190
190
|
} catch {}
|
|
191
191
|
});
|
|
192
192
|
for (const transport of externalTransports) attachExternalTransport(logger, transport);
|
|
@@ -238,14 +238,14 @@ function isRollingPath(file) {
|
|
|
238
238
|
}
|
|
239
239
|
function pruneOldRollingLogs(dir) {
|
|
240
240
|
try {
|
|
241
|
-
const entries =
|
|
241
|
+
const entries = fsSync.readdirSync(dir, { withFileTypes: true });
|
|
242
242
|
const cutoff = Date.now() - MAX_LOG_AGE_MS;
|
|
243
243
|
for (const entry of entries) {
|
|
244
244
|
if (!entry.isFile()) continue;
|
|
245
245
|
if (!entry.name.startsWith(`${LOG_PREFIX}-`) || !entry.name.endsWith(LOG_SUFFIX)) continue;
|
|
246
246
|
const fullPath = path.join(dir, entry.name);
|
|
247
247
|
try {
|
|
248
|
-
if (
|
|
248
|
+
if (fsSync.statSync(fullPath).mtimeMs < cutoff) fsSync.rmSync(fullPath, { force: true });
|
|
249
249
|
} catch {}
|
|
250
250
|
}
|
|
251
251
|
} catch {}
|
|
@@ -326,14 +326,14 @@ function isPlainObject(value) {
|
|
|
326
326
|
//#endregion
|
|
327
327
|
//#region src/utils.ts
|
|
328
328
|
async function ensureDir(dir) {
|
|
329
|
-
await
|
|
329
|
+
await fsSync.promises.mkdir(dir, { recursive: true });
|
|
330
330
|
}
|
|
331
331
|
/**
|
|
332
332
|
* Check if a file or directory exists at the given path.
|
|
333
333
|
*/
|
|
334
334
|
async function pathExists(targetPath) {
|
|
335
335
|
try {
|
|
336
|
-
await
|
|
336
|
+
await fsSync.promises.access(targetPath);
|
|
337
337
|
return true;
|
|
338
338
|
} catch {
|
|
339
339
|
return false;
|
|
@@ -416,7 +416,7 @@ function readLidReverseMapping(lid, opts) {
|
|
|
416
416
|
for (const dir of mappingDirs) {
|
|
417
417
|
const mappingPath = path.join(dir, mappingFilename);
|
|
418
418
|
try {
|
|
419
|
-
const data =
|
|
419
|
+
const data = fsSync.readFileSync(mappingPath, "utf8");
|
|
420
420
|
const phone = JSON.parse(data);
|
|
421
421
|
if (phone === null || phone === void 0) continue;
|
|
422
422
|
return normalizeE164(String(phone));
|
|
@@ -500,7 +500,7 @@ function resolveConfigDir(env = process.env, homedir = os.homedir) {
|
|
|
500
500
|
if (override) return resolveUserPath(override);
|
|
501
501
|
const newDir = path.join(resolveRequiredHomeDir(env, homedir), ".symi");
|
|
502
502
|
try {
|
|
503
|
-
if (
|
|
503
|
+
if (fsSync.existsSync(newDir)) return newDir;
|
|
504
504
|
} catch {}
|
|
505
505
|
return newDir;
|
|
506
506
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { r as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-
|
|
3
|
-
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-
|
|
4
|
-
import { i as chunkMarkdownTextWithMode } from "./chunk-
|
|
2
|
+
import { r as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-cCTQjuOZ.js";
|
|
3
|
+
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Bl5R3wPD.js";
|
|
4
|
+
import { i as chunkMarkdownTextWithMode } from "./chunk-BcxcL1U3.js";
|
|
5
5
|
|
|
6
6
|
//#region src/auto-reply/reply/reply-reference.ts
|
|
7
7
|
function createReplyReferencePlanner(options) {
|
|
@@ -60,8 +60,8 @@ import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJ
|
|
|
60
60
|
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DpMnSIi5.js";
|
|
61
61
|
import { a as buildModelAliasLines, n as resolveModel } from "./model-ECsJuJew.js";
|
|
62
62
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
|
|
63
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
64
|
-
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-
|
|
63
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-ENCASZJk.js";
|
|
64
|
+
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-DrmlegR2.js";
|
|
65
65
|
import { n as retryAsync } from "./retry-BoS4e4X_.js";
|
|
66
66
|
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-C9e6dMU_.js";
|
|
67
67
|
import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-DIi9uyC6.js";
|
|
@@ -94,7 +94,7 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
|
|
|
94
94
|
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-BZS89z6C.js";
|
|
95
95
|
import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-D3rffA64.js";
|
|
96
96
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CjL9F9WT.js";
|
|
97
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
97
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-Bx5zp45n.js";
|
|
98
98
|
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-C0pRqIFv.js";
|
|
99
99
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CZ1Rrj7O.js";
|
|
100
100
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-DF8wPn-_.js";
|
|
@@ -28996,6 +28996,7 @@ async function resolveDetachScriptPath(params) {
|
|
|
28996
28996
|
return cachedScriptPath;
|
|
28997
28997
|
}
|
|
28998
28998
|
async function buildLongTaskPromptSuffix(params) {
|
|
28999
|
+
if (params.cronEnabled === false) return "";
|
|
28999
29000
|
const scriptPath = await resolveDetachScriptPath(params);
|
|
29000
29001
|
if (!scriptPath) return "";
|
|
29001
29002
|
return "\n\n" + [
|
|
@@ -29015,7 +29016,8 @@ async function buildLongTaskPromptSuffix(params) {
|
|
|
29015
29016
|
" • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
|
|
29016
29017
|
" • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
|
|
29017
29018
|
" • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
|
|
29018
|
-
" • Never leave stale monitors running after the task finishes."
|
|
29019
|
+
" • Never leave stale monitors running after the task finishes.",
|
|
29020
|
+
"- Inspecting and killing tasks: use `task_list` to enumerate detached tasks in the workspace (returns id/pid/alive/status/started for each), and `task_cancel` with `taskId` (and optional `signal`, default SIGTERM) to terminate a running task. Prefer these over raw `kill`/`ps` exec calls — they share the detach script's task-id allow-list and report alreadyDead cleanly."
|
|
29019
29021
|
].join("\n");
|
|
29020
29022
|
}
|
|
29021
29023
|
|
|
@@ -30088,7 +30090,8 @@ async function runEmbeddedAttempt(params) {
|
|
|
30088
30090
|
const longTaskSuffix = await buildLongTaskPromptSuffix({
|
|
30089
30091
|
argv1: process.argv[1],
|
|
30090
30092
|
cwd: process.cwd(),
|
|
30091
|
-
moduleUrl: import.meta.url
|
|
30093
|
+
moduleUrl: import.meta.url,
|
|
30094
|
+
cronEnabled: process.env.SYMI_SKIP_CRON !== "1" && params.config?.cron?.enabled !== false
|
|
30092
30095
|
});
|
|
30093
30096
|
const emailCapabilitySuffix = buildEmailCapabilityPromptSuffix();
|
|
30094
30097
|
const systemPromptText = createSystemPromptOverride(appendPrompt + longTaskSuffix + emailCapabilitySuffix + profilePromptSuffix)();
|
|
@@ -31932,7 +31935,7 @@ async function runAgentTurn(params) {
|
|
|
31932
31935
|
function createDefaultDeps() {
|
|
31933
31936
|
return {
|
|
31934
31937
|
sendMessageWhatsApp: async (...args) => {
|
|
31935
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
31938
|
+
const { sendMessageWhatsApp } = await import("./web-BJ5dUZso.js");
|
|
31936
31939
|
return await sendMessageWhatsApp(...args);
|
|
31937
31940
|
},
|
|
31938
31941
|
sendMessageTelegram: async (...args) => {
|
|
@@ -50363,7 +50366,7 @@ function loadWebLoginQr() {
|
|
|
50363
50366
|
return webLoginQrPromise;
|
|
50364
50367
|
}
|
|
50365
50368
|
function loadWebChannel() {
|
|
50366
|
-
webChannelPromise ??= import("./web-
|
|
50369
|
+
webChannelPromise ??= import("./web-BJ5dUZso.js");
|
|
50367
50370
|
return webChannelPromise;
|
|
50368
50371
|
}
|
|
50369
50372
|
function loadWhatsAppActions() {
|
|
@@ -52119,7 +52122,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
52119
52122
|
};
|
|
52120
52123
|
}
|
|
52121
52124
|
}
|
|
52122
|
-
function resolveWorkdir(workdir, warnings) {
|
|
52125
|
+
function resolveWorkdir$1(workdir, warnings) {
|
|
52123
52126
|
const fallback = safeCwd() ?? homedir();
|
|
52124
52127
|
try {
|
|
52125
52128
|
if (statSync(workdir).isDirectory()) return workdir;
|
|
@@ -53191,7 +53194,7 @@ function createExecTool(defaults) {
|
|
|
53191
53194
|
});
|
|
53192
53195
|
workdir = resolved.hostWorkdir;
|
|
53193
53196
|
containerWorkdir = resolved.containerWorkdir;
|
|
53194
|
-
} else workdir = resolveWorkdir(rawWorkdir, warnings);
|
|
53197
|
+
} else workdir = resolveWorkdir$1(rawWorkdir, warnings);
|
|
53195
53198
|
const baseEnv = coerceEnv(process.env);
|
|
53196
53199
|
if (host !== "sandbox" && params.env) validateHostEnv(params.env);
|
|
53197
53200
|
const mergedEnv = params.env ? {
|
|
@@ -63408,6 +63411,254 @@ function createSubagentsTool(opts) {
|
|
|
63408
63411
|
};
|
|
63409
63412
|
}
|
|
63410
63413
|
|
|
63414
|
+
//#endregion
|
|
63415
|
+
//#region src/agents/tools/task-tool.ts
|
|
63416
|
+
/**
|
|
63417
|
+
* Long-task management tools (task_list, task_cancel).
|
|
63418
|
+
*
|
|
63419
|
+
* Companions to the detach-task pattern in skills/long-task. The detach
|
|
63420
|
+
* script writes task-<id>.{pid,cmd,started,log,status} state files into
|
|
63421
|
+
* the agent's workspace; these tools read and act on those files so the
|
|
63422
|
+
* agent can answer "what's running?" and kill a task without needing
|
|
63423
|
+
* shell access.
|
|
63424
|
+
*
|
|
63425
|
+
* task-id allow-list mirrors detach-task.sh: 1–60 chars from
|
|
63426
|
+
* [a-zA-Z0-9._-], must not start with '.' or '-'. Diverging would let the
|
|
63427
|
+
* agent kill processes it never spawned via path traversal.
|
|
63428
|
+
*/
|
|
63429
|
+
const TASK_FILE_PREFIX = "task-";
|
|
63430
|
+
const TASK_ID_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
|
|
63431
|
+
const TASK_FILE_SUFFIXES = [
|
|
63432
|
+
".pid",
|
|
63433
|
+
".status",
|
|
63434
|
+
".started",
|
|
63435
|
+
".cmd",
|
|
63436
|
+
".log"
|
|
63437
|
+
];
|
|
63438
|
+
const ALLOWED_SIGNALS = new Set([
|
|
63439
|
+
"SIGTERM",
|
|
63440
|
+
"SIGINT",
|
|
63441
|
+
"SIGHUP",
|
|
63442
|
+
"SIGQUIT",
|
|
63443
|
+
"SIGKILL",
|
|
63444
|
+
"SIGUSR1",
|
|
63445
|
+
"SIGUSR2"
|
|
63446
|
+
]);
|
|
63447
|
+
const TaskListSchema = Type.Object({ workdir: Type.Optional(Type.String()) });
|
|
63448
|
+
const TaskCancelSchema = Type.Object({
|
|
63449
|
+
taskId: Type.String(),
|
|
63450
|
+
workdir: Type.Optional(Type.String()),
|
|
63451
|
+
signal: Type.Optional(Type.String())
|
|
63452
|
+
});
|
|
63453
|
+
function normaliseSignal(input) {
|
|
63454
|
+
if (!input) return "SIGTERM";
|
|
63455
|
+
const upper = input.trim().toUpperCase();
|
|
63456
|
+
const candidate = upper.startsWith("SIG") ? upper : `SIG${upper}`;
|
|
63457
|
+
if (ALLOWED_SIGNALS.has(candidate)) return candidate;
|
|
63458
|
+
throw new Error(`Unsupported signal: ${input}. Allowed: TERM, INT, HUP, QUIT, KILL, USR1, USR2.`);
|
|
63459
|
+
}
|
|
63460
|
+
function isPidAlive(pid) {
|
|
63461
|
+
try {
|
|
63462
|
+
process.kill(pid, 0);
|
|
63463
|
+
return true;
|
|
63464
|
+
} catch (err) {
|
|
63465
|
+
if (err.code === "EPERM") return true;
|
|
63466
|
+
return false;
|
|
63467
|
+
}
|
|
63468
|
+
}
|
|
63469
|
+
async function safeRead(filePath) {
|
|
63470
|
+
try {
|
|
63471
|
+
return (await fs.promises.readFile(filePath, "utf8")).trim();
|
|
63472
|
+
} catch {
|
|
63473
|
+
return null;
|
|
63474
|
+
}
|
|
63475
|
+
}
|
|
63476
|
+
function resolveWorkdir(deps, override) {
|
|
63477
|
+
const raw = override?.trim();
|
|
63478
|
+
if (!raw) return deps.workspaceDir;
|
|
63479
|
+
if (!path.isAbsolute(raw)) throw new Error(`workdir must be an absolute path (got: ${raw})`);
|
|
63480
|
+
return raw;
|
|
63481
|
+
}
|
|
63482
|
+
async function readTaskInfo(workdir, id) {
|
|
63483
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.pid`);
|
|
63484
|
+
const [pidText, status, started, cmd] = await Promise.all([
|
|
63485
|
+
safeRead(pidPath),
|
|
63486
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`)),
|
|
63487
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.started`)),
|
|
63488
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.cmd`))
|
|
63489
|
+
]);
|
|
63490
|
+
let pid = null;
|
|
63491
|
+
if (pidText) {
|
|
63492
|
+
const parsed = Number.parseInt(pidText, 10);
|
|
63493
|
+
if (Number.isFinite(parsed) && parsed > 0) pid = parsed;
|
|
63494
|
+
}
|
|
63495
|
+
return {
|
|
63496
|
+
id,
|
|
63497
|
+
pid,
|
|
63498
|
+
alive: pid !== null && isPidAlive(pid),
|
|
63499
|
+
status: status ?? "missing",
|
|
63500
|
+
started,
|
|
63501
|
+
cmd,
|
|
63502
|
+
pidPath,
|
|
63503
|
+
statusPath: path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`),
|
|
63504
|
+
logPath: path.join(workdir, `${TASK_FILE_PREFIX}${id}.log`)
|
|
63505
|
+
};
|
|
63506
|
+
}
|
|
63507
|
+
function createTaskListTool(deps) {
|
|
63508
|
+
return {
|
|
63509
|
+
label: "Task List",
|
|
63510
|
+
name: "task_list",
|
|
63511
|
+
description: `List long-running detached tasks in the agent's workspace.
|
|
63512
|
+
|
|
63513
|
+
Globs task-<id>.{pid,status,started,cmd,log} files, reads their state, and
|
|
63514
|
+
checks each PID's liveness. Use this to find the task-id of a running
|
|
63515
|
+
detach-task before calling task_cancel, or to answer "what's running right
|
|
63516
|
+
now?" without re-asking the user.
|
|
63517
|
+
|
|
63518
|
+
Returns: { workdir, tasks: [{ id, pid, alive, status, started, cmd, pidPath, statusPath, logPath }] }.
|
|
63519
|
+
Tasks whose .pid file is missing are still listed (alive=false, pid=null) so
|
|
63520
|
+
the agent can spot orphan state files.`,
|
|
63521
|
+
parameters: TaskListSchema,
|
|
63522
|
+
execute: async (_toolCallId, args) => {
|
|
63523
|
+
const override = readStringParam(args, "workdir");
|
|
63524
|
+
let workdir;
|
|
63525
|
+
try {
|
|
63526
|
+
workdir = resolveWorkdir(deps, override);
|
|
63527
|
+
} catch (err) {
|
|
63528
|
+
return jsonResult({
|
|
63529
|
+
workdir: override ?? deps.workspaceDir,
|
|
63530
|
+
tasks: [],
|
|
63531
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63532
|
+
});
|
|
63533
|
+
}
|
|
63534
|
+
let entries;
|
|
63535
|
+
try {
|
|
63536
|
+
entries = await fs.promises.readdir(workdir);
|
|
63537
|
+
} catch (err) {
|
|
63538
|
+
if (err.code === "ENOENT") return jsonResult({
|
|
63539
|
+
workdir,
|
|
63540
|
+
tasks: []
|
|
63541
|
+
});
|
|
63542
|
+
return jsonResult({
|
|
63543
|
+
workdir,
|
|
63544
|
+
tasks: [],
|
|
63545
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63546
|
+
});
|
|
63547
|
+
}
|
|
63548
|
+
const taskIds = /* @__PURE__ */ new Set();
|
|
63549
|
+
for (const entry of entries) {
|
|
63550
|
+
if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
|
|
63551
|
+
for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
|
|
63552
|
+
const id = entry.slice(5, -suffix.length);
|
|
63553
|
+
if (id.length > 0 && TASK_ID_RE.test(id)) taskIds.add(id);
|
|
63554
|
+
break;
|
|
63555
|
+
}
|
|
63556
|
+
}
|
|
63557
|
+
const tasks = await Promise.all([...taskIds].toSorted().map((id) => readTaskInfo(workdir, id)));
|
|
63558
|
+
return jsonResult({
|
|
63559
|
+
workdir,
|
|
63560
|
+
tasks
|
|
63561
|
+
});
|
|
63562
|
+
}
|
|
63563
|
+
};
|
|
63564
|
+
}
|
|
63565
|
+
function createTaskCancelTool(deps) {
|
|
63566
|
+
return {
|
|
63567
|
+
label: "Task Cancel",
|
|
63568
|
+
name: "task_cancel",
|
|
63569
|
+
description: `Send a signal (default SIGTERM) to a running detached task.
|
|
63570
|
+
|
|
63571
|
+
Reads task-<id>.pid in the workdir, validates the recorded PID is alive,
|
|
63572
|
+
and sends the signal via process.kill. The task's TERM/INT/HUP trap will
|
|
63573
|
+
write an "aborted" status before exiting, so a follow-up task_list call
|
|
63574
|
+
sees the canonical end state.
|
|
63575
|
+
|
|
63576
|
+
task-id must match the same allow-list as detach-task.sh: 1–60 chars from
|
|
63577
|
+
[a-zA-Z0-9._-], no leading '.' or '-'. signal accepts TERM (default), INT,
|
|
63578
|
+
HUP, QUIT, KILL, USR1, USR2 — with or without the "SIG" prefix.
|
|
63579
|
+
|
|
63580
|
+
Returns: { ok, taskId, pid, sentSignal, alreadyDead?, error? }.`,
|
|
63581
|
+
parameters: TaskCancelSchema,
|
|
63582
|
+
execute: async (_toolCallId, args) => {
|
|
63583
|
+
const params = args;
|
|
63584
|
+
const taskId = readStringParam(params, "taskId", { required: true });
|
|
63585
|
+
if (!TASK_ID_RE.test(taskId)) return jsonResult({
|
|
63586
|
+
ok: false,
|
|
63587
|
+
taskId,
|
|
63588
|
+
error: "taskId must be 1–60 chars from [a-zA-Z0-9._-] and must not start with '.' or '-'."
|
|
63589
|
+
});
|
|
63590
|
+
const override = readStringParam(params, "workdir");
|
|
63591
|
+
let workdir;
|
|
63592
|
+
try {
|
|
63593
|
+
workdir = resolveWorkdir(deps, override);
|
|
63594
|
+
} catch (err) {
|
|
63595
|
+
return jsonResult({
|
|
63596
|
+
ok: false,
|
|
63597
|
+
taskId,
|
|
63598
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63599
|
+
});
|
|
63600
|
+
}
|
|
63601
|
+
const signalRaw = readStringParam(params, "signal");
|
|
63602
|
+
let signal;
|
|
63603
|
+
try {
|
|
63604
|
+
signal = normaliseSignal(signalRaw);
|
|
63605
|
+
} catch (err) {
|
|
63606
|
+
return jsonResult({
|
|
63607
|
+
ok: false,
|
|
63608
|
+
taskId,
|
|
63609
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63610
|
+
});
|
|
63611
|
+
}
|
|
63612
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
|
|
63613
|
+
let pidText;
|
|
63614
|
+
try {
|
|
63615
|
+
pidText = (await fs.promises.readFile(pidPath, "utf8")).trim();
|
|
63616
|
+
} catch (err) {
|
|
63617
|
+
if (err.code === "ENOENT") return jsonResult({
|
|
63618
|
+
ok: false,
|
|
63619
|
+
taskId,
|
|
63620
|
+
error: `no pid file at ${pidPath} — task is unknown or already cleaned up`
|
|
63621
|
+
});
|
|
63622
|
+
return jsonResult({
|
|
63623
|
+
ok: false,
|
|
63624
|
+
taskId,
|
|
63625
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63626
|
+
});
|
|
63627
|
+
}
|
|
63628
|
+
const pid = Number.parseInt(pidText, 10);
|
|
63629
|
+
if (!Number.isFinite(pid) || pid <= 0) return jsonResult({
|
|
63630
|
+
ok: false,
|
|
63631
|
+
taskId,
|
|
63632
|
+
error: `pid file at ${pidPath} did not contain a positive integer`
|
|
63633
|
+
});
|
|
63634
|
+
if (!isPidAlive(pid)) return jsonResult({
|
|
63635
|
+
ok: false,
|
|
63636
|
+
taskId,
|
|
63637
|
+
pid,
|
|
63638
|
+
alreadyDead: true,
|
|
63639
|
+
error: "process is no longer running"
|
|
63640
|
+
});
|
|
63641
|
+
try {
|
|
63642
|
+
process.kill(pid, signal);
|
|
63643
|
+
} catch (err) {
|
|
63644
|
+
return jsonResult({
|
|
63645
|
+
ok: false,
|
|
63646
|
+
taskId,
|
|
63647
|
+
pid,
|
|
63648
|
+
sentSignal: signal,
|
|
63649
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63650
|
+
});
|
|
63651
|
+
}
|
|
63652
|
+
return jsonResult({
|
|
63653
|
+
ok: true,
|
|
63654
|
+
taskId,
|
|
63655
|
+
pid,
|
|
63656
|
+
sentSignal: signal
|
|
63657
|
+
});
|
|
63658
|
+
}
|
|
63659
|
+
};
|
|
63660
|
+
}
|
|
63661
|
+
|
|
63411
63662
|
//#endregion
|
|
63412
63663
|
//#region src/agents/tools/tts-tool.ts
|
|
63413
63664
|
const TtsToolSchema = Type.Object({
|
|
@@ -64708,6 +64959,8 @@ function createSymiTools(options) {
|
|
|
64708
64959
|
config: options?.config
|
|
64709
64960
|
}),
|
|
64710
64961
|
createCronTool({ agentSessionKey: options?.agentSessionKey }),
|
|
64962
|
+
createTaskListTool({ workspaceDir }),
|
|
64963
|
+
createTaskCancelTool({ workspaceDir }),
|
|
64711
64964
|
...messageTool ? [messageTool] : [],
|
|
64712
64965
|
createTtsTool({
|
|
64713
64966
|
agentChannel: options?.agentChannel,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { n as resolveAgentConfig } from "./agent-scope-
|
|
2
|
+
import { n as resolveAgentConfig } from "./agent-scope-Cpm7a9ss.js";
|
|
3
3
|
|
|
4
4
|
//#region src/agents/identity.ts
|
|
5
5
|
const DEFAULT_ACK_REACTION = "👀";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, i as buildAgentPeerSessionKey, n as DEFAULT_MAIN_KEY, p as normalizeAccountId, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
|
|
3
|
-
import { Z as shouldLogVerbose } from "./registry-
|
|
4
|
-
import { c as resolveDefaultAgentId } from "./agent-scope-
|
|
5
|
-
import { y as logDebug } from "./workspace-
|
|
3
|
+
import { Z as shouldLogVerbose } from "./registry-X6fUE0K7.js";
|
|
4
|
+
import { c as resolveDefaultAgentId } from "./agent-scope-Cpm7a9ss.js";
|
|
5
|
+
import { y as logDebug } from "./workspace-CywO4ayZ.js";
|
|
6
6
|
import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
|
|
7
|
-
import { t as listBindings } from "./bindings-
|
|
7
|
+
import { t as listBindings } from "./bindings-xcRox9xM.js";
|
|
8
8
|
|
|
9
9
|
//#region src/routing/resolve-route.ts
|
|
10
10
|
var resolve_route_exports = /* @__PURE__ */ __exportAll({
|