@symerian/symi 2.8.12 → 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-OAonMxYV.js → agents-DlAvDWxz.js} +4 -4
- package/dist/{agents.config-BIhaDwT2.js → agents.config-BKKMbeeE.js} +1 -1
- package/dist/{agents.config-DGu_K5xz.js → agents.config-Dd-11klq.js} +1 -1
- 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-BvPX7B4c.js → auth-choice-C6woT6k2.js} +1 -1
- package/dist/{auth-choice-DDzWns1k.js → auth-choice-CRQRPwQt.js} +1 -1
- package/dist/{auth-profiles-C2vj6htZ.js → auth-profiles-BzB_Exeq.js} +17 -17
- package/dist/{banner-BFdiq-O5.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-DTqUB0OP.js → channel-options-D8q9En4T.js} +1 -1
- package/dist/{channel-options-tfnOGSNF.js → channel-options-DYy2sCfN.js} +1 -1
- package/dist/{channel-web-CcUXobcu.js → channel-web-CRBU4eZk.js} +1 -1
- package/dist/{channels-cli-CmShA-wJ.js → channels-cli-BUk43hHR.js} +7 -7
- package/dist/{channels-cli-BcE5tHIr.js → channels-cli-Dk3kUw9A.js} +7 -7
- package/dist/{chrome-ROtrXlNs.js → chrome-DwXnykXR.js} +14 -14
- package/dist/{chunk-BRe1o4Af.js → chunk-BcxcL1U3.js} +1 -1
- package/dist/{cli-BxoD2wzk.js → cli-5gWsnsB7.js} +4 -4
- package/dist/{cli-CKG2iAr3.js → cli-DjZzJy3t.js} +4 -4
- package/dist/{command-registry-D1Le-Fmh.js → command-registry-LjFltTU9.js} +10 -10
- package/dist/{commands-registry-DxbSTLNQ.js → commands-registry-ByGkL6hs.js} +4 -4
- package/dist/{completion-cli-DgiFjSGS.js → completion-cli-BVTGy8th.js} +1 -1
- package/dist/{completion-cli-D9pC-ttw.js → completion-cli-Cf6fYZWL.js} +2 -2
- package/dist/{config-BkZ9HOKT.js → config-C4WnAd-c.js} +17 -17
- package/dist/{config-cli-C_uZQsTl.js → config-cli-C7DIbGxx.js} +1 -1
- package/dist/{config-cli-5mFA0UDP.js → config-cli-EgWrCemi.js} +1 -1
- package/dist/{configure-BJcy7wXm.js → configure-B67uIawm.js} +3 -3
- package/dist/{configure-DuRTFCuW.js → configure-Bk-snuxh.js} +3 -3
- package/dist/{consolidate-07QMweFF.js → consolidate-DRtVvG2U.js} +4 -4
- package/dist/{deliver-B0OUq6RP.js → deliver-SLYAWE19.js} +20 -20
- package/dist/{diagnostic-BUcR3Meg.js → diagnostic-DTkZsRNM.js} +1 -1
- package/dist/{doctor-completion-sQVhKKei.js → doctor-completion-By066O3p.js} +1 -1
- package/dist/{doctor-completion-DCRTHpiY.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 +2 -2
- package/dist/{frontmatter-CTR5f_Ez.js → frontmatter-CT1M0pRK.js} +4 -4
- package/dist/{gateway-cli-C3ujhxO0.js → gateway-cli-C6uT2x34.js} +182 -13
- package/dist/{gateway-cli-C_MT4JFm.js → gateway-cli-DqEgqVKC.js} +182 -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-ColAiWUr.js → glass-ui-ws-77TY57IO.js} +11 -11
- package/dist/{glass-ui-ws-B7zRY2BL.js → glass-ui-ws-CLAUHeZR.js} +11 -11
- package/dist/{health-C12hy3Ao.js → health-2jkjZxY8.js} +1 -1
- package/dist/{health-vKJZ7iJR.js → health-CvMHgR-L.js} +1 -1
- package/dist/{hooks-cli-CdUQvj8s.js → hooks-cli-CRZySOiz.js} +5 -5
- package/dist/{hooks-cli-fCPl5hur.js → hooks-cli-DSaezFsD.js} +5 -5
- package/dist/{image-BuVL0jHI.js → image-BHF_fnIp.js} +4 -4
- package/dist/{image-ops-C7CauEK8.js → image-ops-CY7v6vvp.js} +16 -16
- 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-DHRBy5oR.js → manager-BtWtmpxN.js} +1 -1
- package/dist/{manager-CLrJn9l-.js → manager-DDELj5o9.js} +1 -1
- package/dist/{manager-BJvYQ7xP.js → manager-DrmlegR2.js} +1 -1
- package/dist/{manager-Df_ZdrNG.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-T-a5-lqZ.js → memory-cli-ENCASZJk.js} +3 -3
- package/dist/{memory-cli-BgJciaHC.js → memory-cli-Qgbcxvuf.js} +3 -3
- package/dist/{message-channel-OlFBYAw8.js → message-channel-lwVT8QjK.js} +1 -1
- package/dist/{models-BXXV_sZU.js → models-COhUz7M9.js} +2 -2
- package/dist/{models-cli-BI-DyItH.js → models-cli-CCxYcF4R.js} +5 -5
- package/dist/{models-cli-Bs6JAGq-.js → models-cli-CYvXBvmZ.js} +6 -6
- package/dist/{onboard-Czi_FRdi.js → onboard-CQNUYBIp.js} +2 -2
- package/dist/{onboard-channels-sTuhQBVu.js → onboard-channels-9erx07qe.js} +1 -1
- package/dist/{onboard-channels-BUCYZF02.js → onboard-channels-CWw8G-6n.js} +1 -1
- package/dist/{onboard-DKDCWveE.js → onboard-fVpLVnwg.js} +2 -2
- package/dist/{onboarding-Bgx0qZhA.js → onboarding-CtEiH9WG.js} +3 -3
- package/dist/{onboarding-CokRRVEi.js → onboarding-D-OIkDwZ.js} +3 -3
- package/dist/{onboarding.finalize-BCv5jB0d.js → onboarding.finalize-BY3HNjX4.js} +9 -9
- package/dist/{onboarding.finalize-BzEKyraI.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-DXY7TLac.js → pi-embedded-CdOdQw2i.js} +265 -13
- package/dist/{pi-embedded-helpers-D1_Sab0M.js → pi-embedded-helpers-DwQ9wJeT.js} +73 -73
- 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-CyrsJDyE.js → plugin-registry-BrJ0-qlu.js} +1 -1
- package/dist/{plugin-registry-B2cpTmJz.js → plugin-registry-Cuc8ORuR.js} +1 -1
- 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/{channel-web-t6enTxNE.js → channel-web-t8UOP6Zu.js} +1 -1
- package/dist/plugin-sdk/index.js +3 -3
- package/dist/plugin-sdk/{manager-LRE7zEk2.js → manager-BPm5oefC.js} +1 -1
- package/dist/plugin-sdk/{reply-JypoGhql.js → reply-BKAHTugL.js} +265 -13
- package/dist/plugin-sdk/{synthesis-_WpVyZKx.js → synthesis-CVF7Fwhd.js} +2 -2
- package/dist/plugin-sdk/{web-BTVj4kiQ.js → web-D0DsmFvw.js} +3 -3
- package/dist/{plugins-cli-B-zoQyqU.js → plugins-cli-BDalhI46.js} +5 -5
- package/dist/{plugins-cli-DJwRd3EZ.js → plugins-cli-DFmriy-c.js} +5 -5
- package/dist/{plugins-BzmbgY7s.js → plugins-v8k1XVOy.js} +9 -9
- package/dist/{program-H7h6Iqrq.js → program-DKh41c2a.js} +10 -10
- package/dist/{program-context-BgecQAHU.js → program-context-Cq7pqOrw.js} +19 -19
- package/dist/{prompt-select-styled-BglmD29e.js → prompt-select-styled-BFCAZLwK.js} +6 -6
- package/dist/{prompt-select-styled-BDN2o35i.js → prompt-select-styled-DvvSE_ni.js} +6 -6
- package/dist/{provider-auth-helpers-BGIgr7xM.js → provider-auth-helpers-B-LkDxxi.js} +1 -1
- package/dist/{provider-auth-helpers-MfKmTeLY.js → provider-auth-helpers-DXppgV1l.js} +1 -1
- package/dist/{push-apns-b6bH1EBC.js → push-apns-DCA47WA5.js} +1 -1
- package/dist/{push-apns-IcfSTzfr.js → push-apns-DvudhEAb.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-ChwMSIC4.js → register.agent-_BV5KyFb.js} +9 -9
- package/dist/{register.agent-BgyETrrj.js → register.agent-aFj_SMi3.js} +8 -8
- package/dist/{register.configure-DH3L2tqW.js → register.configure-CvOoD5gE.js} +9 -9
- package/dist/{register.configure-Bm4CvoLF.js → register.configure-Dx0Uhmlz.js} +9 -9
- package/dist/{register.maintenance-BbOBw1eI.js → register.maintenance-BuZpoSik.js} +10 -10
- package/dist/{register.maintenance-CAyHUEzP.js → register.maintenance-CMeJR7DG.js} +11 -11
- package/dist/{register.message-DheqsiR0.js → register.message-qysZPg3G.js} +5 -5
- package/dist/{register.message-DQ3MOWFE.js → register.message-xxGePuRC.js} +5 -5
- package/dist/{register.onboard-DOJkUhoY.js → register.onboard-1MP2I0q4.js} +7 -7
- package/dist/{register.onboard-CxqR4S1C.js → register.onboard-D4Aow7Gc.js} +7 -7
- package/dist/{register.setup-zdrIJA2P.js → register.setup-BT74aXzA.js} +7 -7
- package/dist/{register.setup-48YBHzMZ.js → register.setup-DzliKkWh.js} +7 -7
- package/dist/{register.status-health-sessions-CeT5pVXb.js → register.status-health-sessions-B3K2gZ72.js} +7 -7
- package/dist/{register.status-health-sessions-CimrhScH.js → register.status-health-sessions-D7VYZlrU.js} +7 -7
- package/dist/{register.subclis-B-zh940S.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-CUR4xpYM.js → reply-Dg1ZU3DZ.js} +263 -13
- 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-CW_kj5Lj.js → run-main-OS2aFAJ2.js} +18 -18
- package/dist/{runner-ecX1WzDt.js → runner-B5oNTtgf.js} +22 -22
- 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-C1h0A5n0.js → server-methods-BszFAkbJ.js} +8 -8
- package/dist/{server-methods-C4id-H_X.js → server-methods-D_iKJ-sj.js} +8 -8
- package/dist/{server-node-events-CD2yDaEj.js → server-node-events-CENHuAVz.js} +5 -5
- package/dist/{server-node-events-BPZEGV_N.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-_xBnHTlx.js → status-BvbJavmh.js} +1 -1
- package/dist/{status-DCeW2a07.js → status-CA0mUJld.js} +4 -4
- package/dist/{status-Cb932Vl4.js → status-CBnCPUMG.js} +4 -4
- package/dist/{status-DvHD1cnq.js → status-DJAeKN4G.js} +1 -1
- package/dist/{store-01F_JM7O.js → store-Ceagbc4L.js} +6 -6
- package/dist/{subagent-registry-BKuL9PdW.js → subagent-registry-C1OyZl-M.js} +263 -13
- package/dist/{subsystem-BjyjJF-d.js → subsystem-CzXhCdeY.js} +1 -1
- package/dist/{synthesis-DOiTUsXQ.js → synthesis-DNTyB7JY.js} +2 -2
- package/dist/{synthesis-BUqDGjlc.js → synthesis-DuqSkHEr.js} +54 -54
- package/dist/{synthesis-C9RputIi.js → synthesis-brHrnNF2.js} +4 -4
- package/dist/{synthesis-Ia9egx87.js → synthesis-z5B41p_r.js} +4 -4
- package/dist/{tables-DoG-pFrf.js → tables-qbCoZrYA.js} +1 -1
- package/dist/{target-errors-DeJTztcq.js → target-errors-uNitqCCT.js} +2 -2
- package/dist/{thinking-BprCy23Z.js → thinking-BV7SCNJP.js} +5 -5
- package/dist/{tokens-W0JzCJJM.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-CVItnwwP.js → unified-runner-Czg3pdBc.js} +489 -237
- package/dist/{update-cli-ChEABesZ.js → update-cli-0lyGyl31.js} +11 -11
- package/dist/{update-cli-D6ax3jSX.js → update-cli-CIzkVfmj.js} +10 -10
- package/dist/{update-runner-B2EY9BWM.js → update-runner-D7-LDziQ.js} +1 -1
- package/dist/{update-runner-CWG6GxKs.js → update-runner-aYPcKYAN.js} +1 -1
- package/dist/{web-z-yQ8riS.js → web-B90A99YU.js} +58 -58
- package/dist/{web-CpSE67Jp.js → web-BJ5dUZso.js} +5 -5
- package/dist/{web-D6PPeyG7.js → web-CN7wnU7w.js} +4 -4
- package/dist/{web-DMdb2p-h.js → web-Wk1ay1eQ.js} +2 -2
- 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 +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/skills/long-task/scripts/detach-task.sh +57 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, k as info, z as isRich } from "./utils-B-0b9bGM.js";
|
|
3
|
-
import { B as summarizeRestartSentinel, Jt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, o as buildChannelAccountSnapshot, pr as lookupContextTokens, s as formatChannelAllowFrom, wr as peekSystemEvents, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-
|
|
3
|
+
import { B as summarizeRestartSentinel, Jt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, o as buildChannelAccountSnapshot, pr as lookupContextTokens, s as formatChannelAllowFrom, wr as peekSystemEvents, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-Dg1ZU3DZ.js";
|
|
4
4
|
import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
|
|
5
5
|
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
6
6
|
import { n as runExec } from "./exec-CWkblSrI.js";
|
|
@@ -13,7 +13,7 @@ import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-BOmtx
|
|
|
13
13
|
import { H as resolveMainSessionKey, R as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-BeYHj0gr.js";
|
|
14
14
|
import { n as listChannelPlugins } from "./plugins-DKDeQZF0.js";
|
|
15
15
|
import { c as resolveStorePath } from "./paths-CyhzMxFA.js";
|
|
16
|
-
import { r as getMemorySearchManager } from "./memory-cli-
|
|
16
|
+
import { r as getMemorySearchManager } from "./memory-cli-ENCASZJk.js";
|
|
17
17
|
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-Cmb04dff.js";
|
|
18
18
|
import { n as formatTimeAgo } from "./format-relative-CviDPm2s.js";
|
|
19
19
|
import { n as withProgress } from "./progress-WhkkDU0H.js";
|
|
@@ -27,8 +27,8 @@ import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./servi
|
|
|
27
27
|
import { t as formatRuntimeStatusWithDetails } from "./runtime-status-D0P5lDGf.js";
|
|
28
28
|
import { t as readLastGatewayErrorLine } from "./diagnostics-1uBuB9IE.js";
|
|
29
29
|
import { t as renderTable } from "./table-BWuvjnmY.js";
|
|
30
|
-
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-
|
|
31
|
-
import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-
|
|
30
|
+
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-BhCJV2l6.js";
|
|
31
|
+
import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-CvMHgR-L.js";
|
|
32
32
|
import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-Bbvpax6u.js";
|
|
33
33
|
import { t as resolveNodeService } from "./node-service-DxPZ_ZFk.js";
|
|
34
34
|
import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-DNqZrSx7.js";
|
|
@@ -9,13 +9,13 @@ import { c as resolveAgentWorkspaceDir } from "./agent-scope-D-jRCY0d.js";
|
|
|
9
9
|
import { t as buildWorkspaceSkillStatus } from "./skills-status-DODCG6UU.js";
|
|
10
10
|
import { H as VERSION, i as loadConfig, o as readConfigFileSnapshot } from "./config-DXt3pc08.js";
|
|
11
11
|
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BrRWr7Lj.js";
|
|
12
|
-
import { En as peekSystemEvents, St as summarizeRestartSentinel, cn as buildChannelAccountSnapshot, in as formatUsageReportLines, ln as formatChannelAllowFrom, nt as sha256HexPrefix, rn as loadProviderUsageSummary, sn as buildChannelSummary, xt as readRestartSentinel } from "./subagent-registry-
|
|
12
|
+
import { En as peekSystemEvents, St as summarizeRestartSentinel, cn as buildChannelAccountSnapshot, in as formatUsageReportLines, ln as formatChannelAllowFrom, nt as sha256HexPrefix, rn as loadProviderUsageSummary, sn as buildChannelSummary, xt as readRestartSentinel } from "./subagent-registry-C1OyZl-M.js";
|
|
13
13
|
import { F as resolveMainSessionKey, j as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-BPD85pWA.js";
|
|
14
14
|
import { n as listChannelPlugins } from "./plugins-CwSlLxM8.js";
|
|
15
15
|
import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CbbvYNVw.js";
|
|
16
16
|
import { i as formatPortDiagnostics, n as inspectPortUsage } from "./ports-2xFXbwLq.js";
|
|
17
17
|
import { c as resolveStorePath } from "./paths-DNdWAq7b.js";
|
|
18
|
-
import { r as getMemorySearchManager } from "./memory-cli-
|
|
18
|
+
import { r as getMemorySearchManager } from "./memory-cli-Qgbcxvuf.js";
|
|
19
19
|
import { n as formatTimeAgo } from "./format-relative-BDwAggS5.js";
|
|
20
20
|
import { l as resolveSessionModelRef, n as classifySessionKey, r as listAgentsForGateway, u as lookupContextTokens } from "./session-utils-DaBIs243.js";
|
|
21
21
|
import { o as getRemoteSkillEligibility } from "./skill-commands-DrX4xCNq.js";
|
|
@@ -28,8 +28,8 @@ import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./servi
|
|
|
28
28
|
import { t as formatRuntimeStatusWithDetails } from "./runtime-status-DJYthOLz.js";
|
|
29
29
|
import { t as readLastGatewayErrorLine } from "./diagnostics-C6xPE2ln.js";
|
|
30
30
|
import { t as renderTable } from "./table-Bka4fasy.js";
|
|
31
|
-
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-
|
|
32
|
-
import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-
|
|
31
|
+
import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-CB97BqHJ.js";
|
|
32
|
+
import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-2jkjZxY8.js";
|
|
33
33
|
import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-BNjupSIM.js";
|
|
34
34
|
import { t as resolveNodeService } from "./node-service-B-qdOCNb.js";
|
|
35
35
|
import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-yQZNwAF2.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { o as createSubsystemLogger } from "./entry.js";
|
|
2
2
|
import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
|
|
3
3
|
import { i as loadConfig } from "./config-DXt3pc08.js";
|
|
4
|
-
import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-
|
|
4
|
+
import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-C1OyZl-M.js";
|
|
5
5
|
|
|
6
6
|
//#region src/plugins/status.ts
|
|
7
7
|
const log = createSubsystemLogger("plugins");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { P as resolveConfigDir } from "./registry-
|
|
2
|
-
import { c as detectMime, l as extensionForMime } from "./image-ops-
|
|
1
|
+
import { P as resolveConfigDir } from "./registry-X6fUE0K7.js";
|
|
2
|
+
import { c as detectMime, l as extensionForMime } from "./image-ops-CY7v6vvp.js";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import fs
|
|
4
|
+
import fs from "node:fs/promises";
|
|
5
5
|
import crypto from "node:crypto";
|
|
6
6
|
|
|
7
7
|
//#region src/media/store.ts
|
|
@@ -24,7 +24,7 @@ function getMediaDir() {
|
|
|
24
24
|
}
|
|
25
25
|
async function ensureMediaDir() {
|
|
26
26
|
const mediaDir = resolveMediaDir();
|
|
27
|
-
await fs
|
|
27
|
+
await fs.mkdir(mediaDir, {
|
|
28
28
|
recursive: true,
|
|
29
29
|
mode: 448
|
|
30
30
|
});
|
|
@@ -33,7 +33,7 @@ async function ensureMediaDir() {
|
|
|
33
33
|
async function saveMediaBuffer(buffer, contentType, subdir = "inbound", maxBytes = MAX_BYTES, originalFilename) {
|
|
34
34
|
if (buffer.byteLength > maxBytes) throw new Error(`Media exceeds ${(maxBytes / (1024 * 1024)).toFixed(0)}MB limit`);
|
|
35
35
|
const dir = path.join(resolveMediaDir(), subdir);
|
|
36
|
-
await fs
|
|
36
|
+
await fs.mkdir(dir, {
|
|
37
37
|
recursive: true,
|
|
38
38
|
mode: 448
|
|
39
39
|
});
|
|
@@ -51,7 +51,7 @@ async function saveMediaBuffer(buffer, contentType, subdir = "inbound", maxBytes
|
|
|
51
51
|
id = sanitized ? `${sanitized}---${uuid}${ext}` : `${uuid}${ext}`;
|
|
52
52
|
} else id = ext ? `${uuid}${ext}` : uuid;
|
|
53
53
|
const dest = path.join(dir, id);
|
|
54
|
-
await fs
|
|
54
|
+
await fs.writeFile(dest, buffer, { mode: 384 });
|
|
55
55
|
return {
|
|
56
56
|
id,
|
|
57
57
|
path: dest,
|
|
@@ -50,8 +50,8 @@ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as san
|
|
|
50
50
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-8sKPnzpp.js";
|
|
51
51
|
import { t as ensureSymiModelsJson } from "./models-config-J1x_DaPn.js";
|
|
52
52
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BUN71nd5.js";
|
|
53
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
54
|
-
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-
|
|
53
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-Qgbcxvuf.js";
|
|
54
|
+
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-DDELj5o9.js";
|
|
55
55
|
import { f as runTasksWithConcurrency } from "./internal-C2jxeHS9.js";
|
|
56
56
|
import { n as retryAsync } from "./retry-C4Q_VPOo.js";
|
|
57
57
|
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-Co0LcWKH.js";
|
|
@@ -95,7 +95,7 @@ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliv
|
|
|
95
95
|
import { r as detectBinary } from "./onboard-helpers-CF0Cp3OB.js";
|
|
96
96
|
import { t as resolvePairingIdLabel } from "./pairing-labels-BHx_CdbP.js";
|
|
97
97
|
import { t as getActiveWebListener } from "./active-listener-DEi7sEFa.js";
|
|
98
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
98
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-o0ytjRqu.js";
|
|
99
99
|
import { createRequire } from "node:module";
|
|
100
100
|
import { execFileSync, spawn, spawnSync } from "node:child_process";
|
|
101
101
|
import os, { homedir } from "node:os";
|
|
@@ -11042,7 +11042,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
11042
11042
|
};
|
|
11043
11043
|
}
|
|
11044
11044
|
}
|
|
11045
|
-
function resolveWorkdir(workdir, warnings) {
|
|
11045
|
+
function resolveWorkdir$1(workdir, warnings) {
|
|
11046
11046
|
const fallback = safeCwd() ?? homedir();
|
|
11047
11047
|
try {
|
|
11048
11048
|
if (statSync(workdir).isDirectory()) return workdir;
|
|
@@ -12114,7 +12114,7 @@ function createExecTool(defaults) {
|
|
|
12114
12114
|
});
|
|
12115
12115
|
workdir = resolved.hostWorkdir;
|
|
12116
12116
|
containerWorkdir = resolved.containerWorkdir;
|
|
12117
|
-
} else workdir = resolveWorkdir(rawWorkdir, warnings);
|
|
12117
|
+
} else workdir = resolveWorkdir$1(rawWorkdir, warnings);
|
|
12118
12118
|
const baseEnv = coerceEnv(process.env);
|
|
12119
12119
|
if (host !== "sandbox" && params.env) validateHostEnv(params.env);
|
|
12120
12120
|
const mergedEnv = params.env ? {
|
|
@@ -29913,6 +29913,254 @@ function createSubagentsTool(opts) {
|
|
|
29913
29913
|
};
|
|
29914
29914
|
}
|
|
29915
29915
|
|
|
29916
|
+
//#endregion
|
|
29917
|
+
//#region src/agents/tools/task-tool.ts
|
|
29918
|
+
/**
|
|
29919
|
+
* Long-task management tools (task_list, task_cancel).
|
|
29920
|
+
*
|
|
29921
|
+
* Companions to the detach-task pattern in skills/long-task. The detach
|
|
29922
|
+
* script writes task-<id>.{pid,cmd,started,log,status} state files into
|
|
29923
|
+
* the agent's workspace; these tools read and act on those files so the
|
|
29924
|
+
* agent can answer "what's running?" and kill a task without needing
|
|
29925
|
+
* shell access.
|
|
29926
|
+
*
|
|
29927
|
+
* task-id allow-list mirrors detach-task.sh: 1–60 chars from
|
|
29928
|
+
* [a-zA-Z0-9._-], must not start with '.' or '-'. Diverging would let the
|
|
29929
|
+
* agent kill processes it never spawned via path traversal.
|
|
29930
|
+
*/
|
|
29931
|
+
const TASK_FILE_PREFIX = "task-";
|
|
29932
|
+
const TASK_ID_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
|
|
29933
|
+
const TASK_FILE_SUFFIXES = [
|
|
29934
|
+
".pid",
|
|
29935
|
+
".status",
|
|
29936
|
+
".started",
|
|
29937
|
+
".cmd",
|
|
29938
|
+
".log"
|
|
29939
|
+
];
|
|
29940
|
+
const ALLOWED_SIGNALS = new Set([
|
|
29941
|
+
"SIGTERM",
|
|
29942
|
+
"SIGINT",
|
|
29943
|
+
"SIGHUP",
|
|
29944
|
+
"SIGQUIT",
|
|
29945
|
+
"SIGKILL",
|
|
29946
|
+
"SIGUSR1",
|
|
29947
|
+
"SIGUSR2"
|
|
29948
|
+
]);
|
|
29949
|
+
const TaskListSchema = Type.Object({ workdir: Type.Optional(Type.String()) });
|
|
29950
|
+
const TaskCancelSchema = Type.Object({
|
|
29951
|
+
taskId: Type.String(),
|
|
29952
|
+
workdir: Type.Optional(Type.String()),
|
|
29953
|
+
signal: Type.Optional(Type.String())
|
|
29954
|
+
});
|
|
29955
|
+
function normaliseSignal(input) {
|
|
29956
|
+
if (!input) return "SIGTERM";
|
|
29957
|
+
const upper = input.trim().toUpperCase();
|
|
29958
|
+
const candidate = upper.startsWith("SIG") ? upper : `SIG${upper}`;
|
|
29959
|
+
if (ALLOWED_SIGNALS.has(candidate)) return candidate;
|
|
29960
|
+
throw new Error(`Unsupported signal: ${input}. Allowed: TERM, INT, HUP, QUIT, KILL, USR1, USR2.`);
|
|
29961
|
+
}
|
|
29962
|
+
function isPidAlive(pid) {
|
|
29963
|
+
try {
|
|
29964
|
+
process.kill(pid, 0);
|
|
29965
|
+
return true;
|
|
29966
|
+
} catch (err) {
|
|
29967
|
+
if (err.code === "EPERM") return true;
|
|
29968
|
+
return false;
|
|
29969
|
+
}
|
|
29970
|
+
}
|
|
29971
|
+
async function safeRead(filePath) {
|
|
29972
|
+
try {
|
|
29973
|
+
return (await fs.promises.readFile(filePath, "utf8")).trim();
|
|
29974
|
+
} catch {
|
|
29975
|
+
return null;
|
|
29976
|
+
}
|
|
29977
|
+
}
|
|
29978
|
+
function resolveWorkdir(deps, override) {
|
|
29979
|
+
const raw = override?.trim();
|
|
29980
|
+
if (!raw) return deps.workspaceDir;
|
|
29981
|
+
if (!path.isAbsolute(raw)) throw new Error(`workdir must be an absolute path (got: ${raw})`);
|
|
29982
|
+
return raw;
|
|
29983
|
+
}
|
|
29984
|
+
async function readTaskInfo(workdir, id) {
|
|
29985
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.pid`);
|
|
29986
|
+
const [pidText, status, started, cmd] = await Promise.all([
|
|
29987
|
+
safeRead(pidPath),
|
|
29988
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`)),
|
|
29989
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.started`)),
|
|
29990
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.cmd`))
|
|
29991
|
+
]);
|
|
29992
|
+
let pid = null;
|
|
29993
|
+
if (pidText) {
|
|
29994
|
+
const parsed = Number.parseInt(pidText, 10);
|
|
29995
|
+
if (Number.isFinite(parsed) && parsed > 0) pid = parsed;
|
|
29996
|
+
}
|
|
29997
|
+
return {
|
|
29998
|
+
id,
|
|
29999
|
+
pid,
|
|
30000
|
+
alive: pid !== null && isPidAlive(pid),
|
|
30001
|
+
status: status ?? "missing",
|
|
30002
|
+
started,
|
|
30003
|
+
cmd,
|
|
30004
|
+
pidPath,
|
|
30005
|
+
statusPath: path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`),
|
|
30006
|
+
logPath: path.join(workdir, `${TASK_FILE_PREFIX}${id}.log`)
|
|
30007
|
+
};
|
|
30008
|
+
}
|
|
30009
|
+
function createTaskListTool(deps) {
|
|
30010
|
+
return {
|
|
30011
|
+
label: "Task List",
|
|
30012
|
+
name: "task_list",
|
|
30013
|
+
description: `List long-running detached tasks in the agent's workspace.
|
|
30014
|
+
|
|
30015
|
+
Globs task-<id>.{pid,status,started,cmd,log} files, reads their state, and
|
|
30016
|
+
checks each PID's liveness. Use this to find the task-id of a running
|
|
30017
|
+
detach-task before calling task_cancel, or to answer "what's running right
|
|
30018
|
+
now?" without re-asking the user.
|
|
30019
|
+
|
|
30020
|
+
Returns: { workdir, tasks: [{ id, pid, alive, status, started, cmd, pidPath, statusPath, logPath }] }.
|
|
30021
|
+
Tasks whose .pid file is missing are still listed (alive=false, pid=null) so
|
|
30022
|
+
the agent can spot orphan state files.`,
|
|
30023
|
+
parameters: TaskListSchema,
|
|
30024
|
+
execute: async (_toolCallId, args) => {
|
|
30025
|
+
const override = readStringParam(args, "workdir");
|
|
30026
|
+
let workdir;
|
|
30027
|
+
try {
|
|
30028
|
+
workdir = resolveWorkdir(deps, override);
|
|
30029
|
+
} catch (err) {
|
|
30030
|
+
return jsonResult({
|
|
30031
|
+
workdir: override ?? deps.workspaceDir,
|
|
30032
|
+
tasks: [],
|
|
30033
|
+
error: err instanceof Error ? err.message : String(err)
|
|
30034
|
+
});
|
|
30035
|
+
}
|
|
30036
|
+
let entries;
|
|
30037
|
+
try {
|
|
30038
|
+
entries = await fs.promises.readdir(workdir);
|
|
30039
|
+
} catch (err) {
|
|
30040
|
+
if (err.code === "ENOENT") return jsonResult({
|
|
30041
|
+
workdir,
|
|
30042
|
+
tasks: []
|
|
30043
|
+
});
|
|
30044
|
+
return jsonResult({
|
|
30045
|
+
workdir,
|
|
30046
|
+
tasks: [],
|
|
30047
|
+
error: err instanceof Error ? err.message : String(err)
|
|
30048
|
+
});
|
|
30049
|
+
}
|
|
30050
|
+
const taskIds = /* @__PURE__ */ new Set();
|
|
30051
|
+
for (const entry of entries) {
|
|
30052
|
+
if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
|
|
30053
|
+
for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
|
|
30054
|
+
const id = entry.slice(5, -suffix.length);
|
|
30055
|
+
if (id.length > 0 && TASK_ID_RE.test(id)) taskIds.add(id);
|
|
30056
|
+
break;
|
|
30057
|
+
}
|
|
30058
|
+
}
|
|
30059
|
+
const tasks = await Promise.all([...taskIds].toSorted().map((id) => readTaskInfo(workdir, id)));
|
|
30060
|
+
return jsonResult({
|
|
30061
|
+
workdir,
|
|
30062
|
+
tasks
|
|
30063
|
+
});
|
|
30064
|
+
}
|
|
30065
|
+
};
|
|
30066
|
+
}
|
|
30067
|
+
function createTaskCancelTool(deps) {
|
|
30068
|
+
return {
|
|
30069
|
+
label: "Task Cancel",
|
|
30070
|
+
name: "task_cancel",
|
|
30071
|
+
description: `Send a signal (default SIGTERM) to a running detached task.
|
|
30072
|
+
|
|
30073
|
+
Reads task-<id>.pid in the workdir, validates the recorded PID is alive,
|
|
30074
|
+
and sends the signal via process.kill. The task's TERM/INT/HUP trap will
|
|
30075
|
+
write an "aborted" status before exiting, so a follow-up task_list call
|
|
30076
|
+
sees the canonical end state.
|
|
30077
|
+
|
|
30078
|
+
task-id must match the same allow-list as detach-task.sh: 1–60 chars from
|
|
30079
|
+
[a-zA-Z0-9._-], no leading '.' or '-'. signal accepts TERM (default), INT,
|
|
30080
|
+
HUP, QUIT, KILL, USR1, USR2 — with or without the "SIG" prefix.
|
|
30081
|
+
|
|
30082
|
+
Returns: { ok, taskId, pid, sentSignal, alreadyDead?, error? }.`,
|
|
30083
|
+
parameters: TaskCancelSchema,
|
|
30084
|
+
execute: async (_toolCallId, args) => {
|
|
30085
|
+
const params = args;
|
|
30086
|
+
const taskId = readStringParam(params, "taskId", { required: true });
|
|
30087
|
+
if (!TASK_ID_RE.test(taskId)) return jsonResult({
|
|
30088
|
+
ok: false,
|
|
30089
|
+
taskId,
|
|
30090
|
+
error: "taskId must be 1–60 chars from [a-zA-Z0-9._-] and must not start with '.' or '-'."
|
|
30091
|
+
});
|
|
30092
|
+
const override = readStringParam(params, "workdir");
|
|
30093
|
+
let workdir;
|
|
30094
|
+
try {
|
|
30095
|
+
workdir = resolveWorkdir(deps, override);
|
|
30096
|
+
} catch (err) {
|
|
30097
|
+
return jsonResult({
|
|
30098
|
+
ok: false,
|
|
30099
|
+
taskId,
|
|
30100
|
+
error: err instanceof Error ? err.message : String(err)
|
|
30101
|
+
});
|
|
30102
|
+
}
|
|
30103
|
+
const signalRaw = readStringParam(params, "signal");
|
|
30104
|
+
let signal;
|
|
30105
|
+
try {
|
|
30106
|
+
signal = normaliseSignal(signalRaw);
|
|
30107
|
+
} catch (err) {
|
|
30108
|
+
return jsonResult({
|
|
30109
|
+
ok: false,
|
|
30110
|
+
taskId,
|
|
30111
|
+
error: err instanceof Error ? err.message : String(err)
|
|
30112
|
+
});
|
|
30113
|
+
}
|
|
30114
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
|
|
30115
|
+
let pidText;
|
|
30116
|
+
try {
|
|
30117
|
+
pidText = (await fs.promises.readFile(pidPath, "utf8")).trim();
|
|
30118
|
+
} catch (err) {
|
|
30119
|
+
if (err.code === "ENOENT") return jsonResult({
|
|
30120
|
+
ok: false,
|
|
30121
|
+
taskId,
|
|
30122
|
+
error: `no pid file at ${pidPath} — task is unknown or already cleaned up`
|
|
30123
|
+
});
|
|
30124
|
+
return jsonResult({
|
|
30125
|
+
ok: false,
|
|
30126
|
+
taskId,
|
|
30127
|
+
error: err instanceof Error ? err.message : String(err)
|
|
30128
|
+
});
|
|
30129
|
+
}
|
|
30130
|
+
const pid = Number.parseInt(pidText, 10);
|
|
30131
|
+
if (!Number.isFinite(pid) || pid <= 0) return jsonResult({
|
|
30132
|
+
ok: false,
|
|
30133
|
+
taskId,
|
|
30134
|
+
error: `pid file at ${pidPath} did not contain a positive integer`
|
|
30135
|
+
});
|
|
30136
|
+
if (!isPidAlive(pid)) return jsonResult({
|
|
30137
|
+
ok: false,
|
|
30138
|
+
taskId,
|
|
30139
|
+
pid,
|
|
30140
|
+
alreadyDead: true,
|
|
30141
|
+
error: "process is no longer running"
|
|
30142
|
+
});
|
|
30143
|
+
try {
|
|
30144
|
+
process.kill(pid, signal);
|
|
30145
|
+
} catch (err) {
|
|
30146
|
+
return jsonResult({
|
|
30147
|
+
ok: false,
|
|
30148
|
+
taskId,
|
|
30149
|
+
pid,
|
|
30150
|
+
sentSignal: signal,
|
|
30151
|
+
error: err instanceof Error ? err.message : String(err)
|
|
30152
|
+
});
|
|
30153
|
+
}
|
|
30154
|
+
return jsonResult({
|
|
30155
|
+
ok: true,
|
|
30156
|
+
taskId,
|
|
30157
|
+
pid,
|
|
30158
|
+
sentSignal: signal
|
|
30159
|
+
});
|
|
30160
|
+
}
|
|
30161
|
+
};
|
|
30162
|
+
}
|
|
30163
|
+
|
|
29916
30164
|
//#endregion
|
|
29917
30165
|
//#region src/agents/tools/tts-tool.ts
|
|
29918
30166
|
const TtsToolSchema = Type.Object({
|
|
@@ -31213,6 +31461,8 @@ function createSymiTools(options) {
|
|
|
31213
31461
|
config: options?.config
|
|
31214
31462
|
}),
|
|
31215
31463
|
createCronTool({ agentSessionKey: options?.agentSessionKey }),
|
|
31464
|
+
createTaskListTool({ workspaceDir }),
|
|
31465
|
+
createTaskCancelTool({ workspaceDir }),
|
|
31216
31466
|
...messageTool ? [messageTool] : [],
|
|
31217
31467
|
createTtsTool({
|
|
31218
31468
|
agentChannel: options?.agentChannel,
|
|
@@ -39013,6 +39263,7 @@ async function resolveDetachScriptPath(params) {
|
|
|
39013
39263
|
return cachedScriptPath;
|
|
39014
39264
|
}
|
|
39015
39265
|
async function buildLongTaskPromptSuffix(params) {
|
|
39266
|
+
if (params.cronEnabled === false) return "";
|
|
39016
39267
|
const scriptPath = await resolveDetachScriptPath(params);
|
|
39017
39268
|
if (!scriptPath) return "";
|
|
39018
39269
|
return "\n\n" + [
|
|
@@ -39024,10 +39275,7 @@ async function buildLongTaskPromptSuffix(params) {
|
|
|
39024
39275
|
" • workdir: absolute path you own (e.g. the agent workspace).",
|
|
39025
39276
|
" • Script spawns under setsid+nohup+disown, writes task-<id>.{pid,cmd,started,log,status} files.",
|
|
39026
39277
|
"- Immediately after detaching, respond to the user with: task id, PID, log file path, your ETA estimate, and that a cron monitor has been scheduled.",
|
|
39027
|
-
"- Register a cron monitor
|
|
39028
|
-
" • schedule: { kind: \"interval\", ms: 180000 } (every 3 minutes; minimum 60000)",
|
|
39029
|
-
" • payload: { kind: \"agent\", sessionTarget: \"isolated\", text: <job prompt> }",
|
|
39030
|
-
" The job prompt must literally contain the task-id, PID, log path, and status path so the future turn has enough context without re-deriving them.",
|
|
39278
|
+
"- 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.",
|
|
39031
39279
|
"- Safe status read (inside the monitor turn):",
|
|
39032
39280
|
" `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
|
|
39033
39281
|
" Possible values: `running pid=<N> started=<ISO>`, `complete rc=<N> ended=<ISO>`, `aborted rc=<N> signal=<TERM|INT|HUP> ended=<ISO>`, or `missing` if the file was cleaned up.",
|
|
@@ -39035,7 +39283,8 @@ async function buildLongTaskPromptSuffix(params) {
|
|
|
39035
39283
|
" • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
|
|
39036
39284
|
" • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
|
|
39037
39285
|
" • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
|
|
39038
|
-
" • Never leave stale monitors running after the task finishes."
|
|
39286
|
+
" • Never leave stale monitors running after the task finishes.",
|
|
39287
|
+
"- 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."
|
|
39039
39288
|
].join("\n");
|
|
39040
39289
|
}
|
|
39041
39290
|
|
|
@@ -40096,7 +40345,8 @@ async function runEmbeddedAttempt(params) {
|
|
|
40096
40345
|
const longTaskSuffix = await buildLongTaskPromptSuffix({
|
|
40097
40346
|
argv1: process.argv[1],
|
|
40098
40347
|
cwd: process.cwd(),
|
|
40099
|
-
moduleUrl: import.meta.url
|
|
40348
|
+
moduleUrl: import.meta.url,
|
|
40349
|
+
cronEnabled: process.env.SYMI_SKIP_CRON !== "1" && params.config?.cron?.enabled !== false
|
|
40100
40350
|
});
|
|
40101
40351
|
const emailCapabilitySuffix = buildEmailCapabilityPromptSuffix();
|
|
40102
40352
|
const systemPromptText = createSystemPromptOverride(appendPrompt + longTaskSuffix + emailCapabilitySuffix + profilePromptSuffix)();
|
|
@@ -53585,7 +53835,7 @@ function isVoiceChannelType(type) {
|
|
|
53585
53835
|
function createDefaultDeps() {
|
|
53586
53836
|
return {
|
|
53587
53837
|
sendMessageWhatsApp: async (...args) => {
|
|
53588
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
53838
|
+
const { sendMessageWhatsApp } = await import("./web-CN7wnU7w.js");
|
|
53589
53839
|
return await sendMessageWhatsApp(...args);
|
|
53590
53840
|
},
|
|
53591
53841
|
sendMessageTelegram: async (...args) => {
|
|
@@ -68899,7 +69149,7 @@ function loadWebLoginQr() {
|
|
|
68899
69149
|
return webLoginQrPromise;
|
|
68900
69150
|
}
|
|
68901
69151
|
function loadWebChannel() {
|
|
68902
|
-
webChannelPromise ??= import("./web-
|
|
69152
|
+
webChannelPromise ??= import("./web-CN7wnU7w.js");
|
|
68903
69153
|
return webChannelPromise;
|
|
68904
69154
|
}
|
|
68905
69155
|
function loadWhatsAppActions() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { at as isFileLogLevelEnabled, ct as levelToMinLevel, lt as normalizeLogLevel, n as CHAT_CHANNEL_ORDER, q as isVerbose, rt as getChildLogger, st as loggingState, ut as readLoggingConfig } from "./registry-
|
|
1
|
+
import { at as isFileLogLevelEnabled, ct as levelToMinLevel, lt as normalizeLogLevel, n as CHAT_CHANNEL_ORDER, q as isVerbose, rt as getChildLogger, st as loggingState, ut as readLoggingConfig } from "./registry-X6fUE0K7.js";
|
|
2
2
|
import { Chalk } from "chalk";
|
|
3
3
|
|
|
4
4
|
//#region src/terminal/progress-line.ts
|
|
@@ -7,7 +7,7 @@ import "./reply-prefix-K_J_nfgx.js";
|
|
|
7
7
|
import "./github-copilot-token-BbsJ0Qbo.js";
|
|
8
8
|
import "./env-CQ_DQOwT.js";
|
|
9
9
|
import "./tokens-Cn6drXx2.js";
|
|
10
|
-
import { p as runAgentTurn } from "./pi-embedded-
|
|
10
|
+
import { p as runAgentTurn } from "./pi-embedded-CdOdQw2i.js";
|
|
11
11
|
import "./plugins-71oIavrF.js";
|
|
12
12
|
import "./accounts-DDEyGwby.js";
|
|
13
13
|
import "./bindings-DYVakimr.js";
|
|
@@ -35,7 +35,7 @@ import "./accounts-DImOt9jX.js";
|
|
|
35
35
|
import "./paths-DkMamAQ-.js";
|
|
36
36
|
import "./tool-images-ChC2CXaN.js";
|
|
37
37
|
import "./image-MNvheU8U.js";
|
|
38
|
-
import "./manager-
|
|
38
|
+
import "./manager-BtWtmpxN.js";
|
|
39
39
|
import "./gemini-auth-DVcG-42i.js";
|
|
40
40
|
import "./retry-QGp0jvVi.js";
|
|
41
41
|
import "./sqlite-Bo4pHfp8.js";
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import "./paths-
|
|
2
|
-
import "./registry-
|
|
3
|
-
import "./agent-scope-
|
|
4
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
5
|
-
import "./workspace-
|
|
6
|
-
import { t as runAgentTurn } from "./unified-runner-
|
|
7
|
-
import "./paths-
|
|
8
|
-
import "./auth-profiles-
|
|
9
|
-
import "./env-
|
|
10
|
-
import "./github-copilot-token-
|
|
1
|
+
import "./paths-CYmyCDsE.js";
|
|
2
|
+
import "./registry-X6fUE0K7.js";
|
|
3
|
+
import "./agent-scope-Cpm7a9ss.js";
|
|
4
|
+
import { t as createSubsystemLogger } from "./subsystem-CzXhCdeY.js";
|
|
5
|
+
import "./workspace-CywO4ayZ.js";
|
|
6
|
+
import { t as runAgentTurn } from "./unified-runner-Czg3pdBc.js";
|
|
7
|
+
import "./paths-DEuVuViW.js";
|
|
8
|
+
import "./auth-profiles-BzB_Exeq.js";
|
|
9
|
+
import "./env-CB65jmJQ.js";
|
|
10
|
+
import "./github-copilot-token-B8B2pmph.js";
|
|
11
11
|
import "./boolean-CE7i9tBR.js";
|
|
12
|
-
import "./pi-embedded-helpers-
|
|
13
|
-
import "./config-
|
|
14
|
-
import "./manifest-registry-
|
|
15
|
-
import "./chrome-
|
|
16
|
-
import "./frontmatter-
|
|
17
|
-
import "./skills-
|
|
12
|
+
import "./pi-embedded-helpers-DwQ9wJeT.js";
|
|
13
|
+
import "./config-C4WnAd-c.js";
|
|
14
|
+
import "./manifest-registry-BvGv6lp9.js";
|
|
15
|
+
import "./chrome-DwXnykXR.js";
|
|
16
|
+
import "./frontmatter-CT1M0pRK.js";
|
|
17
|
+
import "./skills-BrYDT4Jr.js";
|
|
18
18
|
import "./redact-BDMXB06K.js";
|
|
19
19
|
import "./errors-XIsvXeC-.js";
|
|
20
|
-
import "./image-ops-
|
|
20
|
+
import "./image-ops-CY7v6vvp.js";
|
|
21
21
|
import "./ssrf-DpUUUgkK.js";
|
|
22
|
-
import "./store-
|
|
23
|
-
import "./thinking-
|
|
24
|
-
import "./message-channel-
|
|
25
|
-
import "./plugins-
|
|
26
|
-
import "./accounts-
|
|
27
|
-
import "./accounts-
|
|
28
|
-
import "./accounts-
|
|
29
|
-
import "./bindings-
|
|
30
|
-
import "./send-
|
|
31
|
-
import "./send-
|
|
32
|
-
import "./tool-images-
|
|
33
|
-
import "./deliver-
|
|
34
|
-
import "./diagnostic-
|
|
22
|
+
import "./store-Ceagbc4L.js";
|
|
23
|
+
import "./thinking-BV7SCNJP.js";
|
|
24
|
+
import "./message-channel-lwVT8QjK.js";
|
|
25
|
+
import "./plugins-v8k1XVOy.js";
|
|
26
|
+
import "./accounts-BsgY6sda.js";
|
|
27
|
+
import "./accounts-wWWkC0JH.js";
|
|
28
|
+
import "./accounts-Bsg6r6H7.js";
|
|
29
|
+
import "./bindings-xcRox9xM.js";
|
|
30
|
+
import "./send-cCTQjuOZ.js";
|
|
31
|
+
import "./send-CSydU49L.js";
|
|
32
|
+
import "./tool-images-JxNglLSr.js";
|
|
33
|
+
import "./deliver-SLYAWE19.js";
|
|
34
|
+
import "./diagnostic-DTkZsRNM.js";
|
|
35
35
|
import "./diagnostic-session-state-Zw87xFym.js";
|
|
36
|
-
import "./image-
|
|
37
|
-
import "./pi-auth-json-
|
|
38
|
-
import "./tokens-
|
|
39
|
-
import "./send-
|
|
36
|
+
import "./image-BHF_fnIp.js";
|
|
37
|
+
import "./pi-auth-json-Bv1NzJdR.js";
|
|
38
|
+
import "./tokens-Bl5R3wPD.js";
|
|
39
|
+
import "./send-BTfqlrYd.js";
|
|
40
40
|
import "./pi-model-discovery-CuZX_Q4t.js";
|
|
41
|
-
import "./reply-prefix-
|
|
42
|
-
import "./manager-
|
|
43
|
-
import "./gemini-auth-
|
|
44
|
-
import "./retry-
|
|
45
|
-
import "./sqlite-
|
|
46
|
-
import "./target-errors-
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./markdown-tables-
|
|
49
|
-
import "./local-roots-
|
|
50
|
-
import "./ir-
|
|
41
|
+
import "./reply-prefix-CI_IdwqH.js";
|
|
42
|
+
import "./manager-DxCmjSfP.js";
|
|
43
|
+
import "./gemini-auth-D80BsXr2.js";
|
|
44
|
+
import "./retry-4oEAHckB.js";
|
|
45
|
+
import "./sqlite-P-gMg7fi.js";
|
|
46
|
+
import "./target-errors-uNitqCCT.js";
|
|
47
|
+
import "./chunk-BcxcL1U3.js";
|
|
48
|
+
import "./markdown-tables-CE-qSMGB.js";
|
|
49
|
+
import "./local-roots-tcdaIEhh.js";
|
|
50
|
+
import "./ir-D6MiJpAy.js";
|
|
51
51
|
import "./render-D1xvLuGo.js";
|
|
52
|
-
import "./commands-registry-
|
|
53
|
-
import "./runner-
|
|
54
|
-
import "./skill-commands-
|
|
52
|
+
import "./commands-registry-ByGkL6hs.js";
|
|
53
|
+
import "./runner-B5oNTtgf.js";
|
|
54
|
+
import "./skill-commands-BcOduw6G.js";
|
|
55
55
|
import "./fetch-ClslA6GS.js";
|
|
56
|
-
import "./channel-activity-
|
|
57
|
-
import "./tables-
|
|
58
|
-
import "./send-
|
|
59
|
-
import "./outbound-attachment-
|
|
60
|
-
import "./send-
|
|
61
|
-
import "./resolve-route-
|
|
56
|
+
import "./channel-activity-CzHaIUAp.js";
|
|
57
|
+
import "./tables-qbCoZrYA.js";
|
|
58
|
+
import "./send-Du-IfSne.js";
|
|
59
|
+
import "./outbound-attachment-BWyKV1Gy.js";
|
|
60
|
+
import "./send-ASDB3AzC.js";
|
|
61
|
+
import "./resolve-route-BgSuN9c6.js";
|
|
62
62
|
import "./proxy-d9fklNTC.js";
|
|
63
|
-
import "./replies-
|
|
63
|
+
import "./replies-86F3PldM.js";
|
|
64
64
|
|
|
65
65
|
//#region src/memory/synthesis.ts
|
|
66
66
|
const log = createSubsystemLogger("memory/synthesis");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-Cqn-zk3M.js";
|
|
2
2
|
import "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import { zt as runAgentTurn } from "./reply-
|
|
4
|
+
import { zt as runAgentTurn } from "./reply-Dg1ZU3DZ.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -60,8 +60,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
|
|
|
60
60
|
import "./send-DpMnSIi5.js";
|
|
61
61
|
import "./model-ECsJuJew.js";
|
|
62
62
|
import "./reply-prefix-CE2YmmsD.js";
|
|
63
|
-
import "./memory-cli-
|
|
64
|
-
import "./manager-
|
|
63
|
+
import "./memory-cli-ENCASZJk.js";
|
|
64
|
+
import "./manager-DrmlegR2.js";
|
|
65
65
|
import "./retry-BoS4e4X_.js";
|
|
66
66
|
import "./sqlite-D55gRQbH.js";
|
|
67
67
|
import "./target-errors-C9e6dMU_.js";
|
|
@@ -98,7 +98,7 @@ import "./prompt-style-Y2J72w6p.js";
|
|
|
98
98
|
import "./pairing-labels-CTL1gXZb.js";
|
|
99
99
|
import "./exec-approvals-DEigTi7M.js";
|
|
100
100
|
import "./nodes-screen-BZS89z6C.js";
|
|
101
|
-
import "./pi-tools.policy-
|
|
101
|
+
import "./pi-tools.policy-Bx5zp45n.js";
|
|
102
102
|
import "./control-service-C0pRqIFv.js";
|
|
103
103
|
import "./stagger-CZ1Rrj7O.js";
|
|
104
104
|
import "./channel-selection-9fIQGtZy.js";
|