@symerian/symi 2.8.13 → 2.8.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{acp-cli-D7uCUCr8.js → acp-cli-BgR7mxTS.js} +2 -2
- package/dist/{acp-cli-CAU8UW9I.js → acp-cli-D1JYg9c1.js} +2 -2
- package/dist/{agents-CgCg4syn.js → agents-BhhAcFrX.js} +5 -5
- package/dist/{agents.config-BnPC7uct.js → agents.config-BOvsz6E6.js} +1 -1
- package/dist/{agents.config-DqWxpgkX.js → agents.config-D967tgmP.js} +1 -1
- package/dist/{audit-Oa5dsn5p.js → audit-Dr_8rC6G.js} +3 -3
- package/dist/{audit-Bi9Je9FZ.js → audit-xiwEIT96.js} +3 -3
- package/dist/{auth-choice-BKwypsnS.js → auth-choice-DEKKbufH.js} +2 -2
- package/dist/{auth-choice-BIlBt2d0.js → auth-choice-Pzy-t2mh.js} +2 -2
- package/dist/{banner-CX5CuLWQ.js → banner-CiHQEfyr.js} +1 -1
- package/dist/{browser-cli-5ME9iiC3.js → browser-cli-BQeCPbES.js} +3 -3
- package/dist/{browser-cli-BTci35qB.js → browser-cli-IXepRCZR.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +2 -2
- package/dist/{call-Cmb04dff.js → call-BkJK3eYP.js} +2 -1
- package/dist/{call-BrRWr7Lj.js → call-CAGvQYXj.js} +2 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-mUKQVJQl.js → channel-options-DGuilErd.js} +1 -1
- package/dist/{channel-options-7y9EuPLO.js → channel-options-_erlRi2w.js} +1 -1
- package/dist/{channel-web-Dldh4zVI.js → channel-web-DwfovJKQ.js} +1 -1
- package/dist/{channels-cli-Q6Q8LokG.js → channels-cli-B2Zf1oz9.js} +10 -10
- package/dist/{channels-cli-Dz9vV1KL.js → channels-cli-DUsK2bXE.js} +10 -10
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-DMsLCQbO.js → cli-BpmyiZc9.js} +7 -7
- package/dist/{cli-D4WYEtu4.js → cli-DUiSlxsb.js} +7 -7
- package/dist/{client-C7AOOnKZ.js → client-CYsBIR3j.js} +27 -1
- package/dist/{client-qUlxXXVJ.js → client-Cmq13-uF.js} +27 -1
- package/dist/{command-registry-cEqGIx4b.js → command-registry-B8LVEWW9.js} +11 -11
- package/dist/{completion-cli-Bw0jbNaG.js → completion-cli-D-_MV8eA.js} +1 -1
- package/dist/{completion-cli-C5GCKfKT.js → completion-cli-DZeK6_ev.js} +2 -2
- package/dist/{config-cli-DP0hP7WR.js → config-cli-B7ZvHIMY.js} +1 -1
- package/dist/{config-cli-DgHooQ4_.js → config-cli-D_m0QL6c.js} +1 -1
- package/dist/{configure-OUiXvgMg.js → configure-DFg-N_i2.js} +6 -6
- package/dist/{configure-BQUkaPdS.js → configure-DXml-xDR.js} +6 -6
- package/dist/control-ui/index.html +7 -0
- package/dist/control-ui/js/menu.js +2 -0
- package/dist/control-ui/js/settings.js +1 -0
- package/dist/{cron-cli-CGJveo7P.js → cron-cli-CZCm3aLt.js} +3 -3
- package/dist/{cron-cli-Crh_r2aK.js → cron-cli-Dq2FEfK1.js} +3 -3
- package/dist/{daemon-cli-Cq-IaYw4.js → daemon-cli-B2_uIgDM.js} +2 -2
- package/dist/{daemon-cli-CAIg9sMo.js → daemon-cli-CweMes2K.js} +2 -2
- package/dist/daemon-cli.js +27 -0
- package/dist/{devices-cli-CUT_8CuJ.js → devices-cli-3ui-Wcaj.js} +2 -2
- package/dist/{devices-cli-hSn5vjJZ.js → devices-cli-DeoPyzAd.js} +2 -2
- package/dist/{doctor-completion-BSMAyCq_.js → doctor-completion-CQXl3jf4.js} +1 -1
- package/dist/{doctor-completion-DlKvncR9.js → doctor-completion-Cu7DwgVw.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-BTfZiH6z.js → exec-approvals-cli-Bx9loYnQ.js} +4 -4
- package/dist/{exec-approvals-cli-DTad2Zi_.js → exec-approvals-cli-CTEn_Eu_.js} +4 -4
- package/dist/extensionAPI.js +2 -2
- package/dist/{gateway-cli-NI7W2QxR.js → gateway-cli-B2XchN3Y.js} +35 -17
- package/dist/{gateway-cli-BlRNLVfU.js → gateway-cli-P0olUhID.js} +35 -17
- package/dist/{gateway-rpc-BKJyAcQd.js → gateway-rpc-DbSbyIcL.js} +1 -1
- package/dist/{gateway-rpc-DActF8Qj.js → gateway-rpc-QsFn5Zr1.js} +1 -1
- package/dist/{glass-ui-ws-BBkFBsKB.js → glass-ui-ws-Cs2jfN42.js} +14 -14
- package/dist/{glass-ui-ws-DxrESDzy.js → glass-ui-ws-tIVOcdB2.js} +14 -14
- package/dist/{health-D4vU-wV-.js → health-Cs8wf7Hb.js} +2 -2
- package/dist/{health-fOu0S75U.js → health-DMy1nA4K.js} +2 -2
- package/dist/{hooks-cli-BdgnXYmw.js → hooks-cli-D6awUCDl.js} +8 -8
- package/dist/{hooks-cli-DdSggQYs.js → hooks-cli-DIH-zxCG.js} +8 -8
- package/dist/index.js +12 -12
- package/dist/llm-slug-generator.js +2 -2
- package/dist/{logs-cli-BPnrAg0W.js → logs-cli-1hn28HCu.js} +3 -3
- package/dist/{logs-cli-DiDesnnp.js → logs-cli-R4WwQvR2.js} +3 -3
- package/dist/{manager-syNf_ZrI.js → manager-B60Ncruq.js} +1 -1
- package/dist/{manager-DRrGn88w.js → manager-B76ofKkW.js} +1 -1
- package/dist/{manager-_RGWWymD.js → manager-D0_H4LHh.js} +1 -1
- package/dist/{manager-TOeH0D8K.js → manager-wF-n_prX.js} +1 -1
- package/dist/{memory-cli-0jm-n36m.js → memory-cli-DRLrIa8h.js} +3 -3
- package/dist/{memory-cli-BSOOwpt1.js → memory-cli-eSWCbEiS.js} +3 -3
- package/dist/{models-sGeWQOmg.js → models-B5H41UsH.js} +3 -3
- package/dist/{models-cli-DV-J1cm0.js → models-cli-CHFi2_kC.js} +9 -9
- package/dist/{models-cli-CtkoEyh3.js → models-cli-CVfq_g6h.js} +8 -8
- package/dist/{node-cli-DwDQpTW5.js → node-cli-BBN6PoOG.js} +1 -1
- package/dist/{node-cli-DEcCM2p0.js → node-cli-BsAzTrAx.js} +1 -1
- package/dist/{nodes-cli-CqBLemeB.js → nodes-cli-DE60dv81.js} +3 -3
- package/dist/{nodes-cli-u8k6TPmF.js → nodes-cli-t3azniiS.js} +3 -3
- package/dist/{onboard-CWBYuaCm.js → onboard-DKK6UJjF.js} +3 -3
- package/dist/{onboard-FeTHeA1y.js → onboard-DgPzeL3U.js} +3 -3
- package/dist/{onboard-channels-D8bDJYPc.js → onboard-channels-BTuYOQO-.js} +1 -1
- package/dist/{onboard-channels-DpZkjldS.js → onboard-channels-DvNwlvWZ.js} +1 -1
- package/dist/{onboard-helpers-C8f_xi6R.js → onboard-helpers-B7jBYbCU.js} +1 -1
- package/dist/{onboard-helpers-CF0Cp3OB.js → onboard-helpers-DjlGq6iG.js} +1 -1
- package/dist/{onboard-remote-DgGH0dTe.js → onboard-remote-CXuHbtrT.js} +1 -1
- package/dist/{onboard-remote-CWal5_aZ.js → onboard-remote-D7wGqONm.js} +1 -1
- package/dist/{onboard-skills-DnzJLU2H.js → onboard-skills-BDhqz3te.js} +1 -1
- package/dist/{onboard-skills-CO2TjuO3.js → onboard-skills-ChQnpMi-.js} +1 -1
- package/dist/{onboarding-c2qhwP0x.js → onboarding-CCHq8fd9.js} +7 -7
- package/dist/{onboarding-BsPnnH5g.js → onboarding-CeqXuQPm.js} +7 -7
- package/dist/{onboarding.finalize-7St3fmk2.js → onboarding.finalize-Cw4TWelq.js} +13 -13
- package/dist/{onboarding.finalize-id9EHg1P.js → onboarding.finalize-DxWVkNx9.js} +12 -12
- package/dist/{onboarding.gateway-config-DlV0vso8.js → onboarding.gateway-config-Cm5jIfRz.js} +3 -3
- package/dist/{onboarding.gateway-config-D4rQoPRi.js → onboarding.gateway-config-wAyLcGRu.js} +3 -3
- package/dist/{pi-embedded-DCBB1_SC.js → pi-embedded-CGwqumSe.js} +339 -10
- 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-CJKHlm9W.js} +1 -1
- package/dist/{plugin-registry-Cy1kfzAy.js → plugin-registry-kiYkB_km.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-C9SUmtjL.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/gateway/protocol/index.d.ts +6 -3
- package/dist/plugin-sdk/gateway/protocol/schema/tasks.d.ts +40 -0
- package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +3 -0
- package/dist/plugin-sdk/gateway/protocol/schema.d.ts +1 -0
- package/dist/plugin-sdk/{image-CCmNHDV0.js → image-DFyINnvE.js} +4 -4
- package/dist/plugin-sdk/{image-ops-BlQR__MN.js → image-ops-Bnp6LXEx.js} +1 -1
- package/dist/plugin-sdk/index.js +54 -54
- package/dist/plugin-sdk/infra/long-task-state.d.ts +34 -0
- 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-DUmxOoHb.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/plugin-sdk/{message-channel-COTAJzHd.js → 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-DwJ-3Et9.js} +412 -83
- 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-BzYtaV97.js} +49 -49
- package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
- package/dist/plugin-sdk/{target-errors-Paro1BjP.js → target-errors-B7YyMnIi.js} +2 -2
- package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
- package/dist/plugin-sdk/{tokens-bC3UVmVH.js → 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-BQzPfsd0.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-DTI2yj-y.js} +8 -8
- package/dist/{plugins-cli-DPetEhfv.js → plugins-cli-tV4C5XJc.js} +8 -8
- package/dist/{program-CVy9LVoS.js → program-8Zg4CY5d.js} +13 -13
- package/dist/{program-context-CBI6gIf-.js → program-context-BcKgBBit.js} +30 -30
- package/dist/{prompt-select-styled-Bv675D48.js → prompt-select-styled-CfKZlGfF.js} +8 -8
- package/dist/{prompt-select-styled-BlXl_Qf7.js → prompt-select-styled-DigPcXuk.js} +8 -8
- package/dist/{provider-auth-helpers-RUQD5XAm.js → provider-auth-helpers-BH3oyYln.js} +1 -1
- package/dist/{provider-auth-helpers-BB1lhCy5.js → provider-auth-helpers-Db02DMW2.js} +1 -1
- package/dist/{push-apns-rPetW5cI.js → push-apns-7rC1ybp8.js} +1 -1
- package/dist/{push-apns-Cr-a1KBt.js → push-apns-f_6DGP6z.js} +1 -1
- package/dist/{register.agent-DKDwNHQi.js → register.agent-CocfT8Pk.js} +12 -12
- package/dist/{register.agent-j6OlKEU-.js → register.agent-DETyFsMT.js} +11 -11
- package/dist/{register.configure-BgIXIq9d.js → register.configure-BAiFzdYa.js} +14 -14
- package/dist/{register.configure-CopgSygi.js → register.configure-VcTwHq1a.js} +14 -14
- package/dist/{register.maintenance-DjaGkVtr.js → register.maintenance-BajFgQEm.js} +13 -13
- package/dist/{register.maintenance-BKsCM6NG.js → register.maintenance-Bpr3QjJ1.js} +14 -14
- package/dist/{register.message-bxhUcSyj.js → register.message-96EL0HQW.js} +8 -8
- package/dist/{register.message-C3oHvmdl.js → register.message-CXabSYfO.js} +8 -8
- package/dist/{register.onboard-D0DHcb20.js → register.onboard-2KClPynN.js} +10 -10
- package/dist/{register.onboard-DijWH8Vd.js → register.onboard-mHEZSai5.js} +10 -10
- package/dist/{register.setup-XlCTnTm_.js → register.setup-B-piY6Vs.js} +10 -10
- package/dist/{register.setup-CrFzd94c.js → register.setup-Di6tWG-W.js} +10 -10
- package/dist/{register.status-health-sessions-AWCg_uLf.js → register.status-health-sessions-BhIYRApE.js} +10 -10
- package/dist/{register.status-health-sessions-VwvDWUxZ.js → register.status-health-sessions-ZX2odxGg.js} +10 -10
- package/dist/{register.subclis-Bw8k5Z5C.js → register.subclis-CQtXpheE.js} +20 -20
- package/dist/{reply-D7_t00Jt.js → reply-D455A6SA.js} +314 -14
- package/dist/{rpc-DYHXLh0P.js → rpc-C3ZUAjXK.js} +1 -1
- package/dist/{rpc-DdlEeEXT.js → rpc-St4eAsjR.js} +1 -1
- package/dist/{run-main-7BEaNeDG.js → run-main-CnqZnevI.js} +21 -21
- package/dist/{security-cli-BpnzAB5_.js → security-cli-B8gavsuQ.js} +4 -4
- package/dist/{security-cli-D9WEiEjD.js → security-cli-BSvxNP9m.js} +4 -4
- package/dist/{server-methods-FQ-PqiVC.js → server-methods-CYPSYbhs.js} +55 -11
- package/dist/{server-methods-CTeJHJSZ.js → server-methods-DYjr-KwQ.js} +55 -11
- package/dist/{server-node-events-Z7epDloV.js → server-node-events-C58gVs27.js} +8 -8
- package/dist/{server-node-events-BqvcHbuK.js → server-node-events-DqJIrx86.js} +8 -8
- package/dist/{status-CKROJwI2.js → status-B_zW9YJ8.js} +1 -1
- package/dist/{status-DLFbpd9v.js → status-DjjA-TOx.js} +6 -6
- package/dist/{status-DMigoL7q.js → status-Qt6QDFJ1.js} +6 -6
- package/dist/{status-x7WCSVhG.js → status-sO6Y-c-v.js} +1 -1
- package/dist/{subagent-registry-BvP8AGdE.js → subagent-registry-B1HJJs3Q.js} +314 -14
- package/dist/{synthesis-DDId6n26.js → synthesis-BCSo0xoc.js} +7 -7
- package/dist/{synthesis-E4flT91F.js → synthesis-Ch82MDG8.js} +2 -2
- package/dist/{synthesis-By7KPUAm.js → synthesis-DAUJa_9I.js} +7 -7
- package/dist/{synthesis-DgQz6kPf.js → synthesis-DzSo6S9Y.js} +2 -2
- package/dist/{system-cli-BFopJ_xI.js → system-cli-BN9MXNk7.js} +3 -3
- package/dist/{system-cli-DryauSOX.js → system-cli-CD5latLh.js} +3 -3
- package/dist/{tui-CvHbwJ3G.js → tui-Cu4TZK3I.js} +2 -2
- package/dist/{tui-BiBFm_RY.js → tui-DLkE0D7e.js} +2 -2
- package/dist/{tui-cli-CmyT9ctV.js → tui-cli-BfuEq3Q-.js} +3 -3
- package/dist/{tui-cli-CU6A8Bu2.js → tui-cli-DC9Bq-N_.js} +3 -3
- package/dist/{unified-runner-DaSb-TsZ.js → unified-runner-CpyVnelK.js} +339 -10
- package/dist/{update-cli-C5H6DkNM.js → update-cli-BLQsvLIy.js} +14 -14
- package/dist/{update-cli-D0relAZw.js → update-cli-CgDLDu8d.js} +15 -15
- package/dist/{update-runner-D99V_zHX.js → update-runner-B1vMjo7o.js} +1 -1
- package/dist/{update-runner-B_yVOk8Z.js → update-runner-DUHTdrZ0.js} +1 -1
- package/dist/{web-BQh2S6oq.js → web-Dbg9lDZ4.js} +7 -7
- package/dist/{web-Bdebat5l.js → web-Dhh_eI3q.js} +8 -8
- package/dist/{web-BBz1kF_9.js → web-DpAeT8By.js} +2 -2
- package/dist/{web-CiYoJfrl.js → web-PhjuzK8Y.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/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/dist/plugin-sdk/web-CmKqZEsX.js +0 -66
|
@@ -37,7 +37,7 @@ import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as re
|
|
|
37
37
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
|
|
38
38
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-ChC2CXaN.js";
|
|
39
39
|
import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-tzIqIuKx.js";
|
|
40
|
-
import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-
|
|
40
|
+
import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-B76ofKkW.js";
|
|
41
41
|
import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-479FB0St.js";
|
|
42
42
|
import { n as retryAsync } from "./retry-QGp0jvVi.js";
|
|
43
43
|
import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-Dm716SF3.js";
|
|
@@ -3473,7 +3473,7 @@ async function getMemorySearchManager(params) {
|
|
|
3473
3473
|
const wrapper = new FallbackMemoryManager({
|
|
3474
3474
|
primary,
|
|
3475
3475
|
fallbackFactory: async () => {
|
|
3476
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
3476
|
+
const { MemoryIndexManager } = await import("./manager-B76ofKkW.js").then((n) => n.n);
|
|
3477
3477
|
return await MemoryIndexManager.get(params);
|
|
3478
3478
|
}
|
|
3479
3479
|
}, () => QMD_MANAGER_CACHE.delete(cacheKey));
|
|
@@ -3486,7 +3486,7 @@ async function getMemorySearchManager(params) {
|
|
|
3486
3486
|
}
|
|
3487
3487
|
}
|
|
3488
3488
|
try {
|
|
3489
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
3489
|
+
const { MemoryIndexManager } = await import("./manager-B76ofKkW.js").then((n) => n.n);
|
|
3490
3490
|
return { manager: await MemoryIndexManager.get(params) };
|
|
3491
3491
|
} catch (err) {
|
|
3492
3492
|
return {
|
|
@@ -5608,6 +5608,31 @@ const SessionsUsageParamsSchema = Type.Object({
|
|
|
5608
5608
|
includeContextWeight: Type.Optional(Type.Boolean())
|
|
5609
5609
|
}, { additionalProperties: false });
|
|
5610
5610
|
|
|
5611
|
+
//#endregion
|
|
5612
|
+
//#region src/gateway/protocol/schema/tasks.ts
|
|
5613
|
+
/**
|
|
5614
|
+
* tasks.list — enumerates long-running detached tasks across configured
|
|
5615
|
+
* agent workspaces. Optional `workdir` override scans a single absolute
|
|
5616
|
+
* directory instead.
|
|
5617
|
+
*/
|
|
5618
|
+
const TasksListParamsSchema = Type.Object({ workdir: Type.Optional(Type.String()) }, { additionalProperties: false });
|
|
5619
|
+
const TaskInfoSchema = Type.Object({
|
|
5620
|
+
id: Type.String(),
|
|
5621
|
+
agentId: Type.Optional(Type.String()),
|
|
5622
|
+
workdir: Type.String(),
|
|
5623
|
+
pid: Type.Union([Type.Integer(), Type.Null()]),
|
|
5624
|
+
alive: Type.Boolean(),
|
|
5625
|
+
archived: Type.Boolean(),
|
|
5626
|
+
status: Type.String(),
|
|
5627
|
+
started: Type.Union([Type.String(), Type.Null()]),
|
|
5628
|
+
cmd: Type.Union([Type.String(), Type.Null()]),
|
|
5629
|
+
pidPath: Type.String(),
|
|
5630
|
+
statusPath: Type.String(),
|
|
5631
|
+
archivedPath: Type.String(),
|
|
5632
|
+
logPath: Type.String()
|
|
5633
|
+
}, { additionalProperties: false });
|
|
5634
|
+
const TasksListResultSchema = Type.Object({ tasks: Type.Array(TaskInfoSchema) }, { additionalProperties: false });
|
|
5635
|
+
|
|
5611
5636
|
//#endregion
|
|
5612
5637
|
//#region src/gateway/protocol/schema/wizard.ts
|
|
5613
5638
|
const WizardRunStatusSchema = Type.Union([
|
|
@@ -5693,6 +5718,7 @@ const validateAgentIdentityParams = ajv.compile(AgentIdentityParamsSchema);
|
|
|
5693
5718
|
const validateAgentWaitParams = ajv.compile(AgentWaitParamsSchema);
|
|
5694
5719
|
const validateWakeParams = ajv.compile(WakeParamsSchema);
|
|
5695
5720
|
const validateAgentsListParams = ajv.compile(AgentsListParamsSchema);
|
|
5721
|
+
const validateTasksListParams = ajv.compile(TasksListParamsSchema);
|
|
5696
5722
|
const validateAgentsCreateParams = ajv.compile(AgentsCreateParamsSchema);
|
|
5697
5723
|
const validateAgentsUpdateParams = ajv.compile(AgentsUpdateParamsSchema);
|
|
5698
5724
|
const validateAgentsDeleteParams = ajv.compile(AgentsDeleteParamsSchema);
|
|
@@ -6115,6 +6141,7 @@ const METHOD_SCOPE_GROUPS = {
|
|
|
6115
6141
|
"cron.list",
|
|
6116
6142
|
"cron.status",
|
|
6117
6143
|
"cron.runs",
|
|
6144
|
+
"tasks.list",
|
|
6118
6145
|
"system-presence",
|
|
6119
6146
|
"last-heartbeat",
|
|
6120
6147
|
"node.list",
|
|
@@ -17618,7 +17645,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
17618
17645
|
};
|
|
17619
17646
|
}
|
|
17620
17647
|
}
|
|
17621
|
-
function resolveWorkdir(workdir, warnings) {
|
|
17648
|
+
function resolveWorkdir$1(workdir, warnings) {
|
|
17622
17649
|
const fallback = safeCwd() ?? homedir();
|
|
17623
17650
|
try {
|
|
17624
17651
|
if (statSync(workdir).isDirectory()) return workdir;
|
|
@@ -18760,7 +18787,7 @@ function createExecTool(defaults) {
|
|
|
18760
18787
|
});
|
|
18761
18788
|
workdir = resolved.hostWorkdir;
|
|
18762
18789
|
containerWorkdir = resolved.containerWorkdir;
|
|
18763
|
-
} else workdir = resolveWorkdir(rawWorkdir, warnings);
|
|
18790
|
+
} else workdir = resolveWorkdir$1(rawWorkdir, warnings);
|
|
18764
18791
|
const baseEnv = coerceEnv(process.env);
|
|
18765
18792
|
if (host !== "sandbox" && params.env) validateHostEnv(params.env);
|
|
18766
18793
|
const mergedEnv = params.env ? {
|
|
@@ -36661,6 +36688,301 @@ function createSubagentsTool(opts) {
|
|
|
36661
36688
|
};
|
|
36662
36689
|
}
|
|
36663
36690
|
|
|
36691
|
+
//#endregion
|
|
36692
|
+
//#region src/infra/long-task-state.ts
|
|
36693
|
+
/**
|
|
36694
|
+
* Shared helpers for reading the on-disk state files written by
|
|
36695
|
+
* skills/long-task/scripts/detach-task.sh:
|
|
36696
|
+
*
|
|
36697
|
+
* task-<id>.pid — PID of the detached process
|
|
36698
|
+
* task-<id>.cmd — literal command line
|
|
36699
|
+
* task-<id>.started — ISO-8601 start timestamp
|
|
36700
|
+
* task-<id>.log — combined stdout + stderr
|
|
36701
|
+
* task-<id>.status — current state line
|
|
36702
|
+
* task-<id>.archived — tombstone written by the janitor when it sweeps
|
|
36703
|
+
* a finished task more than 7 days old
|
|
36704
|
+
*
|
|
36705
|
+
* Both the agent-facing tools (task_list / task_cancel) and the gateway's
|
|
36706
|
+
* tasks.list RPC consume this helper so the two views stay in sync.
|
|
36707
|
+
*/
|
|
36708
|
+
const TASK_FILE_PREFIX = "task-";
|
|
36709
|
+
const TASK_ID_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
|
|
36710
|
+
const TASK_FILE_SUFFIXES = [
|
|
36711
|
+
".pid",
|
|
36712
|
+
".status",
|
|
36713
|
+
".started",
|
|
36714
|
+
".cmd",
|
|
36715
|
+
".log",
|
|
36716
|
+
".archived"
|
|
36717
|
+
];
|
|
36718
|
+
function defaultIsPidAlive(pid) {
|
|
36719
|
+
try {
|
|
36720
|
+
process.kill(pid, 0);
|
|
36721
|
+
return true;
|
|
36722
|
+
} catch (err) {
|
|
36723
|
+
if (err.code === "EPERM") return true;
|
|
36724
|
+
return false;
|
|
36725
|
+
}
|
|
36726
|
+
}
|
|
36727
|
+
async function safeRead(filePath) {
|
|
36728
|
+
try {
|
|
36729
|
+
return (await fs.promises.readFile(filePath, "utf8")).trim();
|
|
36730
|
+
} catch {
|
|
36731
|
+
return null;
|
|
36732
|
+
}
|
|
36733
|
+
}
|
|
36734
|
+
async function readTaskInfo(workdir, id, isPidAlive = defaultIsPidAlive) {
|
|
36735
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.pid`);
|
|
36736
|
+
const statusPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`);
|
|
36737
|
+
const archivedPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.archived`);
|
|
36738
|
+
const logPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.log`);
|
|
36739
|
+
const [pidText, status, started, cmd, archived] = await Promise.all([
|
|
36740
|
+
safeRead(pidPath),
|
|
36741
|
+
safeRead(statusPath),
|
|
36742
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.started`)),
|
|
36743
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.cmd`)),
|
|
36744
|
+
safeRead(archivedPath)
|
|
36745
|
+
]);
|
|
36746
|
+
let pid = null;
|
|
36747
|
+
if (pidText) {
|
|
36748
|
+
const parsed = Number.parseInt(pidText, 10);
|
|
36749
|
+
if (Number.isFinite(parsed) && parsed > 0) pid = parsed;
|
|
36750
|
+
}
|
|
36751
|
+
let resolvedStatus;
|
|
36752
|
+
if (status) resolvedStatus = status;
|
|
36753
|
+
else if (archived) resolvedStatus = archived;
|
|
36754
|
+
else resolvedStatus = "missing";
|
|
36755
|
+
return {
|
|
36756
|
+
id,
|
|
36757
|
+
pid,
|
|
36758
|
+
alive: pid !== null && isPidAlive(pid),
|
|
36759
|
+
archived: archived !== null,
|
|
36760
|
+
status: resolvedStatus,
|
|
36761
|
+
started,
|
|
36762
|
+
cmd,
|
|
36763
|
+
pidPath,
|
|
36764
|
+
statusPath,
|
|
36765
|
+
archivedPath,
|
|
36766
|
+
logPath
|
|
36767
|
+
};
|
|
36768
|
+
}
|
|
36769
|
+
async function listTasksInWorkdir(workdir, isPidAlive = defaultIsPidAlive) {
|
|
36770
|
+
let entries;
|
|
36771
|
+
try {
|
|
36772
|
+
entries = await fs.promises.readdir(workdir);
|
|
36773
|
+
} catch {
|
|
36774
|
+
return [];
|
|
36775
|
+
}
|
|
36776
|
+
const taskIds = /* @__PURE__ */ new Set();
|
|
36777
|
+
for (const entry of entries) {
|
|
36778
|
+
if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
|
|
36779
|
+
for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
|
|
36780
|
+
const id = entry.slice(5, -suffix.length);
|
|
36781
|
+
if (id.length > 0 && TASK_ID_RE.test(id)) taskIds.add(id);
|
|
36782
|
+
break;
|
|
36783
|
+
}
|
|
36784
|
+
}
|
|
36785
|
+
return await Promise.all([...taskIds].toSorted().map((id) => readTaskInfo(workdir, id, isPidAlive)));
|
|
36786
|
+
}
|
|
36787
|
+
|
|
36788
|
+
//#endregion
|
|
36789
|
+
//#region src/agents/tools/task-tool.ts
|
|
36790
|
+
/**
|
|
36791
|
+
* Long-task management tools (task_list, task_cancel).
|
|
36792
|
+
*
|
|
36793
|
+
* Companions to the detach-task pattern in skills/long-task. The detach
|
|
36794
|
+
* script writes task-<id>.{pid,cmd,started,log,status} state files into
|
|
36795
|
+
* the agent's workspace; these tools read and act on those files so the
|
|
36796
|
+
* agent can answer "what's running?" and kill a task without needing
|
|
36797
|
+
* shell access. Shared scanning logic lives in
|
|
36798
|
+
* src/infra/long-task-state.ts so the gateway's tasks.list RPC and these
|
|
36799
|
+
* agent tools agree on every shape detail.
|
|
36800
|
+
*
|
|
36801
|
+
* task-id allow-list mirrors detach-task.sh: 1–60 chars from
|
|
36802
|
+
* [a-zA-Z0-9._-], must not start with '.' or '-'. Diverging would let the
|
|
36803
|
+
* agent kill processes it never spawned via path traversal.
|
|
36804
|
+
*/
|
|
36805
|
+
const ALLOWED_SIGNALS = new Set([
|
|
36806
|
+
"SIGTERM",
|
|
36807
|
+
"SIGINT",
|
|
36808
|
+
"SIGHUP",
|
|
36809
|
+
"SIGQUIT",
|
|
36810
|
+
"SIGKILL",
|
|
36811
|
+
"SIGUSR1",
|
|
36812
|
+
"SIGUSR2"
|
|
36813
|
+
]);
|
|
36814
|
+
const TaskListSchema = Type.Object({ workdir: Type.Optional(Type.String()) });
|
|
36815
|
+
const TaskCancelSchema = Type.Object({
|
|
36816
|
+
taskId: Type.String(),
|
|
36817
|
+
workdir: Type.Optional(Type.String()),
|
|
36818
|
+
signal: Type.Optional(Type.String())
|
|
36819
|
+
});
|
|
36820
|
+
function normaliseSignal(input) {
|
|
36821
|
+
if (!input) return "SIGTERM";
|
|
36822
|
+
const upper = input.trim().toUpperCase();
|
|
36823
|
+
const candidate = upper.startsWith("SIG") ? upper : `SIG${upper}`;
|
|
36824
|
+
if (ALLOWED_SIGNALS.has(candidate)) return candidate;
|
|
36825
|
+
throw new Error(`Unsupported signal: ${input}. Allowed: TERM, INT, HUP, QUIT, KILL, USR1, USR2.`);
|
|
36826
|
+
}
|
|
36827
|
+
function isPidAlive(pid) {
|
|
36828
|
+
try {
|
|
36829
|
+
process.kill(pid, 0);
|
|
36830
|
+
return true;
|
|
36831
|
+
} catch (err) {
|
|
36832
|
+
if (err.code === "EPERM") return true;
|
|
36833
|
+
return false;
|
|
36834
|
+
}
|
|
36835
|
+
}
|
|
36836
|
+
function resolveWorkdir(deps, override) {
|
|
36837
|
+
const raw = override?.trim();
|
|
36838
|
+
if (!raw) return deps.workspaceDir;
|
|
36839
|
+
if (!path.isAbsolute(raw)) throw new Error(`workdir must be an absolute path (got: ${raw})`);
|
|
36840
|
+
return raw;
|
|
36841
|
+
}
|
|
36842
|
+
function createTaskListTool(deps) {
|
|
36843
|
+
return {
|
|
36844
|
+
label: "Task List",
|
|
36845
|
+
name: "task_list",
|
|
36846
|
+
description: `List long-running detached tasks in the agent's workspace.
|
|
36847
|
+
|
|
36848
|
+
Globs task-<id>.{pid,status,started,cmd,log,archived} files, reads their
|
|
36849
|
+
state, and checks each PID's liveness. Use this to find the task-id of a
|
|
36850
|
+
running detach-task before calling task_cancel, or to answer "what's
|
|
36851
|
+
running right now?" without re-asking the user.
|
|
36852
|
+
|
|
36853
|
+
Returns: { workdir, tasks: [{ id, pid, alive, status, archived, started, cmd, pidPath, statusPath, archivedPath, logPath }] }.
|
|
36854
|
+
- archived=true means the janitor swept this task's live state files (>7d
|
|
36855
|
+
dead) and replaced them with a tombstone. The canonical end status is
|
|
36856
|
+
preserved in the .archived file. Distinct from "missing" (no tombstone,
|
|
36857
|
+
no live files) which means the task crashed or its workdir was wiped.
|
|
36858
|
+
- Tasks whose .pid file is missing are still listed (alive=false, pid=null)
|
|
36859
|
+
so the agent can spot orphan state files.`,
|
|
36860
|
+
parameters: TaskListSchema,
|
|
36861
|
+
execute: async (_toolCallId, args) => {
|
|
36862
|
+
const override = readStringParam(args, "workdir");
|
|
36863
|
+
let workdir;
|
|
36864
|
+
try {
|
|
36865
|
+
workdir = resolveWorkdir(deps, override);
|
|
36866
|
+
} catch (err) {
|
|
36867
|
+
return jsonResult({
|
|
36868
|
+
workdir: override ?? deps.workspaceDir,
|
|
36869
|
+
tasks: [],
|
|
36870
|
+
error: err instanceof Error ? err.message : String(err)
|
|
36871
|
+
});
|
|
36872
|
+
}
|
|
36873
|
+
try {
|
|
36874
|
+
const tasks = await listTasksInWorkdir(workdir, isPidAlive);
|
|
36875
|
+
return jsonResult({
|
|
36876
|
+
workdir,
|
|
36877
|
+
tasks
|
|
36878
|
+
});
|
|
36879
|
+
} catch (err) {
|
|
36880
|
+
return jsonResult({
|
|
36881
|
+
workdir,
|
|
36882
|
+
tasks: [],
|
|
36883
|
+
error: err instanceof Error ? err.message : String(err)
|
|
36884
|
+
});
|
|
36885
|
+
}
|
|
36886
|
+
}
|
|
36887
|
+
};
|
|
36888
|
+
}
|
|
36889
|
+
function createTaskCancelTool(deps) {
|
|
36890
|
+
return {
|
|
36891
|
+
label: "Task Cancel",
|
|
36892
|
+
name: "task_cancel",
|
|
36893
|
+
description: `Send a signal (default SIGTERM) to a running detached task.
|
|
36894
|
+
|
|
36895
|
+
Reads task-<id>.pid in the workdir, validates the recorded PID is alive,
|
|
36896
|
+
and sends the signal via process.kill. The task's TERM/INT/HUP trap will
|
|
36897
|
+
write an "aborted" status before exiting, so a follow-up task_list call
|
|
36898
|
+
sees the canonical end state.
|
|
36899
|
+
|
|
36900
|
+
task-id must match the same allow-list as detach-task.sh: 1–60 chars from
|
|
36901
|
+
[a-zA-Z0-9._-], no leading '.' or '-'. signal accepts TERM (default), INT,
|
|
36902
|
+
HUP, QUIT, KILL, USR1, USR2 — with or without the "SIG" prefix.
|
|
36903
|
+
|
|
36904
|
+
Returns: { ok, taskId, pid, sentSignal, alreadyDead?, error? }.`,
|
|
36905
|
+
parameters: TaskCancelSchema,
|
|
36906
|
+
execute: async (_toolCallId, args) => {
|
|
36907
|
+
const params = args;
|
|
36908
|
+
const taskId = readStringParam(params, "taskId", { required: true });
|
|
36909
|
+
if (!TASK_ID_RE.test(taskId)) return jsonResult({
|
|
36910
|
+
ok: false,
|
|
36911
|
+
taskId,
|
|
36912
|
+
error: "taskId must be 1–60 chars from [a-zA-Z0-9._-] and must not start with '.' or '-'."
|
|
36913
|
+
});
|
|
36914
|
+
const override = readStringParam(params, "workdir");
|
|
36915
|
+
let workdir;
|
|
36916
|
+
try {
|
|
36917
|
+
workdir = resolveWorkdir(deps, override);
|
|
36918
|
+
} catch (err) {
|
|
36919
|
+
return jsonResult({
|
|
36920
|
+
ok: false,
|
|
36921
|
+
taskId,
|
|
36922
|
+
error: err instanceof Error ? err.message : String(err)
|
|
36923
|
+
});
|
|
36924
|
+
}
|
|
36925
|
+
const signalRaw = readStringParam(params, "signal");
|
|
36926
|
+
let signal;
|
|
36927
|
+
try {
|
|
36928
|
+
signal = normaliseSignal(signalRaw);
|
|
36929
|
+
} catch (err) {
|
|
36930
|
+
return jsonResult({
|
|
36931
|
+
ok: false,
|
|
36932
|
+
taskId,
|
|
36933
|
+
error: err instanceof Error ? err.message : String(err)
|
|
36934
|
+
});
|
|
36935
|
+
}
|
|
36936
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
|
|
36937
|
+
let pidText;
|
|
36938
|
+
try {
|
|
36939
|
+
pidText = (await fs.promises.readFile(pidPath, "utf8")).trim();
|
|
36940
|
+
} catch (err) {
|
|
36941
|
+
if (err.code === "ENOENT") return jsonResult({
|
|
36942
|
+
ok: false,
|
|
36943
|
+
taskId,
|
|
36944
|
+
error: `no pid file at ${pidPath} — task is unknown or already cleaned up`
|
|
36945
|
+
});
|
|
36946
|
+
return jsonResult({
|
|
36947
|
+
ok: false,
|
|
36948
|
+
taskId,
|
|
36949
|
+
error: err instanceof Error ? err.message : String(err)
|
|
36950
|
+
});
|
|
36951
|
+
}
|
|
36952
|
+
const pid = Number.parseInt(pidText, 10);
|
|
36953
|
+
if (!Number.isFinite(pid) || pid <= 0) return jsonResult({
|
|
36954
|
+
ok: false,
|
|
36955
|
+
taskId,
|
|
36956
|
+
error: `pid file at ${pidPath} did not contain a positive integer`
|
|
36957
|
+
});
|
|
36958
|
+
if (!isPidAlive(pid)) return jsonResult({
|
|
36959
|
+
ok: false,
|
|
36960
|
+
taskId,
|
|
36961
|
+
pid,
|
|
36962
|
+
alreadyDead: true,
|
|
36963
|
+
error: "process is no longer running"
|
|
36964
|
+
});
|
|
36965
|
+
try {
|
|
36966
|
+
process.kill(pid, signal);
|
|
36967
|
+
} catch (err) {
|
|
36968
|
+
return jsonResult({
|
|
36969
|
+
ok: false,
|
|
36970
|
+
taskId,
|
|
36971
|
+
pid,
|
|
36972
|
+
sentSignal: signal,
|
|
36973
|
+
error: err instanceof Error ? err.message : String(err)
|
|
36974
|
+
});
|
|
36975
|
+
}
|
|
36976
|
+
return jsonResult({
|
|
36977
|
+
ok: true,
|
|
36978
|
+
taskId,
|
|
36979
|
+
pid,
|
|
36980
|
+
sentSignal: signal
|
|
36981
|
+
});
|
|
36982
|
+
}
|
|
36983
|
+
};
|
|
36984
|
+
}
|
|
36985
|
+
|
|
36664
36986
|
//#endregion
|
|
36665
36987
|
//#region src/agents/tools/tts-tool.ts
|
|
36666
36988
|
const TtsToolSchema = Type.Object({
|
|
@@ -37961,6 +38283,8 @@ function createSymiTools(options) {
|
|
|
37961
38283
|
config: options?.config
|
|
37962
38284
|
}),
|
|
37963
38285
|
createCronTool({ agentSessionKey: options?.agentSessionKey }),
|
|
38286
|
+
createTaskListTool({ workspaceDir }),
|
|
38287
|
+
createTaskCancelTool({ workspaceDir }),
|
|
37964
38288
|
...messageTool ? [messageTool] : [],
|
|
37965
38289
|
createTtsTool({
|
|
37966
38290
|
agentChannel: options?.agentChannel,
|
|
@@ -45761,6 +46085,7 @@ async function resolveDetachScriptPath(params) {
|
|
|
45761
46085
|
return cachedScriptPath;
|
|
45762
46086
|
}
|
|
45763
46087
|
async function buildLongTaskPromptSuffix(params) {
|
|
46088
|
+
if (params.cronEnabled === false) return "";
|
|
45764
46089
|
const scriptPath = await resolveDetachScriptPath(params);
|
|
45765
46090
|
if (!scriptPath) return "";
|
|
45766
46091
|
return "\n\n" + [
|
|
@@ -45775,12 +46100,13 @@ async function buildLongTaskPromptSuffix(params) {
|
|
|
45775
46100
|
"- Register a cron monitor via the `cron` tool's `add` action. Use the schema documented in that tool's own description for the exact field names — do NOT guess. The monitor should fire roughly every 3 minutes as an isolated agentTurn job, and its message must literally contain the task-id, PID, log path, and status path so the future turn has enough context without re-deriving them.",
|
|
45776
46101
|
"- Safe status read (inside the monitor turn):",
|
|
45777
46102
|
" `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
|
|
45778
|
-
" Possible values: `running pid=<N> started=<ISO>`, `complete rc=<N> ended=<ISO>`, `aborted rc=<N> signal=<TERM|INT|HUP> ended=<ISO>`, or `missing`
|
|
46103
|
+
" Possible values: `running pid=<N> started=<ISO>`, `complete rc=<N> ended=<ISO>`, `aborted rc=<N> signal=<TERM|INT|HUP> ended=<ISO>`, `archived swept-from=… at=<ISO>` if the janitor archived an old finished task, or `missing` only when neither `.status` nor `.archived` exists (task crashed or workdir was wiped).",
|
|
45779
46104
|
"- Monitor responsibilities each tick:",
|
|
45780
46105
|
" • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
|
|
45781
46106
|
" • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
|
|
45782
46107
|
" • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
|
|
45783
|
-
" • Never leave stale monitors running after the task finishes."
|
|
46108
|
+
" • Never leave stale monitors running after the task finishes.",
|
|
46109
|
+
"- 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."
|
|
45784
46110
|
].join("\n");
|
|
45785
46111
|
}
|
|
45786
46112
|
|
|
@@ -46838,7 +47164,8 @@ async function runEmbeddedAttempt(params) {
|
|
|
46838
47164
|
const longTaskSuffix = await buildLongTaskPromptSuffix({
|
|
46839
47165
|
argv1: process.argv[1],
|
|
46840
47166
|
cwd: process.cwd(),
|
|
46841
|
-
moduleUrl: import.meta.url
|
|
47167
|
+
moduleUrl: import.meta.url,
|
|
47168
|
+
cronEnabled: process.env.SYMI_SKIP_CRON !== "1" && params.config?.cron?.enabled !== false
|
|
46842
47169
|
});
|
|
46843
47170
|
const emailCapabilitySuffix = buildEmailCapabilityPromptSuffix();
|
|
46844
47171
|
const systemPromptText = createSystemPromptOverride(appendPrompt + longTaskSuffix + emailCapabilitySuffix + profilePromptSuffix)();
|
|
@@ -61263,7 +61590,7 @@ function isVoiceChannelType(type) {
|
|
|
61263
61590
|
function createDefaultDeps() {
|
|
61264
61591
|
return {
|
|
61265
61592
|
sendMessageWhatsApp: async (...args) => {
|
|
61266
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
61593
|
+
const { sendMessageWhatsApp } = await import("./web-PhjuzK8Y.js");
|
|
61267
61594
|
return await sendMessageWhatsApp(...args);
|
|
61268
61595
|
},
|
|
61269
61596
|
sendMessageTelegram: async (...args) => {
|
|
@@ -76543,7 +76870,7 @@ function loadWebLoginQr() {
|
|
|
76543
76870
|
return webLoginQrPromise;
|
|
76544
76871
|
}
|
|
76545
76872
|
function loadWebChannel() {
|
|
76546
|
-
webChannelPromise ??= import("./web-
|
|
76873
|
+
webChannelPromise ??= import("./web-PhjuzK8Y.js");
|
|
76547
76874
|
return webChannelPromise;
|
|
76548
76875
|
}
|
|
76549
76876
|
function loadWhatsAppActions() {
|
|
@@ -77853,6 +78180,8 @@ const SUBAGENT_TOOL_DENY_ALWAYS = [
|
|
|
77853
78180
|
"whatsapp_login",
|
|
77854
78181
|
"session_status",
|
|
77855
78182
|
"cron",
|
|
78183
|
+
"task_list",
|
|
78184
|
+
"task_cancel",
|
|
77856
78185
|
"memory_search",
|
|
77857
78186
|
"memory_get",
|
|
77858
78187
|
"memory_pin",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import {
|
|
2
|
+
import { pt as loadSymiPlugins } from "./reply-D455A6SA.js";
|
|
3
3
|
import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
5
5
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
|
|
3
3
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
|
|
4
4
|
import { i as loadConfig } from "./config-DXt3pc08.js";
|
|
5
|
-
import { m as loadSymiPlugins } from "./subagent-registry-
|
|
5
|
+
import { m as loadSymiPlugins } from "./subagent-registry-B1HJJs3Q.js";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/plugin-registry.ts
|
|
8
8
|
var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
|
-
import { _ as createAccountListHelpers } from "./accounts-
|
|
2
|
+
import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
|
|
3
3
|
|
|
4
4
|
//#region src/signal/accounts.ts
|
|
5
5
|
const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { a as resolveOAuthDir } from "./paths-DR2yt_mP.js";
|
|
3
|
-
import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry
|
|
4
|
-
import { i as defaultRuntime } from "./subsystem-
|
|
5
|
-
import { t as formatCliCommand } from "./command-format-
|
|
3
|
+
import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry--_pGht6S.js";
|
|
4
|
+
import { i as defaultRuntime } from "./subsystem-Coz2AgU8.js";
|
|
5
|
+
import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
|
|
6
6
|
import fs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import fs$1 from "node:fs/promises";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
|
-
import { _ as createAccountListHelpers } from "./accounts-
|
|
2
|
+
import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
|
|
3
3
|
|
|
4
4
|
//#region src/imessage/accounts.ts
|
|
5
5
|
const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { f as DEFAULT_ACCOUNT_ID } from "./session-key-C_0eELjb.js";
|
|
2
|
-
import { t as formatCliCommand } from "./command-format-
|
|
2
|
+
import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
|
|
3
3
|
|
|
4
4
|
//#region src/web/active-listener.ts
|
|
5
5
|
const listeners = /* @__PURE__ */ new Map();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ as isCronSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-DR2yt_mP.js";
|
|
3
|
-
import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry
|
|
4
|
-
import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-
|
|
3
|
+
import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry--_pGht6S.js";
|
|
4
|
+
import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import os from "node:os";
|
|
@@ -2,4 +2,11 @@ export declare function buildLongTaskPromptSuffix(params: {
|
|
|
2
2
|
argv1?: string;
|
|
3
3
|
cwd?: string;
|
|
4
4
|
moduleUrl?: string;
|
|
5
|
+
/**
|
|
6
|
+
* Whether the gateway's cron service is running. The pattern's monitor
|
|
7
|
+
* step requires `cron` tool's `add` action; without cron, the prompt is
|
|
8
|
+
* misleading (the agent would detach a task with no follow-up path).
|
|
9
|
+
* Mirror src/gateway/server-cron.ts:75 — caller passes the same boolean.
|
|
10
|
+
*/
|
|
11
|
+
cronEnabled?: boolean;
|
|
5
12
|
}): Promise<string>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AnyAgentTool } from "./common.js";
|
|
2
|
+
export type TaskToolDeps = {
|
|
3
|
+
/** Default workdir to scan when the model doesn't pass one. */
|
|
4
|
+
workspaceDir: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function createTaskListTool(deps: TaskToolDeps): AnyAgentTool;
|
|
7
|
+
export declare function createTaskCancelTool(deps: TaskToolDeps): AnyAgentTool;
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import "./accounts-
|
|
1
|
+
import "./accounts-D9zGZU5t.js";
|
|
2
2
|
import "./paths-DR2yt_mP.js";
|
|
3
3
|
import "./github-copilot-token-D9X2phUj.js";
|
|
4
|
-
import "./plugins-
|
|
5
|
-
import { K as logVerbose, Y as shouldLogVerbose } from "./registry
|
|
6
|
-
import "./config-
|
|
7
|
-
import "./subsystem-
|
|
8
|
-
import "./command-format-
|
|
9
|
-
import "./model-selection-
|
|
10
|
-
import "./agent-scope-
|
|
11
|
-
import "./manifest-registry-
|
|
4
|
+
import "./plugins-BbAvhC25.js";
|
|
5
|
+
import { K as logVerbose, Y as shouldLogVerbose } from "./registry--_pGht6S.js";
|
|
6
|
+
import "./config-BzupW6LN.js";
|
|
7
|
+
import "./subsystem-Coz2AgU8.js";
|
|
8
|
+
import "./command-format-DSdvQ_M5.js";
|
|
9
|
+
import "./model-selection-CtVwtb6y.js";
|
|
10
|
+
import "./agent-scope-C3gMMKCU.js";
|
|
11
|
+
import "./manifest-registry-hy3Bn-r9.js";
|
|
12
12
|
import "./redact-DPnDWsnT.js";
|
|
13
13
|
import "./errors-Bv8oZiTO.js";
|
|
14
|
-
import "./image-ops-
|
|
14
|
+
import "./image-ops-Bnp6LXEx.js";
|
|
15
15
|
import "./ssrf-DKZ8eBrk.js";
|
|
16
|
-
import "./local-roots-
|
|
17
|
-
import "./message-channel-
|
|
18
|
-
import "./bindings-
|
|
19
|
-
import "./tool-images-
|
|
20
|
-
import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-
|
|
21
|
-
import "./skills-
|
|
22
|
-
import "./chrome-
|
|
23
|
-
import "./thinking-
|
|
24
|
-
import "./accounts-
|
|
25
|
-
import "./accounts-
|
|
26
|
-
import "./pi-embedded-helpers-
|
|
16
|
+
import "./local-roots-Ckk1QfzI.js";
|
|
17
|
+
import "./message-channel-BdI5Ra9S.js";
|
|
18
|
+
import "./bindings-BbwoUGPx.js";
|
|
19
|
+
import "./tool-images-D7Lno-TE.js";
|
|
20
|
+
import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-BhifC1J_.js";
|
|
21
|
+
import "./skills-C9DbB-Kp.js";
|
|
22
|
+
import "./chrome-D9kN9org.js";
|
|
23
|
+
import "./thinking-DCNUIAHY.js";
|
|
24
|
+
import "./accounts-Dtszw3Zn.js";
|
|
25
|
+
import "./accounts-BToL3HlP.js";
|
|
26
|
+
import "./pi-embedded-helpers-BL7ZRhGv.js";
|
|
27
27
|
import "./paths-A0xdf3yk.js";
|
|
28
|
-
import "./store-
|
|
29
|
-
import "./image-
|
|
28
|
+
import "./store-Do3t33-c.js";
|
|
29
|
+
import "./image-DFyINnvE.js";
|
|
30
30
|
import "./pi-model-discovery-LbcEa65a.js";
|
|
31
|
-
import "./api-key-rotation-
|
|
31
|
+
import "./api-key-rotation-CBsLb_4V.js";
|
|
32
32
|
|
|
33
33
|
//#region src/media-understanding/audio-preflight.ts
|
|
34
34
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { p as normalizeAccountId, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
|
|
2
|
-
import { s as normalizeChatChannelId } from "./registry
|
|
3
|
-
import { c as resolveDefaultAgentId } from "./agent-scope-
|
|
2
|
+
import { s as normalizeChatChannelId } from "./registry--_pGht6S.js";
|
|
3
|
+
import { c as resolveDefaultAgentId } from "./agent-scope-C3gMMKCU.js";
|
|
4
4
|
|
|
5
5
|
//#region src/routing/bindings.ts
|
|
6
6
|
function normalizeBindingChannelId(raw) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as retryAsync, t as resolveRetryConfig } from "./retry-
|
|
1
|
+
import { n as retryAsync, t as resolveRetryConfig } from "./retry-ilSJqnz9.js";
|
|
2
2
|
import { n as formatErrorMessage } from "./errors-Bv8oZiTO.js";
|
|
3
3
|
import { RateLimitError } from "@buape/carbon";
|
|
4
4
|
|