@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
|
@@ -60,8 +60,8 @@ import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJ
|
|
|
60
60
|
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DpMnSIi5.js";
|
|
61
61
|
import { a as buildModelAliasLines, n as resolveModel } from "./model-ECsJuJew.js";
|
|
62
62
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
|
|
63
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
64
|
-
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-
|
|
63
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-ENCASZJk.js";
|
|
64
|
+
import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-DrmlegR2.js";
|
|
65
65
|
import { n as retryAsync } from "./retry-BoS4e4X_.js";
|
|
66
66
|
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-C9e6dMU_.js";
|
|
67
67
|
import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-DIi9uyC6.js";
|
|
@@ -94,7 +94,7 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
|
|
|
94
94
|
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-BZS89z6C.js";
|
|
95
95
|
import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-D3rffA64.js";
|
|
96
96
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CjL9F9WT.js";
|
|
97
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
97
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-Bx5zp45n.js";
|
|
98
98
|
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-C0pRqIFv.js";
|
|
99
99
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CZ1Rrj7O.js";
|
|
100
100
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-DF8wPn-_.js";
|
|
@@ -28996,6 +28996,7 @@ async function resolveDetachScriptPath(params) {
|
|
|
28996
28996
|
return cachedScriptPath;
|
|
28997
28997
|
}
|
|
28998
28998
|
async function buildLongTaskPromptSuffix(params) {
|
|
28999
|
+
if (params.cronEnabled === false) return "";
|
|
28999
29000
|
const scriptPath = await resolveDetachScriptPath(params);
|
|
29000
29001
|
if (!scriptPath) return "";
|
|
29001
29002
|
return "\n\n" + [
|
|
@@ -29007,10 +29008,7 @@ async function buildLongTaskPromptSuffix(params) {
|
|
|
29007
29008
|
" • workdir: absolute path you own (e.g. the agent workspace).",
|
|
29008
29009
|
" • Script spawns under setsid+nohup+disown, writes task-<id>.{pid,cmd,started,log,status} files.",
|
|
29009
29010
|
"- 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.",
|
|
29010
|
-
"- Register a cron monitor
|
|
29011
|
-
" • schedule: { kind: \"interval\", ms: 180000 } (every 3 minutes; minimum 60000)",
|
|
29012
|
-
" • payload: { kind: \"agent\", sessionTarget: \"isolated\", text: <job prompt> }",
|
|
29013
|
-
" 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.",
|
|
29011
|
+
"- 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.",
|
|
29014
29012
|
"- Safe status read (inside the monitor turn):",
|
|
29015
29013
|
" `status=$(cat \"<workdir>/task-<id>.status\" 2>/dev/null || echo missing)`",
|
|
29016
29014
|
" 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.",
|
|
@@ -29018,7 +29016,8 @@ async function buildLongTaskPromptSuffix(params) {
|
|
|
29018
29016
|
" • If status begins with `running`: tail -n 20 <log>, post a one-sentence progress line.",
|
|
29019
29017
|
" • If status begins with `complete`: post a final summary with rc and tail, then call cron action=remove on this job id.",
|
|
29020
29018
|
" • If status begins with `aborted`: post a failure summary with signal and tail, then call cron action=remove.",
|
|
29021
|
-
" • Never leave stale monitors running after the task finishes."
|
|
29019
|
+
" • Never leave stale monitors running after the task finishes.",
|
|
29020
|
+
"- Inspecting and killing tasks: use `task_list` to enumerate detached tasks in the workspace (returns id/pid/alive/status/started for each), and `task_cancel` with `taskId` (and optional `signal`, default SIGTERM) to terminate a running task. Prefer these over raw `kill`/`ps` exec calls — they share the detach script's task-id allow-list and report alreadyDead cleanly."
|
|
29022
29021
|
].join("\n");
|
|
29023
29022
|
}
|
|
29024
29023
|
|
|
@@ -30091,7 +30090,8 @@ async function runEmbeddedAttempt(params) {
|
|
|
30091
30090
|
const longTaskSuffix = await buildLongTaskPromptSuffix({
|
|
30092
30091
|
argv1: process.argv[1],
|
|
30093
30092
|
cwd: process.cwd(),
|
|
30094
|
-
moduleUrl: import.meta.url
|
|
30093
|
+
moduleUrl: import.meta.url,
|
|
30094
|
+
cronEnabled: process.env.SYMI_SKIP_CRON !== "1" && params.config?.cron?.enabled !== false
|
|
30095
30095
|
});
|
|
30096
30096
|
const emailCapabilitySuffix = buildEmailCapabilityPromptSuffix();
|
|
30097
30097
|
const systemPromptText = createSystemPromptOverride(appendPrompt + longTaskSuffix + emailCapabilitySuffix + profilePromptSuffix)();
|
|
@@ -31935,7 +31935,7 @@ async function runAgentTurn(params) {
|
|
|
31935
31935
|
function createDefaultDeps() {
|
|
31936
31936
|
return {
|
|
31937
31937
|
sendMessageWhatsApp: async (...args) => {
|
|
31938
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
31938
|
+
const { sendMessageWhatsApp } = await import("./web-BJ5dUZso.js");
|
|
31939
31939
|
return await sendMessageWhatsApp(...args);
|
|
31940
31940
|
},
|
|
31941
31941
|
sendMessageTelegram: async (...args) => {
|
|
@@ -50366,7 +50366,7 @@ function loadWebLoginQr() {
|
|
|
50366
50366
|
return webLoginQrPromise;
|
|
50367
50367
|
}
|
|
50368
50368
|
function loadWebChannel() {
|
|
50369
|
-
webChannelPromise ??= import("./web-
|
|
50369
|
+
webChannelPromise ??= import("./web-BJ5dUZso.js");
|
|
50370
50370
|
return webChannelPromise;
|
|
50371
50371
|
}
|
|
50372
50372
|
function loadWhatsAppActions() {
|
|
@@ -52122,7 +52122,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
52122
52122
|
};
|
|
52123
52123
|
}
|
|
52124
52124
|
}
|
|
52125
|
-
function resolveWorkdir(workdir, warnings) {
|
|
52125
|
+
function resolveWorkdir$1(workdir, warnings) {
|
|
52126
52126
|
const fallback = safeCwd() ?? homedir();
|
|
52127
52127
|
try {
|
|
52128
52128
|
if (statSync(workdir).isDirectory()) return workdir;
|
|
@@ -53194,7 +53194,7 @@ function createExecTool(defaults) {
|
|
|
53194
53194
|
});
|
|
53195
53195
|
workdir = resolved.hostWorkdir;
|
|
53196
53196
|
containerWorkdir = resolved.containerWorkdir;
|
|
53197
|
-
} else workdir = resolveWorkdir(rawWorkdir, warnings);
|
|
53197
|
+
} else workdir = resolveWorkdir$1(rawWorkdir, warnings);
|
|
53198
53198
|
const baseEnv = coerceEnv(process.env);
|
|
53199
53199
|
if (host !== "sandbox" && params.env) validateHostEnv(params.env);
|
|
53200
53200
|
const mergedEnv = params.env ? {
|
|
@@ -63411,6 +63411,254 @@ function createSubagentsTool(opts) {
|
|
|
63411
63411
|
};
|
|
63412
63412
|
}
|
|
63413
63413
|
|
|
63414
|
+
//#endregion
|
|
63415
|
+
//#region src/agents/tools/task-tool.ts
|
|
63416
|
+
/**
|
|
63417
|
+
* Long-task management tools (task_list, task_cancel).
|
|
63418
|
+
*
|
|
63419
|
+
* Companions to the detach-task pattern in skills/long-task. The detach
|
|
63420
|
+
* script writes task-<id>.{pid,cmd,started,log,status} state files into
|
|
63421
|
+
* the agent's workspace; these tools read and act on those files so the
|
|
63422
|
+
* agent can answer "what's running?" and kill a task without needing
|
|
63423
|
+
* shell access.
|
|
63424
|
+
*
|
|
63425
|
+
* task-id allow-list mirrors detach-task.sh: 1–60 chars from
|
|
63426
|
+
* [a-zA-Z0-9._-], must not start with '.' or '-'. Diverging would let the
|
|
63427
|
+
* agent kill processes it never spawned via path traversal.
|
|
63428
|
+
*/
|
|
63429
|
+
const TASK_FILE_PREFIX = "task-";
|
|
63430
|
+
const TASK_ID_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
|
|
63431
|
+
const TASK_FILE_SUFFIXES = [
|
|
63432
|
+
".pid",
|
|
63433
|
+
".status",
|
|
63434
|
+
".started",
|
|
63435
|
+
".cmd",
|
|
63436
|
+
".log"
|
|
63437
|
+
];
|
|
63438
|
+
const ALLOWED_SIGNALS = new Set([
|
|
63439
|
+
"SIGTERM",
|
|
63440
|
+
"SIGINT",
|
|
63441
|
+
"SIGHUP",
|
|
63442
|
+
"SIGQUIT",
|
|
63443
|
+
"SIGKILL",
|
|
63444
|
+
"SIGUSR1",
|
|
63445
|
+
"SIGUSR2"
|
|
63446
|
+
]);
|
|
63447
|
+
const TaskListSchema = Type.Object({ workdir: Type.Optional(Type.String()) });
|
|
63448
|
+
const TaskCancelSchema = Type.Object({
|
|
63449
|
+
taskId: Type.String(),
|
|
63450
|
+
workdir: Type.Optional(Type.String()),
|
|
63451
|
+
signal: Type.Optional(Type.String())
|
|
63452
|
+
});
|
|
63453
|
+
function normaliseSignal(input) {
|
|
63454
|
+
if (!input) return "SIGTERM";
|
|
63455
|
+
const upper = input.trim().toUpperCase();
|
|
63456
|
+
const candidate = upper.startsWith("SIG") ? upper : `SIG${upper}`;
|
|
63457
|
+
if (ALLOWED_SIGNALS.has(candidate)) return candidate;
|
|
63458
|
+
throw new Error(`Unsupported signal: ${input}. Allowed: TERM, INT, HUP, QUIT, KILL, USR1, USR2.`);
|
|
63459
|
+
}
|
|
63460
|
+
function isPidAlive(pid) {
|
|
63461
|
+
try {
|
|
63462
|
+
process.kill(pid, 0);
|
|
63463
|
+
return true;
|
|
63464
|
+
} catch (err) {
|
|
63465
|
+
if (err.code === "EPERM") return true;
|
|
63466
|
+
return false;
|
|
63467
|
+
}
|
|
63468
|
+
}
|
|
63469
|
+
async function safeRead(filePath) {
|
|
63470
|
+
try {
|
|
63471
|
+
return (await fs.promises.readFile(filePath, "utf8")).trim();
|
|
63472
|
+
} catch {
|
|
63473
|
+
return null;
|
|
63474
|
+
}
|
|
63475
|
+
}
|
|
63476
|
+
function resolveWorkdir(deps, override) {
|
|
63477
|
+
const raw = override?.trim();
|
|
63478
|
+
if (!raw) return deps.workspaceDir;
|
|
63479
|
+
if (!path.isAbsolute(raw)) throw new Error(`workdir must be an absolute path (got: ${raw})`);
|
|
63480
|
+
return raw;
|
|
63481
|
+
}
|
|
63482
|
+
async function readTaskInfo(workdir, id) {
|
|
63483
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${id}.pid`);
|
|
63484
|
+
const [pidText, status, started, cmd] = await Promise.all([
|
|
63485
|
+
safeRead(pidPath),
|
|
63486
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`)),
|
|
63487
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.started`)),
|
|
63488
|
+
safeRead(path.join(workdir, `${TASK_FILE_PREFIX}${id}.cmd`))
|
|
63489
|
+
]);
|
|
63490
|
+
let pid = null;
|
|
63491
|
+
if (pidText) {
|
|
63492
|
+
const parsed = Number.parseInt(pidText, 10);
|
|
63493
|
+
if (Number.isFinite(parsed) && parsed > 0) pid = parsed;
|
|
63494
|
+
}
|
|
63495
|
+
return {
|
|
63496
|
+
id,
|
|
63497
|
+
pid,
|
|
63498
|
+
alive: pid !== null && isPidAlive(pid),
|
|
63499
|
+
status: status ?? "missing",
|
|
63500
|
+
started,
|
|
63501
|
+
cmd,
|
|
63502
|
+
pidPath,
|
|
63503
|
+
statusPath: path.join(workdir, `${TASK_FILE_PREFIX}${id}.status`),
|
|
63504
|
+
logPath: path.join(workdir, `${TASK_FILE_PREFIX}${id}.log`)
|
|
63505
|
+
};
|
|
63506
|
+
}
|
|
63507
|
+
function createTaskListTool(deps) {
|
|
63508
|
+
return {
|
|
63509
|
+
label: "Task List",
|
|
63510
|
+
name: "task_list",
|
|
63511
|
+
description: `List long-running detached tasks in the agent's workspace.
|
|
63512
|
+
|
|
63513
|
+
Globs task-<id>.{pid,status,started,cmd,log} files, reads their state, and
|
|
63514
|
+
checks each PID's liveness. Use this to find the task-id of a running
|
|
63515
|
+
detach-task before calling task_cancel, or to answer "what's running right
|
|
63516
|
+
now?" without re-asking the user.
|
|
63517
|
+
|
|
63518
|
+
Returns: { workdir, tasks: [{ id, pid, alive, status, started, cmd, pidPath, statusPath, logPath }] }.
|
|
63519
|
+
Tasks whose .pid file is missing are still listed (alive=false, pid=null) so
|
|
63520
|
+
the agent can spot orphan state files.`,
|
|
63521
|
+
parameters: TaskListSchema,
|
|
63522
|
+
execute: async (_toolCallId, args) => {
|
|
63523
|
+
const override = readStringParam(args, "workdir");
|
|
63524
|
+
let workdir;
|
|
63525
|
+
try {
|
|
63526
|
+
workdir = resolveWorkdir(deps, override);
|
|
63527
|
+
} catch (err) {
|
|
63528
|
+
return jsonResult({
|
|
63529
|
+
workdir: override ?? deps.workspaceDir,
|
|
63530
|
+
tasks: [],
|
|
63531
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63532
|
+
});
|
|
63533
|
+
}
|
|
63534
|
+
let entries;
|
|
63535
|
+
try {
|
|
63536
|
+
entries = await fs.promises.readdir(workdir);
|
|
63537
|
+
} catch (err) {
|
|
63538
|
+
if (err.code === "ENOENT") return jsonResult({
|
|
63539
|
+
workdir,
|
|
63540
|
+
tasks: []
|
|
63541
|
+
});
|
|
63542
|
+
return jsonResult({
|
|
63543
|
+
workdir,
|
|
63544
|
+
tasks: [],
|
|
63545
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63546
|
+
});
|
|
63547
|
+
}
|
|
63548
|
+
const taskIds = /* @__PURE__ */ new Set();
|
|
63549
|
+
for (const entry of entries) {
|
|
63550
|
+
if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
|
|
63551
|
+
for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
|
|
63552
|
+
const id = entry.slice(5, -suffix.length);
|
|
63553
|
+
if (id.length > 0 && TASK_ID_RE.test(id)) taskIds.add(id);
|
|
63554
|
+
break;
|
|
63555
|
+
}
|
|
63556
|
+
}
|
|
63557
|
+
const tasks = await Promise.all([...taskIds].toSorted().map((id) => readTaskInfo(workdir, id)));
|
|
63558
|
+
return jsonResult({
|
|
63559
|
+
workdir,
|
|
63560
|
+
tasks
|
|
63561
|
+
});
|
|
63562
|
+
}
|
|
63563
|
+
};
|
|
63564
|
+
}
|
|
63565
|
+
function createTaskCancelTool(deps) {
|
|
63566
|
+
return {
|
|
63567
|
+
label: "Task Cancel",
|
|
63568
|
+
name: "task_cancel",
|
|
63569
|
+
description: `Send a signal (default SIGTERM) to a running detached task.
|
|
63570
|
+
|
|
63571
|
+
Reads task-<id>.pid in the workdir, validates the recorded PID is alive,
|
|
63572
|
+
and sends the signal via process.kill. The task's TERM/INT/HUP trap will
|
|
63573
|
+
write an "aborted" status before exiting, so a follow-up task_list call
|
|
63574
|
+
sees the canonical end state.
|
|
63575
|
+
|
|
63576
|
+
task-id must match the same allow-list as detach-task.sh: 1–60 chars from
|
|
63577
|
+
[a-zA-Z0-9._-], no leading '.' or '-'. signal accepts TERM (default), INT,
|
|
63578
|
+
HUP, QUIT, KILL, USR1, USR2 — with or without the "SIG" prefix.
|
|
63579
|
+
|
|
63580
|
+
Returns: { ok, taskId, pid, sentSignal, alreadyDead?, error? }.`,
|
|
63581
|
+
parameters: TaskCancelSchema,
|
|
63582
|
+
execute: async (_toolCallId, args) => {
|
|
63583
|
+
const params = args;
|
|
63584
|
+
const taskId = readStringParam(params, "taskId", { required: true });
|
|
63585
|
+
if (!TASK_ID_RE.test(taskId)) return jsonResult({
|
|
63586
|
+
ok: false,
|
|
63587
|
+
taskId,
|
|
63588
|
+
error: "taskId must be 1–60 chars from [a-zA-Z0-9._-] and must not start with '.' or '-'."
|
|
63589
|
+
});
|
|
63590
|
+
const override = readStringParam(params, "workdir");
|
|
63591
|
+
let workdir;
|
|
63592
|
+
try {
|
|
63593
|
+
workdir = resolveWorkdir(deps, override);
|
|
63594
|
+
} catch (err) {
|
|
63595
|
+
return jsonResult({
|
|
63596
|
+
ok: false,
|
|
63597
|
+
taskId,
|
|
63598
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63599
|
+
});
|
|
63600
|
+
}
|
|
63601
|
+
const signalRaw = readStringParam(params, "signal");
|
|
63602
|
+
let signal;
|
|
63603
|
+
try {
|
|
63604
|
+
signal = normaliseSignal(signalRaw);
|
|
63605
|
+
} catch (err) {
|
|
63606
|
+
return jsonResult({
|
|
63607
|
+
ok: false,
|
|
63608
|
+
taskId,
|
|
63609
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63610
|
+
});
|
|
63611
|
+
}
|
|
63612
|
+
const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
|
|
63613
|
+
let pidText;
|
|
63614
|
+
try {
|
|
63615
|
+
pidText = (await fs.promises.readFile(pidPath, "utf8")).trim();
|
|
63616
|
+
} catch (err) {
|
|
63617
|
+
if (err.code === "ENOENT") return jsonResult({
|
|
63618
|
+
ok: false,
|
|
63619
|
+
taskId,
|
|
63620
|
+
error: `no pid file at ${pidPath} — task is unknown or already cleaned up`
|
|
63621
|
+
});
|
|
63622
|
+
return jsonResult({
|
|
63623
|
+
ok: false,
|
|
63624
|
+
taskId,
|
|
63625
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63626
|
+
});
|
|
63627
|
+
}
|
|
63628
|
+
const pid = Number.parseInt(pidText, 10);
|
|
63629
|
+
if (!Number.isFinite(pid) || pid <= 0) return jsonResult({
|
|
63630
|
+
ok: false,
|
|
63631
|
+
taskId,
|
|
63632
|
+
error: `pid file at ${pidPath} did not contain a positive integer`
|
|
63633
|
+
});
|
|
63634
|
+
if (!isPidAlive(pid)) return jsonResult({
|
|
63635
|
+
ok: false,
|
|
63636
|
+
taskId,
|
|
63637
|
+
pid,
|
|
63638
|
+
alreadyDead: true,
|
|
63639
|
+
error: "process is no longer running"
|
|
63640
|
+
});
|
|
63641
|
+
try {
|
|
63642
|
+
process.kill(pid, signal);
|
|
63643
|
+
} catch (err) {
|
|
63644
|
+
return jsonResult({
|
|
63645
|
+
ok: false,
|
|
63646
|
+
taskId,
|
|
63647
|
+
pid,
|
|
63648
|
+
sentSignal: signal,
|
|
63649
|
+
error: err instanceof Error ? err.message : String(err)
|
|
63650
|
+
});
|
|
63651
|
+
}
|
|
63652
|
+
return jsonResult({
|
|
63653
|
+
ok: true,
|
|
63654
|
+
taskId,
|
|
63655
|
+
pid,
|
|
63656
|
+
sentSignal: signal
|
|
63657
|
+
});
|
|
63658
|
+
}
|
|
63659
|
+
};
|
|
63660
|
+
}
|
|
63661
|
+
|
|
63414
63662
|
//#endregion
|
|
63415
63663
|
//#region src/agents/tools/tts-tool.ts
|
|
63416
63664
|
const TtsToolSchema = Type.Object({
|
|
@@ -64711,6 +64959,8 @@ function createSymiTools(options) {
|
|
|
64711
64959
|
config: options?.config
|
|
64712
64960
|
}),
|
|
64713
64961
|
createCronTool({ agentSessionKey: options?.agentSessionKey }),
|
|
64962
|
+
createTaskListTool({ workspaceDir }),
|
|
64963
|
+
createTaskCancelTool({ workspaceDir }),
|
|
64714
64964
|
...messageTool ? [messageTool] : [],
|
|
64715
64965
|
createTtsTool({
|
|
64716
64966
|
agentChannel: options?.agentChannel,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { n as resolveAgentConfig } from "./agent-scope-
|
|
2
|
+
import { n as resolveAgentConfig } from "./agent-scope-Cpm7a9ss.js";
|
|
3
3
|
|
|
4
4
|
//#region src/agents/identity.ts
|
|
5
5
|
const DEFAULT_ACK_REACTION = "👀";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, i as buildAgentPeerSessionKey, n as DEFAULT_MAIN_KEY, p as normalizeAccountId, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
|
|
3
|
-
import { Z as shouldLogVerbose } from "./registry-
|
|
4
|
-
import { c as resolveDefaultAgentId } from "./agent-scope-
|
|
5
|
-
import { y as logDebug } from "./workspace-
|
|
3
|
+
import { Z as shouldLogVerbose } from "./registry-X6fUE0K7.js";
|
|
4
|
+
import { c as resolveDefaultAgentId } from "./agent-scope-Cpm7a9ss.js";
|
|
5
|
+
import { y as logDebug } from "./workspace-CywO4ayZ.js";
|
|
6
6
|
import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
|
|
7
|
-
import { t as listBindings } from "./bindings-
|
|
7
|
+
import { t as listBindings } from "./bindings-xcRox9xM.js";
|
|
8
8
|
|
|
9
9
|
//#region src/routing/resolve-route.ts
|
|
10
10
|
var resolve_route_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -14,7 +14,7 @@ import "./client-qUlxXXVJ.js";
|
|
|
14
14
|
import "./call-BrRWr7Lj.js";
|
|
15
15
|
import "./message-channel-C9dERklz.js";
|
|
16
16
|
import "./pairing-token-Byh6drgn.js";
|
|
17
|
-
import "./subagent-registry-
|
|
17
|
+
import "./subagent-registry-C1OyZl-M.js";
|
|
18
18
|
import "./sessions-BPD85pWA.js";
|
|
19
19
|
import "./tokens-Csntmwwn.js";
|
|
20
20
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
|
|
|
52
52
|
import "./thinking-8sKPnzpp.js";
|
|
53
53
|
import "./models-config-J1x_DaPn.js";
|
|
54
54
|
import "./reply-prefix-BUN71nd5.js";
|
|
55
|
-
import "./memory-cli-
|
|
56
|
-
import "./manager-
|
|
55
|
+
import "./memory-cli-Qgbcxvuf.js";
|
|
56
|
+
import "./manager-DDELj5o9.js";
|
|
57
57
|
import "./gemini-auth-DEakvf-D.js";
|
|
58
58
|
import "./retry-C4Q_VPOo.js";
|
|
59
59
|
import "./sqlite-BP8tiuca.js";
|
|
@@ -97,14 +97,14 @@ import "./replies-Sxbew659.js";
|
|
|
97
97
|
import "./onboard-helpers-CF0Cp3OB.js";
|
|
98
98
|
import "./prompt-style-BxVdnrLq.js";
|
|
99
99
|
import "./pairing-labels-BHx_CdbP.js";
|
|
100
|
-
import "./pi-tools.policy-
|
|
100
|
+
import "./pi-tools.policy-o0ytjRqu.js";
|
|
101
101
|
import { t as ensureSymiCliOnPath } from "./path-env-CaiY2aOj.js";
|
|
102
102
|
import "./catalog-KcLvtTfa.js";
|
|
103
103
|
import "./note-DewoEWtc.js";
|
|
104
104
|
import "./plugin-auto-enable-pQEg2Mly.js";
|
|
105
|
-
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-
|
|
105
|
+
import { t as ensurePluginRegistryLoaded } from "./plugin-registry-Cuc8ORuR.js";
|
|
106
106
|
import { t as assertSupportedRuntime } from "./runtime-guard-BofkqBu7.js";
|
|
107
|
-
import { t as emitCliBanner } from "./banner-
|
|
107
|
+
import { t as emitCliBanner } from "./banner-DrNha2_N.js";
|
|
108
108
|
import "./doctor-config-flow-B2dVxbL7.js";
|
|
109
109
|
import { n as ensureConfigReady } from "./config-guard-BvqCjFPk.js";
|
|
110
110
|
import process$1 from "node:process";
|
|
@@ -119,7 +119,7 @@ const routeHealth = {
|
|
|
119
119
|
const verbose = getVerboseFlag(argv, { includeDebug: true });
|
|
120
120
|
const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
|
|
121
121
|
if (timeoutMs === null) return false;
|
|
122
|
-
const { healthCommand } = await import("./health-
|
|
122
|
+
const { healthCommand } = await import("./health-2jkjZxY8.js").then((n) => n.i);
|
|
123
123
|
await healthCommand({
|
|
124
124
|
json,
|
|
125
125
|
timeoutMs,
|
|
@@ -139,7 +139,7 @@ const routeStatus = {
|
|
|
139
139
|
const verbose = getVerboseFlag(argv, { includeDebug: true });
|
|
140
140
|
const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
|
|
141
141
|
if (timeoutMs === null) return false;
|
|
142
|
-
const { statusCommand } = await import("./status-
|
|
142
|
+
const { statusCommand } = await import("./status-CBnCPUMG.js").then((n) => n.t);
|
|
143
143
|
await statusCommand({
|
|
144
144
|
json,
|
|
145
145
|
deep,
|
|
@@ -173,7 +173,7 @@ const routeAgentsList = {
|
|
|
173
173
|
run: async (argv) => {
|
|
174
174
|
const json = hasFlag(argv, "--json");
|
|
175
175
|
const bindings = hasFlag(argv, "--bindings");
|
|
176
|
-
const { agentsListCommand } = await import("./agents-
|
|
176
|
+
const { agentsListCommand } = await import("./agents-DlAvDWxz.js").then((n) => n.t);
|
|
177
177
|
await agentsListCommand({
|
|
178
178
|
json,
|
|
179
179
|
bindings
|
|
@@ -190,7 +190,7 @@ const routeMemoryStatus = {
|
|
|
190
190
|
const deep = hasFlag(argv, "--deep");
|
|
191
191
|
const index = hasFlag(argv, "--index");
|
|
192
192
|
const verbose = hasFlag(argv, "--verbose");
|
|
193
|
-
const { runMemoryStatus } = await import("./memory-cli-
|
|
193
|
+
const { runMemoryStatus } = await import("./memory-cli-Qgbcxvuf.js").then((n) => n.t);
|
|
194
194
|
await runMemoryStatus({
|
|
195
195
|
agent,
|
|
196
196
|
json,
|
|
@@ -244,7 +244,7 @@ const routes = [
|
|
|
244
244
|
const pathArg = getCommandPositionals(argv)[2];
|
|
245
245
|
if (!pathArg) return false;
|
|
246
246
|
const json = hasFlag(argv, "--json");
|
|
247
|
-
const { runConfigGet } = await import("./config-cli-
|
|
247
|
+
const { runConfigGet } = await import("./config-cli-C7DIbGxx.js");
|
|
248
248
|
await runConfigGet({
|
|
249
249
|
path: pathArg,
|
|
250
250
|
json
|
|
@@ -257,7 +257,7 @@ const routes = [
|
|
|
257
257
|
run: async (argv) => {
|
|
258
258
|
const pathArg = getCommandPositionals(argv)[2];
|
|
259
259
|
if (!pathArg) return false;
|
|
260
|
-
const { runConfigUnset } = await import("./config-cli-
|
|
260
|
+
const { runConfigUnset } = await import("./config-cli-C7DIbGxx.js");
|
|
261
261
|
await runConfigUnset({ path: pathArg });
|
|
262
262
|
return true;
|
|
263
263
|
}
|
|
@@ -271,7 +271,7 @@ const routes = [
|
|
|
271
271
|
const local = hasFlag(argv, "--local");
|
|
272
272
|
const json = hasFlag(argv, "--json");
|
|
273
273
|
const plain = hasFlag(argv, "--plain");
|
|
274
|
-
const { modelsListCommand } = await import("./models-
|
|
274
|
+
const { modelsListCommand } = await import("./models-COhUz7M9.js").then((n) => n.t);
|
|
275
275
|
await modelsListCommand({
|
|
276
276
|
all,
|
|
277
277
|
local,
|
|
@@ -302,7 +302,7 @@ const routes = [
|
|
|
302
302
|
const plain = hasFlag(argv, "--plain");
|
|
303
303
|
const check = hasFlag(argv, "--check");
|
|
304
304
|
const probe = hasFlag(argv, "--probe");
|
|
305
|
-
const { modelsStatusCommand } = await import("./models-
|
|
305
|
+
const { modelsStatusCommand } = await import("./models-COhUz7M9.js").then((n) => n.t);
|
|
306
306
|
await modelsStatusCommand({
|
|
307
307
|
json,
|
|
308
308
|
plain,
|
|
@@ -380,7 +380,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
380
380
|
assertSupportedRuntime();
|
|
381
381
|
if (await tryRouteCli(normalizedArgv)) return;
|
|
382
382
|
enableConsoleCapture();
|
|
383
|
-
const { buildProgram } = await import("./program-
|
|
383
|
+
const { buildProgram } = await import("./program-DKh41c2a.js");
|
|
384
384
|
const program = buildProgram();
|
|
385
385
|
installUnhandledRejectionHandler();
|
|
386
386
|
process$1.on("uncaughtException", (error) => {
|
|
@@ -412,10 +412,10 @@ async function runCli(argv = process$1.argv) {
|
|
|
412
412
|
const { getProgramContext } = await import("./program-context-DeZ44oQ9.js").then((n) => n.n);
|
|
413
413
|
const ctx = getProgramContext(program);
|
|
414
414
|
if (ctx) {
|
|
415
|
-
const { registerCoreCliByName } = await import("./command-registry-
|
|
415
|
+
const { registerCoreCliByName } = await import("./command-registry-LjFltTU9.js").then((n) => n.t);
|
|
416
416
|
await registerCoreCliByName(program, ctx, primary, parseArgv);
|
|
417
417
|
}
|
|
418
|
-
const { registerSubCliByName } = await import("./register.subclis-
|
|
418
|
+
const { registerSubCliByName } = await import("./register.subclis-BCy0IDRv.js").then((n) => n.a);
|
|
419
419
|
await registerSubCliByName(program, primary);
|
|
420
420
|
}
|
|
421
421
|
const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
|
|
@@ -424,7 +424,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
424
424
|
primary,
|
|
425
425
|
hasBuiltinPrimary
|
|
426
426
|
})) {
|
|
427
|
-
const { registerPluginCliCommands } = await import("./cli-
|
|
427
|
+
const { registerPluginCliCommands } = await import("./cli-DjZzJy3t.js");
|
|
428
428
|
const { loadConfig } = await import("./config-DXt3pc08.js").then((n) => n.t);
|
|
429
429
|
registerPluginCliCommands(program, loadConfig());
|
|
430
430
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { J as logVerbose, Z as shouldLogVerbose } from "./registry-
|
|
2
|
-
import { _ as runExec } from "./workspace-
|
|
3
|
-
import { A as normalizeGoogleModelId, B as resolveApiKeyForProvider, C as normalizeProviderId, et as resolveSymiAgentDir, z as requireApiKey } from "./auth-profiles-
|
|
4
|
-
import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-
|
|
5
|
-
import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-
|
|
1
|
+
import { J as logVerbose, Z as shouldLogVerbose } from "./registry-X6fUE0K7.js";
|
|
2
|
+
import { _ as runExec } from "./workspace-CywO4ayZ.js";
|
|
3
|
+
import { A as normalizeGoogleModelId, B as resolveApiKeyForProvider, C as normalizeProviderId, et as resolveSymiAgentDir, z as requireApiKey } from "./auth-profiles-BzB_Exeq.js";
|
|
4
|
+
import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-C4WnAd-c.js";
|
|
5
|
+
import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-CY7v6vvp.js";
|
|
6
6
|
import { t as normalizeChatType } from "./chat-type-3FRbbjbq.js";
|
|
7
|
-
import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-
|
|
8
|
-
import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-
|
|
7
|
+
import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-BHF_fnIp.js";
|
|
8
|
+
import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-D80BsXr2.js";
|
|
9
9
|
import { n as fetchWithTimeout } from "./fetch-timeout-CVCBkyv1.js";
|
|
10
|
-
import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-
|
|
10
|
+
import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-tcdaIEhh.js";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import { constants } from "node:fs";
|
|
13
13
|
import os from "node:os";
|
|
14
|
-
import fs
|
|
14
|
+
import fs from "node:fs/promises";
|
|
15
15
|
import { fileURLToPath } from "node:url";
|
|
16
16
|
import crypto from "node:crypto";
|
|
17
17
|
import process$1 from "node:process";
|
|
@@ -693,7 +693,7 @@ var MediaAttachmentCache = class {
|
|
|
693
693
|
const size = await this.ensureLocalStat(entry);
|
|
694
694
|
if (entry.resolvedPath) {
|
|
695
695
|
if (size !== void 0 && size > params.maxBytes) throw new MediaUnderstandingSkipError("maxBytes", `Attachment ${params.attachmentIndex + 1} exceeds maxBytes ${params.maxBytes}`);
|
|
696
|
-
const buffer = await fs
|
|
696
|
+
const buffer = await fs.readFile(entry.resolvedPath);
|
|
697
697
|
entry.buffer = buffer;
|
|
698
698
|
entry.bufferMime = entry.bufferMime ?? entry.attachment.mime ?? await detectMime({
|
|
699
699
|
buffer,
|
|
@@ -763,10 +763,10 @@ var MediaAttachmentCache = class {
|
|
|
763
763
|
prefix: "symi-media",
|
|
764
764
|
extension: path.extname(bufferResult.fileName || "") || ""
|
|
765
765
|
});
|
|
766
|
-
await fs
|
|
766
|
+
await fs.writeFile(tmpPath, bufferResult.buffer);
|
|
767
767
|
entry.tempPath = tmpPath;
|
|
768
768
|
entry.tempCleanup = async () => {
|
|
769
|
-
await fs
|
|
769
|
+
await fs.unlink(tmpPath).catch(() => {});
|
|
770
770
|
};
|
|
771
771
|
return {
|
|
772
772
|
path: tmpPath,
|
|
@@ -813,12 +813,12 @@ var MediaAttachmentCache = class {
|
|
|
813
813
|
if (entry.statSize !== void 0) return entry.statSize;
|
|
814
814
|
try {
|
|
815
815
|
const currentPath = entry.resolvedPath;
|
|
816
|
-
const stat = await fs
|
|
816
|
+
const stat = await fs.stat(currentPath);
|
|
817
817
|
if (!stat.isFile()) {
|
|
818
818
|
entry.resolvedPath = void 0;
|
|
819
819
|
return;
|
|
820
820
|
}
|
|
821
|
-
const canonicalPath = await fs
|
|
821
|
+
const canonicalPath = await fs.realpath(currentPath).catch(() => currentPath);
|
|
822
822
|
if (!isInboundPathAllowed({
|
|
823
823
|
filePath: canonicalPath,
|
|
824
824
|
roots: await this.getCanonicalLocalPathRoots()
|
|
@@ -840,7 +840,7 @@ var MediaAttachmentCache = class {
|
|
|
840
840
|
if (this.canonicalLocalPathRoots) return await this.canonicalLocalPathRoots;
|
|
841
841
|
this.canonicalLocalPathRoots = (async () => mergeInboundPathRoots(this.localPathRoots, await Promise.all(this.localPathRoots.map(async (root) => {
|
|
842
842
|
if (root.includes("*")) return root;
|
|
843
|
-
return await fs
|
|
843
|
+
return await fs.realpath(root).catch(() => root);
|
|
844
844
|
}))))();
|
|
845
845
|
return await this.canonicalLocalPathRoots;
|
|
846
846
|
}
|
|
@@ -883,7 +883,7 @@ async function loadModelCatalog(params) {
|
|
|
883
883
|
try {
|
|
884
884
|
const cfg = params?.config ?? loadConfig();
|
|
885
885
|
await ensureSymiModelsJson(cfg);
|
|
886
|
-
await (await import("./pi-auth-json-
|
|
886
|
+
await (await import("./pi-auth-json-Bv1NzJdR.js").then((n) => n.n)).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir(), { config: cfg });
|
|
887
887
|
const piSdk = await importPiSdk();
|
|
888
888
|
const agentDir = resolveSymiAgentDir();
|
|
889
889
|
const { join } = await import("node:path");
|
|
@@ -943,7 +943,7 @@ function findModelInCatalog(catalog, provider, modelId) {
|
|
|
943
943
|
async function fileExists(filePath) {
|
|
944
944
|
if (!filePath) return false;
|
|
945
945
|
try {
|
|
946
|
-
await fs
|
|
946
|
+
await fs.stat(filePath);
|
|
947
947
|
return true;
|
|
948
948
|
} catch {
|
|
949
949
|
return false;
|
|
@@ -1043,7 +1043,7 @@ async function resolveCliOutput(params) {
|
|
|
1043
1043
|
const commandId = commandBase(params.command);
|
|
1044
1044
|
const fileOutput = commandId === "whisper-cli" ? resolveWhisperCppOutputPath(params.args) : commandId === "whisper" ? resolveWhisperOutputPath(params.args, params.mediaPath) : null;
|
|
1045
1045
|
if (fileOutput && await fileExists(fileOutput)) try {
|
|
1046
|
-
const content = await fs
|
|
1046
|
+
const content = await fs.readFile(fileOutput, "utf8");
|
|
1047
1047
|
if (content.trim()) return content.trim();
|
|
1048
1048
|
} catch {}
|
|
1049
1049
|
if (commandId === "gemini") {
|
|
@@ -1334,7 +1334,7 @@ async function runCliEntry(params) {
|
|
|
1334
1334
|
maxBytes,
|
|
1335
1335
|
timeoutMs
|
|
1336
1336
|
});
|
|
1337
|
-
const outputDir = await fs
|
|
1337
|
+
const outputDir = await fs.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
|
|
1338
1338
|
const mediaPath = pathResult.path;
|
|
1339
1339
|
const outputBase = path.join(outputDir, path.parse(mediaPath).name);
|
|
1340
1340
|
const templCtx = {
|
|
@@ -1368,7 +1368,7 @@ async function runCliEntry(params) {
|
|
|
1368
1368
|
model: command
|
|
1369
1369
|
};
|
|
1370
1370
|
} finally {
|
|
1371
|
-
await fs
|
|
1371
|
+
await fs.rm(outputDir, {
|
|
1372
1372
|
recursive: true,
|
|
1373
1373
|
force: true
|
|
1374
1374
|
}).catch(() => {});
|
|
@@ -1412,9 +1412,9 @@ function candidateBinaryNames(name) {
|
|
|
1412
1412
|
}
|
|
1413
1413
|
async function isExecutable(filePath) {
|
|
1414
1414
|
try {
|
|
1415
|
-
if (!(await fs
|
|
1415
|
+
if (!(await fs.stat(filePath)).isFile()) return false;
|
|
1416
1416
|
if (process.platform === "win32") return true;
|
|
1417
|
-
await fs
|
|
1417
|
+
await fs.access(filePath, constants.X_OK);
|
|
1418
1418
|
return true;
|
|
1419
1419
|
} catch {
|
|
1420
1420
|
return false;
|