remoteclaw 0.1.0-next.cd6ddde → 0.1.0-next.cf9ccbe
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-79XhjwAj.js +32 -0
- package/dist/accounts-B1M3fOxL.js +272 -0
- package/dist/accounts-BwbvnKsW.js +205 -0
- package/dist/accounts-CIVjmTg9.js +270 -0
- package/dist/accounts-D1awQXKu.js +36 -0
- package/dist/accounts-DHkGVGUR.js +36 -0
- package/dist/accounts-P7cmIXUM.js +206 -0
- package/dist/accounts-XFgBY644.js +47 -0
- package/dist/accounts-_ZuNC5bz.js +47 -0
- package/dist/ack-reactions-BGJ9Vigf.js +621 -0
- package/dist/ack-reactions-Diu9O24z.js +621 -0
- package/dist/acp-cli-BwZ-va2P.js +1316 -0
- package/dist/acp-cli-eVKByz-j.js +1311 -0
- package/dist/active-listener--jrUO-8L.js +37 -0
- package/dist/active-listener-C7SyMcNY.js +37 -0
- package/dist/agent-BAxK2KQW.js +688 -0
- package/dist/agent-Dd5Yfhmq.js +687 -0
- package/dist/agent-helpers-5F0tdxud.js +400 -0
- package/dist/agent-scope-BA1HP4K6.js +114 -0
- package/dist/agent-scope-CAQLm3LP.js +116 -0
- package/dist/agents-2VlLHxv-.js +754 -0
- package/dist/agents.config-CmyzLYqW.js +116 -0
- package/dist/agents.config-DerBqRzk.js +116 -0
- package/dist/audio-ClIuKwkl.js +43 -0
- package/dist/audio-DqlIYYTb.js +43 -0
- package/dist/audit-Cn0cNCE4.js +3114 -0
- package/dist/audit-DXY4NHBC.js +3114 -0
- package/dist/auth-B-QK8JhI.js +315 -0
- package/dist/auth-C1zx1O24.js +314 -0
- package/dist/auth-DDmNYVMW.js +448 -0
- package/dist/auth-DH1wEw0w.js +448 -0
- package/dist/banner-CBWZhANO.js +294 -0
- package/dist/binaries-CYwLdubd.js +13 -0
- package/dist/bindings-DFAFatwT.js +69 -0
- package/dist/bindings-GUKIzFCp.js +69 -0
- package/dist/bonjour-discovery-AQMJqY4V.js +378 -0
- package/dist/bonjour-discovery-BLcPWHFJ.js +378 -0
- package/dist/boot/handler.js +28 -28
- package/dist/browser-cli-8Dv5ogFT.js +1690 -0
- package/dist/browser-cli-wNLo8SOy.js +1694 -0
- package/dist/build-info.json +3 -3
- package/dist/call-BTHzKFbN.js +518 -0
- package/dist/call-D_NchaCs.js +517 -0
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/catalog-DgpN5jxU.js +186 -0
- package/dist/catalog-k056Nh93.js +186 -0
- package/dist/channel-account-context-BHIy71Yh.js +133 -0
- package/dist/channel-account-context-DXU_-EkJ.js +133 -0
- package/dist/channel-activity-BatlvP_U.js +292 -0
- package/dist/channel-activity-BhT7NQ_v.js +94 -0
- package/dist/channel-activity-CvjEwpJz.js +94 -0
- package/dist/channel-options-BCccA2WC.js +32 -0
- package/dist/channel-options-VPR_pNyS.js +33 -0
- package/dist/channel-selection-AH6_y6RS.js +51 -0
- package/dist/channel-selection-ovohyJQZ.js +51 -0
- package/dist/channel-web-APDaQ_wp.js +2134 -0
- package/dist/channel-web-BW_YuNlT.js +2132 -0
- package/dist/channels-cli-BBkHQtBI.js +1440 -0
- package/dist/channels-cli-CKcOwL-Q.js +1436 -0
- package/dist/channels-status-issues-BbYNzwLp.js +18 -0
- package/dist/channels-status-issues-DRybAijg.js +18 -0
- package/dist/chat-envelope-AJFUAuBM.js +248 -0
- package/dist/chat-envelope-BrfcPlDM.js +248 -0
- package/dist/chrome-Bv2UtAMQ.js +1732 -0
- package/dist/chrome-C6Vc_7su.js +1733 -0
- package/dist/chunk-BzVoFUZL.js +341 -0
- package/dist/clack-prompter-C6mBTOzE.js +122 -0
- package/dist/clack-prompter-DKcYqv3o.js +121 -0
- package/dist/cleanup-utils-Cb-leJcy.js +94 -0
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-Cs1n6-eD.js +135 -0
- package/dist/cli-Di3p1tLN.js +131 -0
- package/dist/client-B6h7bgbF.js +2311 -0
- package/dist/client-CMtdm9Ii.js +2311 -0
- package/dist/clipboard-A06eV_5C.js +31 -0
- package/dist/clipboard-DQBl3coj.js +31 -0
- package/dist/command-format-BiiNHkWG.js +18 -0
- package/dist/command-format-Dntg_tnC.js +32 -0
- package/dist/command-logger/handler.js +1 -1
- package/dist/command-registry-BV2MH_iw.js +215 -0
- package/dist/commands-D93TXYhv.js +41 -0
- package/dist/commands-UD7V7QC9.js +41 -0
- package/dist/commands-registry-CCbTtSSK.js +891 -0
- package/dist/commands-registry-De8JhZLG.js +890 -0
- package/dist/common-D4fL3S2m.js +156 -0
- package/dist/common-DXNisGxw.js +156 -0
- package/dist/completion-cli-319xyosV.js +452 -0
- package/dist/completion-cli-B6Zimnek.js +452 -0
- package/dist/config-BTH7fB_v.js +3345 -0
- package/dist/config-DwuBnd6D.js +3347 -0
- package/dist/config-cli-c_Itt86J.js +247 -0
- package/dist/config-cli-rcMB3A3B.js +243 -0
- package/dist/config-guard-BcT7soTj.js +92 -0
- package/dist/config-guard-Bqak3bDc.js +75 -0
- package/dist/config-validation-CHEjSJ5K.js +18 -0
- package/dist/config-validation-CvgqLhyG.js +18 -0
- package/dist/configure-Cb3bbYnh.js +891 -0
- package/dist/configure-R2gWNv5y.js +889 -0
- package/dist/control-auth-DrGYtMJM.js +397 -0
- package/dist/control-auth-KY4Qdr2I.js +397 -0
- package/dist/control-ui-assets-DO1L6M0S.js +186 -0
- package/dist/control-ui-assets-S_TLo6Fs.js +186 -0
- package/dist/conversation-label-CMOfgCVl.js +36 -0
- package/dist/cron-cli-C7h_hLHu.js +495 -0
- package/dist/cron-cli-DTNg0Uvl.js +499 -0
- package/dist/daemon-cli-BlJS9zWM.js +737 -0
- package/dist/daemon-cli-Cfc1yszp.js +735 -0
- package/dist/daemon-cli.js +124 -1071
- package/dist/daemon-install-BbBLuLWg.js +60 -0
- package/dist/daemon-install-WEBvqVOj.js +56 -0
- package/dist/daemon-install-helpers-BVtPC2TK.js +504 -0
- package/dist/daemon-install-helpers-DVr51zvE.js +504 -0
- package/dist/deliver-EB272zWh.js +481 -0
- package/dist/deliver-iGD_woru.js +481 -0
- package/dist/delivery-queue-BDvalA10.js +244 -0
- package/dist/delivery-queue-BimvYz5E.js +244 -0
- package/dist/devices-cli-BXCOsNFc.js +323 -0
- package/dist/devices-cli-CHGdYfrz.js +319 -0
- package/dist/diagnostics-BzzhTQzK.js +35 -0
- package/dist/diagnostics-DILtxtcE.js +35 -0
- package/dist/directory-cli-COS40yI9.js +221 -0
- package/dist/directory-cli-Cb5j1JTC.js +225 -0
- package/dist/dispatcher-BUqxh_mA.js +174 -0
- package/dist/dispatcher-By-KZRWZ.js +173 -0
- package/dist/dm-policy-shared-BCp9_z3w.js +22 -0
- package/dist/dm-policy-shared-DgeKqjOu.js +22 -0
- package/dist/dns-cli-B8yyXB2N.js +203 -0
- package/dist/dns-cli-DAkTk-gM.js +199 -0
- package/dist/dock-B0bIIDS3.js +906 -0
- package/dist/dock-C3PzQ6CS.js +907 -0
- package/dist/doctor-completion-B_Zp4fZk.js +92 -0
- package/dist/doctor-completion-CZ1P5laQ.js +92 -0
- package/dist/doctor-config-flow-BDDsR2J1.js +978 -0
- package/dist/doctor-config-flow-CwFFRUic.js +979 -0
- package/dist/enable-C3I9dWel.js +59 -0
- package/dist/enable-DnwKeWnR.js +59 -0
- package/dist/entry.js +62 -6
- package/dist/env-DyyqmxSM.js +60 -0
- package/dist/errors-0dfGxeYQ.js +35 -0
- package/dist/errors-C1kDByVU.js +35 -0
- package/dist/exec-CAk1dxq_.js +164 -0
- package/dist/exec-epNpA1aU.js +164 -0
- package/dist/extensionAPI.js +263 -1088
- package/dist/fetch-BMQq41sB.js +281 -0
- package/dist/fetch-Cky99wYB.js +281 -0
- package/dist/fetch-D3tw4B4n.js +67 -0
- package/dist/fetch-Dgm9ZHFm.js +67 -0
- package/dist/file-lock-DWH0TfVu.js +107 -0
- package/dist/file-lock-DXW9h9ek.js +107 -0
- package/dist/fs-safe-BjSd07M4.js +115 -0
- package/dist/fs-safe-aWIhCWlb.js +125 -0
- package/dist/gateway-cli-BLeY_1DX.js +24154 -0
- package/dist/gateway-cli-Cu4vwhmi.js +24150 -0
- package/dist/gateway-rpc-B92CH0D3.js +28 -0
- package/dist/gateway-rpc-DZNlWapO.js +28 -0
- package/dist/gmail-setup-utils-CKyh29_R.js +422 -0
- package/dist/gmail-setup-utils-DquflkMR.js +423 -0
- package/dist/health-BYl7T-4m.js +1417 -0
- package/dist/health-DdviISKg.js +1414 -0
- package/dist/health-format-BE5TK5bs.js +28 -0
- package/dist/heartbeat-visibility-BO3iRpB6.js +125 -0
- package/dist/heartbeat-visibility-Cwp4TrTv.js +125 -0
- package/dist/help-format-D3JhWp1E.js +17 -0
- package/dist/hook-runner-global-C1thol1d.js +527 -0
- package/dist/hooks-cli-BKS9uZ0H.js +1221 -0
- package/dist/hooks-cli-FLWcCr9q.js +1217 -0
- package/dist/image-ops-CX41n0v5.js +354 -0
- package/dist/image-ops-DSL3eFfQ.js +354 -0
- package/dist/import-BSFgt760.js +604 -0
- package/dist/import-Da1CHJJg.js +606 -0
- package/dist/inbound-context-a5bzQvRt.js +68 -0
- package/dist/index.js +127 -101
- package/dist/inspect-BEpFbi0c.js +286 -0
- package/dist/inspect-BeNNpWna.js +286 -0
- package/dist/installs-CH7Qq_m_.js +319 -0
- package/dist/installs-CcM8H2YA.js +319 -0
- package/dist/ipv4-DNo9AFDu.js +46 -0
- package/dist/ipv4-VfoVR5uR.js +46 -0
- package/dist/ir-BPwP8hIc.js +972 -0
- package/dist/lifecycle-core-5Zxqwa6V.js +476 -0
- package/dist/lifecycle-core-C1bGeLby.js +474 -0
- package/dist/links-CtGBIrG8.js +15 -0
- package/dist/loader-BoP3JA-r.js +22411 -0
- package/dist/loader-DXbpue-L.js +22414 -0
- package/dist/logger-ASsO5Nz-.js +49 -0
- package/dist/logging-Cd9y2AdQ.js +20 -0
- package/dist/login-B2UXzgaB.js +61 -0
- package/dist/login-BEFL3xY9.js +62 -0
- package/dist/login-qr-C7wAz2fe.js +329 -0
- package/dist/login-qr-DWpUP1Ud.js +325 -0
- package/dist/logs-cli-CAcd-pXA.js +240 -0
- package/dist/logs-cli-D7Bzarht.js +236 -0
- package/dist/markdown-tables-BBNUZp4n.js +29 -0
- package/dist/markdown-tables-NgPcfXoF.js +29 -0
- package/dist/media-4-qOIjO-.js +971 -0
- package/dist/media-DTwJhAbE.js +9481 -0
- package/dist/message-action-names-BsNTjuBE.js +2520 -0
- package/dist/message-action-names-ocKcq8_3.js +2520 -0
- package/dist/message-channel-CtcVHawF.js +91 -0
- package/dist/mime-CAqaK3kp.js +146 -0
- package/dist/mime-ViuhRuMM.js +146 -0
- package/dist/net-DSkFMHJ8.js +225 -0
- package/dist/net-DTqfFYzt.js +225 -0
- package/dist/node-cli-BeXU67eQ.js +1458 -0
- package/dist/node-cli-i2aCtnmM.js +1462 -0
- package/dist/node-service-RyMlWp8N.js +67 -0
- package/dist/node-service-TL9b6Qfz.js +67 -0
- package/dist/nodes-cli-CtqnXBMD.js +1346 -0
- package/dist/nodes-cli-DgQU3LrG.js +1350 -0
- package/dist/nodes-screen-B7HJugJ0.js +250 -0
- package/dist/nodes-screen-nCRd71Mk.js +250 -0
- package/dist/note-B6142LyJ.js +92 -0
- package/dist/note-D-EI0czq.js +92 -0
- package/dist/npm-registry-spec-PPyRXSpx.js +786 -0
- package/dist/npm-registry-spec-uUmDWe6v.js +786 -0
- package/dist/npm-resolution-BC1LqCm2.js +86 -0
- package/dist/npm-resolution-DhlhUmRF.js +86 -0
- package/dist/onboard-CHowLVEG.js +647 -0
- package/dist/onboard-D_eCnKjt.js +649 -0
- package/dist/onboard-auth-cNtb3FTP.js +211 -0
- package/dist/onboard-auth-gwz-0mZ6.js +207 -0
- package/dist/onboard-channels-CFsUIDWq.js +2618 -0
- package/dist/onboard-channels-ZCML5CWb.js +2619 -0
- package/dist/onboard-helpers-8afRV_Tm.js +364 -0
- package/dist/onboard-helpers-DTRrJLj-.js +363 -0
- package/dist/onboard-remote-CFkvVAYg.js +127 -0
- package/dist/onboard-remote-JfBnmK70.js +127 -0
- package/dist/onboarding-DIxNghyi.js +586 -0
- package/dist/onboarding-Dhh0bjrb.js +588 -0
- package/dist/onboarding.finalize-5uipJuOl.js +403 -0
- package/dist/onboarding.finalize-De4etQul.js +405 -0
- package/dist/onboarding.gateway-config-DolBTXWT.js +196 -0
- package/dist/onboarding.gateway-config-rJkIamlG.js +202 -0
- package/dist/outbound-CPMaDtgC.js +220 -0
- package/dist/outbound-CYSuCMiW.js +221 -0
- package/dist/outbound-attachment-Ci02LXoq.js +18 -0
- package/dist/outbound-attachment-CqZ7Qc_o.js +18 -0
- package/dist/outbound-attachment-CuqWdsdV.js +18 -0
- package/dist/pairing-cli-B9JKvvST.js +126 -0
- package/dist/pairing-cli-C4HrfIHe.js +130 -0
- package/dist/pairing-labels-CBmGQ31P.js +9 -0
- package/dist/pairing-labels-D0xwC7Xb.js +9 -0
- package/dist/pairing-store-BoF0g-iN.js +459 -0
- package/dist/pairing-store-CseXj-5p.js +460 -0
- package/dist/path-env-CPZbb7me.js +89 -0
- package/dist/path-safety-BFE0XmGC.js +14 -0
- package/dist/path-safety-BJ8ge6Ho.js +14 -0
- package/dist/paths-DHuXVC00.js +229 -0
- package/dist/plugin-auto-enable-B_9J1XED.js +302 -0
- package/dist/plugin-auto-enable-DghjlFCL.js +301 -0
- package/dist/plugin-registry-68h2T8vi.js +33 -0
- package/dist/plugin-registry-BitdVPb4.js +33 -0
- package/dist/plugin-sdk/agents/subagent-registry.store.d.ts +0 -1
- package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +0 -11
- package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -4
- package/dist/plugin-sdk/auto-reply/reply/commands-subagents/shared.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/reply/commands-types.d.ts +1 -10
- package/dist/plugin-sdk/auto-reply/reply/directive-handling.levels.d.ts +1 -4
- package/dist/plugin-sdk/auto-reply/reply/directive-handling.params.d.ts +1 -8
- package/dist/plugin-sdk/auto-reply/reply/directive-handling.parse.d.ts +1 -23
- package/dist/plugin-sdk/auto-reply/reply/directive-handling.persist.d.ts +0 -2
- package/dist/plugin-sdk/auto-reply/reply/directive-handling.shared.d.ts +0 -22
- package/dist/plugin-sdk/auto-reply/reply/directives.d.ts +2 -29
- package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-apply.d.ts +0 -8
- package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-utils.d.ts +0 -1
- package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -15
- package/dist/plugin-sdk/auto-reply/reply/get-reply-inline-actions.d.ts +1 -8
- package/dist/plugin-sdk/auto-reply/reply/get-reply-run.d.ts +1 -11
- package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +1 -13
- package/dist/plugin-sdk/auto-reply/reply.d.ts +1 -1
- package/dist/plugin-sdk/auto-reply/status.d.ts +1 -4
- package/dist/plugin-sdk/auto-reply/templating.d.ts +0 -4
- package/dist/plugin-sdk/auto-reply/thinking.d.ts +0 -4
- package/dist/plugin-sdk/channels/dock.d.ts +1 -2
- package/dist/plugin-sdk/channels/plugins/types.adapters.d.ts +0 -6
- package/dist/plugin-sdk/channels/plugins/types.d.ts +1 -1
- package/dist/plugin-sdk/channels/plugins/types.plugin.d.ts +1 -2
- package/dist/plugin-sdk/commands/onboard-helpers.d.ts +0 -1
- package/dist/plugin-sdk/commands/onboard-types.d.ts +0 -2
- package/dist/plugin-sdk/config/legacy.migrations.d.ts +2 -1
- package/dist/plugin-sdk/config/legacy.shared.d.ts +0 -9
- package/dist/plugin-sdk/config/sessions/types.d.ts +0 -7
- package/dist/plugin-sdk/config/types.agent-defaults.d.ts +0 -8
- package/dist/plugin-sdk/config/types.base.d.ts +0 -1
- package/dist/plugin-sdk/config/types.messages.d.ts +0 -4
- package/dist/plugin-sdk/config/types.tools.d.ts +0 -73
- package/dist/plugin-sdk/config/types.tts.d.ts +2 -1
- package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +0 -4
- package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +7 -197
- package/dist/plugin-sdk/config/zod-schema.agents.d.ts +2 -10
- package/dist/plugin-sdk/config/zod-schema.core.d.ts +6 -234
- package/dist/plugin-sdk/config/zod-schema.d.ts +98 -301
- package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +148 -160
- package/dist/plugin-sdk/config/zod-schema.providers-whatsapp.d.ts +12 -12
- package/dist/plugin-sdk/config/zod-schema.providers.d.ts +88 -96
- package/dist/plugin-sdk/config/zod-schema.session.d.ts +4 -10
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +11 -16
- package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +0 -5
- package/dist/plugin-sdk/gateway/session-utils.types.d.ts +0 -1
- package/dist/plugin-sdk/index.js +295 -1236
- package/dist/plugin-sdk/line/config-schema.d.ts +4 -4
- package/dist/plugin-sdk/logging/levels.d.ts +1 -1
- package/dist/plugin-sdk/middleware/cli-runtime-base.d.ts +6 -0
- package/dist/plugin-sdk/middleware/runtimes/claude.d.ts +6 -0
- package/dist/plugin-sdk/middleware/runtimes/codex.d.ts +2 -2
- package/dist/plugin-sdk/middleware/runtimes/gemini.d.ts +8 -1
- package/dist/plugin-sdk/plugin-sdk/index.d.ts +3 -1
- package/dist/plugin-sdk/plugins/manifest-registry.d.ts +2 -0
- package/dist/plugin-sdk/plugins/manifest.d.ts +4 -4
- package/dist/plugin-sdk/plugins/registry.d.ts +18 -0
- package/dist/plugin-sdk/plugins/types.d.ts +4 -0
- package/dist/plugin-sdk/slack/manifest.d.ts +17 -0
- package/dist/plugin-sdk/stt/preflight.d.ts +2 -4
- package/dist/plugin-sdk/stt/providers/index.d.ts +1 -1
- package/dist/plugin-sdk/stt/providers/shared.d.ts +20 -1
- package/dist/plugin-sdk/tts/providers/edge.d.ts +2 -0
- package/dist/plugin-sdk/tts/providers/elevenlabs.d.ts +2 -0
- package/dist/plugin-sdk/tts/providers/index.d.ts +4 -0
- package/dist/plugin-sdk/tts/providers/openai.d.ts +2 -0
- package/dist/plugin-sdk/tts/tts.d.ts +13 -5
- package/dist/plugin-sdk/tts/types.d.ts +21 -0
- package/dist/plugins-BviLFPLV.js +255 -0
- package/dist/plugins-CaudBUbl.js +254 -0
- package/dist/plugins-cli-CsLhphNr.js +803 -0
- package/dist/plugins-cli-CujSP9NS.js +807 -0
- package/dist/ports-BtuzUQHl.js +370 -0
- package/dist/ports-CMcHia07.js +96 -0
- package/dist/ports-gRBeuUtp.js +316 -0
- package/dist/preflight-Bq8rimP-.js +667 -0
- package/dist/preflight-DyYbEp9X.js +667 -0
- package/dist/program-G8cGMPuz.js +250 -0
- package/dist/program-context-B9BwrbSx.js +474 -0
- package/dist/progress-BcwxtM9Q.js +124 -0
- package/dist/prompt-DtWGd43j.js +21 -0
- package/dist/prompt-select-styled-CpOsmtZi.js +1672 -0
- package/dist/prompt-select-styled-D-qBqrEJ.js +1669 -0
- package/dist/prompt-style-BpUMhEHC.js +9 -0
- package/dist/provider-auth-B7QgxlKt.js +187 -0
- package/dist/provider-auth-j-EQvvIk.js +187 -0
- package/dist/provider-dispatcher-Bx6CaIoV.js +660 -0
- package/dist/provider-dispatcher-DhkvjhO5.js +659 -0
- package/dist/push-apns--nEiZmEN.js +711 -0
- package/dist/push-apns-BtS6B6lb.js +713 -0
- package/dist/pw-ai-BpCsXF-x.js +1908 -0
- package/dist/pw-ai-ud_Kbn5S.js +1911 -0
- package/dist/qr-cli-BCeVLGfz.js +353 -0
- package/dist/qr-cli-Crsqtw01.js +349 -0
- package/dist/redact-Ci96Gj0O.js +191 -0
- package/dist/redact-snapshot-B9nof-Pb.js +1952 -0
- package/dist/redact-snapshot-BKiS91Mj.js +1952 -0
- package/dist/register.agent-GnCbOS2U.js +1014 -0
- package/dist/register.agent-Mwu5hgjA.js +292 -0
- package/dist/register.configure-By-Re240.js +130 -0
- package/dist/register.configure-rB-Q0WKu.js +135 -0
- package/dist/register.import-B83Dn36B.js +29 -0
- package/dist/register.import-wIYU2cVW.js +31 -0
- package/dist/register.maintenance-D5KctP9K.js +503 -0
- package/dist/register.maintenance-Er88Oxcm.js +501 -0
- package/dist/register.message-BQhRoEQQ.js +687 -0
- package/dist/register.message-CvZKWeGb.js +691 -0
- package/dist/register.onboard-BG064oHg.js +94 -0
- package/dist/register.onboard-CAKyc1Fc.js +98 -0
- package/dist/register.setup-C9sZLS_P.js +114 -0
- package/dist/register.setup-CVsZdhkJ.js +118 -0
- package/dist/register.status-health-sessions-BZJ0wTSa.js +429 -0
- package/dist/register.status-health-sessions-CyrUwwtB.js +667 -0
- package/dist/register.subclis-CQ_Pjkyv.js +267 -0
- package/dist/replies-BIx-MbQ7.js +136 -0
- package/dist/replies-DVU655H4.js +136 -0
- package/dist/reply-CL5VMSKN.js +12372 -0
- package/dist/reply-XKyfU3rS.js +12375 -0
- package/dist/reply-directives-DQfJ001O.js +182 -0
- package/dist/reply-directives-DfUITt7C.js +182 -0
- package/dist/reply-payloads-ZHo6kfTS.js +527 -0
- package/dist/reply-prefix-BSf3PC0x.js +37 -0
- package/dist/reply-prefix-DBTlMHLK.js +37 -0
- package/dist/resolve-route-B-_IgETc.js +249 -0
- package/dist/resolve-route-C8ZsgWDQ.js +249 -0
- package/dist/response-prefix-template-3LeqJx2X.js +134 -0
- package/dist/response-prefix-template-DBrUVx5V.js +134 -0
- package/dist/retry-CDrH81GP.js +77 -0
- package/dist/retry-Dar_7pCv.js +77 -0
- package/dist/run-main-DBFpx1kt.js +308 -0
- package/dist/secure-random-CLWSvf8A.js +44 -0
- package/dist/security-cli-B8lXw9ke.js +488 -0
- package/dist/security-cli-CRkS3VAf.js +483 -0
- package/dist/send-6g8QKfWj.js +374 -0
- package/dist/send-B5Hz1PIn.js +29 -0
- package/dist/send-B8eIlA1u.js +349 -0
- package/dist/send-BFZPQE4j.js +492 -0
- package/dist/send-BpTDvE0D.js +1779 -0
- package/dist/send-BxOrO1Wv.js +1776 -0
- package/dist/send-C6gPJu-Z.js +11 -0
- package/dist/send-C7MoKtkN.js +426 -0
- package/dist/send-CXzq2LI6.js +2245 -0
- package/dist/send-CYOZoObr.js +547 -0
- package/dist/send-CfQyIvcC.js +332 -0
- package/dist/send-DUtuuwhw.js +492 -0
- package/dist/send-DbafVwxp.js +2245 -0
- package/dist/send-DeZg8K7y.js +349 -0
- package/dist/send-DwkjxJlv.js +547 -0
- package/dist/send-iX9xbxlU.js +1178 -0
- package/dist/server-BKfCzEzd.js +206 -0
- package/dist/server-fmO4eo7K.js +202 -0
- package/dist/server-lifecycle-CgPpP10P.js +2437 -0
- package/dist/server-lifecycle-Cn8yY5MW.js +2437 -0
- package/dist/server-node-events-C-ZzSBYh.js +391 -0
- package/dist/server-node-events-DYlyfDHM.js +395 -0
- package/dist/service-C2j81L86.js +670 -0
- package/dist/service-C8a0SXHD.js +670 -0
- package/dist/session-AulYhqOb.js +170 -0
- package/dist/session-C6VKWvx6.js +170 -0
- package/dist/session-cost-usage-0Vs4hgMe.js +627 -0
- package/dist/session-cost-usage-C-DsaOfN.js +627 -0
- package/dist/session-dirs-CO1f2ArM.js +318 -0
- package/dist/session-dirs-DoboH7Oy.js +318 -0
- package/dist/session-utils-CRK8ToKG.js +621 -0
- package/dist/session-utils-DWlkmCX8.js +621 -0
- package/dist/sessions-DtqrmUJS.js +2553 -0
- package/dist/sessions-gT-4fcX-.js +245 -0
- package/dist/shell-env-c3j5zcU9.js +163 -0
- package/dist/ssrf-8wNqPNzN.js +183 -0
- package/dist/ssrf-CJIdPXuS.js +183 -0
- package/dist/status-BI_-xpDt.js +1947 -0
- package/dist/status-PZVwjKjl.js +1943 -0
- package/dist/status.update-BmuDZ7E7.js +449 -0
- package/dist/status.update-Mf6HSRvU.js +449 -0
- package/dist/store-B7PGEdFf.js +2555 -0
- package/dist/store-CzhBjUCN.js +64 -0
- package/dist/store-YkSxKAey.js +53 -0
- package/dist/store-ZNeFv2Q7.js +64 -0
- package/dist/subagent-registry-R1DiAM4R.js +4839 -0
- package/dist/subagent-registry-xLRXC8Bg.js +4841 -0
- package/dist/subsystem-BAW_f3DI.js +1195 -0
- package/dist/subsystem-DGSHVL8I.js +1081 -0
- package/dist/system-cli-9SvRrT9D.js +77 -0
- package/dist/system-cli-yCa5Q1YM.js +73 -0
- package/dist/systemd-40Rij3QR.js +547 -0
- package/dist/systemd-5C97CSzd.js +547 -0
- package/dist/systemd-hints-3iQteJw-.js +278 -0
- package/dist/systemd-hints-CyQqHq1i.js +278 -0
- package/dist/systemd-linger-B2rPbnAi.js +75 -0
- package/dist/systemd-linger-DDvkfxH-.js +75 -0
- package/dist/table-DFx25vNb.js +279 -0
- package/dist/tables-C5fI0PmT.js +55 -0
- package/dist/tables-Cm9qvQ9D.js +55 -0
- package/dist/tables-fRe01eP1.js +55 -0
- package/dist/tailnet-Da-_9e8E.js +40 -0
- package/dist/tailnet-xt92Yaop.js +40 -0
- package/dist/tailscale-CnV0JWca.js +230 -0
- package/dist/tailscale-VkEC8dzj.js +230 -0
- package/dist/targets-C99szk_e.js +114 -0
- package/dist/targets-CPaTjbpp.js +2607 -0
- package/dist/targets-CmC5m7Ey.js +53 -0
- package/dist/targets-D-p4rJVS.js +650 -0
- package/dist/targets-D2OQt8-7.js +650 -0
- package/dist/targets-D94MtTiZ.js +2606 -0
- package/dist/targets-RajrXTl7.js +220 -0
- package/dist/targets-_UWmnyI9.js +53 -0
- package/dist/thinking-4nOZPunr.js +60 -0
- package/dist/thinking-ZfH2V9Os.js +60 -0
- package/dist/tokens-TtJJxzRr.js +21 -0
- package/dist/tool-display-Bxs_1jIn.js +785 -0
- package/dist/tool-display-D9p_Ttkq.js +785 -0
- package/dist/tool-images-9Ron321Q.js +263 -0
- package/dist/tool-images-BWhy6WRN.js +263 -0
- package/dist/trash-B5xyvBDf.js +125 -0
- package/dist/trash-BpB96kHe.js +125 -0
- package/dist/tui-Ba0uZDrg.js +3237 -0
- package/dist/tui-Biz0HqDj.js +3237 -0
- package/dist/tui-cli-C-UV6o2v.js +63 -0
- package/dist/tui-cli-Ds_bLT-h.js +67 -0
- package/dist/types.tools-BBb2rl3g.js +23 -0
- package/dist/types.tools-BDJw1yFx.js +23 -0
- package/dist/update-Barj5dsg.js +349 -0
- package/dist/update-D839Q8su.js +349 -0
- package/dist/update-cli-2I4hm0Gy.js +1150 -0
- package/dist/update-cli-CcwXmMKB.js +1148 -0
- package/dist/usage-BI9kergH.js +5465 -0
- package/dist/utils-DPoNpP7D.js +631 -0
- package/dist/voice-credentials-64XAMSJm.js +46 -0
- package/dist/voice-credentials-v-CQkTpD.js +46 -0
- package/dist/web-63IbbidQ.js +3051 -0
- package/dist/web-D9N764Da.js +80 -0
- package/dist/web-DUvNYLzr.js +75 -0
- package/dist/webhooks-cli-owhVNNkz.js +334 -0
- package/dist/webhooks-cli-zlvka6QD.js +330 -0
- package/dist/whatsapp-actions-8DejyRG5.js +126 -0
- package/dist/whatsapp-actions-DCzp5LKe.js +131 -0
- package/dist/widearea-dns-CQqZIeu8.js +127 -0
- package/dist/workspace-CB7pVojf.js +441 -0
- package/dist/workspace-DWEyzM0F.js +439 -0
- package/dist/zod-schema-CvFqwpNE.js +2719 -0
- package/dist/zod-schema-Y5SQgJLm.js +2719 -0
- package/package.json +1 -1
- package/dist/accounts-Aqbb2_Fn.js +0 -270
- package/dist/accounts-Bo2bX8jP.js +0 -272
- package/dist/accounts-CJUdvsIZ.js +0 -32
- package/dist/accounts-D3fAPVzU.js +0 -36
- package/dist/accounts-DZmv4bXS.js +0 -47
- package/dist/accounts-DmB4SVPK.js +0 -47
- package/dist/accounts-DtkyfvwR.js +0 -36
- package/dist/ack-reactions-BqcZUQJ3.js +0 -446
- package/dist/ack-reactions-DXHaDBH-.js +0 -446
- package/dist/acp-cli-DVXhDMc6.js +0 -1324
- package/dist/acp-cli-QBL4_qcW.js +0 -1319
- package/dist/active-listener-CwxZ24bZ.js +0 -37
- package/dist/active-listener-v2sItamh.js +0 -37
- package/dist/agent-C5PZDKE1.js +0 -687
- package/dist/agent-helpers-BSGqeJr-.js +0 -400
- package/dist/agent-qCBPcUcF.js +0 -688
- package/dist/agent-scope-CJW7vnF8.js +0 -114
- package/dist/agent-scope-_ND_-bJy.js +0 -116
- package/dist/agents-Byc39Y4A.js +0 -760
- package/dist/agents.config-BgDBcY4h.js +0 -116
- package/dist/agents.config-D8gLHPWo.js +0 -116
- package/dist/audio-BIvUsncf.js +0 -43
- package/dist/audio-CQ8TfmVN.js +0 -43
- package/dist/audit-C0x7Cm6K.js +0 -3150
- package/dist/audit-CAY-uzWP.js +0 -3150
- package/dist/auth-DGqCLaQq.js +0 -448
- package/dist/auth-DLTRySEi.js +0 -314
- package/dist/auth-Drf91ntw.js +0 -315
- package/dist/auth-ku2khJyQ.js +0 -448
- package/dist/banner-CGI3XOm4.js +0 -294
- package/dist/binaries-BTvHIrCr.js +0 -13
- package/dist/bindings-Dr0bGRst.js +0 -69
- package/dist/bindings-DsWJQVKh.js +0 -69
- package/dist/bonjour-discovery-BElR62fH.js +0 -378
- package/dist/bonjour-discovery-C8XyVsjb.js +0 -378
- package/dist/browser-cli-DxJew43l.js +0 -1694
- package/dist/browser-cli-p0nakrjO.js +0 -1690
- package/dist/call-BrTmlOx3.js +0 -518
- package/dist/call-ChdUdwb4.js +0 -517
- package/dist/catalog-DTlcfTT9.js +0 -185
- package/dist/catalog-PixZqhZK.js +0 -185
- package/dist/channel-account-context-BO245Tcn.js +0 -133
- package/dist/channel-account-context-BgK0hm-I.js +0 -133
- package/dist/channel-activity-B0qlUR5e.js +0 -292
- package/dist/channel-activity-C-L6rDrQ.js +0 -94
- package/dist/channel-activity-DdgLBZ7M.js +0 -94
- package/dist/channel-options-C1Q9SUhv.js +0 -33
- package/dist/channel-options-zANFhRx_.js +0 -32
- package/dist/channel-selection-DW21dXB1.js +0 -51
- package/dist/channel-selection-wK_6S2Ku.js +0 -51
- package/dist/channel-web-DCSjrtlh.js +0 -2136
- package/dist/channel-web-JCgegBgG.js +0 -2134
- package/dist/channels-cli-D48ytzLq.js +0 -1438
- package/dist/channels-cli-hZbUcB3G.js +0 -1434
- package/dist/channels-status-issues-B6I2l7Sm.js +0 -18
- package/dist/channels-status-issues-DhDH2fWp.js +0 -18
- package/dist/chat-envelope-BIujl9Cj.js +0 -248
- package/dist/chat-envelope-CrM0X4sl.js +0 -248
- package/dist/chrome-Dqtq7zCc.js +0 -1733
- package/dist/chrome-XeSY99Z_.js +0 -1732
- package/dist/chunk-LUabyS9k.js +0 -341
- package/dist/clack-prompter-fAgbvPW4.js +0 -122
- package/dist/clack-prompter-kf9qTN5p.js +0 -121
- package/dist/cleanup-utils-CNwlTKyR.js +0 -94
- package/dist/cli-BTLaY8q4.js +0 -133
- package/dist/cli-CZV23GbW.js +0 -129
- package/dist/client-B9u3JdT_.js +0 -2316
- package/dist/client-DEEOhx0w.js +0 -2316
- package/dist/clipboard-B2nstLx7.js +0 -31
- package/dist/clipboard-C8QI9fes.js +0 -31
- package/dist/command-format-D0vKipG9.js +0 -32
- package/dist/command-format-LFmgWzKJ.js +0 -18
- package/dist/command-registry-BPXqH4ST.js +0 -215
- package/dist/commands-BAYwlS3d.js +0 -41
- package/dist/commands-D842kCjj.js +0 -41
- package/dist/commands-registry-Cg2GTT2J.js +0 -892
- package/dist/commands-registry-Yz-uV5oG.js +0 -891
- package/dist/common-B67cBSew.js +0 -156
- package/dist/common-DEoiTqOr.js +0 -156
- package/dist/completion-cli-D5J3fPka.js +0 -452
- package/dist/completion-cli-Dd1g-p7S.js +0 -452
- package/dist/config-CAa0rZSx.js +0 -4225
- package/dist/config-W0w-gi2j.js +0 -4223
- package/dist/config-cli-Ddz-yCdQ.js +0 -247
- package/dist/config-cli-shgSFYig.js +0 -243
- package/dist/config-guard-BI85dxHR.js +0 -99
- package/dist/config-guard-DQqnigKh.js +0 -75
- package/dist/config-validation-D-h4LHyA.js +0 -18
- package/dist/config-validation-Df_kroIQ.js +0 -18
- package/dist/configure-BnFwpZ3l.js +0 -891
- package/dist/configure-Cj4mlKSH.js +0 -889
- package/dist/control-auth-BrBr2xb8.js +0 -397
- package/dist/control-auth-CehjYKnL.js +0 -397
- package/dist/control-ui-assets-D8F383Mo.js +0 -186
- package/dist/control-ui-assets-DYKtRIm0.js +0 -186
- package/dist/conversation-label-Bn5j3lUT.js +0 -36
- package/dist/cron-cli-DVzDHzAX.js +0 -494
- package/dist/cron-cli-gkH2qKM4.js +0 -498
- package/dist/daemon-cli-BTdNO1vH.js +0 -737
- package/dist/daemon-cli-DNNqI2LD.js +0 -735
- package/dist/daemon-install-CaEHG92p.js +0 -56
- package/dist/daemon-install-DbpDSDfW.js +0 -60
- package/dist/daemon-install-helpers-DjE_WnlY.js +0 -504
- package/dist/daemon-install-helpers-DocTUxqQ.js +0 -504
- package/dist/deliver-CDcL8ok6.js +0 -481
- package/dist/deliver-CS8JsevV.js +0 -481
- package/dist/delivery-queue-CTaYZQ_8.js +0 -244
- package/dist/delivery-queue-DMZ7mH8P.js +0 -244
- package/dist/devices-cli-BBJ4His-.js +0 -319
- package/dist/devices-cli-DHSJSFW1.js +0 -323
- package/dist/diagnostics-BSvCaLNs.js +0 -35
- package/dist/diagnostics-mWFAsFeo.js +0 -35
- package/dist/directory-cli-C-oHD_XE.js +0 -224
- package/dist/directory-cli-Cw99VGvr.js +0 -220
- package/dist/dispatcher-C8d1NNLZ.js +0 -174
- package/dist/dispatcher-DY6Ga60j.js +0 -173
- package/dist/dm-policy-shared-CRQ-Wr5g.js +0 -22
- package/dist/dm-policy-shared-CXXf2ltd.js +0 -22
- package/dist/dns-cli-BOqx9qo1.js +0 -199
- package/dist/dns-cli-WfqSC3JU.js +0 -203
- package/dist/dock-Big-J2VN.js +0 -929
- package/dist/dock-Cj4PKiUh.js +0 -928
- package/dist/doctor-completion-B9RsNJKh.js +0 -92
- package/dist/doctor-completion-DhNvADTs.js +0 -92
- package/dist/doctor-config-flow-BUuADMDa.js +0 -1935
- package/dist/doctor-config-flow-yOUpQC2B.js +0 -1934
- package/dist/enable-DC9V0nTO.js +0 -59
- package/dist/enable-DzXMQJ-o.js +0 -59
- package/dist/env-B3zr72vQ.js +0 -60
- package/dist/errors-CdmXrBic.js +0 -35
- package/dist/errors-Cr_NbOb4.js +0 -35
- package/dist/exec-D_s-zAtY.js +0 -164
- package/dist/exec-Zz6eJ6YU.js +0 -164
- package/dist/fetch-C8pdlo4-.js +0 -67
- package/dist/fetch-DRVdxxEj.js +0 -67
- package/dist/file-lock-6NXMPZTT.js +0 -107
- package/dist/file-lock-C_KRlR7M.js +0 -107
- package/dist/fs-safe-DZHpH7TI.js +0 -98
- package/dist/fs-safe-vm3JMUkq.js +0 -88
- package/dist/gateway-cli-CebjflhZ.js +0 -24337
- package/dist/gateway-cli-Y9U6rbPB.js +0 -24333
- package/dist/gateway-rpc-BCFkQPa2.js +0 -28
- package/dist/gateway-rpc-DOgYbsOG.js +0 -28
- package/dist/gmail-setup-utils-DMeA1UM1.js +0 -423
- package/dist/gmail-setup-utils-FHWSAur3.js +0 -422
- package/dist/health-CXWQZGNz.js +0 -1414
- package/dist/health-DCC6hoLO.js +0 -1417
- package/dist/health-format-CVgQD-z9.js +0 -28
- package/dist/heartbeat-visibility-Cv0ejWJ-.js +0 -125
- package/dist/heartbeat-visibility-Da3TDQp2.js +0 -125
- package/dist/help-format-DM6-OBt-.js +0 -17
- package/dist/hook-runner-global-C0DFQmQw.js +0 -527
- package/dist/hooks-cli-CB5rKhHe.js +0 -1221
- package/dist/hooks-cli-Dy7m9hzM.js +0 -1225
- package/dist/image-ops-B9ofmzSq.js +0 -354
- package/dist/image-ops-CMuvRsMY.js +0 -354
- package/dist/import-BH13F5mT.js +0 -606
- package/dist/import-D8HVcDqO.js +0 -604
- package/dist/inbound-context-CmmmT8IP.js +0 -68
- package/dist/inbound-path-policy-BdmTOUka.js +0 -90
- package/dist/inbound-path-policy-BurOAu44.js +0 -90
- package/dist/inspect-nW8LAukU.js +0 -286
- package/dist/inspect-xy2EHy8G.js +0 -286
- package/dist/installs-CpfHmKY1.js +0 -325
- package/dist/installs-DebiMrGj.js +0 -325
- package/dist/ipv4-ysiNGssl.js +0 -46
- package/dist/ipv4-zc_Hfvbp.js +0 -46
- package/dist/ir-CaxTklDC.js +0 -940
- package/dist/lifecycle-core-Z5SScMlU.js +0 -476
- package/dist/lifecycle-core-pPwYSt7m.js +0 -474
- package/dist/links-D5vtq30Q.js +0 -15
- package/dist/loader-BVHaRcP7.js +0 -22404
- package/dist/loader-CxSGgugQ.js +0 -22401
- package/dist/local-roots-CrJ_Jv_G.js +0 -314
- package/dist/local-roots-n_Y4iYwb.js +0 -313
- package/dist/logger-B8yHnzPl.js +0 -49
- package/dist/logging-FctZEleJ.js +0 -20
- package/dist/login-C99fsB0N.js +0 -61
- package/dist/login-cLvGPjeO.js +0 -62
- package/dist/login-qr-CGqRFwgl.js +0 -329
- package/dist/login-qr-dnY5DC2C.js +0 -325
- package/dist/logs-cli-Bda7xY4N.js +0 -236
- package/dist/logs-cli-HzR-vnpD.js +0 -240
- package/dist/markdown-tables-58Hq__7K.js +0 -29
- package/dist/markdown-tables-GFEX0OR6.js +0 -29
- package/dist/media-C1SIfGTn.js +0 -10452
- package/dist/media-CFsyXs3H.js +0 -940
- package/dist/message-action-names-BgsKGLDS.js +0 -2521
- package/dist/message-action-names-DkZwEFhU.js +0 -2521
- package/dist/message-channel-FMNRI5Ax.js +0 -91
- package/dist/mime-AuIDUZPG.js +0 -149
- package/dist/mime-Cqg1jjia.js +0 -149
- package/dist/net-BEFkF-nI.js +0 -225
- package/dist/net-CNsUGiSw.js +0 -225
- package/dist/node-cli-Bu-InsO9.js +0 -1462
- package/dist/node-cli-DE7Pm7Fr.js +0 -1458
- package/dist/node-service-CumFZc9L.js +0 -67
- package/dist/node-service-DY1gG06I.js +0 -67
- package/dist/nodes-cli-B5aAExN0.js +0 -1350
- package/dist/nodes-cli-eKRqlKuO.js +0 -1346
- package/dist/nodes-screen-B3Sij1uT.js +0 -250
- package/dist/nodes-screen-DEvpoFmH.js +0 -250
- package/dist/note-CPFJCWJJ.js +0 -92
- package/dist/note-DHUJACHE.js +0 -92
- package/dist/npm-registry-spec-BgMtTHvq.js +0 -786
- package/dist/npm-registry-spec-Dz3z1Zpd.js +0 -786
- package/dist/npm-resolution-BXiQH99t.js +0 -86
- package/dist/npm-resolution-CqE0nhxJ.js +0 -86
- package/dist/onboard-DK2z3w1P.js +0 -649
- package/dist/onboard-auth-C_wHkop1.js +0 -207
- package/dist/onboard-auth-CkCBLvTg.js +0 -211
- package/dist/onboard-channels-C8_OLbPk.js +0 -2547
- package/dist/onboard-channels-w_tnOhVu.js +0 -2548
- package/dist/onboard-helpers-Q7M6vdzh.js +0 -363
- package/dist/onboard-helpers-SCO3k5Y8.js +0 -364
- package/dist/onboard-remote-Co2hv1AD.js +0 -127
- package/dist/onboard-remote-Dl3BFSg2.js +0 -127
- package/dist/onboard-rioH3DW6.js +0 -647
- package/dist/onboarding-CsXVuzFP.js +0 -586
- package/dist/onboarding-r5RCkc-Z.js +0 -588
- package/dist/onboarding.finalize-BY8uN1nD.js +0 -402
- package/dist/onboarding.finalize-C-kfj-aR.js +0 -404
- package/dist/onboarding.gateway-config-BL0Q7Wpg.js +0 -201
- package/dist/onboarding.gateway-config-D2QsXMYO.js +0 -195
- package/dist/outbound-CcaPcetn.js +0 -220
- package/dist/outbound-CeiW8z3a.js +0 -221
- package/dist/outbound-attachment-BLSGI2dJ.js +0 -18
- package/dist/outbound-attachment-Bfm5-JYe.js +0 -18
- package/dist/outbound-attachment-CZ7zoYxB.js +0 -18
- package/dist/pairing-cli-CgX79ujL.js +0 -125
- package/dist/pairing-cli-DvbbXFgC.js +0 -129
- package/dist/pairing-labels-3wDxaApH.js +0 -9
- package/dist/pairing-labels-DCbWnbWk.js +0 -9
- package/dist/pairing-store-CdY7iRS0.js +0 -459
- package/dist/pairing-store-DykkYpQ7.js +0 -460
- package/dist/path-env-Cqo5LZmw.js +0 -89
- package/dist/path-guards-DOpzcMXz.js +0 -31
- package/dist/path-guards-DipYoPVw.js +0 -31
- package/dist/path-safety-CXKAVpMp.js +0 -14
- package/dist/path-safety-DGB91qBk.js +0 -14
- package/dist/paths-BTaH3rLn.js +0 -232
- package/dist/plugin-auto-enable-C6FPGg_-.js +0 -301
- package/dist/plugin-auto-enable-L8eOc8iC.js +0 -302
- package/dist/plugin-registry-BTycBIix.js +0 -33
- package/dist/plugin-registry-CFty9Gym.js +0 -33
- package/dist/plugin-sdk/auto-reply/reply/elevated-allowlist-matcher.d.ts +0 -20
- package/dist/plugin-sdk/auto-reply/reply/elevated-unavailable.d.ts +0 -8
- package/dist/plugin-sdk/auto-reply/reply/reply-elevated.d.ts +0 -16
- package/dist/plugin-sdk/compat/legacy-names.d.ts +0 -8
- package/dist/plugin-sdk/config/legacy.migrations.part-1.d.ts +0 -2
- package/dist/plugin-sdk/config/legacy.migrations.part-2.d.ts +0 -2
- package/dist/plugin-sdk/config/legacy.migrations.part-3.d.ts +0 -2
- package/dist/plugin-sdk/cron/legacy-delivery.d.ts +0 -3
- package/dist/plugin-sdk/cron/payload-migration.d.ts +0 -3
- package/dist/plugin-sdk/link-understanding/apply.d.ts +0 -10
- package/dist/plugin-sdk/link-understanding/defaults.d.ts +0 -2
- package/dist/plugin-sdk/link-understanding/detect.d.ts +0 -3
- package/dist/plugin-sdk/link-understanding/format.d.ts +0 -4
- package/dist/plugin-sdk/link-understanding/runner.d.ts +0 -11
- package/dist/plugin-sdk/media/input-files.d.ts +0 -95
- package/dist/plugin-sdk/media-understanding/apply.d.ts +0 -19
- package/dist/plugin-sdk/media-understanding/attachments.d.ts +0 -49
- package/dist/plugin-sdk/media-understanding/concurrency.d.ts +0 -1
- package/dist/plugin-sdk/media-understanding/defaults.d.ts +0 -11
- package/dist/plugin-sdk/media-understanding/errors.d.ts +0 -6
- package/dist/plugin-sdk/media-understanding/format.d.ts +0 -7
- package/dist/plugin-sdk/media-understanding/fs.d.ts +0 -1
- package/dist/plugin-sdk/media-understanding/output-extract.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/anthropic/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/deepgram/audio.d.ts +0 -1
- package/dist/plugin-sdk/media-understanding/providers/deepgram/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/google/audio.d.ts +0 -1
- package/dist/plugin-sdk/media-understanding/providers/google/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/google/video.d.ts +0 -3
- package/dist/plugin-sdk/media-understanding/providers/groq/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/index.d.ts +0 -4
- package/dist/plugin-sdk/media-understanding/providers/minimax/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/mistral/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/moonshot/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/moonshot/video.d.ts +0 -3
- package/dist/plugin-sdk/media-understanding/providers/openai/audio.d.ts +0 -1
- package/dist/plugin-sdk/media-understanding/providers/openai/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/providers/shared.d.ts +0 -20
- package/dist/plugin-sdk/media-understanding/providers/zai/index.d.ts +0 -2
- package/dist/plugin-sdk/media-understanding/resolve.d.ts +0 -44
- package/dist/plugin-sdk/media-understanding/runner.d.ts +0 -34
- package/dist/plugin-sdk/media-understanding/runner.entries.d.ts +0 -33
- package/dist/plugin-sdk/media-understanding/scope.d.ts +0 -9
- package/dist/plugin-sdk/media-understanding/types.d.ts +0 -59
- package/dist/plugin-sdk/media-understanding/video.d.ts +0 -2
- package/dist/plugin-sdk/utils/run-with-concurrency.d.ts +0 -11
- package/dist/plugins-7B167wIj.js +0 -453
- package/dist/plugins-BRHOfy1Z.js +0 -455
- package/dist/plugins-cli-CQGW40I-.js +0 -797
- package/dist/plugins-cli-D-ZfWRTw.js +0 -801
- package/dist/ports-CAqyeQYZ.js +0 -316
- package/dist/ports-CTUgXF2d.js +0 -96
- package/dist/ports-DqfnVnCw.js +0 -370
- package/dist/preflight-CJqKHCYa.js +0 -64
- package/dist/preflight-TR92sc61.js +0 -68
- package/dist/program-_SGrjcuG.js +0 -248
- package/dist/program-context-B6yIPfYd.js +0 -474
- package/dist/progress-BOdRbOHD.js +0 -124
- package/dist/prompt-WEkXwIMT.js +0 -21
- package/dist/prompt-select-styled-BiBnOTh8.js +0 -1669
- package/dist/prompt-select-styled-DQacku67.js +0 -1672
- package/dist/prompt-style-B4Cq4PyQ.js +0 -9
- package/dist/provider-dispatcher-BjsUFEpi.js +0 -659
- package/dist/provider-dispatcher-BxNDRVIT.js +0 -660
- package/dist/push-apns-Cj0Ryn18.js +0 -713
- package/dist/push-apns-fFfYCqda.js +0 -711
- package/dist/pw-ai-CnN2sITD.js +0 -1908
- package/dist/pw-ai-fnX3cecw.js +0 -1911
- package/dist/qr-cli-CriPg41m.js +0 -349
- package/dist/qr-cli-DSURqD0D.js +0 -353
- package/dist/redact-gXuh8MFk.js +0 -191
- package/dist/redact-snapshot-BecRL_h6.js +0 -2016
- package/dist/redact-snapshot-pTdzSrex.js +0 -2016
- package/dist/register.agent-Bpwvc5By.js +0 -1018
- package/dist/register.agent-DQFcnOVQ.js +0 -290
- package/dist/register.configure-C5CK8tgd.js +0 -133
- package/dist/register.configure-CEJ5Wrkl.js +0 -128
- package/dist/register.import-CPQqqdje.js +0 -31
- package/dist/register.import-D1UaH1QV.js +0 -29
- package/dist/register.maintenance-Bpz-NOhG.js +0 -499
- package/dist/register.maintenance-DDwlfAfw.js +0 -501
- package/dist/register.message-BoNswT8e.js +0 -685
- package/dist/register.message-pvz70g_-.js +0 -689
- package/dist/register.onboard-BvcVLNp3.js +0 -93
- package/dist/register.onboard-CZV7LvZI.js +0 -97
- package/dist/register.setup-Cgv2uSPG.js +0 -117
- package/dist/register.setup-yTqvTinY.js +0 -113
- package/dist/register.status-health-sessions-LK50hWDT.js +0 -428
- package/dist/register.status-health-sessions-kDGDihye.js +0 -668
- package/dist/register.subclis-DSr7AHAr.js +0 -267
- package/dist/replies-IpiCq1Ht.js +0 -136
- package/dist/replies-LSx_XhsP.js +0 -136
- package/dist/reply-B8It91bP.js +0 -13652
- package/dist/reply-CbgHVTv2.js +0 -13649
- package/dist/reply-directives-Cz7622Qx.js +0 -182
- package/dist/reply-directives-ssnaPNiU.js +0 -182
- package/dist/reply-payloads-CQMtrphw.js +0 -527
- package/dist/reply-prefix-CWcAZKhE.js +0 -37
- package/dist/reply-prefix-Drq7Pf3A.js +0 -37
- package/dist/resolve-route-B8uIc2H3.js +0 -249
- package/dist/resolve-route-C8ooNlI4.js +0 -249
- package/dist/response-prefix-template-D3ZcJP4E.js +0 -134
- package/dist/response-prefix-template-DPOggmPO.js +0 -134
- package/dist/retry-B19gMxS7.js +0 -77
- package/dist/retry-BdhJlZQI.js +0 -77
- package/dist/run-main-BP3UHEJa.js +0 -306
- package/dist/runner-CD3YycXx.js +0 -2365
- package/dist/runner-D74Wiza_.js +0 -2365
- package/dist/secure-random-CQa3H-OL.js +0 -44
- package/dist/security-cli-05blEYyC.js +0 -482
- package/dist/security-cli-DYbt8duB.js +0 -487
- package/dist/send-7O3-bRtl.js +0 -547
- package/dist/send-9Huf62k3.js +0 -2245
- package/dist/send-B0C42B2A.js +0 -426
- package/dist/send-B9mIJdUo.js +0 -547
- package/dist/send-BHm9dk6D.js +0 -1178
- package/dist/send-BetMntNc.js +0 -11
- package/dist/send-Bj0RXr-a.js +0 -492
- package/dist/send-COuVtZ4b.js +0 -374
- package/dist/send-CXNuhYA-.js +0 -332
- package/dist/send-Ce_BDa8P.js +0 -349
- package/dist/send-ChvasRSh.js +0 -1779
- package/dist/send-DNVRlTEF.js +0 -29
- package/dist/send-DWf7BCPe.js +0 -492
- package/dist/send-Dd2_MykI.js +0 -2245
- package/dist/send-IJaUAa8H.js +0 -1776
- package/dist/send-vvZXksNU.js +0 -349
- package/dist/server-BrzR9JmX.js +0 -206
- package/dist/server-_h27-uP_.js +0 -202
- package/dist/server-lifecycle-CUdA6Far.js +0 -2437
- package/dist/server-lifecycle-DQZWL8iP.js +0 -2437
- package/dist/server-node-events-DSefRBGC.js +0 -394
- package/dist/server-node-events-jDiG1-M2.js +0 -390
- package/dist/service-9le8AnC-.js +0 -670
- package/dist/service-Drb0kx6I.js +0 -670
- package/dist/session-BIAOl5QR.js +0 -170
- package/dist/session-Wu00pCn_.js +0 -170
- package/dist/session-cost-usage-7plmOKbs.js +0 -627
- package/dist/session-cost-usage-CPFxBFUg.js +0 -627
- package/dist/session-dirs-CfIrIJxG.js +0 -318
- package/dist/session-dirs-DlPpWt5Q.js +0 -318
- package/dist/session-utils-Sd9w4vc1.js +0 -622
- package/dist/session-utils-iL47hYmZ.js +0 -622
- package/dist/sessions-6pKQ3gN3.js +0 -247
- package/dist/sessions-ZRmCDdj1.js +0 -2569
- package/dist/shell-env-DYZq9PqC.js +0 -163
- package/dist/ssrf-B-rF_tZB.js +0 -183
- package/dist/ssrf-DJW14Wkh.js +0 -183
- package/dist/status-BGM-EJGk.js +0 -1983
- package/dist/status-CGkrO9om.js +0 -1979
- package/dist/status.update-DlBReI5-.js +0 -449
- package/dist/status.update-v7fEQ7R9.js +0 -449
- package/dist/store-B5989JkX.js +0 -64
- package/dist/store-BpXxa0Uf.js +0 -53
- package/dist/store-DCrrxHyS.js +0 -2571
- package/dist/store-Ql6vAcsg.js +0 -64
- package/dist/subagent-registry-BGknZEUI.js +0 -4856
- package/dist/subagent-registry-CWeRBjfn.js +0 -4854
- package/dist/subsystem-Ct6qOOqZ.js +0 -1079
- package/dist/subsystem-PQ64_nsu.js +0 -1136
- package/dist/system-cli-CmO-4Rju.js +0 -77
- package/dist/system-cli-VBsa18K6.js +0 -73
- package/dist/systemd-CqFpK30Y.js +0 -547
- package/dist/systemd-fK9AV5bP.js +0 -547
- package/dist/systemd-hints-D3rr0j14.js +0 -278
- package/dist/systemd-hints-DNOSRaqA.js +0 -278
- package/dist/systemd-linger-B907NVVy.js +0 -75
- package/dist/systemd-linger-wYksBbM7.js +0 -75
- package/dist/table-C-dba-5-.js +0 -279
- package/dist/tables-CO_kxD0e.js +0 -55
- package/dist/tables-Rd6ZUH0u.js +0 -55
- package/dist/tables-WZp8Vt9n.js +0 -55
- package/dist/tailnet-CfZhpSnt.js +0 -40
- package/dist/tailnet-D0NV0tRJ.js +0 -40
- package/dist/tailscale-B__xvMjA.js +0 -230
- package/dist/tailscale-q_ZrxUCc.js +0 -230
- package/dist/targets-B4rMyQFJ.js +0 -53
- package/dist/targets-BEBzTa22.js +0 -114
- package/dist/targets-BjWhDMJM.js +0 -650
- package/dist/targets-BlEVuFSt.js +0 -2474
- package/dist/targets-CHwGDIgO.js +0 -650
- package/dist/targets-CbbmgMRV.js +0 -2473
- package/dist/targets-SpN-MPBH.js +0 -220
- package/dist/targets-mqj9GNg1.js +0 -53
- package/dist/thinking-BqJmU6Zp.js +0 -88
- package/dist/thinking-l-rrvZwu.js +0 -88
- package/dist/tokens-DAFBx5qr.js +0 -21
- package/dist/tool-display-C0hpLmkw.js +0 -785
- package/dist/tool-display-CQTRHo3Z.js +0 -785
- package/dist/tool-images-BYY11Gw3.js +0 -263
- package/dist/tool-images-CnJ0R8Fo.js +0 -263
- package/dist/trash-C0mjnHuW.js +0 -125
- package/dist/trash-Cgwc9mLD.js +0 -125
- package/dist/tui-9cJnR1dN.js +0 -3282
- package/dist/tui-BR3egaFJ.js +0 -3282
- package/dist/tui-cli-BYpkhE6J.js +0 -66
- package/dist/tui-cli-DndeZyup.js +0 -62
- package/dist/update-BJVdkzk7.js +0 -349
- package/dist/update-DjI6KTA5.js +0 -349
- package/dist/update-cli-DR-zFdCm.js +0 -1146
- package/dist/update-cli-EuHV_AUf.js +0 -1148
- package/dist/usage-BQUMGgBj.js +0 -5350
- package/dist/utils-C5daYcFn.js +0 -631
- package/dist/voice-credentials-CXdoE4IF.js +0 -45
- package/dist/voice-credentials-Cu7htUQq.js +0 -45
- package/dist/web-6WVkqhtO.js +0 -3087
- package/dist/web-BfSXKISl.js +0 -74
- package/dist/web-Cngqu3vs.js +0 -79
- package/dist/webhooks-cli-0yQha2yj.js +0 -334
- package/dist/webhooks-cli-ula0bTX-.js +0 -330
- package/dist/whatsapp-actions-3NdzsNg1.js +0 -130
- package/dist/whatsapp-actions-y_1vjkYY.js +0 -125
- package/dist/widearea-dns-C-0P7TRi.js +0 -127
- package/dist/workspace-BT3X-qCZ.js +0 -449
- package/dist/workspace-D5hHXubL.js +0 -447
- package/dist/zod-schema-CbqZAIYy.js +0 -2696
- package/dist/zod-schema-YGQJEcnj.js +0 -2696
- /package/dist/{account-lookup-BOCzCnir.js → account-lookup-CIY_RKhi.js} +0 -0
- /package/dist/{agent-helpers-eEHy5uX2.js → agent-helpers-Bs2nBXeI.js} +0 -0
- /package/dist/{api-Cd_7aESj.js → api-BE4ZCWWB.js} +0 -0
- /package/dist/{api-DJ_oWYus.js → api-wsk9zRVi.js} +0 -0
- /package/dist/{chat-type-DyovJwCt.js → chat-type-BP9akbag.js} +0 -0
- /package/dist/{chunk-CWD_zrz_.js → chunk-BAMyFYtF.js} +0 -0
- /package/dist/{cleanup-utils-gNzIs9yk.js → cleanup-utils-ZC2zvntc.js} +0 -0
- /package/dist/{cli-name-3MdfbvIR.js → cli-name-BZsYSp9l.js} +0 -0
- /package/dist/{cli-name-CRLBidNP.js → cli-name-CRe5Ow_t.js} +0 -0
- /package/dist/{cli-utils-5ZIfXAfM.js → cli-utils-CGB3cBZm.js} +0 -0
- /package/dist/{client-D5m46AuY.js → client-9dK56xly.js} +0 -0
- /package/dist/{client-DFyI5I0n.js → client-D-R1YdRD.js} +0 -0
- /package/dist/{command-options-Cn2fc1Of.js → command-options-CnHA4TzR.js} +0 -0
- /package/dist/{config-eval-BCKpAS_K.js → config-eval-BQIR-wSg.js} +0 -0
- /package/dist/{config-eval-CU2G7a83.js → config-eval-Bh82JoXK.js} +0 -0
- /package/dist/{constants-CRGAZ2ow.js → constants-C7j1VA2S.js} +0 -0
- /package/dist/{constants-BAZuhSRm.js → constants-PMRtHBHU.js} +0 -0
- /package/dist/{credentials-DMAWNZdV.js → credentials-C_RoJFmK.js} +0 -0
- /package/dist/{credentials-Dmc3H-jd.js → credentials-DM_Dj0m8.js} +0 -0
- /package/dist/{daemon-runtime-aQhinwSL.js → daemon-runtime-9oDBR7YW.js} +0 -0
- /package/dist/{dangerous-name-matching-BCaPvXy_.js → dangerous-name-matching-CSq9sJDG.js} +0 -0
- /package/dist/{dangerous-tools-E1i3IoxZ.js → dangerous-tools-D4jtl72G.js} +0 -0
- /package/dist/{fetch-DTR2MlOk.js → fetch-DTsU2XnC.js} +0 -0
- /package/dist/{fetch-timeout-l_6RdoMw.js → fetch-timeout-CytN1wiO.js} +0 -0
- /package/dist/{file-identity-BnGA6wyc.js → file-identity-CeRK5CJC.js} +0 -0
- /package/dist/{format-relative-Cywx6ldk.js → format-relative-Czf5fUjn.js} +0 -0
- /package/dist/{format-relative-DcQZUAYl.js → format-relative-zwkkXJvs.js} +0 -0
- /package/dist/{health-format-CL2Xq92A.js → health-format-DF54wvUU.js} +0 -0
- /package/dist/{heartbeat-wake-DjsTDzF3.js → heartbeat-wake-CvHncCjP.js} +0 -0
- /package/dist/{helpers-D-r6yhnI.js → helpers-DAEoFkbn.js} +0 -0
- /package/dist/{helpers-DSMIGYx2.js → helpers-n2CtWpm9.js} +0 -0
- /package/dist/{helpers-CRrn7Err.js → helpers-ndPQWl6m.js} +0 -0
- /package/dist/{input-provenance-BgfeDgck.js → input-provenance-gIfDn1ki.js} +0 -0
- /package/dist/{input-provenance-xUsSMOsz.js → input-provenance-wkso1o5V.js} +0 -0
- /package/dist/{ip-BAhS4rY2.js → ip-D4VG5EJO.js} +0 -0
- /package/dist/{ip-BUhsZdJu.js → ip-MwCwRA7c.js} +0 -0
- /package/dist/{json-file-Dbg7nZg1.js → json-file-BW22hGtf.js} +0 -0
- /package/dist/{json-file-B5WEJJye.js → json-file-DwRAfAAy.js} +0 -0
- /package/dist/{json-files-CfhnuGaC.js → json-files-BI20PLIm.js} +0 -0
- /package/dist/{json-files-BFGbyEzL.js → json-files-Dy52honG.js} +0 -0
- /package/dist/{lanes-4FoQemog.js → lanes-1CBKdsiR.js} +0 -0
- /package/dist/{lanes-BhdzrAIa.js → lanes-DqVYfPRG.js} +0 -0
- /package/dist/{logger-IA_Dr_BT.js → logger-B8BE0PyS.js} +0 -0
- /package/dist/{logger-nEdVxm5D.js → logger-CPvz-aPM.js} +0 -0
- /package/dist/{logger-O6JX52kK.js → logger-cL0D2DCr.js} +0 -0
- /package/dist/{logging-BiuZwq5D.js → logging-DRwtiLIS.js} +0 -0
- /package/dist/{logging-Bs1VqVFL.js → logging-DTEoeoa3.js} +0 -0
- /package/dist/{logging-JZEg5nDp.js → logging-fywhKCmE.js} +0 -0
- /package/dist/{mutable-allowlist-detectors-TCG6mnbz.js → mutable-allowlist-detectors-BXE7Hr7F.js} +0 -0
- /package/dist/{onboard-config-BxfgUqk6.js → onboard-config-DOmXYEvJ.js} +0 -0
- /package/dist/{onboard-config-DNzlo8Cg.js → onboard-config-JmR21VYa.js} +0 -0
- /package/dist/{parse-log-line-CT0H1-oQ.js → parse-log-line-GisaZn5H.js} +0 -0
- /package/dist/{parse-log-line-pij_xhtE.js → parse-log-line-ZsbwG_u7.js} +0 -0
- /package/dist/{parse-timeout-CvODy9RC.js → parse-timeout-BpphuwYl.js} +0 -0
- /package/dist/{parse-timeout-CxYHsZWc.js → parse-timeout-CE6BjmGU.js} +0 -0
- /package/dist/plugin-sdk/{media-understanding → stt}/providers/google/inline-data.d.ts +0 -0
- /package/dist/{plugins-allowlist-Bcqe9Gd8.js → plugins-allowlist-A38nxBRG.js} +0 -0
- /package/dist/{plugins-allowlist-ptAp-oPY.js → plugins-allowlist-D2tS9tcu.js} +0 -0
- /package/dist/{polls-DQrR-qT3.js → polls-BLyT08ZI.js} +0 -0
- /package/dist/{polls-ybwcqkWt.js → polls-BmymsJEe.js} +0 -0
- /package/dist/{ports-BS8kQkd9.js → ports-DALdfBQy.js} +0 -0
- /package/dist/{process-scoped-map-BwUkYFQV.js → process-scoped-map-BCJR56ZB.js} +0 -0
- /package/dist/{process-scoped-map-_zxf_kLz.js → process-scoped-map-Cb1EHPyN.js} +0 -0
- /package/dist/{program-context-CG-t6Yp-.js → program-context-DlXnmuB7.js} +0 -0
- /package/dist/{prompt-style-B1740PBl.js → prompt-style-CUuA6OCy.js} +0 -0
- /package/dist/{proxy-BdjLhNln.js → proxy-D-qGA1vm.js} +0 -0
- /package/dist/{pw-ai-state-DaISdsXY.js → pw-ai-state--TxTVwRW.js} +0 -0
- /package/dist/{redact-CqWx9rpK.js → redact-BW8tobyp.js} +0 -0
- /package/dist/{redact-identifier-DR54qsoT.js → redact-identifier-Bv5SUUw-.js} +0 -0
- /package/dist/{remoteclaw-root-u8dAeHID.js → remoteclaw-root-BfPjgewe.js} +0 -0
- /package/dist/{remoteclaw-root-CgNyrbxc.js → remoteclaw-root-E4-hmb4E.js} +0 -0
- /package/dist/{render-CDCvpfhh.js → render-BhKzKdV0.js} +0 -0
- /package/dist/{render-CJl4GK1B.js → render-e7fENCYH.js} +0 -0
- /package/dist/{retry-cXXk2j6_.js → retry-BWv_fy4u.js} +0 -0
- /package/dist/{runtime-guard-BS55uiSW.js → runtime-guard-Bhx-pb8_.js} +0 -0
- /package/dist/{runtime-status-BhW7hP_U.js → runtime-status-CR9445g5.js} +0 -0
- /package/dist/{secret-equal-CJzes24Z.js → secret-equal-D6AoXne1.js} +0 -0
- /package/dist/{secret-equal-CQAmGfGc.js → secret-equal-DLnUuWM3.js} +0 -0
- /package/dist/{secure-random-B3f7Ri2X.js → secure-random-CJtykx_p.js} +0 -0
- /package/dist/{secure-random-BkZFG9cd.js → secure-random-CRVHgtmO.js} +0 -0
- /package/dist/{stagger-B-_Wnofy.js → stagger--wvODnNe.js} +0 -0
- /package/dist/{stagger-B2ORDHsP.js → stagger-BLmTO4cK.js} +0 -0
- /package/dist/{status-C6YNwimj.js → status-1zVD-Clq.js} +0 -0
- /package/dist/{status-yrDGXYZM.js → status-BtRY0nXQ.js} +0 -0
- /package/dist/{strip-inbound-meta-0cvL6itU.js → strip-inbound-meta-zmUXypSS.js} +0 -0
- /package/dist/{strip-inbound-meta-DjKcSFaW.js → strip-inbound-meta-zqtN9FTK.js} +0 -0
- /package/dist/{table-ByMyHTh_.js → table-On3hkCqi.js} +0 -0
- /package/dist/{targets-DOJXjN1U.js → targets-B46m7u5J.js} +0 -0
- /package/dist/{targets-WSwPflb6.js → targets-D7PT_rdO.js} +0 -0
- /package/dist/{text-format-mr5bZq0f.js → text-format-Ds92M9UT.js} +0 -0
- /package/dist/{tokens-C8yGxAcR.js → tokens-Dw7ZdYwT.js} +0 -0
- /package/dist/{usage-BXi79Rq6.js → usage-BIzKZ5dT.js} +0 -0
- /package/dist/{usage-C1lHaofV.js → usage-BvZOzIC7.js} +0 -0
- /package/dist/{usage-format-CD5jsZY1.js → usage-format-CmniSPCG.js} +0 -0
- /package/dist/{usage-format-CRVpDVj1.js → usage-format-D_KQYQ-w.js} +0 -0
- /package/dist/{widearea-dns-DFZMcfLf.js → widearea-dns-D01FFYZ8.js} +0 -0
- /package/dist/{wsl-D28w2jQC.js → wsl-PDLKeX04.js} +0 -0
package/dist/extensionAPI.js
CHANGED
|
@@ -637,6 +637,8 @@ function createEmptyPluginRegistry() {
|
|
|
637
637
|
typedHooks: [],
|
|
638
638
|
channels: [],
|
|
639
639
|
providers: [],
|
|
640
|
+
sttProviders: [],
|
|
641
|
+
ttsProviders: [],
|
|
640
642
|
gatewayHandlers: {},
|
|
641
643
|
httpHandlers: [],
|
|
642
644
|
httpRoutes: [],
|
|
@@ -2631,962 +2633,9 @@ function resolveConfigIncludes(obj, configPath, resolver = defaultResolver) {
|
|
|
2631
2633
|
return new IncludeProcessor(configPath, resolver).process(obj);
|
|
2632
2634
|
}
|
|
2633
2635
|
|
|
2634
|
-
//#endregion
|
|
2635
|
-
//#region src/config/discord-preview-streaming.ts
|
|
2636
|
-
function normalizeStreamingMode(value) {
|
|
2637
|
-
if (typeof value !== "string") return null;
|
|
2638
|
-
return value.trim().toLowerCase() || null;
|
|
2639
|
-
}
|
|
2640
|
-
function parseStreamingMode(value) {
|
|
2641
|
-
const normalized = normalizeStreamingMode(value);
|
|
2642
|
-
if (normalized === "off" || normalized === "partial" || normalized === "block" || normalized === "progress") return normalized;
|
|
2643
|
-
return null;
|
|
2644
|
-
}
|
|
2645
|
-
function parseDiscordPreviewStreamMode(value) {
|
|
2646
|
-
const parsed = parseStreamingMode(value);
|
|
2647
|
-
if (!parsed) return null;
|
|
2648
|
-
return parsed === "progress" ? "partial" : parsed;
|
|
2649
|
-
}
|
|
2650
|
-
function parseSlackLegacyDraftStreamMode(value) {
|
|
2651
|
-
const normalized = normalizeStreamingMode(value);
|
|
2652
|
-
if (normalized === "replace" || normalized === "status_final" || normalized === "append") return normalized;
|
|
2653
|
-
return null;
|
|
2654
|
-
}
|
|
2655
|
-
function mapSlackLegacyDraftStreamModeToStreaming(mode) {
|
|
2656
|
-
if (mode === "append") return "block";
|
|
2657
|
-
if (mode === "status_final") return "progress";
|
|
2658
|
-
return "partial";
|
|
2659
|
-
}
|
|
2660
|
-
function resolveTelegramPreviewStreamMode(params = {}) {
|
|
2661
|
-
const parsedStreaming = parseStreamingMode(params.streaming);
|
|
2662
|
-
if (parsedStreaming) {
|
|
2663
|
-
if (parsedStreaming === "progress") return "partial";
|
|
2664
|
-
return parsedStreaming;
|
|
2665
|
-
}
|
|
2666
|
-
const legacy = parseDiscordPreviewStreamMode(params.streamMode);
|
|
2667
|
-
if (legacy) return legacy;
|
|
2668
|
-
if (typeof params.streaming === "boolean") return params.streaming ? "partial" : "off";
|
|
2669
|
-
return "off";
|
|
2670
|
-
}
|
|
2671
|
-
function resolveDiscordPreviewStreamMode(params = {}) {
|
|
2672
|
-
const parsedStreaming = parseDiscordPreviewStreamMode(params.streaming);
|
|
2673
|
-
if (parsedStreaming) return parsedStreaming;
|
|
2674
|
-
const legacy = parseDiscordPreviewStreamMode(params.streamMode);
|
|
2675
|
-
if (legacy) return legacy;
|
|
2676
|
-
if (typeof params.streaming === "boolean") return params.streaming ? "partial" : "off";
|
|
2677
|
-
return "off";
|
|
2678
|
-
}
|
|
2679
|
-
function resolveSlackStreamingMode(params = {}) {
|
|
2680
|
-
const parsedStreaming = parseStreamingMode(params.streaming);
|
|
2681
|
-
if (parsedStreaming) return parsedStreaming;
|
|
2682
|
-
const legacyStreamMode = parseSlackLegacyDraftStreamMode(params.streamMode);
|
|
2683
|
-
if (legacyStreamMode) return mapSlackLegacyDraftStreamModeToStreaming(legacyStreamMode);
|
|
2684
|
-
if (typeof params.streaming === "boolean") return "partial";
|
|
2685
|
-
return "partial";
|
|
2686
|
-
}
|
|
2687
|
-
function resolveSlackNativeStreaming(params = {}) {
|
|
2688
|
-
if (typeof params.nativeStreaming === "boolean") return params.nativeStreaming;
|
|
2689
|
-
if (typeof params.streaming === "boolean") return params.streaming;
|
|
2690
|
-
return true;
|
|
2691
|
-
}
|
|
2692
|
-
|
|
2693
|
-
//#endregion
|
|
2694
|
-
//#region src/infra/safe-executable-value.ts
|
|
2695
|
-
const SHELL_METACHARS = /[;&|`$<>]/;
|
|
2696
|
-
const CONTROL_CHARS = /[\r\n]/;
|
|
2697
|
-
const QUOTE_CHARS = /["']/;
|
|
2698
|
-
const BARE_NAME_PATTERN = /^[A-Za-z0-9._+-]+$/;
|
|
2699
|
-
function isLikelyPath(value) {
|
|
2700
|
-
if (value.startsWith(".") || value.startsWith("~")) return true;
|
|
2701
|
-
if (value.includes("/") || value.includes("\\")) return true;
|
|
2702
|
-
return /^[A-Za-z]:[\\/]/.test(value);
|
|
2703
|
-
}
|
|
2704
|
-
function isSafeExecutableValue(value) {
|
|
2705
|
-
if (!value) return false;
|
|
2706
|
-
const trimmed = value.trim();
|
|
2707
|
-
if (!trimmed) return false;
|
|
2708
|
-
if (trimmed.includes("\0")) return false;
|
|
2709
|
-
if (CONTROL_CHARS.test(trimmed)) return false;
|
|
2710
|
-
if (SHELL_METACHARS.test(trimmed)) return false;
|
|
2711
|
-
if (QUOTE_CHARS.test(trimmed)) return false;
|
|
2712
|
-
if (isLikelyPath(trimmed)) return true;
|
|
2713
|
-
if (trimmed.startsWith("-")) return false;
|
|
2714
|
-
return BARE_NAME_PATTERN.test(trimmed);
|
|
2715
|
-
}
|
|
2716
|
-
|
|
2717
|
-
//#endregion
|
|
2718
|
-
//#region src/config/legacy.shared.ts
|
|
2719
|
-
const getRecord = (value) => isRecord(value) ? value : null;
|
|
2720
|
-
const ensureRecord = (root, key) => {
|
|
2721
|
-
const existing = root[key];
|
|
2722
|
-
if (isRecord(existing)) return existing;
|
|
2723
|
-
const next = {};
|
|
2724
|
-
root[key] = next;
|
|
2725
|
-
return next;
|
|
2726
|
-
};
|
|
2727
|
-
const mergeMissing = (target, source) => {
|
|
2728
|
-
for (const [key, value] of Object.entries(source)) {
|
|
2729
|
-
if (value === void 0 || isBlockedObjectKey(key)) continue;
|
|
2730
|
-
const existing = target[key];
|
|
2731
|
-
if (existing === void 0) {
|
|
2732
|
-
target[key] = value;
|
|
2733
|
-
continue;
|
|
2734
|
-
}
|
|
2735
|
-
if (isRecord(existing) && isRecord(value)) mergeMissing(existing, value);
|
|
2736
|
-
}
|
|
2737
|
-
};
|
|
2738
|
-
const mapLegacyAudioTranscription = (value) => {
|
|
2739
|
-
const transcriber = getRecord(value);
|
|
2740
|
-
const command = Array.isArray(transcriber?.command) ? transcriber?.command : null;
|
|
2741
|
-
if (!command || command.length === 0) return null;
|
|
2742
|
-
if (typeof command[0] !== "string") return null;
|
|
2743
|
-
if (!command.every((part) => typeof part === "string")) return null;
|
|
2744
|
-
const rawExecutable = command[0].trim();
|
|
2745
|
-
if (!rawExecutable) return null;
|
|
2746
|
-
if (!isSafeExecutableValue(rawExecutable)) return null;
|
|
2747
|
-
const args = command.slice(1);
|
|
2748
|
-
const timeoutSeconds = typeof transcriber?.timeoutSeconds === "number" ? transcriber?.timeoutSeconds : void 0;
|
|
2749
|
-
const result = {
|
|
2750
|
-
command: rawExecutable,
|
|
2751
|
-
type: "cli"
|
|
2752
|
-
};
|
|
2753
|
-
if (args.length > 0) result.args = args;
|
|
2754
|
-
if (timeoutSeconds !== void 0) result.timeoutSeconds = timeoutSeconds;
|
|
2755
|
-
return result;
|
|
2756
|
-
};
|
|
2757
|
-
const getAgentsList = (agents) => {
|
|
2758
|
-
const list = agents?.list;
|
|
2759
|
-
return Array.isArray(list) ? list : [];
|
|
2760
|
-
};
|
|
2761
|
-
const resolveDefaultAgentIdFromRaw = (raw) => {
|
|
2762
|
-
const list = getAgentsList(getRecord(raw.agents));
|
|
2763
|
-
const defaultEntry = list.find((entry) => isRecord(entry) && entry.default === true && typeof entry.id === "string" && entry.id.trim() !== "");
|
|
2764
|
-
if (defaultEntry) return defaultEntry.id.trim();
|
|
2765
|
-
const routing = getRecord(raw.routing);
|
|
2766
|
-
const routingDefault = typeof routing?.defaultAgentId === "string" ? routing.defaultAgentId.trim() : "";
|
|
2767
|
-
if (routingDefault) return routingDefault;
|
|
2768
|
-
const firstEntry = list.find((entry) => isRecord(entry) && typeof entry.id === "string" && entry.id.trim() !== "");
|
|
2769
|
-
if (firstEntry) return firstEntry.id.trim();
|
|
2770
|
-
return "main";
|
|
2771
|
-
};
|
|
2772
|
-
const ensureAgentEntry = (list, id) => {
|
|
2773
|
-
const normalized = id.trim();
|
|
2774
|
-
const existing = list.find((entry) => isRecord(entry) && typeof entry.id === "string" && entry.id.trim() === normalized);
|
|
2775
|
-
if (existing) return existing;
|
|
2776
|
-
const created = { id: normalized };
|
|
2777
|
-
list.push(created);
|
|
2778
|
-
return created;
|
|
2779
|
-
};
|
|
2780
|
-
|
|
2781
|
-
//#endregion
|
|
2782
|
-
//#region src/config/legacy.migrations.part-1.ts
|
|
2783
|
-
function migrateBindings(raw, changes, changeNote, mutator) {
|
|
2784
|
-
const bindings = Array.isArray(raw.bindings) ? raw.bindings : null;
|
|
2785
|
-
if (!bindings) return;
|
|
2786
|
-
let touched = false;
|
|
2787
|
-
for (const entry of bindings) {
|
|
2788
|
-
if (!isRecord(entry)) continue;
|
|
2789
|
-
const match = getRecord(entry.match);
|
|
2790
|
-
if (!match) continue;
|
|
2791
|
-
if (!mutator(match)) continue;
|
|
2792
|
-
entry.match = match;
|
|
2793
|
-
touched = true;
|
|
2794
|
-
}
|
|
2795
|
-
if (touched) {
|
|
2796
|
-
raw.bindings = bindings;
|
|
2797
|
-
changes.push(changeNote);
|
|
2798
|
-
}
|
|
2799
|
-
}
|
|
2800
|
-
function ensureDefaultGroupEntry(section) {
|
|
2801
|
-
const groups = isRecord(section.groups) ? section.groups : {};
|
|
2802
|
-
const defaultKey = "*";
|
|
2803
|
-
return {
|
|
2804
|
-
groups,
|
|
2805
|
-
entry: isRecord(groups[defaultKey]) ? groups[defaultKey] : {}
|
|
2806
|
-
};
|
|
2807
|
-
}
|
|
2808
|
-
const LEGACY_CONFIG_MIGRATIONS_PART_1 = [
|
|
2809
|
-
{
|
|
2810
|
-
id: "bindings.match.provider->bindings.match.channel",
|
|
2811
|
-
describe: "Move bindings[].match.provider to bindings[].match.channel",
|
|
2812
|
-
apply: (raw, changes) => {
|
|
2813
|
-
migrateBindings(raw, changes, "Moved bindings[].match.provider → bindings[].match.channel.", (match) => {
|
|
2814
|
-
if (typeof match.channel === "string" && match.channel.trim()) return false;
|
|
2815
|
-
const provider = typeof match.provider === "string" ? match.provider.trim() : "";
|
|
2816
|
-
if (!provider) return false;
|
|
2817
|
-
match.channel = provider;
|
|
2818
|
-
delete match.provider;
|
|
2819
|
-
return true;
|
|
2820
|
-
});
|
|
2821
|
-
}
|
|
2822
|
-
},
|
|
2823
|
-
{
|
|
2824
|
-
id: "bindings.match.accountID->bindings.match.accountId",
|
|
2825
|
-
describe: "Move bindings[].match.accountID to bindings[].match.accountId",
|
|
2826
|
-
apply: (raw, changes) => {
|
|
2827
|
-
migrateBindings(raw, changes, "Moved bindings[].match.accountID → bindings[].match.accountId.", (match) => {
|
|
2828
|
-
if (match.accountId !== void 0) return false;
|
|
2829
|
-
const accountID = typeof match.accountID === "string" ? match.accountID.trim() : match.accountID;
|
|
2830
|
-
if (!accountID) return false;
|
|
2831
|
-
match.accountId = accountID;
|
|
2832
|
-
delete match.accountID;
|
|
2833
|
-
return true;
|
|
2834
|
-
});
|
|
2835
|
-
}
|
|
2836
|
-
},
|
|
2837
|
-
{
|
|
2838
|
-
id: "session.sendPolicy.rules.match.provider->match.channel",
|
|
2839
|
-
describe: "Move session.sendPolicy.rules[].match.provider to match.channel",
|
|
2840
|
-
apply: (raw, changes) => {
|
|
2841
|
-
const session = getRecord(raw.session);
|
|
2842
|
-
if (!session) return;
|
|
2843
|
-
const sendPolicy = getRecord(session.sendPolicy);
|
|
2844
|
-
if (!sendPolicy) return;
|
|
2845
|
-
const rules = Array.isArray(sendPolicy.rules) ? sendPolicy.rules : null;
|
|
2846
|
-
if (!rules) return;
|
|
2847
|
-
let touched = false;
|
|
2848
|
-
for (const rule of rules) {
|
|
2849
|
-
if (!isRecord(rule)) continue;
|
|
2850
|
-
const match = getRecord(rule.match);
|
|
2851
|
-
if (!match) continue;
|
|
2852
|
-
if (typeof match.channel === "string" && match.channel.trim()) continue;
|
|
2853
|
-
const provider = typeof match.provider === "string" ? match.provider.trim() : "";
|
|
2854
|
-
if (!provider) continue;
|
|
2855
|
-
match.channel = provider;
|
|
2856
|
-
delete match.provider;
|
|
2857
|
-
rule.match = match;
|
|
2858
|
-
touched = true;
|
|
2859
|
-
}
|
|
2860
|
-
if (touched) {
|
|
2861
|
-
sendPolicy.rules = rules;
|
|
2862
|
-
session.sendPolicy = sendPolicy;
|
|
2863
|
-
raw.session = session;
|
|
2864
|
-
changes.push("Moved session.sendPolicy.rules[].match.provider → match.channel.");
|
|
2865
|
-
}
|
|
2866
|
-
}
|
|
2867
|
-
},
|
|
2868
|
-
{
|
|
2869
|
-
id: "messages.queue.byProvider->byChannel",
|
|
2870
|
-
describe: "Move messages.queue.byProvider to messages.queue.byChannel",
|
|
2871
|
-
apply: (raw, changes) => {
|
|
2872
|
-
const messages = getRecord(raw.messages);
|
|
2873
|
-
if (!messages) return;
|
|
2874
|
-
const queue = getRecord(messages.queue);
|
|
2875
|
-
if (!queue) return;
|
|
2876
|
-
if (queue.byProvider === void 0) return;
|
|
2877
|
-
if (queue.byChannel === void 0) {
|
|
2878
|
-
queue.byChannel = queue.byProvider;
|
|
2879
|
-
changes.push("Moved messages.queue.byProvider → messages.queue.byChannel.");
|
|
2880
|
-
} else changes.push("Removed messages.queue.byProvider (messages.queue.byChannel already set).");
|
|
2881
|
-
delete queue.byProvider;
|
|
2882
|
-
messages.queue = queue;
|
|
2883
|
-
raw.messages = messages;
|
|
2884
|
-
}
|
|
2885
|
-
},
|
|
2886
|
-
{
|
|
2887
|
-
id: "providers->channels",
|
|
2888
|
-
describe: "Move provider config sections to channels.*",
|
|
2889
|
-
apply: (raw, changes) => {
|
|
2890
|
-
const legacyEntries = [
|
|
2891
|
-
"whatsapp",
|
|
2892
|
-
"telegram",
|
|
2893
|
-
"discord",
|
|
2894
|
-
"slack",
|
|
2895
|
-
"signal",
|
|
2896
|
-
"imessage",
|
|
2897
|
-
"msteams"
|
|
2898
|
-
].filter((key) => isRecord(raw[key]));
|
|
2899
|
-
if (legacyEntries.length === 0) return;
|
|
2900
|
-
const channels = ensureRecord(raw, "channels");
|
|
2901
|
-
for (const key of legacyEntries) {
|
|
2902
|
-
const legacy = getRecord(raw[key]);
|
|
2903
|
-
if (!legacy) continue;
|
|
2904
|
-
const channelEntry = ensureRecord(channels, key);
|
|
2905
|
-
const hadEntries = Object.keys(channelEntry).length > 0;
|
|
2906
|
-
mergeMissing(channelEntry, legacy);
|
|
2907
|
-
channels[key] = channelEntry;
|
|
2908
|
-
delete raw[key];
|
|
2909
|
-
changes.push(hadEntries ? `Merged ${key} → channels.${key}.` : `Moved ${key} → channels.${key}.`);
|
|
2910
|
-
}
|
|
2911
|
-
raw.channels = channels;
|
|
2912
|
-
}
|
|
2913
|
-
},
|
|
2914
|
-
{
|
|
2915
|
-
id: "channels.streaming-keys->channels.streaming",
|
|
2916
|
-
describe: "Normalize legacy streaming keys to channels.<provider>.streaming (Telegram/Discord/Slack)",
|
|
2917
|
-
apply: (raw, changes) => {
|
|
2918
|
-
const channels = getRecord(raw.channels);
|
|
2919
|
-
if (!channels) return;
|
|
2920
|
-
const migrateProviderEntry = (params) => {
|
|
2921
|
-
const migrateCommonStreamingMode = (resolveMode) => {
|
|
2922
|
-
const hasLegacyStreamMode = params.entry.streamMode !== void 0;
|
|
2923
|
-
const legacyStreaming = params.entry.streaming;
|
|
2924
|
-
if (!hasLegacyStreamMode && typeof legacyStreaming !== "boolean") return false;
|
|
2925
|
-
const resolved = resolveMode(params.entry);
|
|
2926
|
-
params.entry.streaming = resolved;
|
|
2927
|
-
if (hasLegacyStreamMode) {
|
|
2928
|
-
delete params.entry.streamMode;
|
|
2929
|
-
changes.push(`Moved ${params.pathPrefix}.streamMode → ${params.pathPrefix}.streaming (${resolved}).`);
|
|
2930
|
-
}
|
|
2931
|
-
if (typeof legacyStreaming === "boolean") changes.push(`Normalized ${params.pathPrefix}.streaming boolean → enum (${resolved}).`);
|
|
2932
|
-
return true;
|
|
2933
|
-
};
|
|
2934
|
-
const hasLegacyStreamMode = params.entry.streamMode !== void 0;
|
|
2935
|
-
const legacyStreaming = params.entry.streaming;
|
|
2936
|
-
const legacyNativeStreaming = params.entry.nativeStreaming;
|
|
2937
|
-
if (params.provider === "telegram") {
|
|
2938
|
-
migrateCommonStreamingMode(resolveTelegramPreviewStreamMode);
|
|
2939
|
-
return;
|
|
2940
|
-
}
|
|
2941
|
-
if (params.provider === "discord") {
|
|
2942
|
-
migrateCommonStreamingMode(resolveDiscordPreviewStreamMode);
|
|
2943
|
-
return;
|
|
2944
|
-
}
|
|
2945
|
-
if (!hasLegacyStreamMode && typeof legacyStreaming !== "boolean") return;
|
|
2946
|
-
const resolvedStreaming = resolveSlackStreamingMode(params.entry);
|
|
2947
|
-
const resolvedNativeStreaming = resolveSlackNativeStreaming(params.entry);
|
|
2948
|
-
params.entry.streaming = resolvedStreaming;
|
|
2949
|
-
params.entry.nativeStreaming = resolvedNativeStreaming;
|
|
2950
|
-
if (hasLegacyStreamMode) {
|
|
2951
|
-
delete params.entry.streamMode;
|
|
2952
|
-
changes.push(`Moved ${params.pathPrefix}.streamMode → ${params.pathPrefix}.streaming (${resolvedStreaming}).`);
|
|
2953
|
-
}
|
|
2954
|
-
if (typeof legacyStreaming === "boolean") changes.push(`Moved ${params.pathPrefix}.streaming (boolean) → ${params.pathPrefix}.nativeStreaming (${resolvedNativeStreaming}).`);
|
|
2955
|
-
else if (typeof legacyNativeStreaming !== "boolean" && hasLegacyStreamMode) changes.push(`Set ${params.pathPrefix}.nativeStreaming → ${resolvedNativeStreaming}.`);
|
|
2956
|
-
};
|
|
2957
|
-
const migrateProvider = (provider) => {
|
|
2958
|
-
const providerEntry = getRecord(channels[provider]);
|
|
2959
|
-
if (!providerEntry) return;
|
|
2960
|
-
migrateProviderEntry({
|
|
2961
|
-
provider,
|
|
2962
|
-
entry: providerEntry,
|
|
2963
|
-
pathPrefix: `channels.${provider}`
|
|
2964
|
-
});
|
|
2965
|
-
const accounts = getRecord(providerEntry.accounts);
|
|
2966
|
-
if (!accounts) return;
|
|
2967
|
-
for (const [accountId, accountValue] of Object.entries(accounts)) {
|
|
2968
|
-
const account = getRecord(accountValue);
|
|
2969
|
-
if (!account) continue;
|
|
2970
|
-
migrateProviderEntry({
|
|
2971
|
-
provider,
|
|
2972
|
-
entry: account,
|
|
2973
|
-
pathPrefix: `channels.${provider}.accounts.${accountId}`
|
|
2974
|
-
});
|
|
2975
|
-
}
|
|
2976
|
-
};
|
|
2977
|
-
migrateProvider("telegram");
|
|
2978
|
-
migrateProvider("discord");
|
|
2979
|
-
migrateProvider("slack");
|
|
2980
|
-
}
|
|
2981
|
-
},
|
|
2982
|
-
{
|
|
2983
|
-
id: "routing.allowFrom->channels.whatsapp.allowFrom",
|
|
2984
|
-
describe: "Move routing.allowFrom to channels.whatsapp.allowFrom",
|
|
2985
|
-
apply: (raw, changes) => {
|
|
2986
|
-
const routing = raw.routing;
|
|
2987
|
-
if (!routing || typeof routing !== "object") return;
|
|
2988
|
-
const allowFrom = routing.allowFrom;
|
|
2989
|
-
if (allowFrom === void 0) return;
|
|
2990
|
-
const channels = getRecord(raw.channels);
|
|
2991
|
-
const whatsapp = channels ? getRecord(channels.whatsapp) : null;
|
|
2992
|
-
if (!whatsapp) {
|
|
2993
|
-
delete routing.allowFrom;
|
|
2994
|
-
if (Object.keys(routing).length === 0) delete raw.routing;
|
|
2995
|
-
changes.push("Removed routing.allowFrom (channels.whatsapp not configured).");
|
|
2996
|
-
return;
|
|
2997
|
-
}
|
|
2998
|
-
if (whatsapp.allowFrom === void 0) {
|
|
2999
|
-
whatsapp.allowFrom = allowFrom;
|
|
3000
|
-
changes.push("Moved routing.allowFrom → channels.whatsapp.allowFrom.");
|
|
3001
|
-
} else changes.push("Removed routing.allowFrom (channels.whatsapp.allowFrom already set).");
|
|
3002
|
-
delete routing.allowFrom;
|
|
3003
|
-
if (Object.keys(routing).length === 0) delete raw.routing;
|
|
3004
|
-
channels.whatsapp = whatsapp;
|
|
3005
|
-
raw.channels = channels;
|
|
3006
|
-
}
|
|
3007
|
-
},
|
|
3008
|
-
{
|
|
3009
|
-
id: "routing.groupChat.requireMention->groups.*.requireMention",
|
|
3010
|
-
describe: "Move routing.groupChat.requireMention to channels.whatsapp/telegram/imessage groups",
|
|
3011
|
-
apply: (raw, changes) => {
|
|
3012
|
-
const routing = raw.routing;
|
|
3013
|
-
if (!routing || typeof routing !== "object") return;
|
|
3014
|
-
const groupChat = routing.groupChat && typeof routing.groupChat === "object" ? routing.groupChat : null;
|
|
3015
|
-
if (!groupChat) return;
|
|
3016
|
-
const requireMention = groupChat.requireMention;
|
|
3017
|
-
if (requireMention === void 0) return;
|
|
3018
|
-
const channels = ensureRecord(raw, "channels");
|
|
3019
|
-
const applyTo = (key, options) => {
|
|
3020
|
-
if (options?.requireExisting && !isRecord(channels[key])) return;
|
|
3021
|
-
const section = channels[key] && typeof channels[key] === "object" ? channels[key] : {};
|
|
3022
|
-
const { groups, entry } = ensureDefaultGroupEntry(section);
|
|
3023
|
-
const defaultKey = "*";
|
|
3024
|
-
if (entry.requireMention === void 0) {
|
|
3025
|
-
entry.requireMention = requireMention;
|
|
3026
|
-
groups[defaultKey] = entry;
|
|
3027
|
-
section.groups = groups;
|
|
3028
|
-
channels[key] = section;
|
|
3029
|
-
changes.push(`Moved routing.groupChat.requireMention → channels.${key}.groups."*".requireMention.`);
|
|
3030
|
-
} else changes.push(`Removed routing.groupChat.requireMention (channels.${key}.groups."*" already set).`);
|
|
3031
|
-
};
|
|
3032
|
-
applyTo("whatsapp", { requireExisting: true });
|
|
3033
|
-
applyTo("telegram");
|
|
3034
|
-
applyTo("imessage");
|
|
3035
|
-
delete groupChat.requireMention;
|
|
3036
|
-
if (Object.keys(groupChat).length === 0) delete routing.groupChat;
|
|
3037
|
-
if (Object.keys(routing).length === 0) delete raw.routing;
|
|
3038
|
-
raw.channels = channels;
|
|
3039
|
-
}
|
|
3040
|
-
},
|
|
3041
|
-
{
|
|
3042
|
-
id: "gateway.token->gateway.auth.token",
|
|
3043
|
-
describe: "Move gateway.token to gateway.auth.token",
|
|
3044
|
-
apply: (raw, changes) => {
|
|
3045
|
-
const gateway = raw.gateway;
|
|
3046
|
-
if (!gateway || typeof gateway !== "object") return;
|
|
3047
|
-
const token = gateway.token;
|
|
3048
|
-
if (token === void 0) return;
|
|
3049
|
-
const gatewayObj = gateway;
|
|
3050
|
-
const auth = gatewayObj.auth && typeof gatewayObj.auth === "object" ? gatewayObj.auth : {};
|
|
3051
|
-
if (auth.token === void 0) {
|
|
3052
|
-
auth.token = token;
|
|
3053
|
-
if (!auth.mode) auth.mode = "token";
|
|
3054
|
-
changes.push("Moved gateway.token → gateway.auth.token.");
|
|
3055
|
-
} else changes.push("Removed gateway.token (gateway.auth.token already set).");
|
|
3056
|
-
delete gatewayObj.token;
|
|
3057
|
-
if (Object.keys(auth).length > 0) gatewayObj.auth = auth;
|
|
3058
|
-
raw.gateway = gatewayObj;
|
|
3059
|
-
}
|
|
3060
|
-
},
|
|
3061
|
-
{
|
|
3062
|
-
id: "telegram.requireMention->channels.telegram.groups.*.requireMention",
|
|
3063
|
-
describe: "Move telegram.requireMention to channels.telegram.groups.*.requireMention",
|
|
3064
|
-
apply: (raw, changes) => {
|
|
3065
|
-
const channels = ensureRecord(raw, "channels");
|
|
3066
|
-
const telegram = channels.telegram;
|
|
3067
|
-
if (!telegram || typeof telegram !== "object") return;
|
|
3068
|
-
const requireMention = telegram.requireMention;
|
|
3069
|
-
if (requireMention === void 0) return;
|
|
3070
|
-
const { groups, entry } = ensureDefaultGroupEntry(telegram);
|
|
3071
|
-
const defaultKey = "*";
|
|
3072
|
-
if (entry.requireMention === void 0) {
|
|
3073
|
-
entry.requireMention = requireMention;
|
|
3074
|
-
groups[defaultKey] = entry;
|
|
3075
|
-
telegram.groups = groups;
|
|
3076
|
-
changes.push("Moved telegram.requireMention → channels.telegram.groups.\"*\".requireMention.");
|
|
3077
|
-
} else changes.push("Removed telegram.requireMention (channels.telegram.groups.\"*\" already set).");
|
|
3078
|
-
delete telegram.requireMention;
|
|
3079
|
-
channels.telegram = telegram;
|
|
3080
|
-
raw.channels = channels;
|
|
3081
|
-
}
|
|
3082
|
-
}
|
|
3083
|
-
];
|
|
3084
|
-
|
|
3085
|
-
//#endregion
|
|
3086
|
-
//#region src/config/legacy.migrations.part-2.ts
|
|
3087
|
-
function applyLegacyAudioTranscriptionModel(params) {
|
|
3088
|
-
const mapped = mapLegacyAudioTranscription(params.source);
|
|
3089
|
-
if (!mapped) {
|
|
3090
|
-
params.changes.push(params.invalidMessage);
|
|
3091
|
-
return;
|
|
3092
|
-
}
|
|
3093
|
-
const mediaAudio = ensureRecord(ensureRecord(ensureRecord(params.raw, "tools"), "media"), "audio");
|
|
3094
|
-
if ((Array.isArray(mediaAudio.models) ? mediaAudio.models : []).length === 0) {
|
|
3095
|
-
mediaAudio.enabled = true;
|
|
3096
|
-
mediaAudio.models = [mapped];
|
|
3097
|
-
params.changes.push(params.movedMessage);
|
|
3098
|
-
return;
|
|
3099
|
-
}
|
|
3100
|
-
params.changes.push(params.alreadySetMessage);
|
|
3101
|
-
}
|
|
3102
|
-
const LEGACY_CONFIG_MIGRATIONS_PART_2 = [
|
|
3103
|
-
{
|
|
3104
|
-
id: "agent.model-config-v2",
|
|
3105
|
-
describe: "Migrate legacy agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks to agent.models + model lists",
|
|
3106
|
-
apply: (raw, changes) => {
|
|
3107
|
-
const agentRoot = getRecord(raw.agent);
|
|
3108
|
-
const defaults = getRecord(getRecord(raw.agents)?.defaults);
|
|
3109
|
-
const agent = agentRoot ?? defaults;
|
|
3110
|
-
if (!agent) return;
|
|
3111
|
-
const label = agentRoot ? "agent" : "agents.defaults";
|
|
3112
|
-
const legacyModel = typeof agent.model === "string" ? String(agent.model) : void 0;
|
|
3113
|
-
const legacyImageModel = typeof agent.imageModel === "string" ? String(agent.imageModel) : void 0;
|
|
3114
|
-
const legacyAllowed = Array.isArray(agent.allowedModels) ? agent.allowedModels.map(String) : [];
|
|
3115
|
-
const legacyModelFallbacks = Array.isArray(agent.modelFallbacks) ? agent.modelFallbacks.map(String) : [];
|
|
3116
|
-
const legacyImageModelFallbacks = Array.isArray(agent.imageModelFallbacks) ? agent.imageModelFallbacks.map(String) : [];
|
|
3117
|
-
const legacyAliases = agent.modelAliases && typeof agent.modelAliases === "object" ? agent.modelAliases : {};
|
|
3118
|
-
if (!(legacyModel || legacyImageModel || legacyAllowed.length > 0 || legacyModelFallbacks.length > 0 || legacyImageModelFallbacks.length > 0 || Object.keys(legacyAliases).length > 0)) return;
|
|
3119
|
-
const models = agent.models && typeof agent.models === "object" ? agent.models : {};
|
|
3120
|
-
const ensureModel = (rawKey) => {
|
|
3121
|
-
if (typeof rawKey !== "string") return;
|
|
3122
|
-
const key = rawKey.trim();
|
|
3123
|
-
if (!key) return;
|
|
3124
|
-
if (!models[key]) models[key] = {};
|
|
3125
|
-
};
|
|
3126
|
-
ensureModel(legacyModel);
|
|
3127
|
-
ensureModel(legacyImageModel);
|
|
3128
|
-
for (const key of legacyAllowed) ensureModel(key);
|
|
3129
|
-
for (const key of legacyModelFallbacks) ensureModel(key);
|
|
3130
|
-
for (const key of legacyImageModelFallbacks) ensureModel(key);
|
|
3131
|
-
for (const target of Object.values(legacyAliases)) {
|
|
3132
|
-
if (typeof target !== "string") continue;
|
|
3133
|
-
ensureModel(target);
|
|
3134
|
-
}
|
|
3135
|
-
for (const [alias, targetRaw] of Object.entries(legacyAliases)) {
|
|
3136
|
-
if (typeof targetRaw !== "string") continue;
|
|
3137
|
-
const target = targetRaw.trim();
|
|
3138
|
-
if (!target) continue;
|
|
3139
|
-
const entry = models[target] && typeof models[target] === "object" ? models[target] : {};
|
|
3140
|
-
if (!("alias" in entry)) {
|
|
3141
|
-
entry.alias = alias;
|
|
3142
|
-
models[target] = entry;
|
|
3143
|
-
}
|
|
3144
|
-
}
|
|
3145
|
-
const currentModel = agent.model && typeof agent.model === "object" ? agent.model : null;
|
|
3146
|
-
if (currentModel) {
|
|
3147
|
-
if (!currentModel.primary && legacyModel) currentModel.primary = legacyModel;
|
|
3148
|
-
if (legacyModelFallbacks.length > 0 && (!Array.isArray(currentModel.fallbacks) || currentModel.fallbacks.length === 0)) currentModel.fallbacks = legacyModelFallbacks;
|
|
3149
|
-
agent.model = currentModel;
|
|
3150
|
-
} else if (legacyModel || legacyModelFallbacks.length > 0) agent.model = {
|
|
3151
|
-
primary: legacyModel,
|
|
3152
|
-
fallbacks: legacyModelFallbacks.length ? legacyModelFallbacks : []
|
|
3153
|
-
};
|
|
3154
|
-
const currentImageModel = agent.imageModel && typeof agent.imageModel === "object" ? agent.imageModel : null;
|
|
3155
|
-
if (currentImageModel) {
|
|
3156
|
-
if (!currentImageModel.primary && legacyImageModel) currentImageModel.primary = legacyImageModel;
|
|
3157
|
-
if (legacyImageModelFallbacks.length > 0 && (!Array.isArray(currentImageModel.fallbacks) || currentImageModel.fallbacks.length === 0)) currentImageModel.fallbacks = legacyImageModelFallbacks;
|
|
3158
|
-
agent.imageModel = currentImageModel;
|
|
3159
|
-
} else if (legacyImageModel || legacyImageModelFallbacks.length > 0) agent.imageModel = {
|
|
3160
|
-
primary: legacyImageModel,
|
|
3161
|
-
fallbacks: legacyImageModelFallbacks.length ? legacyImageModelFallbacks : []
|
|
3162
|
-
};
|
|
3163
|
-
agent.models = models;
|
|
3164
|
-
if (legacyModel !== void 0) changes.push(`Migrated ${label}.model string → ${label}.model.primary.`);
|
|
3165
|
-
if (legacyModelFallbacks.length > 0) changes.push(`Migrated ${label}.modelFallbacks → ${label}.model.fallbacks.`);
|
|
3166
|
-
if (legacyImageModel !== void 0) changes.push(`Migrated ${label}.imageModel string → ${label}.imageModel.primary.`);
|
|
3167
|
-
if (legacyImageModelFallbacks.length > 0) changes.push(`Migrated ${label}.imageModelFallbacks → ${label}.imageModel.fallbacks.`);
|
|
3168
|
-
if (legacyAllowed.length > 0) changes.push(`Migrated ${label}.allowedModels → ${label}.models.`);
|
|
3169
|
-
if (Object.keys(legacyAliases).length > 0) changes.push(`Migrated ${label}.modelAliases → ${label}.models.*.alias.`);
|
|
3170
|
-
delete agent.allowedModels;
|
|
3171
|
-
delete agent.modelAliases;
|
|
3172
|
-
delete agent.modelFallbacks;
|
|
3173
|
-
delete agent.imageModelFallbacks;
|
|
3174
|
-
}
|
|
3175
|
-
},
|
|
3176
|
-
{
|
|
3177
|
-
id: "routing.agents-v2",
|
|
3178
|
-
describe: "Move routing.agents/defaultAgentId to agents.list",
|
|
3179
|
-
apply: (raw, changes) => {
|
|
3180
|
-
const routing = getRecord(raw.routing);
|
|
3181
|
-
if (!routing) return;
|
|
3182
|
-
const routingAgents = getRecord(routing.agents);
|
|
3183
|
-
const agents = ensureRecord(raw, "agents");
|
|
3184
|
-
const list = getAgentsList(agents);
|
|
3185
|
-
if (routingAgents) {
|
|
3186
|
-
for (const [rawId, entryRaw] of Object.entries(routingAgents)) {
|
|
3187
|
-
const agentId = String(rawId ?? "").trim();
|
|
3188
|
-
const entry = getRecord(entryRaw);
|
|
3189
|
-
if (!agentId || !entry) continue;
|
|
3190
|
-
const target = ensureAgentEntry(list, agentId);
|
|
3191
|
-
const entryCopy = { ...entry };
|
|
3192
|
-
if ("mentionPatterns" in entryCopy) {
|
|
3193
|
-
const mentionPatterns = entryCopy.mentionPatterns;
|
|
3194
|
-
const groupChat = ensureRecord(target, "groupChat");
|
|
3195
|
-
if (groupChat.mentionPatterns === void 0) {
|
|
3196
|
-
groupChat.mentionPatterns = mentionPatterns;
|
|
3197
|
-
changes.push(`Moved routing.agents.${agentId}.mentionPatterns → agents.list (id "${agentId}").groupChat.mentionPatterns.`);
|
|
3198
|
-
} else changes.push(`Removed routing.agents.${agentId}.mentionPatterns (agents.list groupChat mentionPatterns already set).`);
|
|
3199
|
-
delete entryCopy.mentionPatterns;
|
|
3200
|
-
}
|
|
3201
|
-
const legacyGroupChat = getRecord(entryCopy.groupChat);
|
|
3202
|
-
if (legacyGroupChat) {
|
|
3203
|
-
mergeMissing(ensureRecord(target, "groupChat"), legacyGroupChat);
|
|
3204
|
-
delete entryCopy.groupChat;
|
|
3205
|
-
}
|
|
3206
|
-
const legacySandbox = getRecord(entryCopy.sandbox);
|
|
3207
|
-
if (legacySandbox) {
|
|
3208
|
-
const sandboxTools = getRecord(legacySandbox.tools);
|
|
3209
|
-
if (sandboxTools) {
|
|
3210
|
-
mergeMissing(ensureRecord(ensureRecord(ensureRecord(target, "tools"), "sandbox"), "tools"), sandboxTools);
|
|
3211
|
-
delete legacySandbox.tools;
|
|
3212
|
-
changes.push(`Moved routing.agents.${agentId}.sandbox.tools → agents.list (id "${agentId}").tools.sandbox.tools.`);
|
|
3213
|
-
}
|
|
3214
|
-
entryCopy.sandbox = legacySandbox;
|
|
3215
|
-
}
|
|
3216
|
-
mergeMissing(target, entryCopy);
|
|
3217
|
-
}
|
|
3218
|
-
delete routing.agents;
|
|
3219
|
-
changes.push("Moved routing.agents → agents.list.");
|
|
3220
|
-
}
|
|
3221
|
-
const defaultAgentId = typeof routing.defaultAgentId === "string" ? routing.defaultAgentId.trim() : "";
|
|
3222
|
-
if (defaultAgentId) {
|
|
3223
|
-
if (!list.some((entry) => isRecord(entry) && entry.default === true)) {
|
|
3224
|
-
const entry = ensureAgentEntry(list, defaultAgentId);
|
|
3225
|
-
entry.default = true;
|
|
3226
|
-
changes.push(`Moved routing.defaultAgentId → agents.list (id "${defaultAgentId}").default.`);
|
|
3227
|
-
} else changes.push("Removed routing.defaultAgentId (agents.list default already set).");
|
|
3228
|
-
delete routing.defaultAgentId;
|
|
3229
|
-
}
|
|
3230
|
-
if (list.length > 0) agents.list = list;
|
|
3231
|
-
if (Object.keys(routing).length === 0) delete raw.routing;
|
|
3232
|
-
}
|
|
3233
|
-
},
|
|
3234
|
-
{
|
|
3235
|
-
id: "routing.config-v2",
|
|
3236
|
-
describe: "Move routing bindings/groupChat/queue/agentToAgent/transcribeAudio",
|
|
3237
|
-
apply: (raw, changes) => {
|
|
3238
|
-
const routing = getRecord(raw.routing);
|
|
3239
|
-
if (!routing) return;
|
|
3240
|
-
if (routing.bindings !== void 0) {
|
|
3241
|
-
if (raw.bindings === void 0) {
|
|
3242
|
-
raw.bindings = routing.bindings;
|
|
3243
|
-
changes.push("Moved routing.bindings → bindings.");
|
|
3244
|
-
} else changes.push("Removed routing.bindings (bindings already set).");
|
|
3245
|
-
delete routing.bindings;
|
|
3246
|
-
}
|
|
3247
|
-
if (routing.agentToAgent !== void 0) {
|
|
3248
|
-
const tools = ensureRecord(raw, "tools");
|
|
3249
|
-
if (tools.agentToAgent === void 0) {
|
|
3250
|
-
tools.agentToAgent = routing.agentToAgent;
|
|
3251
|
-
changes.push("Moved routing.agentToAgent → tools.agentToAgent.");
|
|
3252
|
-
} else changes.push("Removed routing.agentToAgent (tools.agentToAgent already set).");
|
|
3253
|
-
delete routing.agentToAgent;
|
|
3254
|
-
}
|
|
3255
|
-
if (routing.queue !== void 0) {
|
|
3256
|
-
const messages = ensureRecord(raw, "messages");
|
|
3257
|
-
if (messages.queue === void 0) {
|
|
3258
|
-
messages.queue = routing.queue;
|
|
3259
|
-
changes.push("Moved routing.queue → messages.queue.");
|
|
3260
|
-
} else changes.push("Removed routing.queue (messages.queue already set).");
|
|
3261
|
-
delete routing.queue;
|
|
3262
|
-
}
|
|
3263
|
-
const groupChat = getRecord(routing.groupChat);
|
|
3264
|
-
if (groupChat) {
|
|
3265
|
-
const historyLimit = groupChat.historyLimit;
|
|
3266
|
-
if (historyLimit !== void 0) {
|
|
3267
|
-
const messagesGroup = ensureRecord(ensureRecord(raw, "messages"), "groupChat");
|
|
3268
|
-
if (messagesGroup.historyLimit === void 0) {
|
|
3269
|
-
messagesGroup.historyLimit = historyLimit;
|
|
3270
|
-
changes.push("Moved routing.groupChat.historyLimit → messages.groupChat.historyLimit.");
|
|
3271
|
-
} else changes.push("Removed routing.groupChat.historyLimit (messages.groupChat.historyLimit already set).");
|
|
3272
|
-
delete groupChat.historyLimit;
|
|
3273
|
-
}
|
|
3274
|
-
const mentionPatterns = groupChat.mentionPatterns;
|
|
3275
|
-
if (mentionPatterns !== void 0) {
|
|
3276
|
-
const messagesGroup = ensureRecord(ensureRecord(raw, "messages"), "groupChat");
|
|
3277
|
-
if (messagesGroup.mentionPatterns === void 0) {
|
|
3278
|
-
messagesGroup.mentionPatterns = mentionPatterns;
|
|
3279
|
-
changes.push("Moved routing.groupChat.mentionPatterns → messages.groupChat.mentionPatterns.");
|
|
3280
|
-
} else changes.push("Removed routing.groupChat.mentionPatterns (messages.groupChat.mentionPatterns already set).");
|
|
3281
|
-
delete groupChat.mentionPatterns;
|
|
3282
|
-
}
|
|
3283
|
-
if (Object.keys(groupChat).length === 0) delete routing.groupChat;
|
|
3284
|
-
else routing.groupChat = groupChat;
|
|
3285
|
-
}
|
|
3286
|
-
if (routing.transcribeAudio !== void 0) {
|
|
3287
|
-
applyLegacyAudioTranscriptionModel({
|
|
3288
|
-
raw,
|
|
3289
|
-
source: routing.transcribeAudio,
|
|
3290
|
-
changes,
|
|
3291
|
-
movedMessage: "Moved routing.transcribeAudio → tools.media.audio.models.",
|
|
3292
|
-
alreadySetMessage: "Removed routing.transcribeAudio (tools.media.audio.models already set).",
|
|
3293
|
-
invalidMessage: "Removed routing.transcribeAudio (invalid or empty command)."
|
|
3294
|
-
});
|
|
3295
|
-
delete routing.transcribeAudio;
|
|
3296
|
-
}
|
|
3297
|
-
if (Object.keys(routing).length === 0) delete raw.routing;
|
|
3298
|
-
}
|
|
3299
|
-
},
|
|
3300
|
-
{
|
|
3301
|
-
id: "audio.transcription-v2",
|
|
3302
|
-
describe: "Move audio.transcription to tools.media.audio.models",
|
|
3303
|
-
apply: (raw, changes) => {
|
|
3304
|
-
const audio = getRecord(raw.audio);
|
|
3305
|
-
if (audio?.transcription === void 0) return;
|
|
3306
|
-
applyLegacyAudioTranscriptionModel({
|
|
3307
|
-
raw,
|
|
3308
|
-
source: audio.transcription,
|
|
3309
|
-
changes,
|
|
3310
|
-
movedMessage: "Moved audio.transcription → tools.media.audio.models.",
|
|
3311
|
-
alreadySetMessage: "Removed audio.transcription (tools.media.audio.models already set).",
|
|
3312
|
-
invalidMessage: "Removed audio.transcription (invalid or empty command)."
|
|
3313
|
-
});
|
|
3314
|
-
delete audio.transcription;
|
|
3315
|
-
if (Object.keys(audio).length === 0) delete raw.audio;
|
|
3316
|
-
else raw.audio = audio;
|
|
3317
|
-
}
|
|
3318
|
-
}
|
|
3319
|
-
];
|
|
3320
|
-
|
|
3321
|
-
//#endregion
|
|
3322
|
-
//#region src/config/legacy.migrations.part-3.ts
|
|
3323
|
-
const LEGACY_CONFIG_MIGRATIONS_PART_3 = [
|
|
3324
|
-
{
|
|
3325
|
-
id: "auth.anthropic-claude-cli-mode-oauth",
|
|
3326
|
-
describe: "Switch anthropic:claude-cli auth profile mode to oauth",
|
|
3327
|
-
apply: (raw, changes) => {
|
|
3328
|
-
const profiles = getRecord(getRecord(raw.auth)?.profiles);
|
|
3329
|
-
if (!profiles) return;
|
|
3330
|
-
const claudeCli = getRecord(profiles["anthropic:claude-cli"]);
|
|
3331
|
-
if (!claudeCli) return;
|
|
3332
|
-
if (claudeCli.mode !== "token") return;
|
|
3333
|
-
claudeCli.mode = "oauth";
|
|
3334
|
-
changes.push("Updated auth.profiles[\"anthropic:claude-cli\"].mode → \"oauth\".");
|
|
3335
|
-
}
|
|
3336
|
-
},
|
|
3337
|
-
{
|
|
3338
|
-
id: "tools.bash->tools.exec",
|
|
3339
|
-
describe: "Move tools.bash to tools.exec",
|
|
3340
|
-
apply: (raw, changes) => {
|
|
3341
|
-
const tools = ensureRecord(raw, "tools");
|
|
3342
|
-
const bash = getRecord(tools.bash);
|
|
3343
|
-
if (!bash) return;
|
|
3344
|
-
if (tools.exec === void 0) {
|
|
3345
|
-
tools.exec = bash;
|
|
3346
|
-
changes.push("Moved tools.bash → tools.exec.");
|
|
3347
|
-
} else changes.push("Removed tools.bash (tools.exec already set).");
|
|
3348
|
-
delete tools.bash;
|
|
3349
|
-
}
|
|
3350
|
-
},
|
|
3351
|
-
{
|
|
3352
|
-
id: "messages.tts.enabled->auto",
|
|
3353
|
-
describe: "Move messages.tts.enabled to messages.tts.auto",
|
|
3354
|
-
apply: (raw, changes) => {
|
|
3355
|
-
const tts = getRecord(getRecord(raw.messages)?.tts);
|
|
3356
|
-
if (!tts) return;
|
|
3357
|
-
if (tts.auto !== void 0) {
|
|
3358
|
-
if ("enabled" in tts) {
|
|
3359
|
-
delete tts.enabled;
|
|
3360
|
-
changes.push("Removed messages.tts.enabled (messages.tts.auto already set).");
|
|
3361
|
-
}
|
|
3362
|
-
return;
|
|
3363
|
-
}
|
|
3364
|
-
if (typeof tts.enabled !== "boolean") return;
|
|
3365
|
-
tts.auto = tts.enabled ? "always" : "off";
|
|
3366
|
-
delete tts.enabled;
|
|
3367
|
-
changes.push(`Moved messages.tts.enabled → messages.tts.auto (${String(tts.auto)}).`);
|
|
3368
|
-
}
|
|
3369
|
-
},
|
|
3370
|
-
{
|
|
3371
|
-
id: "agent.defaults-v2",
|
|
3372
|
-
describe: "Move agent config to agents.defaults and tools",
|
|
3373
|
-
apply: (raw, changes) => {
|
|
3374
|
-
const agent = getRecord(raw.agent);
|
|
3375
|
-
if (!agent) return;
|
|
3376
|
-
const agents = ensureRecord(raw, "agents");
|
|
3377
|
-
const defaults = getRecord(agents.defaults) ?? {};
|
|
3378
|
-
const tools = ensureRecord(raw, "tools");
|
|
3379
|
-
const agentTools = getRecord(agent.tools);
|
|
3380
|
-
if (agentTools) {
|
|
3381
|
-
if (tools.allow === void 0 && agentTools.allow !== void 0) {
|
|
3382
|
-
tools.allow = agentTools.allow;
|
|
3383
|
-
changes.push("Moved agent.tools.allow → tools.allow.");
|
|
3384
|
-
}
|
|
3385
|
-
if (tools.deny === void 0 && agentTools.deny !== void 0) {
|
|
3386
|
-
tools.deny = agentTools.deny;
|
|
3387
|
-
changes.push("Moved agent.tools.deny → tools.deny.");
|
|
3388
|
-
}
|
|
3389
|
-
}
|
|
3390
|
-
const elevated = getRecord(agent.elevated);
|
|
3391
|
-
if (elevated) if (tools.elevated === void 0) {
|
|
3392
|
-
tools.elevated = elevated;
|
|
3393
|
-
changes.push("Moved agent.elevated → tools.elevated.");
|
|
3394
|
-
} else changes.push("Removed agent.elevated (tools.elevated already set).");
|
|
3395
|
-
const bash = getRecord(agent.bash);
|
|
3396
|
-
if (bash) if (tools.exec === void 0) {
|
|
3397
|
-
tools.exec = bash;
|
|
3398
|
-
changes.push("Moved agent.bash → tools.exec.");
|
|
3399
|
-
} else changes.push("Removed agent.bash (tools.exec already set).");
|
|
3400
|
-
const sandbox = getRecord(agent.sandbox);
|
|
3401
|
-
if (sandbox) {
|
|
3402
|
-
const sandboxTools = getRecord(sandbox.tools);
|
|
3403
|
-
if (sandboxTools) {
|
|
3404
|
-
mergeMissing(ensureRecord(ensureRecord(tools, "sandbox"), "tools"), sandboxTools);
|
|
3405
|
-
delete sandbox.tools;
|
|
3406
|
-
changes.push("Moved agent.sandbox.tools → tools.sandbox.tools.");
|
|
3407
|
-
}
|
|
3408
|
-
}
|
|
3409
|
-
const subagents = getRecord(agent.subagents);
|
|
3410
|
-
if (subagents) {
|
|
3411
|
-
const subagentTools = getRecord(subagents.tools);
|
|
3412
|
-
if (subagentTools) {
|
|
3413
|
-
mergeMissing(ensureRecord(ensureRecord(tools, "subagents"), "tools"), subagentTools);
|
|
3414
|
-
delete subagents.tools;
|
|
3415
|
-
changes.push("Moved agent.subagents.tools → tools.subagents.tools.");
|
|
3416
|
-
}
|
|
3417
|
-
}
|
|
3418
|
-
const agentCopy = structuredClone(agent);
|
|
3419
|
-
delete agentCopy.tools;
|
|
3420
|
-
delete agentCopy.elevated;
|
|
3421
|
-
delete agentCopy.bash;
|
|
3422
|
-
if (isRecord(agentCopy.sandbox)) delete agentCopy.sandbox.tools;
|
|
3423
|
-
if (isRecord(agentCopy.subagents)) delete agentCopy.subagents.tools;
|
|
3424
|
-
mergeMissing(defaults, agentCopy);
|
|
3425
|
-
agents.defaults = defaults;
|
|
3426
|
-
raw.agents = agents;
|
|
3427
|
-
delete raw.agent;
|
|
3428
|
-
changes.push("Moved agent → agents.defaults.");
|
|
3429
|
-
}
|
|
3430
|
-
},
|
|
3431
|
-
{
|
|
3432
|
-
id: "identity->agents.list",
|
|
3433
|
-
describe: "Move identity to agents.list[].identity",
|
|
3434
|
-
apply: (raw, changes) => {
|
|
3435
|
-
const identity = getRecord(raw.identity);
|
|
3436
|
-
if (!identity) return;
|
|
3437
|
-
const agents = ensureRecord(raw, "agents");
|
|
3438
|
-
const list = getAgentsList(agents);
|
|
3439
|
-
const defaultId = resolveDefaultAgentIdFromRaw(raw);
|
|
3440
|
-
const entry = ensureAgentEntry(list, defaultId);
|
|
3441
|
-
if (entry.identity === void 0) {
|
|
3442
|
-
entry.identity = identity;
|
|
3443
|
-
changes.push(`Moved identity → agents.list (id "${defaultId}").identity.`);
|
|
3444
|
-
} else changes.push("Removed identity (agents.list identity already set).");
|
|
3445
|
-
agents.list = list;
|
|
3446
|
-
raw.agents = agents;
|
|
3447
|
-
delete raw.identity;
|
|
3448
|
-
}
|
|
3449
|
-
}
|
|
3450
|
-
];
|
|
3451
|
-
|
|
3452
|
-
//#endregion
|
|
3453
|
-
//#region src/config/legacy.migrations.ts
|
|
3454
|
-
const LEGACY_CONFIG_MIGRATIONS = [
|
|
3455
|
-
...LEGACY_CONFIG_MIGRATIONS_PART_1,
|
|
3456
|
-
...LEGACY_CONFIG_MIGRATIONS_PART_2,
|
|
3457
|
-
...LEGACY_CONFIG_MIGRATIONS_PART_3
|
|
3458
|
-
];
|
|
3459
|
-
|
|
3460
2636
|
//#endregion
|
|
3461
2637
|
//#region src/config/legacy.rules.ts
|
|
3462
|
-
const LEGACY_CONFIG_RULES = [
|
|
3463
|
-
{
|
|
3464
|
-
path: ["whatsapp"],
|
|
3465
|
-
message: "whatsapp config moved to channels.whatsapp (auto-migrated on load)."
|
|
3466
|
-
},
|
|
3467
|
-
{
|
|
3468
|
-
path: ["telegram"],
|
|
3469
|
-
message: "telegram config moved to channels.telegram (auto-migrated on load)."
|
|
3470
|
-
},
|
|
3471
|
-
{
|
|
3472
|
-
path: ["discord"],
|
|
3473
|
-
message: "discord config moved to channels.discord (auto-migrated on load)."
|
|
3474
|
-
},
|
|
3475
|
-
{
|
|
3476
|
-
path: ["slack"],
|
|
3477
|
-
message: "slack config moved to channels.slack (auto-migrated on load)."
|
|
3478
|
-
},
|
|
3479
|
-
{
|
|
3480
|
-
path: ["signal"],
|
|
3481
|
-
message: "signal config moved to channels.signal (auto-migrated on load)."
|
|
3482
|
-
},
|
|
3483
|
-
{
|
|
3484
|
-
path: ["imessage"],
|
|
3485
|
-
message: "imessage config moved to channels.imessage (auto-migrated on load)."
|
|
3486
|
-
},
|
|
3487
|
-
{
|
|
3488
|
-
path: ["msteams"],
|
|
3489
|
-
message: "msteams config moved to channels.msteams (auto-migrated on load)."
|
|
3490
|
-
},
|
|
3491
|
-
{
|
|
3492
|
-
path: ["routing", "allowFrom"],
|
|
3493
|
-
message: "routing.allowFrom was removed; use channels.whatsapp.allowFrom instead (auto-migrated on load)."
|
|
3494
|
-
},
|
|
3495
|
-
{
|
|
3496
|
-
path: ["routing", "bindings"],
|
|
3497
|
-
message: "routing.bindings was moved; use top-level bindings instead (auto-migrated on load)."
|
|
3498
|
-
},
|
|
3499
|
-
{
|
|
3500
|
-
path: ["routing", "agents"],
|
|
3501
|
-
message: "routing.agents was moved; use agents.list instead (auto-migrated on load)."
|
|
3502
|
-
},
|
|
3503
|
-
{
|
|
3504
|
-
path: ["routing", "defaultAgentId"],
|
|
3505
|
-
message: "routing.defaultAgentId was moved; use agents.list[].default instead (auto-migrated on load)."
|
|
3506
|
-
},
|
|
3507
|
-
{
|
|
3508
|
-
path: ["routing", "agentToAgent"],
|
|
3509
|
-
message: "routing.agentToAgent was moved; use tools.agentToAgent instead (auto-migrated on load)."
|
|
3510
|
-
},
|
|
3511
|
-
{
|
|
3512
|
-
path: [
|
|
3513
|
-
"routing",
|
|
3514
|
-
"groupChat",
|
|
3515
|
-
"requireMention"
|
|
3516
|
-
],
|
|
3517
|
-
message: "routing.groupChat.requireMention was removed; use channels.whatsapp/telegram/imessage groups defaults (e.g. channels.whatsapp.groups.\"*\".requireMention) instead (auto-migrated on load)."
|
|
3518
|
-
},
|
|
3519
|
-
{
|
|
3520
|
-
path: [
|
|
3521
|
-
"routing",
|
|
3522
|
-
"groupChat",
|
|
3523
|
-
"mentionPatterns"
|
|
3524
|
-
],
|
|
3525
|
-
message: "routing.groupChat.mentionPatterns was moved; use agents.list[].groupChat.mentionPatterns or messages.groupChat.mentionPatterns instead (auto-migrated on load)."
|
|
3526
|
-
},
|
|
3527
|
-
{
|
|
3528
|
-
path: ["routing", "queue"],
|
|
3529
|
-
message: "routing.queue was moved; use messages.queue instead (auto-migrated on load)."
|
|
3530
|
-
},
|
|
3531
|
-
{
|
|
3532
|
-
path: ["routing", "transcribeAudio"],
|
|
3533
|
-
message: "routing.transcribeAudio was moved; use tools.media.audio.models instead (auto-migrated on load)."
|
|
3534
|
-
},
|
|
3535
|
-
{
|
|
3536
|
-
path: ["telegram", "requireMention"],
|
|
3537
|
-
message: "telegram.requireMention was removed; use channels.telegram.groups.\"*\".requireMention instead (auto-migrated on load)."
|
|
3538
|
-
},
|
|
3539
|
-
{
|
|
3540
|
-
path: ["identity"],
|
|
3541
|
-
message: "identity was moved; use agents.list[].identity instead (auto-migrated on load)."
|
|
3542
|
-
},
|
|
3543
|
-
{
|
|
3544
|
-
path: ["agent"],
|
|
3545
|
-
message: "agent.* was moved; use agents.defaults (and tools.* for tool/elevated/exec settings) instead (auto-migrated on load)."
|
|
3546
|
-
},
|
|
3547
|
-
{
|
|
3548
|
-
path: ["tools", "bash"],
|
|
3549
|
-
message: "tools.bash was removed; use tools.exec instead (auto-migrated on load)."
|
|
3550
|
-
},
|
|
3551
|
-
{
|
|
3552
|
-
path: ["agent", "model"],
|
|
3553
|
-
message: "agent.model string was replaced by agents.defaults.model.primary/fallbacks and agents.defaults.models (auto-migrated on load).",
|
|
3554
|
-
match: (value) => typeof value === "string"
|
|
3555
|
-
},
|
|
3556
|
-
{
|
|
3557
|
-
path: ["agent", "imageModel"],
|
|
3558
|
-
message: "agent.imageModel string was replaced by agents.defaults.imageModel.primary/fallbacks (auto-migrated on load).",
|
|
3559
|
-
match: (value) => typeof value === "string"
|
|
3560
|
-
},
|
|
3561
|
-
{
|
|
3562
|
-
path: ["agent", "allowedModels"],
|
|
3563
|
-
message: "agent.allowedModels was replaced by agents.defaults.models (auto-migrated on load)."
|
|
3564
|
-
},
|
|
3565
|
-
{
|
|
3566
|
-
path: ["agent", "modelAliases"],
|
|
3567
|
-
message: "agent.modelAliases was replaced by agents.defaults.models.*.alias (auto-migrated on load)."
|
|
3568
|
-
},
|
|
3569
|
-
{
|
|
3570
|
-
path: ["agent", "modelFallbacks"],
|
|
3571
|
-
message: "agent.modelFallbacks was replaced by agents.defaults.model.fallbacks (auto-migrated on load)."
|
|
3572
|
-
},
|
|
3573
|
-
{
|
|
3574
|
-
path: ["agent", "imageModelFallbacks"],
|
|
3575
|
-
message: "agent.imageModelFallbacks was replaced by agents.defaults.imageModel.fallbacks (auto-migrated on load)."
|
|
3576
|
-
},
|
|
3577
|
-
{
|
|
3578
|
-
path: [
|
|
3579
|
-
"messages",
|
|
3580
|
-
"tts",
|
|
3581
|
-
"enabled"
|
|
3582
|
-
],
|
|
3583
|
-
message: "messages.tts.enabled was replaced by messages.tts.auto (auto-migrated on load)."
|
|
3584
|
-
},
|
|
3585
|
-
{
|
|
3586
|
-
path: ["gateway", "token"],
|
|
3587
|
-
message: "gateway.token is ignored; use gateway.auth.token instead (auto-migrated on load)."
|
|
3588
|
-
}
|
|
3589
|
-
];
|
|
2638
|
+
const LEGACY_CONFIG_RULES = [];
|
|
3590
2639
|
|
|
3591
2640
|
//#endregion
|
|
3592
2641
|
//#region src/config/legacy.ts
|
|
@@ -3832,27 +2881,15 @@ function resolveBundledPluginsDir() {
|
|
|
3832
2881
|
} catch {}
|
|
3833
2882
|
}
|
|
3834
2883
|
|
|
3835
|
-
//#endregion
|
|
3836
|
-
//#region src/compat/legacy-names.ts
|
|
3837
|
-
const PROJECT_NAME = "remoteclaw";
|
|
3838
|
-
const LEGACY_PROJECT_NAMES = [];
|
|
3839
|
-
const MANIFEST_KEY = PROJECT_NAME;
|
|
3840
|
-
const LEGACY_MANIFEST_KEYS = LEGACY_PROJECT_NAMES;
|
|
3841
|
-
const LEGACY_PLUGIN_MANIFEST_FILENAMES = [];
|
|
3842
|
-
|
|
3843
2884
|
//#endregion
|
|
3844
2885
|
//#region src/plugins/manifest.ts
|
|
2886
|
+
const MANIFEST_KEY = "remoteclaw";
|
|
3845
2887
|
const PLUGIN_MANIFEST_FILENAME = "remoteclaw.plugin.json";
|
|
3846
|
-
const PLUGIN_MANIFEST_FILENAMES = [PLUGIN_MANIFEST_FILENAME, ...LEGACY_PLUGIN_MANIFEST_FILENAMES];
|
|
3847
2888
|
function normalizeStringList(value) {
|
|
3848
2889
|
if (!Array.isArray(value)) return [];
|
|
3849
2890
|
return value.map((entry) => typeof entry === "string" ? entry.trim() : "").filter(Boolean);
|
|
3850
2891
|
}
|
|
3851
2892
|
function resolvePluginManifestPath(rootDir) {
|
|
3852
|
-
for (const filename of PLUGIN_MANIFEST_FILENAMES) {
|
|
3853
|
-
const candidate = path.join(rootDir, filename);
|
|
3854
|
-
if (fs.existsSync(candidate)) return candidate;
|
|
3855
|
-
}
|
|
3856
2893
|
return path.join(rootDir, PLUGIN_MANIFEST_FILENAME);
|
|
3857
2894
|
}
|
|
3858
2895
|
function loadPluginManifest(rootDir) {
|
|
@@ -3896,6 +2933,8 @@ function loadPluginManifest(rootDir) {
|
|
|
3896
2933
|
const channels = normalizeStringList(raw.channels);
|
|
3897
2934
|
const providers = normalizeStringList(raw.providers);
|
|
3898
2935
|
const skills = normalizeStringList(raw.skills);
|
|
2936
|
+
const stt = normalizeStringList(raw.stt);
|
|
2937
|
+
const tts = normalizeStringList(raw.tts);
|
|
3899
2938
|
let uiHints;
|
|
3900
2939
|
if (isRecord(raw.uiHints)) uiHints = raw.uiHints;
|
|
3901
2940
|
return {
|
|
@@ -3907,6 +2946,8 @@ function loadPluginManifest(rootDir) {
|
|
|
3907
2946
|
channels,
|
|
3908
2947
|
providers,
|
|
3909
2948
|
skills,
|
|
2949
|
+
stt,
|
|
2950
|
+
tts,
|
|
3910
2951
|
name,
|
|
3911
2952
|
description,
|
|
3912
2953
|
version,
|
|
@@ -3917,12 +2958,7 @@ function loadPluginManifest(rootDir) {
|
|
|
3917
2958
|
}
|
|
3918
2959
|
function getPackageManifestMetadata(manifest) {
|
|
3919
2960
|
if (!manifest) return;
|
|
3920
|
-
|
|
3921
|
-
if (current) return current;
|
|
3922
|
-
for (const key of LEGACY_MANIFEST_KEYS) {
|
|
3923
|
-
const legacy = manifest[key];
|
|
3924
|
-
if (legacy) return legacy;
|
|
3925
|
-
}
|
|
2961
|
+
return manifest[MANIFEST_KEY];
|
|
3926
2962
|
}
|
|
3927
2963
|
|
|
3928
2964
|
//#endregion
|
|
@@ -4412,6 +3448,8 @@ function buildRecord(params) {
|
|
|
4412
3448
|
channels: params.manifest.channels ?? [],
|
|
4413
3449
|
providers: params.manifest.providers ?? [],
|
|
4414
3450
|
skills: params.manifest.skills ?? [],
|
|
3451
|
+
stt: params.manifest.stt ?? [],
|
|
3452
|
+
tts: params.manifest.tts ?? [],
|
|
4415
3453
|
origin: params.candidate.origin,
|
|
4416
3454
|
workspaceDir: params.candidate.workspaceDir,
|
|
4417
3455
|
rootDir: params.candidate.rootDir,
|
|
@@ -4642,27 +3680,27 @@ function parseDurationMs(raw, opts) {
|
|
|
4642
3680
|
}
|
|
4643
3681
|
|
|
4644
3682
|
//#endregion
|
|
4645
|
-
//#region src/
|
|
4646
|
-
const
|
|
4647
|
-
const
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
|
|
4651
|
-
|
|
4652
|
-
|
|
4653
|
-
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
4660
|
-
|
|
4661
|
-
|
|
4662
|
-
|
|
4663
|
-
|
|
4664
|
-
|
|
4665
|
-
|
|
3683
|
+
//#region src/infra/safe-executable-value.ts
|
|
3684
|
+
const SHELL_METACHARS = /[;&|`$<>]/;
|
|
3685
|
+
const CONTROL_CHARS = /[\r\n]/;
|
|
3686
|
+
const QUOTE_CHARS = /["']/;
|
|
3687
|
+
const BARE_NAME_PATTERN = /^[A-Za-z0-9._+-]+$/;
|
|
3688
|
+
function isLikelyPath(value) {
|
|
3689
|
+
if (value.startsWith(".") || value.startsWith("~")) return true;
|
|
3690
|
+
if (value.includes("/") || value.includes("\\")) return true;
|
|
3691
|
+
return /^[A-Za-z]:[\\/]/.test(value);
|
|
3692
|
+
}
|
|
3693
|
+
function isSafeExecutableValue(value) {
|
|
3694
|
+
if (!value) return false;
|
|
3695
|
+
const trimmed = value.trim();
|
|
3696
|
+
if (!trimmed) return false;
|
|
3697
|
+
if (trimmed.includes("\0")) return false;
|
|
3698
|
+
if (CONTROL_CHARS.test(trimmed)) return false;
|
|
3699
|
+
if (SHELL_METACHARS.test(trimmed)) return false;
|
|
3700
|
+
if (QUOTE_CHARS.test(trimmed)) return false;
|
|
3701
|
+
if (isLikelyPath(trimmed)) return true;
|
|
3702
|
+
if (trimmed.startsWith("-")) return false;
|
|
3703
|
+
return BARE_NAME_PATTERN.test(trimmed);
|
|
4666
3704
|
}
|
|
4667
3705
|
|
|
4668
3706
|
//#endregion
|
|
@@ -4749,11 +3787,7 @@ const MarkdownTableModeSchema = z.enum([
|
|
|
4749
3787
|
"code"
|
|
4750
3788
|
]);
|
|
4751
3789
|
const MarkdownConfigSchema = z.object({ tables: MarkdownTableModeSchema.optional() }).strict().optional();
|
|
4752
|
-
const TtsProviderSchema = z.
|
|
4753
|
-
"elevenlabs",
|
|
4754
|
-
"openai",
|
|
4755
|
-
"edge"
|
|
4756
|
-
]);
|
|
3790
|
+
const TtsProviderSchema = z.string().min(1);
|
|
4757
3791
|
const TtsModeSchema = z.enum(["final", "all"]);
|
|
4758
3792
|
const TtsAutoSchema = z.enum([
|
|
4759
3793
|
"off",
|
|
@@ -4931,22 +3965,6 @@ const TranscribeAudioSchema = z.object({
|
|
|
4931
3965
|
}).strict().optional();
|
|
4932
3966
|
const HexColorSchema = z.string().regex(/^#?[0-9a-fA-F]{6}$/, "expected hex color (RRGGBB)");
|
|
4933
3967
|
const ExecutableTokenSchema = z.string().refine(isSafeExecutableValue, "expected safe executable name or path");
|
|
4934
|
-
const MediaUnderstandingScopeSchema = createAllowDenyChannelRulesSchema();
|
|
4935
|
-
const MediaUnderstandingCapabilitiesSchema = z.array(z.union([
|
|
4936
|
-
z.literal("image"),
|
|
4937
|
-
z.literal("audio"),
|
|
4938
|
-
z.literal("video")
|
|
4939
|
-
])).optional();
|
|
4940
|
-
const MediaUnderstandingAttachmentsSchema = z.object({
|
|
4941
|
-
mode: z.union([z.literal("first"), z.literal("all")]).optional(),
|
|
4942
|
-
maxAttachments: z.number().int().positive().optional(),
|
|
4943
|
-
prefer: z.union([
|
|
4944
|
-
z.literal("first"),
|
|
4945
|
-
z.literal("last"),
|
|
4946
|
-
z.literal("path"),
|
|
4947
|
-
z.literal("url")
|
|
4948
|
-
]).optional()
|
|
4949
|
-
}).strict().optional();
|
|
4950
3968
|
const DeepgramAudioSchema = z.object({
|
|
4951
3969
|
detectLanguage: z.boolean().optional(),
|
|
4952
3970
|
punctuate: z.boolean().optional(),
|
|
@@ -4970,7 +3988,6 @@ const MediaUnderstandingRuntimeFields = {
|
|
|
4970
3988
|
const MediaUnderstandingModelSchema = z.object({
|
|
4971
3989
|
provider: z.string().optional(),
|
|
4972
3990
|
model: z.string().optional(),
|
|
4973
|
-
capabilities: MediaUnderstandingCapabilitiesSchema,
|
|
4974
3991
|
type: z.union([z.literal("provider"), z.literal("cli")]).optional(),
|
|
4975
3992
|
command: z.string().optional(),
|
|
4976
3993
|
args: z.array(z.string()).optional(),
|
|
@@ -4982,33 +3999,12 @@ const MediaUnderstandingModelSchema = z.object({
|
|
|
4982
3999
|
}).strict().optional();
|
|
4983
4000
|
const ToolsMediaUnderstandingSchema = z.object({
|
|
4984
4001
|
enabled: z.boolean().optional(),
|
|
4985
|
-
scope: MediaUnderstandingScopeSchema,
|
|
4986
4002
|
maxBytes: z.number().int().positive().optional(),
|
|
4987
4003
|
maxChars: z.number().int().positive().optional(),
|
|
4988
4004
|
...MediaUnderstandingRuntimeFields,
|
|
4989
|
-
attachments: MediaUnderstandingAttachmentsSchema,
|
|
4990
4005
|
models: z.array(MediaUnderstandingModelSchema).optional()
|
|
4991
4006
|
}).strict().optional();
|
|
4992
|
-
const ToolsMediaSchema = z.object({
|
|
4993
|
-
models: z.array(MediaUnderstandingModelSchema).optional(),
|
|
4994
|
-
concurrency: z.number().int().positive().optional(),
|
|
4995
|
-
image: ToolsMediaUnderstandingSchema.optional(),
|
|
4996
|
-
audio: ToolsMediaUnderstandingSchema.optional(),
|
|
4997
|
-
video: ToolsMediaUnderstandingSchema.optional()
|
|
4998
|
-
}).strict().optional();
|
|
4999
|
-
const LinkModelSchema = z.object({
|
|
5000
|
-
type: z.literal("cli").optional(),
|
|
5001
|
-
command: z.string().min(1),
|
|
5002
|
-
args: z.array(z.string()).optional(),
|
|
5003
|
-
timeoutSeconds: z.number().int().positive().optional()
|
|
5004
|
-
}).strict();
|
|
5005
|
-
const ToolsLinksSchema = z.object({
|
|
5006
|
-
enabled: z.boolean().optional(),
|
|
5007
|
-
scope: MediaUnderstandingScopeSchema,
|
|
5008
|
-
maxLinks: z.number().int().positive().optional(),
|
|
5009
|
-
timeoutSeconds: z.number().int().positive().optional(),
|
|
5010
|
-
models: z.array(LinkModelSchema).optional()
|
|
5011
|
-
}).strict().optional();
|
|
4007
|
+
const ToolsMediaSchema = z.object({ audio: ToolsMediaUnderstandingSchema.optional() }).strict().optional();
|
|
5012
4008
|
const NativeCommandsSettingSchema = z.union([z.boolean(), z.literal("auto")]);
|
|
5013
4009
|
const ProviderCommandsSchema = z.object({ native: NativeCommandsSettingSchema.optional() }).strict().optional();
|
|
5014
4010
|
|
|
@@ -5113,7 +4109,6 @@ const ToolPolicyWithProfileSchema = z.object({
|
|
|
5113
4109
|
}).strict().superRefine((value, ctx) => {
|
|
5114
4110
|
addAllowAlsoAllowConflictIssue(value, ctx, "tools.byProvider policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)");
|
|
5115
4111
|
});
|
|
5116
|
-
const ElevatedAllowFromSchema = z.record(z.string(), z.array(z.union([z.string(), z.number()]))).optional();
|
|
5117
4112
|
const ToolExecSafeBinProfileSchema = z.object({
|
|
5118
4113
|
minPositional: z.number().int().nonnegative().optional(),
|
|
5119
4114
|
maxPositional: z.number().int().nonnegative().optional(),
|
|
@@ -5162,10 +4157,6 @@ const CommonToolPolicyFields = {
|
|
|
5162
4157
|
};
|
|
5163
4158
|
const AgentToolsSchema = z.object({
|
|
5164
4159
|
...CommonToolPolicyFields,
|
|
5165
|
-
elevated: z.object({
|
|
5166
|
-
enabled: z.boolean().optional(),
|
|
5167
|
-
allowFrom: ElevatedAllowFromSchema
|
|
5168
|
-
}).strict().optional(),
|
|
5169
4160
|
exec: AgentToolExecSchema,
|
|
5170
4161
|
fs: ToolFsSchema
|
|
5171
4162
|
}).strict().superRefine((value, ctx) => {
|
|
@@ -5195,7 +4186,6 @@ const AgentEntrySchema = z.object({
|
|
|
5195
4186
|
const ToolsSchema = z.object({
|
|
5196
4187
|
...CommonToolPolicyFields,
|
|
5197
4188
|
media: ToolsMediaSchema,
|
|
5198
|
-
links: ToolsLinksSchema,
|
|
5199
4189
|
sessions: z.object({ visibility: z.enum([
|
|
5200
4190
|
"self",
|
|
5201
4191
|
"tree",
|
|
@@ -5219,10 +4209,6 @@ const ToolsSchema = z.object({
|
|
|
5219
4209
|
enabled: z.boolean().optional(),
|
|
5220
4210
|
allow: z.array(z.string()).optional()
|
|
5221
4211
|
}).strict().optional(),
|
|
5222
|
-
elevated: z.object({
|
|
5223
|
-
enabled: z.boolean().optional(),
|
|
5224
|
-
allowFrom: ElevatedAllowFromSchema
|
|
5225
|
-
}).strict().optional(),
|
|
5226
4212
|
exec: ToolExecSchema,
|
|
5227
4213
|
fs: ToolFsSchema,
|
|
5228
4214
|
subagents: z.object({ tools: ToolPolicySchema }).strict().optional()
|
|
@@ -5238,9 +4224,6 @@ const AgentDefaultsSchema = z.object({
|
|
|
5238
4224
|
models: z.unknown().optional(),
|
|
5239
4225
|
workspace: z.string().optional(),
|
|
5240
4226
|
repoRoot: z.string().optional(),
|
|
5241
|
-
skipBootstrap: z.boolean().optional(),
|
|
5242
|
-
bootstrapMaxChars: z.number().int().positive().optional(),
|
|
5243
|
-
bootstrapTotalMaxChars: z.number().int().positive().optional(),
|
|
5244
4227
|
userTimezone: z.string().optional(),
|
|
5245
4228
|
timeFormat: z.union([
|
|
5246
4229
|
z.literal("auto"),
|
|
@@ -5278,12 +4261,6 @@ const AgentDefaultsSchema = z.object({
|
|
|
5278
4261
|
z.literal("on"),
|
|
5279
4262
|
z.literal("full")
|
|
5280
4263
|
]).optional(),
|
|
5281
|
-
elevatedDefault: z.union([
|
|
5282
|
-
z.literal("off"),
|
|
5283
|
-
z.literal("on"),
|
|
5284
|
-
z.literal("ask"),
|
|
5285
|
-
z.literal("full")
|
|
5286
|
-
]).optional(),
|
|
5287
4264
|
blockStreamingDefault: z.union([z.literal("off"), z.literal("on")]).optional(),
|
|
5288
4265
|
blockStreamingBreak: z.union([z.literal("text_end"), z.literal("message_end")]).optional(),
|
|
5289
4266
|
blockStreamingChunk: BlockStreamingChunkSchema.optional(),
|
|
@@ -5564,6 +4541,65 @@ function isValidInboundPathRootPattern(value) {
|
|
|
5564
4541
|
return segments.every((segment) => segment === WILDCARD_SEGMENT || !segment.includes("*"));
|
|
5565
4542
|
}
|
|
5566
4543
|
|
|
4544
|
+
//#endregion
|
|
4545
|
+
//#region src/config/discord-preview-streaming.ts
|
|
4546
|
+
function normalizeStreamingMode(value) {
|
|
4547
|
+
if (typeof value !== "string") return null;
|
|
4548
|
+
return value.trim().toLowerCase() || null;
|
|
4549
|
+
}
|
|
4550
|
+
function parseStreamingMode(value) {
|
|
4551
|
+
const normalized = normalizeStreamingMode(value);
|
|
4552
|
+
if (normalized === "off" || normalized === "partial" || normalized === "block" || normalized === "progress") return normalized;
|
|
4553
|
+
return null;
|
|
4554
|
+
}
|
|
4555
|
+
function parseDiscordPreviewStreamMode(value) {
|
|
4556
|
+
const parsed = parseStreamingMode(value);
|
|
4557
|
+
if (!parsed) return null;
|
|
4558
|
+
return parsed === "progress" ? "partial" : parsed;
|
|
4559
|
+
}
|
|
4560
|
+
function parseSlackLegacyDraftStreamMode(value) {
|
|
4561
|
+
const normalized = normalizeStreamingMode(value);
|
|
4562
|
+
if (normalized === "replace" || normalized === "status_final" || normalized === "append") return normalized;
|
|
4563
|
+
return null;
|
|
4564
|
+
}
|
|
4565
|
+
function mapSlackLegacyDraftStreamModeToStreaming(mode) {
|
|
4566
|
+
if (mode === "append") return "block";
|
|
4567
|
+
if (mode === "status_final") return "progress";
|
|
4568
|
+
return "partial";
|
|
4569
|
+
}
|
|
4570
|
+
function resolveTelegramPreviewStreamMode(params = {}) {
|
|
4571
|
+
const parsedStreaming = parseStreamingMode(params.streaming);
|
|
4572
|
+
if (parsedStreaming) {
|
|
4573
|
+
if (parsedStreaming === "progress") return "partial";
|
|
4574
|
+
return parsedStreaming;
|
|
4575
|
+
}
|
|
4576
|
+
const legacy = parseDiscordPreviewStreamMode(params.streamMode);
|
|
4577
|
+
if (legacy) return legacy;
|
|
4578
|
+
if (typeof params.streaming === "boolean") return params.streaming ? "partial" : "off";
|
|
4579
|
+
return "off";
|
|
4580
|
+
}
|
|
4581
|
+
function resolveDiscordPreviewStreamMode(params = {}) {
|
|
4582
|
+
const parsedStreaming = parseDiscordPreviewStreamMode(params.streaming);
|
|
4583
|
+
if (parsedStreaming) return parsedStreaming;
|
|
4584
|
+
const legacy = parseDiscordPreviewStreamMode(params.streamMode);
|
|
4585
|
+
if (legacy) return legacy;
|
|
4586
|
+
if (typeof params.streaming === "boolean") return params.streaming ? "partial" : "off";
|
|
4587
|
+
return "off";
|
|
4588
|
+
}
|
|
4589
|
+
function resolveSlackStreamingMode(params = {}) {
|
|
4590
|
+
const parsedStreaming = parseStreamingMode(params.streaming);
|
|
4591
|
+
if (parsedStreaming) return parsedStreaming;
|
|
4592
|
+
const legacyStreamMode = parseSlackLegacyDraftStreamMode(params.streamMode);
|
|
4593
|
+
if (legacyStreamMode) return mapSlackLegacyDraftStreamModeToStreaming(legacyStreamMode);
|
|
4594
|
+
if (typeof params.streaming === "boolean") return "partial";
|
|
4595
|
+
return "partial";
|
|
4596
|
+
}
|
|
4597
|
+
function resolveSlackNativeStreaming(params = {}) {
|
|
4598
|
+
if (typeof params.nativeStreaming === "boolean") return params.nativeStreaming;
|
|
4599
|
+
if (typeof params.streaming === "boolean") return params.streaming;
|
|
4600
|
+
return true;
|
|
4601
|
+
}
|
|
4602
|
+
|
|
5567
4603
|
//#endregion
|
|
5568
4604
|
//#region src/config/telegram-custom-commands.ts
|
|
5569
4605
|
const TELEGRAM_COMMAND_NAME_PATTERN = /^[a-z0-9_]{1,32}$/;
|
|
@@ -6632,6 +5668,30 @@ const ChannelsSchema = z.object({
|
|
|
6632
5668
|
msteams: MSTeamsConfigSchema.optional()
|
|
6633
5669
|
}).passthrough().optional();
|
|
6634
5670
|
|
|
5671
|
+
//#endregion
|
|
5672
|
+
//#region src/config/zod-schema.allowdeny.ts
|
|
5673
|
+
const AllowDenyActionSchema = z.union([z.literal("allow"), z.literal("deny")]);
|
|
5674
|
+
const AllowDenyChatTypeSchema = z.union([
|
|
5675
|
+
z.literal("direct"),
|
|
5676
|
+
z.literal("group"),
|
|
5677
|
+
z.literal("channel"),
|
|
5678
|
+
z.literal("dm")
|
|
5679
|
+
]).optional();
|
|
5680
|
+
function createAllowDenyChannelRulesSchema() {
|
|
5681
|
+
return z.object({
|
|
5682
|
+
default: AllowDenyActionSchema.optional(),
|
|
5683
|
+
rules: z.array(z.object({
|
|
5684
|
+
action: AllowDenyActionSchema,
|
|
5685
|
+
match: z.object({
|
|
5686
|
+
channel: z.string().optional(),
|
|
5687
|
+
chatType: AllowDenyChatTypeSchema,
|
|
5688
|
+
keyPrefix: z.string().optional(),
|
|
5689
|
+
rawKeyPrefix: z.string().optional()
|
|
5690
|
+
}).strict().optional()
|
|
5691
|
+
}).strict()).optional()
|
|
5692
|
+
}).strict().optional();
|
|
5693
|
+
}
|
|
5694
|
+
|
|
6635
5695
|
//#endregion
|
|
6636
5696
|
//#region src/config/zod-schema.session.ts
|
|
6637
5697
|
const SessionResetConfigSchema = z.object({
|
|
@@ -6770,8 +5830,6 @@ const MessagesSchema = z.object({
|
|
|
6770
5830
|
const CommandsSchema = z.object({
|
|
6771
5831
|
native: NativeCommandsSettingSchema.optional().default("auto"),
|
|
6772
5832
|
text: z.boolean().optional(),
|
|
6773
|
-
bash: z.boolean().optional(),
|
|
6774
|
-
bashForegroundMs: z.number().int().min(0).max(3e4).optional(),
|
|
6775
5833
|
config: z.boolean().optional(),
|
|
6776
5834
|
debug: z.boolean().optional(),
|
|
6777
5835
|
restart: z.boolean().optional().default(true),
|
|
@@ -6779,7 +5837,7 @@ const CommandsSchema = z.object({
|
|
|
6779
5837
|
ownerAllowFrom: z.array(z.union([z.string(), z.number()])).optional(),
|
|
6780
5838
|
ownerDisplay: z.enum(["raw", "hash"]).optional().default("raw"),
|
|
6781
5839
|
ownerDisplaySecret: z.string().optional().register(sensitive),
|
|
6782
|
-
allowFrom:
|
|
5840
|
+
allowFrom: z.record(z.string(), z.array(z.union([z.string(), z.number()]))).optional()
|
|
6783
5841
|
}).strict().optional().default(() => ({
|
|
6784
5842
|
native: "auto",
|
|
6785
5843
|
restart: true,
|
|
@@ -9327,22 +8385,6 @@ function loadSessionStore(storePath, opts = {}) {
|
|
|
9327
8385
|
continue;
|
|
9328
8386
|
}
|
|
9329
8387
|
}
|
|
9330
|
-
for (const entry of Object.values(store)) {
|
|
9331
|
-
if (!entry || typeof entry !== "object") continue;
|
|
9332
|
-
const rec = entry;
|
|
9333
|
-
if (typeof rec.channel !== "string" && typeof rec.provider === "string") {
|
|
9334
|
-
rec.channel = rec.provider;
|
|
9335
|
-
delete rec.provider;
|
|
9336
|
-
}
|
|
9337
|
-
if (typeof rec.lastChannel !== "string" && typeof rec.lastProvider === "string") {
|
|
9338
|
-
rec.lastChannel = rec.lastProvider;
|
|
9339
|
-
delete rec.lastProvider;
|
|
9340
|
-
}
|
|
9341
|
-
if (typeof rec.groupChannel !== "string" && typeof rec.room === "string") {
|
|
9342
|
-
rec.groupChannel = rec.room;
|
|
9343
|
-
delete rec.room;
|
|
9344
|
-
} else if ("room" in rec) delete rec.room;
|
|
9345
|
-
}
|
|
9346
8388
|
if (!opts.skipCache && isSessionStoreCacheEnabled()) SESSION_STORE_CACHE.set(storePath, {
|
|
9347
8389
|
store: structuredClone(store),
|
|
9348
8390
|
loadedAt: Date.now(),
|
|
@@ -10702,7 +9744,7 @@ async function detectMimeImpl(opts) {
|
|
|
10702
9744
|
if (sniffed) return sniffed;
|
|
10703
9745
|
if (headerMime) return headerMime;
|
|
10704
9746
|
}
|
|
10705
|
-
function extensionForMime(mime) {
|
|
9747
|
+
function extensionForMime$1(mime) {
|
|
10706
9748
|
const normalized = normalizeMimeType(mime);
|
|
10707
9749
|
if (!normalized) return;
|
|
10708
9750
|
return EXT_BY_MIME[normalized];
|
|
@@ -10842,7 +9884,7 @@ async function fetchRemoteMedia(options) {
|
|
|
10842
9884
|
filePath: filePathForMime
|
|
10843
9885
|
});
|
|
10844
9886
|
if (fileName && !path.extname(fileName) && contentType) {
|
|
10845
|
-
const ext = extensionForMime(contentType);
|
|
9887
|
+
const ext = extensionForMime$1(contentType);
|
|
10846
9888
|
if (ext) fileName = `${fileName}${ext}`;
|
|
10847
9889
|
}
|
|
10848
9890
|
return {
|
|
@@ -10892,7 +9934,7 @@ async function downloadRemote(url, tempDir, index) {
|
|
|
10892
9934
|
maxBytes: MAX_INBOUND_MEDIA_BYTES
|
|
10893
9935
|
});
|
|
10894
9936
|
const mimeType = fetched.contentType ?? "application/octet-stream";
|
|
10895
|
-
const fileName = `inbound-media-${index}${extensionForMime(mimeType) ?? ""}`;
|
|
9937
|
+
const fileName = `inbound-media-${index}${extensionForMime$1(mimeType) ?? ""}`;
|
|
10896
9938
|
const filePath = join(tempDir, fileName);
|
|
10897
9939
|
await writeFile(filePath, fetched.buffer);
|
|
10898
9940
|
return {
|
|
@@ -10925,6 +9967,12 @@ var CLIRuntimeBase = class CLIRuntimeBase {
|
|
|
10925
9967
|
this.command = command;
|
|
10926
9968
|
this.timeoutMs = timeoutMs;
|
|
10927
9969
|
}
|
|
9970
|
+
/**
|
|
9971
|
+
* Construct a custom stdin payload for the subprocess.
|
|
9972
|
+
* When this returns a string, it is written to stdin instead of
|
|
9973
|
+
* the default large-prompt fallback. Subclasses may override.
|
|
9974
|
+
*/
|
|
9975
|
+
buildStdinPayload(_params) {}
|
|
10928
9976
|
/** Whether this CLI accepts prompts via stdin. Subclasses may override. */
|
|
10929
9977
|
get supportsStdinPrompt() {
|
|
10930
9978
|
return true;
|
|
@@ -11026,7 +10074,11 @@ var CLIRuntimeBase = class CLIRuntimeBase {
|
|
|
11026
10074
|
});
|
|
11027
10075
|
});
|
|
11028
10076
|
});
|
|
11029
|
-
|
|
10077
|
+
const customStdin = this.buildStdinPayload(params);
|
|
10078
|
+
if (customStdin !== void 0 && child.stdin) {
|
|
10079
|
+
logDebug(`[agent-runtime] pid=${child.pid}: delivering custom stdin payload (${customStdin.length} chars)`);
|
|
10080
|
+
child.stdin.write(customStdin);
|
|
10081
|
+
} else if (this.supportsStdinPrompt && params.prompt.length > CLIRuntimeBase.STDIN_PROMPT_THRESHOLD && child.stdin) {
|
|
11030
10082
|
logDebug(`[agent-runtime] pid=${child.pid}: delivering prompt via stdin (${params.prompt.length} chars)`);
|
|
11031
10083
|
child.stdin.write(params.prompt);
|
|
11032
10084
|
}
|
|
@@ -11108,7 +10160,8 @@ var ClaudeCliRuntime = class extends CLIRuntimeBase {
|
|
|
11108
10160
|
}
|
|
11109
10161
|
async *execute(params) {
|
|
11110
10162
|
this.resetState();
|
|
11111
|
-
|
|
10163
|
+
const prepared = await this.prepareMedia(params);
|
|
10164
|
+
for await (const event of super.execute(prepared)) {
|
|
11112
10165
|
if (event.type === "done") this.enrichDoneEvent(event);
|
|
11113
10166
|
yield event;
|
|
11114
10167
|
}
|
|
@@ -11122,9 +10175,34 @@ var ClaudeCliRuntime = class extends CLIRuntimeBase {
|
|
|
11122
10175
|
];
|
|
11123
10176
|
if (params.sessionId) args.push("--resume", params.sessionId);
|
|
11124
10177
|
if (params.mcpServers && Object.keys(params.mcpServers).length > 0) args.push("--mcp-config", JSON.stringify({ mcpServers: params.mcpServers }));
|
|
11125
|
-
args.push("--
|
|
10178
|
+
if (params.media?.some((m) => m.mimeType.startsWith("image/") && m.base64)) args.push("-p", "--input-format", "stream-json");
|
|
10179
|
+
else args.push("--print", params.prompt);
|
|
11126
10180
|
return args;
|
|
11127
10181
|
}
|
|
10182
|
+
buildStdinPayload(params) {
|
|
10183
|
+
const images = params.media?.filter((m) => m.mimeType.startsWith("image/") && m.base64);
|
|
10184
|
+
if (!images?.length) return;
|
|
10185
|
+
const content = images.map((img) => ({
|
|
10186
|
+
type: "image",
|
|
10187
|
+
source: {
|
|
10188
|
+
type: "base64",
|
|
10189
|
+
media_type: img.mimeType,
|
|
10190
|
+
data: img.base64
|
|
10191
|
+
}
|
|
10192
|
+
}));
|
|
10193
|
+
content.push({
|
|
10194
|
+
type: "text",
|
|
10195
|
+
text: params.prompt
|
|
10196
|
+
});
|
|
10197
|
+
const envelope = {
|
|
10198
|
+
type: "user",
|
|
10199
|
+
message: {
|
|
10200
|
+
role: "user",
|
|
10201
|
+
content
|
|
10202
|
+
}
|
|
10203
|
+
};
|
|
10204
|
+
return JSON.stringify(envelope) + "\n";
|
|
10205
|
+
}
|
|
11128
10206
|
extractEvent(line) {
|
|
11129
10207
|
const parsed = JSON.parse(line);
|
|
11130
10208
|
if (!isObject$3(parsed)) return null;
|
|
@@ -11236,6 +10314,37 @@ var ClaudeCliRuntime = class extends CLIRuntimeBase {
|
|
|
11236
10314
|
if (this.resultData?.durationApiMs !== void 0) result.apiDurationMs = this.resultData.durationApiMs;
|
|
11237
10315
|
if (this.resultData?.numTurns !== void 0) result.numTurns = this.resultData.numTurns;
|
|
11238
10316
|
}
|
|
10317
|
+
/**
|
|
10318
|
+
* Read image files referenced by media attachments and populate their base64 field.
|
|
10319
|
+
* Non-image media types are filtered out (audio/video are not supported natively).
|
|
10320
|
+
*/
|
|
10321
|
+
async prepareMedia(params) {
|
|
10322
|
+
if (!params.media?.length) return params;
|
|
10323
|
+
const prepared = [];
|
|
10324
|
+
for (const attachment of params.media) {
|
|
10325
|
+
if (!attachment.mimeType.startsWith("image/")) continue;
|
|
10326
|
+
if (attachment.base64) {
|
|
10327
|
+
prepared.push(attachment);
|
|
10328
|
+
continue;
|
|
10329
|
+
}
|
|
10330
|
+
if (attachment.filePath) {
|
|
10331
|
+
try {
|
|
10332
|
+
const buffer = await readFile(attachment.filePath);
|
|
10333
|
+
prepared.push({
|
|
10334
|
+
...attachment,
|
|
10335
|
+
base64: buffer.toString("base64")
|
|
10336
|
+
});
|
|
10337
|
+
} catch {
|
|
10338
|
+
logDebug(`[claude-runtime] failed to read media file: ${attachment.filePath}`);
|
|
10339
|
+
}
|
|
10340
|
+
continue;
|
|
10341
|
+
}
|
|
10342
|
+
}
|
|
10343
|
+
return {
|
|
10344
|
+
...params,
|
|
10345
|
+
media: prepared.length > 0 ? prepared : void 0
|
|
10346
|
+
};
|
|
10347
|
+
}
|
|
11239
10348
|
resetState() {
|
|
11240
10349
|
this.currentSessionId = void 0;
|
|
11241
10350
|
this.accumulatedText = "";
|
|
@@ -11273,7 +10382,7 @@ var CodexCliRuntime = class extends CLIRuntimeBase {
|
|
|
11273
10382
|
constructor() {
|
|
11274
10383
|
super("codex");
|
|
11275
10384
|
this.mediaCapabilities = {
|
|
11276
|
-
acceptsInbound: [],
|
|
10385
|
+
acceptsInbound: ["image/"],
|
|
11277
10386
|
emitsOutbound: false
|
|
11278
10387
|
};
|
|
11279
10388
|
this.accumulatedText = "";
|
|
@@ -11304,13 +10413,17 @@ var CodexCliRuntime = class extends CLIRuntimeBase {
|
|
|
11304
10413
|
params.sessionId,
|
|
11305
10414
|
params.prompt
|
|
11306
10415
|
];
|
|
11307
|
-
|
|
10416
|
+
const args = [
|
|
11308
10417
|
"exec",
|
|
11309
10418
|
"--json",
|
|
11310
10419
|
"--color",
|
|
11311
|
-
"never"
|
|
11312
|
-
params.prompt
|
|
10420
|
+
"never"
|
|
11313
10421
|
];
|
|
10422
|
+
if (params.media) {
|
|
10423
|
+
for (const attachment of params.media) if (attachment.mimeType.startsWith("image/") && attachment.filePath) args.push("--image", attachment.filePath);
|
|
10424
|
+
}
|
|
10425
|
+
args.push(params.prompt);
|
|
10426
|
+
return args;
|
|
11314
10427
|
}
|
|
11315
10428
|
extractEvent(line) {
|
|
11316
10429
|
const parsed = JSON.parse(line);
|
|
@@ -11630,7 +10743,8 @@ var GeminiCliRuntime = class extends CLIRuntimeBase {
|
|
|
11630
10743
|
acceptsInbound: [
|
|
11631
10744
|
"image/",
|
|
11632
10745
|
"audio/",
|
|
11633
|
-
"video/"
|
|
10746
|
+
"video/",
|
|
10747
|
+
"application/pdf"
|
|
11634
10748
|
],
|
|
11635
10749
|
emitsOutbound: false
|
|
11636
10750
|
};
|
|
@@ -11644,12 +10758,14 @@ var GeminiCliRuntime = class extends CLIRuntimeBase {
|
|
|
11644
10758
|
const mcpConfigManager = params.mcpServers && Object.keys(params.mcpServers).length > 0 ? new GeminiMcpConfigManager(params.workingDirectory, params.mcpServers) : null;
|
|
11645
10759
|
try {
|
|
11646
10760
|
await mcpConfigManager?.setup();
|
|
11647
|
-
|
|
10761
|
+
const prepared = await this.prepareMedia(params);
|
|
10762
|
+
for await (const event of super.execute(prepared)) {
|
|
11648
10763
|
if (event.type === "done") this.enrichDoneEvent(event);
|
|
11649
10764
|
yield event;
|
|
11650
10765
|
}
|
|
11651
10766
|
} finally {
|
|
11652
10767
|
await mcpConfigManager?.teardown();
|
|
10768
|
+
await this.cleanupMediaTempDir();
|
|
11653
10769
|
}
|
|
11654
10770
|
}
|
|
11655
10771
|
buildArgs(params) {
|
|
@@ -11739,10 +10855,52 @@ var GeminiCliRuntime = class extends CLIRuntimeBase {
|
|
|
11739
10855
|
if (this.resultStats.toolCalls !== void 0) result.numTurns = this.resultStats.toolCalls;
|
|
11740
10856
|
}
|
|
11741
10857
|
}
|
|
10858
|
+
/**
|
|
10859
|
+
* Save media attachments to temp files and inject `@path` references into
|
|
10860
|
+
* the prompt. Gemini CLI resolves `@path` inline references natively.
|
|
10861
|
+
*/
|
|
10862
|
+
async prepareMedia(params) {
|
|
10863
|
+
if (!params.media?.length) return params;
|
|
10864
|
+
const tempDir = join(tmpdir(), `remoteclaw-gemini-media-${randomUUID()}`);
|
|
10865
|
+
await mkdir(tempDir, { recursive: true });
|
|
10866
|
+
this.mediaTempDir = tempDir;
|
|
10867
|
+
const mediaRefs = [];
|
|
10868
|
+
for (const attachment of params.media) {
|
|
10869
|
+
const ext = extensionForMime(attachment.mimeType);
|
|
10870
|
+
const filePath = join(tempDir, `media-${mediaRefs.length}${ext}`);
|
|
10871
|
+
if (attachment.base64) {
|
|
10872
|
+
await writeFile(filePath, Buffer.from(attachment.base64, "base64"));
|
|
10873
|
+
mediaRefs.push(filePath);
|
|
10874
|
+
} else if (attachment.filePath) try {
|
|
10875
|
+
await writeFile(filePath, await readFile(attachment.filePath));
|
|
10876
|
+
mediaRefs.push(filePath);
|
|
10877
|
+
} catch {
|
|
10878
|
+
logDebug(`[gemini-runtime] failed to read media file: ${attachment.filePath}`);
|
|
10879
|
+
}
|
|
10880
|
+
}
|
|
10881
|
+
if (mediaRefs.length === 0) return params;
|
|
10882
|
+
const mediaPrefix = mediaRefs.map((ref) => `@${ref}`).join(" ");
|
|
10883
|
+
return {
|
|
10884
|
+
...params,
|
|
10885
|
+
prompt: `${mediaPrefix} ${params.prompt}`
|
|
10886
|
+
};
|
|
10887
|
+
}
|
|
10888
|
+
async cleanupMediaTempDir() {
|
|
10889
|
+
if (this.mediaTempDir) {
|
|
10890
|
+
try {
|
|
10891
|
+
await rm(this.mediaTempDir, {
|
|
10892
|
+
recursive: true,
|
|
10893
|
+
force: true
|
|
10894
|
+
});
|
|
10895
|
+
} catch {}
|
|
10896
|
+
this.mediaTempDir = void 0;
|
|
10897
|
+
}
|
|
10898
|
+
}
|
|
11742
10899
|
resetState() {
|
|
11743
10900
|
this.currentSessionId = void 0;
|
|
11744
10901
|
this.accumulatedText = "";
|
|
11745
10902
|
this.resultStats = void 0;
|
|
10903
|
+
this.mediaTempDir = void 0;
|
|
11746
10904
|
}
|
|
11747
10905
|
};
|
|
11748
10906
|
/**
|
|
@@ -11804,6 +10962,23 @@ var GeminiMcpConfigManager = class {
|
|
|
11804
10962
|
function isObject$1(value) {
|
|
11805
10963
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11806
10964
|
}
|
|
10965
|
+
/** Map common MIME types to file extensions for Gemini CLI `@path` references. */
|
|
10966
|
+
function extensionForMime(mimeType) {
|
|
10967
|
+
return {
|
|
10968
|
+
"image/jpeg": ".jpg",
|
|
10969
|
+
"image/png": ".png",
|
|
10970
|
+
"image/gif": ".gif",
|
|
10971
|
+
"image/webp": ".webp",
|
|
10972
|
+
"audio/ogg": ".ogg",
|
|
10973
|
+
"audio/mpeg": ".mp3",
|
|
10974
|
+
"audio/wav": ".wav",
|
|
10975
|
+
"audio/webm": ".weba",
|
|
10976
|
+
"video/mp4": ".mp4",
|
|
10977
|
+
"video/webm": ".webm",
|
|
10978
|
+
"video/quicktime": ".mov",
|
|
10979
|
+
"application/pdf": ".pdf"
|
|
10980
|
+
}[mimeType] ?? "";
|
|
10981
|
+
}
|
|
11807
10982
|
|
|
11808
10983
|
//#endregion
|
|
11809
10984
|
//#region src/middleware/runtimes/opencode.ts
|