@symerian/symi 2.3.3 → 2.4.0
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-Cd816n6l.js → accounts-DDuIpcln.js} +7 -7
- package/dist/{accounts-mN_EcgxC.js → accounts-DyJN4_vR.js} +1 -1
- package/dist/{accounts-CokRskCl.js → accounts-bK-Yqdwx.js} +1 -1
- package/dist/{acp-cli-BgyJMtqt.js → acp-cli-Cu4icbJT.js} +6 -6
- package/dist/{agent-scope-BRwEc2pG.js → agent-scope-CgUHAtCo.js} +18 -18
- package/dist/{agents-DjLt6jc3.js → agents-CI3xxYc_.js} +4 -4
- package/dist/{agents.config-u_ibObha.js → agents.config-DCE3RGr9.js} +2 -2
- package/dist/{agents.config-Dt7B_P5o.js → agents.config-DTUAM1AG.js} +1 -1
- package/dist/{api-key-rotation-CEr3lKih.js → api-key-rotation-CzuPlV2t.js} +1 -1
- package/dist/{audio-preflight-CPBOQV4I.js → audio-preflight-C40mKAp7.js} +4 -4
- package/dist/{audio-preflight-CjysqO8U.js → audio-preflight-CWnxkaac.js} +28 -28
- package/dist/{audio-preflight-D02HwB-I.js → audio-preflight-O3ASWbaG.js} +4 -4
- package/dist/{audit-BSB9NPSO.js → audit-CrITRV6w.js} +23 -23
- package/dist/{auth-choice-DmSG7c8J.js → auth-choice-DuQwRfJc.js} +8 -8
- package/dist/{auth-choice-DUUu6Nhg.js → auth-choice-IiIysHGO.js} +1 -1
- package/dist/{auth-token-DC5w1WoS.js → auth-token-BnOynwk4.js} +1 -1
- package/dist/{banner-BiAcdT2T.js → banner-xhDZu_ZJ.js} +1 -1
- package/dist/{bindings-ChzePa8q.js → bindings-DFaVVCsf.js} +1 -1
- package/dist/{browser-cli-C4D9Ql3c.js → browser-cli-BG4qPxpM.js} +9 -9
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +6 -6
- package/dist/bundled/session-memory/handler.js +6 -6
- package/dist/{call-Dd7-bkfG.js → call-CJaS1iRF.js} +9 -9
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-vQREpu-n.js → channel-options-D3gGVwBd.js} +2 -2
- package/dist/{channel-options-ClfXE1B7.js → channel-options-Dvxd7eJY.js} +1 -1
- package/dist/{channel-selection-DjfBv8kq.js → channel-selection-DuWs0Aak.js} +1 -1
- package/dist/{channel-web-y6pd_GHr.js → channel-web-a5tX1YI3.js} +17 -17
- package/dist/{channels-cli-CjYD1_OO.js → channels-cli-BLUkl5Li.js} +75 -75
- package/dist/{channels-cli-suXRcyfF.js → channels-cli-C9wBYmDe.js} +4 -4
- package/dist/{channels-status-issues-BoH1ZJPN.js → channels-status-issues-B_kBkl_u.js} +1 -1
- package/dist/{chrome-EyvdASWt.js → chrome-BFekevcE.js} +7 -7
- package/dist/{chrome-D2SKJnR7.js → chrome-CDJYxX5a.js} +7 -7
- package/dist/{chrome-r4RThPxq.js → chrome-DtPkPq9T.js} +2 -2
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-mbfUlFn3.js → cli-CaEE46xi.js} +1 -1
- package/dist/{cli-B-911QZL.js → cli-Cw45F0yJ.js} +62 -62
- package/dist/{client-BsrZnuSi.js → client-CQSyCS4M.js} +1 -1
- package/dist/{command-registry-y8CXSD5O.js → command-registry-ea9SD1eA.js} +9 -9
- package/dist/{commands-CtocZ4Lg.js → commands-BNLCWX6e.js} +1 -1
- package/dist/{commands-registry-BZ0ZSQpM.js → commands-registry-BT0-zzs3.js} +3 -3
- package/dist/{completion-cli-BLrwUAyo.js → completion-cli-CMJmUQbI.js} +12 -12
- package/dist/{completion-cli-2Mi5hts2.js → completion-cli-DVkiEAEA.js} +2 -2
- package/dist/{config-CJMcIRQM.js → config-CHwyw6l5.js} +2 -2
- package/dist/{config-cli-CF-wdLkO.js → config-cli-B2d28_hb.js} +4 -4
- package/dist/{config-cli-tYZAnvgQ.js → config-cli-VIg0PSyq.js} +1 -1
- package/dist/{config-guard-C1Rs8NZG.js → config-guard-BflmO0t7.js} +12 -12
- package/dist/{config-validation-ChQQVndI.js → config-validation-CmimHAES.js} +1 -1
- package/dist/{configure-si19m30s.js → configure-C_TVBt76.js} +3 -3
- package/dist/{configure-BHKdqhLb.js → configure-D-3FiJbK.js} +15 -15
- package/dist/{control-service-B8H3Bqpv.js → control-service-Bz7rxLWq.js} +4 -4
- package/dist/{control-ui-assets-DqGziq7x.js → control-ui-assets-Z947tKLt.js} +1 -1
- package/dist/{cron-cli-YrMWJCkm.js → cron-cli-DBIlCvp3.js} +10 -10
- package/dist/{daemon-cli-Dx4SXRyp.js → daemon-cli-DscwlsKW.js} +11 -11
- package/dist/{daemon-runtime--RiRUx_2.js → daemon-runtime-2mwX-jqj.js} +10 -10
- package/dist/{deliver-C-37cZUe.js → deliver-BH0l3UKW.js} +1 -1
- package/dist/{deliver-Um8yyhRA.js → deliver-CceEhg3d.js} +7 -7
- package/dist/{deliver-D1ZN6-fl.js → deliver-CvCK5Mm9.js} +1 -1
- package/dist/{devices-cli-DAJ84AOe.js → devices-cli-Dds-25Ve.js} +6 -6
- package/dist/{diagnostics-D2yUMZN1.js → diagnostics-BAMlsVVX.js} +5 -5
- package/dist/{directory-cli-C4h8KQLH.js → directory-cli-CpUByQew.js} +7 -7
- package/dist/{dm-policy-shared-BCSw0GJS.js → dm-policy-shared-Bh3TbexU.js} +2 -2
- package/dist/{dns-cli-s0ZWvTPm.js → dns-cli-Beyzdh3S.js} +3 -3
- package/dist/{dock-BYiRZSgZ.js → dock-BhS32F6E.js} +4 -4
- package/dist/{docs-cli-BfPfHTDs.js → docs-cli-BpnEOtJi.js} +1 -1
- package/dist/{doctor-completion-C19QYsQN.js → doctor-completion-CJHJYIwQ.js} +2 -2
- package/dist/{doctor-completion-Dn_Kn4gz.js → doctor-completion-DeRX6gkI.js} +1 -1
- package/dist/{doctor-config-flow-D05HlWdn.js → doctor-config-flow-QnaBd8kL.js} +10 -10
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-Df1lyRyE.js → exec-approvals-cli-BliRl8VB.js} +13 -13
- package/dist/extensionAPI.js +6 -6
- package/dist/{fs-safe-CTDvb1DF.js → fs-safe-CUjO1ca2.js} +6 -6
- package/dist/{gateway-cli-B7khyAHs.js → gateway-cli-BDDHBfYP.js} +126 -121
- package/dist/{gateway-cli-DG_Mdw0H.js → gateway-cli-DiDJ6Z2d.js} +22 -17
- package/dist/{gateway-rpc-DFeD8pZh.js → gateway-rpc-BxkKeCZ0.js} +1 -1
- package/dist/{glass-ui-ws-BmQAULMj.js → glass-ui-ws-Bj1IuJXt.js} +82 -82
- package/dist/{glass-ui-ws-BAub_JoN.js → glass-ui-ws-rGIAkViC.js} +7 -7
- package/dist/{health-CboWXJkq.js → health-Bst5HnLF.js} +1 -1
- package/dist/{health-DkKXiUEF.js → health-CypF_2ZD.js} +13 -13
- package/dist/{hooks-cli-DLM_5caf.js → hooks-cli-CDMcqTy4.js} +2 -2
- package/dist/{hooks-cli-BrO_9pas.js → hooks-cli-CfsqqxPX.js} +76 -76
- package/dist/{image-Cp3JDEBB.js → image-B0wGflxA.js} +1 -1
- package/dist/{image-DcpMiprB.js → image-CHzdaNJ4.js} +1 -1
- package/dist/{image-BiY-PfMh.js → image-D9uvDTrc.js} +3 -3
- package/dist/{image-ops-DYbDWaIA.js → image-ops-1OJMSAUX.js} +10 -10
- package/dist/index.js +72 -72
- package/dist/{inspect-ZJkNX0WL.js → inspect-CllGjsWo.js} +4 -4
- package/dist/{install-safe-path-Qqr_t_tH.js → install-safe-path-tCLiMpmO.js} +11 -11
- package/dist/{installs-O9KlRu9h.js → installs-C1Cebk97.js} +10 -10
- package/dist/{ir-Dt4hOzxG.js → ir-DZam9q5M.js} +6 -6
- package/dist/{lifecycle-core-BkPSoGM2.js → lifecycle-core-D6LYXpFj.js} +5 -5
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{local-roots-BBeKX7PX.js → local-roots-aAFLQGkY.js} +2 -2
- package/dist/{login-1sleXoB4.js → login-dIlDkG4X.js} +3 -3
- package/dist/{login-qr-wCWBOMwB.js → login-qr-pbXdFORv.js} +5 -5
- package/dist/{logs-cli-DVeEdUCU.js → logs-cli-xOzIPrHm.js} +7 -7
- package/dist/{manager-C1CfGzZ2.js → manager-D4LJSRyZ.js} +13 -13
- package/dist/{markdown-tables-ZwP14ydw.js → markdown-tables-CEbN0fEm.js} +1 -1
- package/dist/{memory-cli-lk6fRiwy.js → memory-cli-Ca5r9AUb.js} +14 -14
- package/dist/{model-catalog-C3NLvWC2.js → model-catalog-DvBJ8pMD.js} +4 -4
- package/dist/{model-picker-LKZLY2DL.js → model-picker-Ddo3jHe-.js} +3 -3
- package/dist/{model-selection-X1oLh3CE.js → model-selection-CyFvYcRt.js} +9 -9
- package/dist/{model-CeeOcylL.js → model-tWhwnFf8.js} +1 -1
- package/dist/{models-BmiRYEVd.js → models-ZEOGlFx7.js} +2 -2
- package/dist/{models-cli-Tf61I97Q.js → models-cli-BM1QyeXr.js} +3 -3
- package/dist/{models-cli-4vQrbW6G.js → models-cli-BwOQhZ_c.js} +72 -72
- package/dist/{models-config-CqDdkHJq.js → models-config-qyOXrOli.js} +7 -7
- package/dist/{node-cli-Jj2LTGzF.js → node-cli-C_G-Q3h-.js} +28 -28
- package/dist/{node-service-CJygtY5M.js → node-service-Cxz4e-Qd.js} +1 -1
- package/dist/{nodes-cli-C43ifECe.js → nodes-cli-BcnuJajV.js} +10 -10
- package/dist/{nodes-screen-C99kfE1u.js → nodes-screen-VBGXKdLk.js} +4 -4
- package/dist/{npm-registry-spec-DR_at_Hp.js → npm-registry-spec-C2JDdSZS.js} +9 -9
- package/dist/{onboard-FpptSqHZ.js → onboard-CU-pntZD.js} +2 -2
- package/dist/{onboard-D8uxVvMq.js → onboard-DQ34giB5.js} +13 -13
- package/dist/{onboard-channels-DOKid2w1.js → onboard-channels-BOBxxhHX.js} +5 -5
- package/dist/{onboard-channels-Q_xxgZ8O.js → onboard-channels-g5cvwJpx.js} +1 -1
- package/dist/{onboard-custom-DPJiy9aT.js → onboard-custom-C7O-zfQ1.js} +3 -3
- package/dist/{onboard-helpers-Dixh6cNh.js → onboard-helpers-ZmZYzlq3.js} +8 -8
- package/dist/{onboard-hooks-lsws7g2s.js → onboard-hooks-BAA8CoVv.js} +1 -1
- package/dist/{onboard-remote-B66ZWtkN.js → onboard-remote-zUjD7UtM.js} +1 -1
- package/dist/{onboard-skills-B0IA09ig.js → onboard-skills-BB0YhUmF.js} +4 -4
- package/dist/{onboarding-CdlGKa0U.js → onboarding-CXWUjdM5.js} +13 -13
- package/dist/{onboarding-DhIEUmp5.js → onboarding-DWs6tHZ9.js} +3 -3
- package/dist/{onboarding.finalize-CEYLIXkq.js → onboarding.finalize-CAYf88mf.js} +6 -6
- package/dist/{onboarding.finalize-DyBsPxXJ.js → onboarding.finalize-vupGASMK.js} +74 -74
- package/dist/{onboarding.gateway-config-CCJqI0kw.js → onboarding.gateway-config-CJUgDC6Y.js} +14 -14
- package/dist/{openai-model-default-BJ1IZ3TN.js → openai-model-default-DMjQRsb1.js} +2 -2
- package/dist/{outbound-NJCy0h4x.js → outbound-DB5Zus0-.js} +4 -4
- package/dist/{outbound-attachment-D62E0xDI.js → outbound-attachment-D_QuKi8U.js} +2 -2
- package/dist/{pairing-cli-CcW0ndhB.js → pairing-cli-CBLfGvqW.js} +8 -8
- package/dist/{pairing-labels-27SOKDzJ.js → pairing-labels-2S6x2UoV.js} +1 -1
- package/dist/{pairing-store-B8ktu-6j.js → pairing-store-CK726Dzq.js} +2 -2
- package/dist/{pairing-token-AV-MMfVE.js → pairing-token-CX3NN_qj.js} +7 -7
- package/dist/{paths-CT6jsi4E.js → paths-BBm9fwuG.js} +1 -1
- package/dist/{pi-auth-json-CCneTXUh.js → pi-auth-json-DayrlDg_.js} +3 -3
- package/dist/{pi-embedded-wr4HXhzm.js → pi-embedded-CJsSOG2j.js} +147 -185
- package/dist/{pi-embedded-BThV36aG.js → pi-embedded-DwbQz0MC.js} +147 -185
- package/dist/{pi-embedded-helpers-DO6u9K2t.js → pi-embedded-helpers-CNPyv_ax.js} +6 -6
- package/dist/{pi-embedded-helpers-ag2bosuj.js → pi-embedded-helpers-DLFjnVBb.js} +4 -4
- package/dist/{pi-embedded-helpers-B8kqLWns.js → pi-embedded-helpers-lgx_U5KS.js} +4 -4
- package/dist/{pi-tools.policy-juZV2uUv.js → pi-tools.policy-CIDBbw6x.js} +4 -4
- package/dist/{plugin-auto-enable-Bbm7MwFV.js → plugin-auto-enable-BzX1uAKy.js} +2 -2
- package/dist/{plugin-registry-DvWWctC9.js → plugin-registry-BDpdOTei.js} +1 -1
- package/dist/{plugin-registry-lWWSu9UD.js → plugin-registry-CZeHSx_c.js} +3 -3
- package/dist/plugin-sdk/agents/model-aware-stream.d.ts +41 -0
- package/dist/plugin-sdk/agents/model-token-filter.d.ts +11 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/extra-params.d.ts +13 -0
- package/dist/plugin-sdk/{channel-web-BnrTC55Y.js → channel-web-uUypcT9Q.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-kuMxu6Q4.js → reply-DTKTuCrn.js} +133 -171
- package/dist/plugin-sdk/{web-TMIhKQyF.js → web-Dh6Youzv.js} +2 -2
- package/dist/{plugins-BAyxWQSz.js → plugins-DKDeQZF0.js} +2 -2
- package/dist/{plugins-cli-BHfzYAq6.js → plugins-cli-CCQ3skeQ.js} +71 -71
- package/dist/{plugins-cli-wlWRx4Oj.js → plugins-cli-D_RzeRoE.js} +2 -2
- package/dist/{ports-OZQlocB7.js → ports-BOmtxoTv.js} +2 -2
- package/dist/{ports-b36gHZbA.js → ports-BX0kKI0g.js} +1 -1
- package/dist/{program-CKy7s-bm.js → program-Cl9i8ubQ.js} +7 -7
- package/dist/{program-context-D4gbh6dg.js → program-context-BbmYGW-V.js} +39 -39
- package/dist/{prompt-select-styled-bh0GLMiQ.js → prompt-select-styled-BN0T6GxF.js} +4 -4
- package/dist/{prompt-select-styled-DlGPNq9c.js → prompt-select-styled-BfuyvChh.js} +38 -38
- package/dist/{provider-auth-helpers-B-YsKbwc.js → provider-auth-helpers-CkmLFHXL.js} +1 -1
- package/dist/{provider-auth-helpers-Bd5VVReu.js → provider-auth-helpers-CuT5EHza.js} +5 -5
- package/dist/{push-apns-ByyOJyDl.js → push-apns-CFkFVwEz.js} +1 -1
- package/dist/{push-apns-0et2AR44.js → push-apns-DeJt9kAO.js} +4 -4
- package/dist/{pw-ai-Ch7liUOW.js → pw-ai-BnAKvSuw.js} +1 -1
- package/dist/{pw-ai-1htA-NnS.js → pw-ai-De-KR9_s.js} +1 -1
- package/dist/{pw-ai-MVzi113V.js → pw-ai-DqL87js3.js} +7 -7
- package/dist/{qmd-manager-BP2r8b1D.js → qmd-manager-D85GJrir.js} +18 -18
- package/dist/{qr-cli-17laLZm_.js → qr-cli-jd9LdZpq.js} +3 -3
- package/dist/{register.agent-oKma6YjU.js → register.agent-BQm4YmZp.js} +6 -6
- package/dist/{register.agent-Dhijhxr5.js → register.agent-BygseJ7t.js} +81 -81
- package/dist/register.configure-C2fhjZze.js +147 -0
- package/dist/{register.configure-BX8vQ2Np.js → register.configure-Cj95vB2U.js} +6 -6
- package/dist/{register.maintenance-OJCduNdt.js → register.maintenance-CClfXq5e.js} +8 -8
- package/dist/{register.maintenance-B3TPb969.js → register.maintenance-K1x3E7OS.js} +84 -84
- package/dist/{register.message-CX8C_Fds.js → register.message-BSr-kUvJ.js} +2 -2
- package/dist/{register.message-D0aswsGo.js → register.message-CSRzBl-c.js} +63 -63
- package/dist/{register.onboard-CSepiSPt.js → register.onboard-Bd6wPydW.js} +4 -4
- package/dist/{register.onboard-BHTyEs6d.js → register.onboard-TsU21RR7.js} +74 -74
- package/dist/{register.setup-uhpgkBjU.js → register.setup-C9gu0W5l.js} +77 -77
- package/dist/{register.setup-lZSHKiGQ.js → register.setup-DK-zsne2.js} +4 -4
- package/dist/{register.status-health-sessions-Cbavf8do.js → register.status-health-sessions-DN5Ui3V0.js} +3 -3
- package/dist/{register.status-health-sessions-v1KN3eEp.js → register.status-health-sessions-rZsuoqtr.js} +75 -75
- package/dist/{register.subclis-DBEv5xOP.js → register.subclis-DnzHFtLz.js} +9 -9
- package/dist/{replies-BL7IBg12.js → replies-vgss3_QA.js} +1 -1
- package/dist/{reply-DVxU0AMq.js → reply-Ca3slrA3.js} +262 -300
- package/dist/{reply-prefix-BLOOs1aW.js → reply-prefix-CE2YmmsD.js} +1 -1
- package/dist/{resolve-route-BcnaXYvh.js → resolve-route-BMoTaVAH.js} +2 -2
- package/dist/{routes-CE-ohckF.js → routes-Ba9CUQ8M.js} +8 -8
- package/dist/{rpc-wovSCB5v.js → rpc-BfhojW8g.js} +1 -1
- package/dist/{run-main-DspjiCY1.js → run-main-DlHh5iOO.js} +14 -14
- package/dist/{runner-Cen70krW.js → runner-CUglpiFP.js} +20 -20
- package/dist/{runner-BcQ0sF9T.js → runner-DUBExAb5.js} +1 -1
- package/dist/{runner-D0QUGA_X.js → runner-odEv83vv.js} +1 -1
- package/dist/{sandbox-BzNrUHpt.js → sandbox-C-T6hOMv.js} +18 -18
- package/dist/{sandbox-cli-CZrMO34w.js → sandbox-cli-BllVdQzR.js} +20 -20
- package/dist/{security-cli-CeBoEmeN.js → security-cli-BFLtWWHy.js} +36 -36
- package/dist/{send-dH0xroTu.js → send-CPF8hSFp.js} +4 -4
- package/dist/{send-C95ZRvja.js → send-CXxQ_f7L.js} +6 -6
- package/dist/{send-BnuIB59F.js → send-CZr1hVHY.js} +13 -13
- package/dist/{send-BEeuDXqy.js → send-Cutb0ZDY.js} +6 -6
- package/dist/{send-BjdAgYLu.js → send-tanEMpHN.js} +6 -6
- package/dist/{server-context-DUXqnh6l.js → server-context-CEpFjqSk.js} +5 -5
- package/dist/{server-methods-BgBq7KRL.js → server-methods-BYOkyf-q.js} +54 -54
- package/dist/{server-methods-B9alalq5.js → server-methods-b_Qod4tt.js} +7 -7
- package/dist/{server-node-events-BrBsrcCd.js → server-node-events-60nWpTh1.js} +63 -63
- package/dist/{server-node-events-DWG81_Fo.js → server-node-events-oU4Amei7.js} +2 -2
- package/dist/{service--qMN5DPm.js → service-Cl74hx8J.js} +15 -15
- package/dist/{session-CsIk0Sqq.js → session-DIBTkyvE.js} +2 -2
- package/dist/{sessions-D5a7H247.js → sessions-DgYpBvse.js} +13 -13
- package/dist/{shared-Jm_QdQJQ.js → shared-BJvwnR5z.js} +1 -1
- package/dist/{shared-Gi3l7nlY.js → shared-Knv1hy6h.js} +3 -3
- package/dist/{skill-commands-ZXbEITKi.js → skill-commands-Cxw-jNxU.js} +5 -5
- package/dist/{skill-scanner-CXg9eeyc.js → skill-scanner-CLs8u6vQ.js} +5 -5
- package/dist/{skills-DqQUtOph.js → skills-6jdJQ5ZL.js} +4 -4
- package/dist/{skills-cli-D1JL_utC.js → skills-cli-BZTBLQTt.js} +7 -7
- package/dist/{skills-install-DjcTy3CT.js → skills-install-D67isO1L.js} +3 -3
- package/dist/{skills-status-DS-NZQiq.js → skills-status-CURJKnyY.js} +1 -1
- package/dist/{sqlite-BV5ILFtC.js → sqlite-Dx3J_aSE.js} +12 -12
- package/dist/{status-CgPPKk09.js → status-BXW5l4sd.js} +25 -25
- package/dist/{status-DxodHhzX.js → status-BxbbINLV.js} +2 -2
- package/dist/{status-DqMwkAnF.js → status-D3-lP2_9.js} +1 -1
- package/dist/{status-CkJV2sl6.js → status-kdz9P3tw.js} +3 -3
- package/dist/{status.update-CmGpjKSr.js → status.update-DtwCUTf-.js} +3 -3
- package/dist/{store-DvtcmOKj.js → store-r1DJSDq-.js} +5 -5
- package/dist/{subagent-registry-CBklD0OL.js → subagent-registry-CbTbJKLs.js} +133 -171
- package/dist/{symi-root-MF6_6SCS.js → symi-root-CrGJbkzf.js} +2 -2
- package/dist/{system-cli-Buhvt_H5.js → system-cli-UMsMEurS.js} +11 -11
- package/dist/{systemd-hints-Db0oImvK.js → systemd-hints-BR6gChwm.js} +6 -6
- package/dist/{systemd-linger-BXwqn1jL.js → systemd-linger-aQ75ZlXY.js} +1 -1
- package/dist/{systemd-AhJEsmIk.js → systemd-riq8uNJQ.js} +5 -5
- package/dist/{tables-C38rzF6E.js → tables-BEzT0Da4.js} +1 -1
- package/dist/{target-errors-CCz79CmV.js → target-errors-7AvoVa10.js} +4 -4
- package/dist/{tool-images-B-pqX3nX.js → tool-images-DvUBlqjX.js} +1 -1
- package/dist/{tui-C0A9W969.js → tui-CriznorL.js} +7 -7
- package/dist/{tui-cli-tCnkNdSx.js → tui-cli-CSIdfCTR.js} +28 -28
- package/dist/{update-check-C0oYCI89.js → update-check-CtckACbb.js} +5 -5
- package/dist/{update-cli-DYrpyu4a.js → update-cli-B5TI650v.js} +94 -94
- package/dist/{update-cli-BqdgQuYp.js → update-cli-Cy0gdWRf.js} +8 -8
- package/dist/{update-runner-CmZW3aeK.js → update-runner-B0NdgPvD.js} +1 -1
- package/dist/{update-runner-BgzyPjF5.js → update-runner-Bacq0oLK.js} +15 -15
- package/dist/{update-Df4sEKtI.js → update-rw7wJwHd.js} +3 -3
- package/dist/{web-GL_nqURg.js → web-D-oCzJTU.js} +1 -1
- package/dist/{web-CfZp0Jv6.js → web-DWNtg4iV.js} +6 -6
- package/dist/web-DmED3zDP.js +109 -0
- package/dist/{web-DNQzo8ao.js → web-QVwKg99Q.js} +6 -6
- package/dist/{webhooks-cli-Bp-7Rs2Y.js → webhooks-cli-cD58DWAE.js} +4 -4
- package/dist/{whatsapp-actions-CFXNPLco.js → whatsapp-actions-DbcsdOH3.js} +15 -15
- package/dist/{with-timeout-Cs6_LnHB.js → with-timeout-gmK6RciS.js} +1 -1
- package/dist/{workspace-dirs-DKu48umx.js → workspace-dirs-GpkFi6Kw.js} +1 -1
- package/dist/{wsl-BbXxnokd.js → wsl-C4424szg.js} +2 -2
- package/package.json +1 -1
- package/dist/register.configure-BcZ-7Yir.js +0 -147
- package/dist/session-dirs-D3qlvucD.js +0 -18
- package/dist/web-DsCqmzyk.js +0 -109
|
@@ -3,101 +3,101 @@ import { g as resolveStateDir, r as STATE_DIR, u as resolveGatewayPort, y as res
|
|
|
3
3
|
import { B as theme, C as sleep$1, D as isPlainObject, E as truncateUtf16Safe, F as shouldLogVerbose, J as normalizeLogLevel, L as warn, M as logVerbose, O as danger, S as shortenHomePath, V as getChildLogger, X as resolvePreferredSymiTmpDir, d as isRecord$1, i as clampInt, l as escapeRegExp, m as normalizeE164, t as CONFIG_DIR, w as sliceUtf16Safe, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
4
4
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-EAliFiVK.js";
|
|
5
5
|
import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as getSubagentDepth, b as isCronSessionKey, c as normalizeMainKey, d as sanitizeAgentId, h as normalizeAccountId$2, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isAcpSessionKey, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
|
|
6
|
-
import { t as resolveSymiPackageRoot } from "./symi-root-
|
|
6
|
+
import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
|
|
7
7
|
import { C as createInternalHookEvent, T as triggerInternalHook, _ as clearPluginCommands, b as listPluginCommands, c as normalizeAnyChannelId, f as requireActivePluginRegistry, g as normalizePluginHttpPath, h as createPluginRegistry, l as normalizeChannelId, n as CHAT_CHANNEL_ORDER, p as setActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, v as executePluginCommand, x as matchPluginCommand, y as getPluginCommandSpecs } from "./registry-Cja8eT7G.js";
|
|
8
8
|
import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
9
9
|
import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
|
|
10
|
-
import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-
|
|
11
|
-
import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-
|
|
10
|
+
import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-CgUHAtCo.js";
|
|
11
|
+
import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-CyFvYcRt.js";
|
|
12
12
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-DAu1a6BX.js";
|
|
13
13
|
import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
|
|
14
14
|
import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
|
|
15
15
|
import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
|
|
16
16
|
import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-aT-I_DTX.js";
|
|
17
|
-
import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-
|
|
18
|
-
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-
|
|
17
|
+
import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-CZr1hVHY.js";
|
|
18
|
+
import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CHwyw6l5.js";
|
|
19
19
|
import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-C4BxOMWX.js";
|
|
20
20
|
import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
|
|
21
21
|
import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
|
|
22
22
|
import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
|
|
23
23
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
|
|
24
|
-
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-
|
|
25
|
-
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-
|
|
26
|
-
import { t as ensureSymiModelsJson } from "./models-config-
|
|
24
|
+
import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-CUglpiFP.js";
|
|
25
|
+
import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-D9uvDTrc.js";
|
|
26
|
+
import { t as ensureSymiModelsJson } from "./models-config-qyOXrOli.js";
|
|
27
27
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
|
|
28
|
-
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-
|
|
29
|
-
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-
|
|
30
|
-
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-
|
|
31
|
-
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-
|
|
32
|
-
import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-
|
|
28
|
+
import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-CNPyv_ax.js";
|
|
29
|
+
import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-C-T6hOMv.js";
|
|
30
|
+
import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DtPkPq9T.js";
|
|
31
|
+
import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CEpFjqSk.js";
|
|
32
|
+
import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-6jdJQ5ZL.js";
|
|
33
33
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
|
|
34
|
-
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-
|
|
34
|
+
import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
|
|
35
35
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
|
|
36
|
-
import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-
|
|
37
|
-
import { n as getMediaDir, r as saveMediaBuffer } from "./store-
|
|
38
|
-
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-
|
|
39
|
-
import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-
|
|
40
|
-
import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-
|
|
41
|
-
import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-
|
|
42
|
-
import { t as resolveIMessageAccount } from "./accounts-
|
|
43
|
-
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-
|
|
44
|
-
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-
|
|
36
|
+
import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
|
|
37
|
+
import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
|
|
38
|
+
import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-DgYpBvse.js";
|
|
39
|
+
import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
|
|
40
|
+
import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
|
|
41
|
+
import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
|
|
42
|
+
import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
|
|
43
|
+
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DyJN4_vR.js";
|
|
44
|
+
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CPF8hSFp.js";
|
|
45
45
|
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
|
|
46
46
|
import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
|
|
47
47
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
|
|
48
|
-
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-
|
|
48
|
+
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DvUBlqjX.js";
|
|
49
49
|
import { n as resolveToolDisplay } from "./tool-display-D8N3rsYt.js";
|
|
50
50
|
import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3da8yR.js";
|
|
51
51
|
import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
|
|
52
|
-
import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-
|
|
53
|
-
import { v as runTasksWithConcurrency } from "./sqlite-
|
|
54
|
-
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-
|
|
52
|
+
import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
|
|
53
|
+
import { v as runTasksWithConcurrency } from "./sqlite-Dx3J_aSE.js";
|
|
54
|
+
import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DvBJ8pMD.js";
|
|
55
55
|
import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
|
|
56
|
-
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-
|
|
57
|
-
import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-
|
|
56
|
+
import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-gmK6RciS.js";
|
|
57
|
+
import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-CceEhg3d.js";
|
|
58
58
|
import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-DjBRPfu9.js";
|
|
59
59
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
|
|
60
|
-
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-
|
|
61
|
-
import { a as buildModelAliasLines, n as resolveModel } from "./model-
|
|
62
|
-
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-
|
|
63
|
-
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-
|
|
64
|
-
import { i as resolveMemorySearchConfig } from "./manager-
|
|
60
|
+
import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-Cutb0ZDY.js";
|
|
61
|
+
import { a as buildModelAliasLines, n as resolveModel } from "./model-tWhwnFf8.js";
|
|
62
|
+
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
|
|
63
|
+
import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-Ca5r9AUb.js";
|
|
64
|
+
import { i as resolveMemorySearchConfig } from "./manager-D4LJSRyZ.js";
|
|
65
65
|
import { n as retryAsync } from "./retry-BoS4e4X_.js";
|
|
66
|
-
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-
|
|
66
|
+
import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-7AvoVa10.js";
|
|
67
67
|
import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-1dhPX1NK.js";
|
|
68
|
-
import { n as resolveMarkdownTableMode } from "./markdown-tables-
|
|
69
|
-
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-
|
|
70
|
-
import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-
|
|
71
|
-
import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-
|
|
72
|
-
import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-
|
|
73
|
-
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-
|
|
68
|
+
import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
|
|
69
|
+
import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DZam9q5M.js";
|
|
70
|
+
import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-BNLCWX6e.js";
|
|
71
|
+
import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-BT0-zzs3.js";
|
|
72
|
+
import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-CQSyCS4M.js";
|
|
73
|
+
import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-CJaS1iRF.js";
|
|
74
74
|
import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
|
|
75
75
|
import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
|
|
76
76
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
|
|
77
77
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DTNGXEzX.js";
|
|
78
|
-
import { t as convertMarkdownTables } from "./tables-
|
|
79
|
-
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-
|
|
80
|
-
import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-
|
|
78
|
+
import { t as convertMarkdownTables } from "./tables-BEzT0Da4.js";
|
|
79
|
+
import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-tanEMpHN.js";
|
|
80
|
+
import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-CK726Dzq.js";
|
|
81
81
|
import { t as makeProxyFetch } from "./proxy-DU7W9XSc.js";
|
|
82
82
|
import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-D0B0Uo-I.js";
|
|
83
|
-
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-
|
|
84
|
-
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
85
|
-
import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-
|
|
83
|
+
import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BMoTaVAH.js";
|
|
84
|
+
import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-vgss3_QA.js";
|
|
85
|
+
import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-Cxw-jNxU.js";
|
|
86
86
|
import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-BG4AXrGN.js";
|
|
87
|
-
import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-
|
|
88
|
-
import { r as detectBinary } from "./onboard-helpers-
|
|
89
|
-
import { t as resolvePairingIdLabel } from "./pairing-labels-
|
|
87
|
+
import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-CXxQ_f7L.js";
|
|
88
|
+
import { r as detectBinary } from "./onboard-helpers-ZmZYzlq3.js";
|
|
89
|
+
import { t as resolvePairingIdLabel } from "./pairing-labels-2S6x2UoV.js";
|
|
90
90
|
import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BzKEDn0q.js";
|
|
91
91
|
import { t as getActiveWebListener } from "./active-listener-kvXhlgwu.js";
|
|
92
92
|
import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, y as buildSafeBinsShellCommand } from "./exec-approvals-Kn31mBcW.js";
|
|
93
|
-
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-
|
|
93
|
+
import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-VBGXKdLk.js";
|
|
94
94
|
import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CN8o4Vi3.js";
|
|
95
95
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BiwOFDEK.js";
|
|
96
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-
|
|
97
|
-
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-
|
|
96
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-CIDBbw6x.js";
|
|
97
|
+
import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Bz7rxLWq.js";
|
|
98
98
|
import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BUClb97_.js";
|
|
99
99
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-C8_BLnaW.js";
|
|
100
|
-
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-
|
|
100
|
+
import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-DuWs0Aak.js";
|
|
101
101
|
import { t as parseTimeoutMs } from "./parse-timeout-C385GCpE.js";
|
|
102
102
|
import { createRequire } from "node:module";
|
|
103
103
|
import { fileURLToPath } from "node:url";
|
|
@@ -105,7 +105,7 @@ import fs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSyn
|
|
|
105
105
|
import os, { homedir } from "node:os";
|
|
106
106
|
import path from "node:path";
|
|
107
107
|
import JSON5 from "json5";
|
|
108
|
-
import
|
|
108
|
+
import fs$1 from "node:fs/promises";
|
|
109
109
|
import { execFileSync, spawn, spawnSync } from "node:child_process";
|
|
110
110
|
import { inspect } from "node:util";
|
|
111
111
|
import crypto, { createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
|
|
@@ -2893,7 +2893,7 @@ async function createModelSelectionState(params) {
|
|
|
2893
2893
|
}
|
|
2894
2894
|
}
|
|
2895
2895
|
if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
|
|
2896
|
-
const { ensureAuthProfileStore } = await import("./model-selection-
|
|
2896
|
+
const { ensureAuthProfileStore } = await import("./model-selection-CyFvYcRt.js").then((n) => n.dt);
|
|
2897
2897
|
const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
|
|
2898
2898
|
const providerKey = normalizeProviderId(provider);
|
|
2899
2899
|
if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
|
|
@@ -10415,7 +10415,7 @@ async function routeReply(params) {
|
|
|
10415
10415
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
10416
10416
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
10417
10417
|
try {
|
|
10418
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
10418
|
+
const { deliverOutboundPayloads } = await import("./deliver-CceEhg3d.js").then((n) => n.n);
|
|
10419
10419
|
return {
|
|
10420
10420
|
ok: true,
|
|
10421
10421
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -12964,8 +12964,8 @@ async function describeStickerImage(params) {
|
|
|
12964
12964
|
const { provider, model } = resolved;
|
|
12965
12965
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
12966
12966
|
try {
|
|
12967
|
-
const buffer = await
|
|
12968
|
-
const { describeImageWithModel } = await import("./image-
|
|
12967
|
+
const buffer = await fs$1.readFile(imagePath);
|
|
12968
|
+
const { describeImageWithModel } = await import("./image-D9uvDTrc.js").then((n) => n.n);
|
|
12969
12969
|
return (await describeImageWithModel({
|
|
12970
12970
|
buffer,
|
|
12971
12971
|
fileName: "sticker.webp",
|
|
@@ -13388,7 +13388,7 @@ function createWhatsAppLoginTool() {
|
|
|
13388
13388
|
force: Type.Optional(Type.Boolean())
|
|
13389
13389
|
}),
|
|
13390
13390
|
execute: async (_toolCallId, args) => {
|
|
13391
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
13391
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-pbXdFORv.js");
|
|
13392
13392
|
if ((args?.action ?? "start") === "wait") {
|
|
13393
13393
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
13394
13394
|
return {
|
|
@@ -15604,7 +15604,7 @@ async function preflightDiscordMessage(params) {
|
|
|
15604
15604
|
let preflightTranscript;
|
|
15605
15605
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
15606
15606
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
15607
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
15607
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CWnxkaac.js");
|
|
15608
15608
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
15609
15609
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
15610
15610
|
ctx: {
|
|
@@ -21610,18 +21610,18 @@ function appendImagePathsToPrompt(prompt, paths) {
|
|
|
21610
21610
|
return `${trimmed}${trimmed ? "\n\n" : ""}${paths.join("\n")}`;
|
|
21611
21611
|
}
|
|
21612
21612
|
async function writeCliImages(images) {
|
|
21613
|
-
const tempDir = await
|
|
21613
|
+
const tempDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "symi-cli-images-"));
|
|
21614
21614
|
const paths = [];
|
|
21615
21615
|
for (let i = 0; i < images.length; i += 1) {
|
|
21616
21616
|
const image = images[i];
|
|
21617
21617
|
const ext = resolveImageExtension(image.mimeType);
|
|
21618
21618
|
const filePath = path.join(tempDir, `image-${i + 1}.${ext}`);
|
|
21619
21619
|
const buffer = Buffer.from(image.data, "base64");
|
|
21620
|
-
await
|
|
21620
|
+
await fs$1.writeFile(filePath, buffer, { mode: 384 });
|
|
21621
21621
|
paths.push(filePath);
|
|
21622
21622
|
}
|
|
21623
21623
|
const cleanup = async () => {
|
|
21624
|
-
await
|
|
21624
|
+
await fs$1.rm(tempDir, {
|
|
21625
21625
|
recursive: true,
|
|
21626
21626
|
force: true
|
|
21627
21627
|
});
|
|
@@ -22374,27 +22374,27 @@ async function runWithImageModelFallback(params) {
|
|
|
22374
22374
|
function createDefaultDeps() {
|
|
22375
22375
|
return {
|
|
22376
22376
|
sendMessageWhatsApp: async (...args) => {
|
|
22377
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
22377
|
+
const { sendMessageWhatsApp } = await import("./web-DmED3zDP.js");
|
|
22378
22378
|
return await sendMessageWhatsApp(...args);
|
|
22379
22379
|
},
|
|
22380
22380
|
sendMessageTelegram: async (...args) => {
|
|
22381
|
-
const { sendMessageTelegram } = await import("./send-
|
|
22381
|
+
const { sendMessageTelegram } = await import("./send-Cutb0ZDY.js").then((n) => n.l);
|
|
22382
22382
|
return await sendMessageTelegram(...args);
|
|
22383
22383
|
},
|
|
22384
22384
|
sendMessageDiscord: async (...args) => {
|
|
22385
|
-
const { sendMessageDiscord } = await import("./send-
|
|
22385
|
+
const { sendMessageDiscord } = await import("./send-CZr1hVHY.js").then((n) => n.t);
|
|
22386
22386
|
return await sendMessageDiscord(...args);
|
|
22387
22387
|
},
|
|
22388
22388
|
sendMessageSlack: async (...args) => {
|
|
22389
|
-
const { sendMessageSlack } = await import("./send-
|
|
22389
|
+
const { sendMessageSlack } = await import("./send-CPF8hSFp.js").then((n) => n.n);
|
|
22390
22390
|
return await sendMessageSlack(...args);
|
|
22391
22391
|
},
|
|
22392
22392
|
sendMessageSignal: async (...args) => {
|
|
22393
|
-
const { sendMessageSignal } = await import("./send-
|
|
22393
|
+
const { sendMessageSignal } = await import("./send-tanEMpHN.js").then((n) => n.i);
|
|
22394
22394
|
return await sendMessageSignal(...args);
|
|
22395
22395
|
},
|
|
22396
22396
|
sendMessageIMessage: async (...args) => {
|
|
22397
|
-
const { sendMessageIMessage } = await import("./send-
|
|
22397
|
+
const { sendMessageIMessage } = await import("./send-CXxQ_f7L.js").then((n) => n.n);
|
|
22398
22398
|
return await sendMessageIMessage(...args);
|
|
22399
22399
|
}
|
|
22400
22400
|
};
|
|
@@ -23578,10 +23578,10 @@ function estimateDurationSeconds(pcm) {
|
|
|
23578
23578
|
return pcm.length / (bytesPerSample * SAMPLE_RATE);
|
|
23579
23579
|
}
|
|
23580
23580
|
async function writeWavFile(pcm) {
|
|
23581
|
-
const tempDir = await
|
|
23581
|
+
const tempDir = await fs$1.mkdtemp(path.join(resolvePreferredSymiTmpDir(), "discord-voice-"));
|
|
23582
23582
|
const filePath = path.join(tempDir, `segment-${randomUUID()}.wav`);
|
|
23583
23583
|
const wav = buildWavBuffer(pcm);
|
|
23584
|
-
await
|
|
23584
|
+
await fs$1.writeFile(filePath, wav);
|
|
23585
23585
|
scheduleTempCleanup(tempDir);
|
|
23586
23586
|
return {
|
|
23587
23587
|
path: filePath,
|
|
@@ -23590,7 +23590,7 @@ async function writeWavFile(pcm) {
|
|
|
23590
23590
|
}
|
|
23591
23591
|
function scheduleTempCleanup(tempDir, delayMs = 1800 * 1e3) {
|
|
23592
23592
|
setTimeout(() => {
|
|
23593
|
-
|
|
23593
|
+
fs$1.rm(tempDir, {
|
|
23594
23594
|
recursive: true,
|
|
23595
23595
|
force: true
|
|
23596
23596
|
}).catch((err) => {
|
|
@@ -27329,7 +27329,7 @@ function normalizeAllowList$2(list) {
|
|
|
27329
27329
|
async function detectRemoteHostFromCliPath(cliPath) {
|
|
27330
27330
|
try {
|
|
27331
27331
|
const expanded = cliPath.startsWith("~") ? cliPath.replace(/^~/, process.env.HOME ?? "") : cliPath;
|
|
27332
|
-
const content = await
|
|
27332
|
+
const content = await fs$1.readFile(expanded, "utf8");
|
|
27333
27333
|
const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
|
|
27334
27334
|
if (userHostMatch) return userHostMatch[1];
|
|
27335
27335
|
return content.match(/\bssh\b[^\n]*?\s+([a-zA-Z][a-zA-Z0-9._-]*)\s+\S*\bimsg\b/)?.[1];
|
|
@@ -33544,7 +33544,7 @@ function readSlackExternalArgMenuToken(raw) {
|
|
|
33544
33544
|
}
|
|
33545
33545
|
let commandsRegistry;
|
|
33546
33546
|
async function getCommandsRegistry() {
|
|
33547
|
-
if (!commandsRegistry) commandsRegistry = await import("./commands-registry-
|
|
33547
|
+
if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BT0-zzs3.js").then((n) => n.n);
|
|
33548
33548
|
return commandsRegistry;
|
|
33549
33549
|
}
|
|
33550
33550
|
function encodeSlackCommandArgValue(parts) {
|
|
@@ -33886,11 +33886,11 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
33886
33886
|
const channelName = channelInfo?.name;
|
|
33887
33887
|
const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
|
|
33888
33888
|
const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
|
|
33889
|
-
import("./resolve-route-
|
|
33889
|
+
import("./resolve-route-BMoTaVAH.js").then((n) => n.r),
|
|
33890
33890
|
import("./inbound-context-CmmmT8IP.js").then((n) => n.n),
|
|
33891
33891
|
Promise.resolve().then(() => provider_dispatcher_exports)
|
|
33892
33892
|
]);
|
|
33893
|
-
const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Bn5j3lUT.js").then((n) => n.t), import("./reply-prefix-
|
|
33893
|
+
const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-Bn5j3lUT.js").then((n) => n.t), import("./reply-prefix-CE2YmmsD.js").then((n) => n.n)]);
|
|
33894
33894
|
const route = resolveAgentRoute({
|
|
33895
33895
|
cfg,
|
|
33896
33896
|
channel: "slack",
|
|
@@ -33947,9 +33947,9 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
33947
33947
|
});
|
|
33948
33948
|
const deliverSlashPayloads = async (replies) => {
|
|
33949
33949
|
const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
|
|
33950
|
-
import("./replies-
|
|
33950
|
+
import("./replies-vgss3_QA.js").then((n) => n.r),
|
|
33951
33951
|
import("./chunk-1dhPX1NK.js").then((n) => n.s),
|
|
33952
|
-
import("./markdown-tables-
|
|
33952
|
+
import("./markdown-tables-CEbN0fEm.js").then((n) => n.t)
|
|
33953
33953
|
]);
|
|
33954
33954
|
await deliverSlackSlashReplies({
|
|
33955
33955
|
replies,
|
|
@@ -34002,7 +34002,7 @@ async function registerSlackMonitorSlashCommands(params) {
|
|
|
34002
34002
|
let nativeCommands = [];
|
|
34003
34003
|
if (nativeEnabled) {
|
|
34004
34004
|
reg = await getCommandsRegistry();
|
|
34005
|
-
const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-
|
|
34005
|
+
const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-Cxw-jNxU.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
|
|
34006
34006
|
nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
|
|
34007
34007
|
skillCommands,
|
|
34008
34008
|
provider: "slack"
|
|
@@ -38771,7 +38771,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
38771
38771
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
38772
38772
|
let preflightTranscript;
|
|
38773
38773
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
38774
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
38774
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CWnxkaac.js");
|
|
38775
38775
|
preflightTranscript = await transcribeFirstAudio({
|
|
38776
38776
|
ctx: {
|
|
38777
38777
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -40539,7 +40539,7 @@ function safeParseState(raw) {
|
|
|
40539
40539
|
async function readTelegramUpdateOffset(params) {
|
|
40540
40540
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
40541
40541
|
try {
|
|
40542
|
-
return safeParseState(await
|
|
40542
|
+
return safeParseState(await fs$1.readFile(filePath, "utf-8"))?.lastUpdateId ?? null;
|
|
40543
40543
|
} catch (err) {
|
|
40544
40544
|
if (err.code === "ENOENT") return null;
|
|
40545
40545
|
return null;
|
|
@@ -40548,7 +40548,7 @@ async function readTelegramUpdateOffset(params) {
|
|
|
40548
40548
|
async function writeTelegramUpdateOffset(params) {
|
|
40549
40549
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
40550
40550
|
const dir = path.dirname(filePath);
|
|
40551
|
-
await
|
|
40551
|
+
await fs$1.mkdir(dir, {
|
|
40552
40552
|
recursive: true,
|
|
40553
40553
|
mode: 448
|
|
40554
40554
|
});
|
|
@@ -40557,14 +40557,14 @@ async function writeTelegramUpdateOffset(params) {
|
|
|
40557
40557
|
version: STORE_VERSION,
|
|
40558
40558
|
lastUpdateId: params.updateId
|
|
40559
40559
|
};
|
|
40560
|
-
await
|
|
40561
|
-
await
|
|
40562
|
-
await
|
|
40560
|
+
await fs$1.writeFile(tmp, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf-8" });
|
|
40561
|
+
await fs$1.chmod(tmp, 384);
|
|
40562
|
+
await fs$1.rename(tmp, filePath);
|
|
40563
40563
|
}
|
|
40564
40564
|
async function deleteTelegramUpdateOffset(params) {
|
|
40565
40565
|
const filePath = resolveTelegramUpdateOffsetPath(params.accountId, params.env);
|
|
40566
40566
|
try {
|
|
40567
|
-
await
|
|
40567
|
+
await fs$1.unlink(filePath);
|
|
40568
40568
|
} catch (err) {
|
|
40569
40569
|
if (err.code === "ENOENT") return;
|
|
40570
40570
|
throw err;
|
|
@@ -40925,23 +40925,23 @@ let webLoginQrPromise = null;
|
|
|
40925
40925
|
let webChannelPromise = null;
|
|
40926
40926
|
let whatsappActionsPromise = null;
|
|
40927
40927
|
function loadWebOutbound() {
|
|
40928
|
-
webOutboundPromise ??= import("./outbound-
|
|
40928
|
+
webOutboundPromise ??= import("./outbound-DB5Zus0-.js").then((n) => n.t);
|
|
40929
40929
|
return webOutboundPromise;
|
|
40930
40930
|
}
|
|
40931
40931
|
function loadWebLogin() {
|
|
40932
|
-
webLoginPromise ??= import("./login-
|
|
40932
|
+
webLoginPromise ??= import("./login-dIlDkG4X.js").then((n) => n.n);
|
|
40933
40933
|
return webLoginPromise;
|
|
40934
40934
|
}
|
|
40935
40935
|
function loadWebLoginQr() {
|
|
40936
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
40936
|
+
webLoginQrPromise ??= import("./login-qr-pbXdFORv.js");
|
|
40937
40937
|
return webLoginQrPromise;
|
|
40938
40938
|
}
|
|
40939
40939
|
function loadWebChannel() {
|
|
40940
|
-
webChannelPromise ??= import("./web-
|
|
40940
|
+
webChannelPromise ??= import("./web-DmED3zDP.js");
|
|
40941
40941
|
return webChannelPromise;
|
|
40942
40942
|
}
|
|
40943
40943
|
function loadWhatsAppActions() {
|
|
40944
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
40944
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-DbcsdOH3.js");
|
|
40945
40945
|
return whatsappActionsPromise;
|
|
40946
40946
|
}
|
|
40947
40947
|
function createPluginRuntime() {
|
|
@@ -41708,7 +41708,7 @@ function resolvePluginTools(params) {
|
|
|
41708
41708
|
//#endregion
|
|
41709
41709
|
//#region src/agents/apply-patch-update.ts
|
|
41710
41710
|
async function defaultReadFile(filePath) {
|
|
41711
|
-
return
|
|
41711
|
+
return fs$1.readFile(filePath, "utf8");
|
|
41712
41712
|
}
|
|
41713
41713
|
async function applyUpdateHunk(filePath, chunks, options) {
|
|
41714
41714
|
const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
|
|
@@ -41952,10 +41952,10 @@ function resolvePatchFileOps(options) {
|
|
|
41952
41952
|
};
|
|
41953
41953
|
}
|
|
41954
41954
|
return {
|
|
41955
|
-
readFile: (filePath) =>
|
|
41956
|
-
writeFile: (filePath, content) =>
|
|
41957
|
-
remove: (filePath) =>
|
|
41958
|
-
mkdirp: (dir) =>
|
|
41955
|
+
readFile: (filePath) => fs$1.readFile(filePath, "utf8"),
|
|
41956
|
+
writeFile: (filePath, content) => fs$1.writeFile(filePath, content, "utf8"),
|
|
41957
|
+
remove: (filePath) => fs$1.rm(filePath),
|
|
41958
|
+
mkdirp: (dir) => fs$1.mkdir(dir, { recursive: true }).then(() => {})
|
|
41959
41959
|
};
|
|
41960
41960
|
}
|
|
41961
41961
|
async function ensureDir(filePath, ops) {
|
|
@@ -42676,7 +42676,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
42676
42676
|
cwd: process.cwd(),
|
|
42677
42677
|
root: params.sandbox.workspaceDir
|
|
42678
42678
|
});
|
|
42679
|
-
if (!(await
|
|
42679
|
+
if (!(await fs$1.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
|
|
42680
42680
|
const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
|
|
42681
42681
|
const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
|
|
42682
42682
|
return {
|
|
@@ -43657,13 +43657,13 @@ async function validateScriptFileForShellBleed(params) {
|
|
|
43657
43657
|
cwd: params.workdir,
|
|
43658
43658
|
root: params.workdir
|
|
43659
43659
|
});
|
|
43660
|
-
stat = await
|
|
43660
|
+
stat = await fs$1.stat(absPath);
|
|
43661
43661
|
} catch {
|
|
43662
43662
|
return;
|
|
43663
43663
|
}
|
|
43664
43664
|
if (!stat.isFile()) return;
|
|
43665
43665
|
if (stat.size > 512 * 1024) return;
|
|
43666
|
-
const content = await
|
|
43666
|
+
const content = await fs$1.readFile(absPath, "utf-8");
|
|
43667
43667
|
const first = /\$[A-Z_][A-Z0-9_]{1,}/g.exec(content);
|
|
43668
43668
|
if (first) {
|
|
43669
43669
|
const idx = first.index;
|
|
@@ -44602,8 +44602,16 @@ const GEMMA_TOKEN_PATTERNS = [
|
|
|
44602
44602
|
/<start_of_turn>(?:model|user)?/g,
|
|
44603
44603
|
/<end_of_turn>/g,
|
|
44604
44604
|
/<\|(?:fim_prefix|fim_suffix|fim_middle)\|>/g,
|
|
44605
|
-
/^\s*<bos>\s*/gm
|
|
44605
|
+
/^\s*<bos>\s*/gm,
|
|
44606
|
+
/<\|[^|>]{0,30}\|>/g,
|
|
44607
|
+
/<\|[^>]{0,30}>/g
|
|
44606
44608
|
];
|
|
44609
|
+
/**
|
|
44610
|
+
* Aggressively strip all fragments of model control token corruption from
|
|
44611
|
+
* tool arguments. This catches cases where the model produces raw garbage
|
|
44612
|
+
* like `<|<|"|<|<|\'` that doesn't match any known token template.
|
|
44613
|
+
*/
|
|
44614
|
+
const AGGRESSIVE_TOKEN_FRAGMENTS = [/<\|/g, /\|>/g];
|
|
44607
44615
|
const GEMMA_MODEL_HINTS$1 = ["gemma", "redsand/"];
|
|
44608
44616
|
function isGemmaModel$1(modelId) {
|
|
44609
44617
|
const lower = modelId.toLowerCase();
|
|
@@ -44613,6 +44621,10 @@ function isGemmaModel$1(modelId) {
|
|
|
44613
44621
|
* Strip known control tokens from text. Only applies to Gemma-family models;
|
|
44614
44622
|
* other models pass through unchanged.
|
|
44615
44623
|
*/
|
|
44624
|
+
/**
|
|
44625
|
+
* Strip known control tokens from text. Only applies to Gemma-family models;
|
|
44626
|
+
* other models pass through unchanged. Used for streamed text output.
|
|
44627
|
+
*/
|
|
44616
44628
|
function stripModelTokens(text, modelId) {
|
|
44617
44629
|
if (!text || !isGemmaModel$1(modelId)) return text;
|
|
44618
44630
|
let result = text;
|
|
@@ -44622,6 +44634,21 @@ function stripModelTokens(text, modelId) {
|
|
|
44622
44634
|
}
|
|
44623
44635
|
return result;
|
|
44624
44636
|
}
|
|
44637
|
+
/**
|
|
44638
|
+
* Aggressively strip ALL token-like fragments from a string. Used for tool
|
|
44639
|
+
* call arguments where any `<|` corruption causes downstream failures.
|
|
44640
|
+
* More aggressive than `stripModelTokens` — removes bare `<|` and `|>` fragments
|
|
44641
|
+
* that don't match any known token template.
|
|
44642
|
+
*/
|
|
44643
|
+
function stripModelTokensAggressive(text, modelId) {
|
|
44644
|
+
if (!text || !isGemmaModel$1(modelId)) return text;
|
|
44645
|
+
let result = stripModelTokens(text, modelId);
|
|
44646
|
+
for (const re of AGGRESSIVE_TOKEN_FRAGMENTS) {
|
|
44647
|
+
re.lastIndex = 0;
|
|
44648
|
+
result = result.replace(re, "");
|
|
44649
|
+
}
|
|
44650
|
+
return result;
|
|
44651
|
+
}
|
|
44625
44652
|
|
|
44626
44653
|
//#endregion
|
|
44627
44654
|
//#region src/agents/pi-tools.abort.ts
|
|
@@ -46867,7 +46894,7 @@ async function readJsonlFromPath(jsonlPath) {
|
|
|
46867
46894
|
if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${resolved}`);
|
|
46868
46895
|
throw new Error("jsonlPath outside allowed roots");
|
|
46869
46896
|
}
|
|
46870
|
-
const canonical = await
|
|
46897
|
+
const canonical = await fs$1.realpath(resolved).catch(() => resolved);
|
|
46871
46898
|
if (!isInboundPathAllowed({
|
|
46872
46899
|
filePath: canonical,
|
|
46873
46900
|
roots
|
|
@@ -46875,7 +46902,7 @@ async function readJsonlFromPath(jsonlPath) {
|
|
|
46875
46902
|
if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${canonical}`);
|
|
46876
46903
|
throw new Error("jsonlPath outside allowed roots");
|
|
46877
46904
|
}
|
|
46878
|
-
return await
|
|
46905
|
+
return await fs$1.readFile(canonical, "utf8");
|
|
46879
46906
|
}
|
|
46880
46907
|
const CanvasToolSchema = Type.Object({
|
|
46881
46908
|
action: stringEnum(CANVAS_ACTIONS),
|
|
@@ -47655,27 +47682,27 @@ function resolveRestartSentinelPath(env = process.env) {
|
|
|
47655
47682
|
}
|
|
47656
47683
|
async function writeRestartSentinel(payload, env = process.env) {
|
|
47657
47684
|
const filePath = resolveRestartSentinelPath(env);
|
|
47658
|
-
await
|
|
47685
|
+
await fs$1.mkdir(path.dirname(filePath), { recursive: true });
|
|
47659
47686
|
const data = {
|
|
47660
47687
|
version: 1,
|
|
47661
47688
|
payload
|
|
47662
47689
|
};
|
|
47663
|
-
await
|
|
47690
|
+
await fs$1.writeFile(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
|
|
47664
47691
|
return filePath;
|
|
47665
47692
|
}
|
|
47666
47693
|
async function readRestartSentinel(env = process.env) {
|
|
47667
47694
|
const filePath = resolveRestartSentinelPath(env);
|
|
47668
47695
|
try {
|
|
47669
|
-
const raw = await
|
|
47696
|
+
const raw = await fs$1.readFile(filePath, "utf-8");
|
|
47670
47697
|
let parsed;
|
|
47671
47698
|
try {
|
|
47672
47699
|
parsed = JSON.parse(raw);
|
|
47673
47700
|
} catch {
|
|
47674
|
-
await
|
|
47701
|
+
await fs$1.unlink(filePath).catch(() => {});
|
|
47675
47702
|
return null;
|
|
47676
47703
|
}
|
|
47677
47704
|
if (!parsed || parsed.version !== 1 || !parsed.payload) {
|
|
47678
|
-
await
|
|
47705
|
+
await fs$1.unlink(filePath).catch(() => {});
|
|
47679
47706
|
return null;
|
|
47680
47707
|
}
|
|
47681
47708
|
return parsed;
|
|
@@ -47687,7 +47714,7 @@ async function consumeRestartSentinel(env = process.env) {
|
|
|
47687
47714
|
const filePath = resolveRestartSentinelPath(env);
|
|
47688
47715
|
const parsed = await readRestartSentinel(env);
|
|
47689
47716
|
if (!parsed) return null;
|
|
47690
|
-
await
|
|
47717
|
+
await fs$1.unlink(filePath).catch(() => {});
|
|
47691
47718
|
return parsed;
|
|
47692
47719
|
}
|
|
47693
47720
|
function formatRestartSentinelMessage(payload) {
|
|
@@ -48794,7 +48821,7 @@ async function hydrateAttachmentPayload(params) {
|
|
|
48794
48821
|
accountId: params.accountId
|
|
48795
48822
|
}),
|
|
48796
48823
|
sandboxValidated: true,
|
|
48797
|
-
readFile: (filePath) =>
|
|
48824
|
+
readFile: (filePath) => fs$1.readFile(filePath)
|
|
48798
48825
|
});
|
|
48799
48826
|
params.args.buffer = media.buffer.toString("base64");
|
|
48800
48827
|
if (!contentTypeParam && media.contentType) params.args.contentType = media.contentType;
|
|
@@ -56022,10 +56049,10 @@ function wrapToolWithArgSanitization(tool, modelId) {
|
|
|
56022
56049
|
};
|
|
56023
56050
|
}
|
|
56024
56051
|
function sanitizeToolArgs(params, modelId) {
|
|
56025
|
-
if (!params || typeof params !== "object") return typeof params === "string" ?
|
|
56052
|
+
if (!params || typeof params !== "object") return typeof params === "string" ? stripModelTokensAggressive(params, modelId) : params;
|
|
56026
56053
|
if (Array.isArray(params)) return params.map((item) => sanitizeToolArgs(item, modelId));
|
|
56027
56054
|
const result = {};
|
|
56028
|
-
for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] =
|
|
56055
|
+
for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] = stripModelTokensAggressive(value, modelId);
|
|
56029
56056
|
else if (value && typeof value === "object") result[key] = sanitizeToolArgs(value, modelId);
|
|
56030
56057
|
else result[key] = value;
|
|
56031
56058
|
return result;
|
|
@@ -56276,7 +56303,7 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
56276
56303
|
};
|
|
56277
56304
|
let content;
|
|
56278
56305
|
try {
|
|
56279
|
-
content = await
|
|
56306
|
+
content = await fs$1.readFile(sessionFile, "utf-8");
|
|
56280
56307
|
} catch (err) {
|
|
56281
56308
|
if (err?.code === "ENOENT") return {
|
|
56282
56309
|
repaired: false,
|
|
@@ -56324,15 +56351,15 @@ async function repairSessionFileIfNeeded(params) {
|
|
|
56324
56351
|
const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
|
|
56325
56352
|
const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
|
|
56326
56353
|
try {
|
|
56327
|
-
const stat = await
|
|
56328
|
-
await
|
|
56329
|
-
if (stat) await
|
|
56330
|
-
await
|
|
56331
|
-
if (stat) await
|
|
56332
|
-
await
|
|
56354
|
+
const stat = await fs$1.stat(sessionFile).catch(() => null);
|
|
56355
|
+
await fs$1.writeFile(backupPath, content, "utf-8");
|
|
56356
|
+
if (stat) await fs$1.chmod(backupPath, stat.mode);
|
|
56357
|
+
await fs$1.writeFile(tmpPath, cleaned, "utf-8");
|
|
56358
|
+
if (stat) await fs$1.chmod(tmpPath, stat.mode);
|
|
56359
|
+
await fs$1.rename(tmpPath, sessionFile);
|
|
56333
56360
|
} catch (err) {
|
|
56334
56361
|
try {
|
|
56335
|
-
await
|
|
56362
|
+
await fs$1.unlink(tmpPath);
|
|
56336
56363
|
} catch (cleanupErr) {
|
|
56337
56364
|
params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
|
|
56338
56365
|
}
|
|
@@ -58437,7 +58464,7 @@ async function prewarmSessionFile(sessionFile) {
|
|
|
58437
58464
|
if (!isSessionManagerCacheEnabled()) return;
|
|
58438
58465
|
if (isSessionManagerCached(sessionFile)) return;
|
|
58439
58466
|
try {
|
|
58440
|
-
const handle = await
|
|
58467
|
+
const handle = await fs$1.open(sessionFile, "r");
|
|
58441
58468
|
try {
|
|
58442
58469
|
const buffer = Buffer$1.alloc(4096);
|
|
58443
58470
|
await handle.read(buffer, 0, buffer.length, 0);
|
|
@@ -58761,7 +58788,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
58761
58788
|
} catch (err) {
|
|
58762
58789
|
return fail(describeUnknownError(err));
|
|
58763
58790
|
}
|
|
58764
|
-
await
|
|
58791
|
+
await fs$1.mkdir(resolvedWorkspace, { recursive: true });
|
|
58765
58792
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
58766
58793
|
const sandbox = await resolveSandboxContext({
|
|
58767
58794
|
config: params.config,
|
|
@@ -58769,7 +58796,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
58769
58796
|
workspaceDir: resolvedWorkspace
|
|
58770
58797
|
});
|
|
58771
58798
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
58772
|
-
await
|
|
58799
|
+
await fs$1.mkdir(effectiveWorkspace, { recursive: true });
|
|
58773
58800
|
await ensureSessionHeader({
|
|
58774
58801
|
sessionFile: params.sessionFile,
|
|
58775
58802
|
sessionId: params.sessionId,
|
|
@@ -59252,10 +59279,6 @@ function resolveModelProfile(modelId, userProfiles) {
|
|
|
59252
59279
|
|
|
59253
59280
|
//#endregion
|
|
59254
59281
|
//#region src/agents/pi-embedded-runner/extra-params.ts
|
|
59255
|
-
const OPENROUTER_APP_HEADERS = {
|
|
59256
|
-
"HTTP-Referer": "https://symi.ai",
|
|
59257
|
-
"X-Title": "Symi"
|
|
59258
|
-
};
|
|
59259
59282
|
const ANTHROPIC_CONTEXT_1M_BETA = "context-1m-2025-08-07";
|
|
59260
59283
|
const ANTHROPIC_1M_MODEL_PREFIXES = ["claude-opus-4", "claude-sonnet-4"];
|
|
59261
59284
|
const OPENAI_RESPONSES_APIS = new Set(["openai-responses"]);
|
|
@@ -59273,70 +59296,6 @@ function resolveExtraParams(params) {
|
|
|
59273
59296
|
const profile = resolveModelProfile(modelKey, params.cfg?.models?.profiles);
|
|
59274
59297
|
if (profile.params && Object.keys(profile.params).length > 0) return { ...profile.params };
|
|
59275
59298
|
}
|
|
59276
|
-
/**
|
|
59277
|
-
* Resolve cacheRetention from extraParams, supporting both new `cacheRetention`
|
|
59278
|
-
* and legacy `cacheControlTtl` values for backwards compatibility.
|
|
59279
|
-
*
|
|
59280
|
-
* Mapping: "5m" → "short", "1h" → "long"
|
|
59281
|
-
*
|
|
59282
|
-
* Only applies to Anthropic provider (OpenRouter uses openai-completions API
|
|
59283
|
-
* with hardcoded cache_control, not the cacheRetention stream option).
|
|
59284
|
-
*
|
|
59285
|
-
* Defaults to "short" for Anthropic provider when not explicitly configured.
|
|
59286
|
-
*/
|
|
59287
|
-
function resolveCacheRetention(extraParams, provider) {
|
|
59288
|
-
if (provider !== "anthropic") return;
|
|
59289
|
-
const newVal = extraParams?.cacheRetention;
|
|
59290
|
-
if (newVal === "none" || newVal === "short" || newVal === "long") return newVal;
|
|
59291
|
-
const legacy = extraParams?.cacheControlTtl;
|
|
59292
|
-
if (legacy === "5m") return "short";
|
|
59293
|
-
if (legacy === "1h") return "long";
|
|
59294
|
-
return "short";
|
|
59295
|
-
}
|
|
59296
|
-
function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
|
|
59297
|
-
if (!extraParams || Object.keys(extraParams).length === 0) return;
|
|
59298
|
-
const streamParams = {};
|
|
59299
|
-
if (typeof extraParams.temperature === "number") streamParams.temperature = extraParams.temperature;
|
|
59300
|
-
if (typeof extraParams.maxTokens === "number") streamParams.maxTokens = extraParams.maxTokens;
|
|
59301
|
-
if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
|
|
59302
|
-
if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
|
|
59303
|
-
if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
|
|
59304
|
-
if (Array.isArray(extraParams.stop) && extraParams.stop.length > 0) streamParams.stop = extraParams.stop;
|
|
59305
|
-
if (extraParams.chat_template_kwargs && typeof extraParams.chat_template_kwargs === "object") streamParams.chat_template_kwargs = extraParams.chat_template_kwargs;
|
|
59306
|
-
const cacheRetention = resolveCacheRetention(extraParams, provider);
|
|
59307
|
-
if (cacheRetention) streamParams.cacheRetention = cacheRetention;
|
|
59308
|
-
if (Object.keys(streamParams).length === 0) return;
|
|
59309
|
-
log$2.debug(`creating streamFn wrapper with params: ${JSON.stringify(streamParams)}`);
|
|
59310
|
-
const sp = streamParams;
|
|
59311
|
-
const payloadOverrides = {};
|
|
59312
|
-
if (Array.isArray(sp.stop) && sp.stop.length > 0) payloadOverrides.stop = sp.stop;
|
|
59313
|
-
if (typeof sp.top_p === "number") payloadOverrides.top_p = sp.top_p;
|
|
59314
|
-
if (typeof sp.top_k === "number") payloadOverrides.top_k = sp.top_k;
|
|
59315
|
-
if (typeof sp.repeat_penalty === "number") payloadOverrides.repeat_penalty = sp.repeat_penalty;
|
|
59316
|
-
const hasPayloadOverrides = Object.keys(payloadOverrides).length > 0;
|
|
59317
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
59318
|
-
const wrappedStreamFn = (model, context, options) => {
|
|
59319
|
-
if (hasPayloadOverrides) {
|
|
59320
|
-
const originalOnPayload = options?.onPayload;
|
|
59321
|
-
return underlying(model, context, {
|
|
59322
|
-
...streamParams,
|
|
59323
|
-
...options,
|
|
59324
|
-
onPayload: (payload) => {
|
|
59325
|
-
if (payload && typeof payload === "object") {
|
|
59326
|
-
const p = payload;
|
|
59327
|
-
for (const [key, value] of Object.entries(payloadOverrides)) if (p[key] === void 0) p[key] = value;
|
|
59328
|
-
}
|
|
59329
|
-
originalOnPayload?.(payload);
|
|
59330
|
-
}
|
|
59331
|
-
});
|
|
59332
|
-
}
|
|
59333
|
-
return underlying(model, context, {
|
|
59334
|
-
...streamParams,
|
|
59335
|
-
...options
|
|
59336
|
-
});
|
|
59337
|
-
};
|
|
59338
|
-
return wrappedStreamFn;
|
|
59339
|
-
}
|
|
59340
59299
|
function isDirectOpenAIBaseUrl(baseUrl) {
|
|
59341
59300
|
if (typeof baseUrl !== "string" || !baseUrl.trim()) return true;
|
|
59342
59301
|
try {
|
|
@@ -59417,20 +59376,6 @@ function createAnthropicBetaHeadersWrapper(baseStreamFn, betas) {
|
|
|
59417
59376
|
};
|
|
59418
59377
|
}
|
|
59419
59378
|
/**
|
|
59420
|
-
* Create a streamFn wrapper that adds OpenRouter app attribution headers.
|
|
59421
|
-
* These headers allow Symi to appear on OpenRouter's leaderboard.
|
|
59422
|
-
*/
|
|
59423
|
-
function createOpenRouterHeadersWrapper(baseStreamFn) {
|
|
59424
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
59425
|
-
return (model, context, options) => underlying(model, context, {
|
|
59426
|
-
...options,
|
|
59427
|
-
headers: {
|
|
59428
|
-
...OPENROUTER_APP_HEADERS,
|
|
59429
|
-
...options?.headers
|
|
59430
|
-
}
|
|
59431
|
-
});
|
|
59432
|
-
}
|
|
59433
|
-
/**
|
|
59434
59379
|
* Create a streamFn wrapper that injects tool_stream=true for Z.AI providers.
|
|
59435
59380
|
*
|
|
59436
59381
|
* Z.AI's API supports the `tool_stream` parameter to enable real-time streaming
|
|
@@ -59453,82 +59398,6 @@ function createZaiToolStreamWrapper(baseStreamFn, enabled) {
|
|
|
59453
59398
|
});
|
|
59454
59399
|
};
|
|
59455
59400
|
}
|
|
59456
|
-
const GEMMA_STOP_SEQUENCES = ["<end_of_turn>", "<eos>"];
|
|
59457
|
-
const VLLM_GEMMA_HINTS = ["gemma", "redsand"];
|
|
59458
|
-
function isVllmOrGemmaProvider(provider, modelId, cfg) {
|
|
59459
|
-
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
59460
|
-
if (VLLM_GEMMA_HINTS.some((h) => lower.includes(h))) return true;
|
|
59461
|
-
const baseUrl = ((cfg?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
59462
|
-
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
59463
|
-
}
|
|
59464
|
-
/**
|
|
59465
|
-
* Wrap the stream function to fix vLLM/Gemma compat issues via onPayload:
|
|
59466
|
-
* 1. Replace `max_completion_tokens` with `max_tokens` (vLLM ignores the former)
|
|
59467
|
-
* 2. Inject Gemma stop sequences if none are set
|
|
59468
|
-
* 3. Remove unsupported fields (store, stream_options.include_usage on older vLLM)
|
|
59469
|
-
*/
|
|
59470
|
-
function createVllmCompatWrapper(baseStreamFn, extraParams) {
|
|
59471
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
59472
|
-
const configuredStop = Array.isArray(extraParams.stop) ? extraParams.stop : GEMMA_STOP_SEQUENCES;
|
|
59473
|
-
return (model, context, options) => {
|
|
59474
|
-
const originalOnPayload = options?.onPayload;
|
|
59475
|
-
return underlying(model, context, {
|
|
59476
|
-
...options,
|
|
59477
|
-
onPayload: (payload) => {
|
|
59478
|
-
if (payload && typeof payload === "object") {
|
|
59479
|
-
const p = payload;
|
|
59480
|
-
if (p.max_completion_tokens && !p.max_tokens) {
|
|
59481
|
-
p.max_tokens = p.max_completion_tokens;
|
|
59482
|
-
delete p.max_completion_tokens;
|
|
59483
|
-
}
|
|
59484
|
-
if (!p.stop && configuredStop.length > 0) p.stop = configuredStop;
|
|
59485
|
-
delete p.store;
|
|
59486
|
-
}
|
|
59487
|
-
originalOnPayload?.(payload);
|
|
59488
|
-
}
|
|
59489
|
-
});
|
|
59490
|
-
};
|
|
59491
|
-
}
|
|
59492
|
-
/**
|
|
59493
|
-
* Apply extra params (like temperature) to an agent's streamFn.
|
|
59494
|
-
* Also adds OpenRouter app attribution headers when using the OpenRouter provider.
|
|
59495
|
-
*
|
|
59496
|
-
* @internal Exported for testing
|
|
59497
|
-
*/
|
|
59498
|
-
function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverride) {
|
|
59499
|
-
const extraParams = resolveExtraParams({
|
|
59500
|
-
cfg,
|
|
59501
|
-
provider,
|
|
59502
|
-
modelId
|
|
59503
|
-
});
|
|
59504
|
-
const override = extraParamsOverride && Object.keys(extraParamsOverride).length > 0 ? Object.fromEntries(Object.entries(extraParamsOverride).filter(([, value]) => value !== void 0)) : void 0;
|
|
59505
|
-
const merged = Object.assign({}, extraParams, override);
|
|
59506
|
-
const wrappedStreamFn = createStreamFnWithExtraParams(agent.streamFn, merged, provider);
|
|
59507
|
-
if (wrappedStreamFn) {
|
|
59508
|
-
log$2.debug(`applying extraParams to agent streamFn for ${provider}/${modelId}`);
|
|
59509
|
-
agent.streamFn = wrappedStreamFn;
|
|
59510
|
-
}
|
|
59511
|
-
const anthropicBetas = resolveAnthropicBetas(merged, provider, modelId);
|
|
59512
|
-
if (anthropicBetas?.length) {
|
|
59513
|
-
log$2.debug(`applying Anthropic beta header for ${provider}/${modelId}: ${anthropicBetas.join(",")}`);
|
|
59514
|
-
agent.streamFn = createAnthropicBetaHeadersWrapper(agent.streamFn, anthropicBetas);
|
|
59515
|
-
}
|
|
59516
|
-
if (provider === "openrouter") {
|
|
59517
|
-
log$2.debug(`applying OpenRouter app attribution headers for ${provider}/${modelId}`);
|
|
59518
|
-
agent.streamFn = createOpenRouterHeadersWrapper(agent.streamFn);
|
|
59519
|
-
}
|
|
59520
|
-
if (provider === "zai" || provider === "z-ai") {
|
|
59521
|
-
if (merged?.tool_stream !== false) {
|
|
59522
|
-
log$2.debug(`enabling Z.AI tool_stream for ${provider}/${modelId}`);
|
|
59523
|
-
agent.streamFn = createZaiToolStreamWrapper(agent.streamFn, true);
|
|
59524
|
-
}
|
|
59525
|
-
}
|
|
59526
|
-
if (isVllmOrGemmaProvider(provider, modelId, cfg)) {
|
|
59527
|
-
log$2.debug(`applying vLLM/Gemma compat wrapper for ${provider}/${modelId}`);
|
|
59528
|
-
agent.streamFn = createVllmCompatWrapper(agent.streamFn, merged);
|
|
59529
|
-
}
|
|
59530
|
-
agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
|
|
59531
|
-
}
|
|
59532
59401
|
|
|
59533
59402
|
//#endregion
|
|
59534
59403
|
//#region src/utils/safe-json.ts
|
|
@@ -59559,12 +59428,12 @@ function getQueuedFileWriter(writers, filePath) {
|
|
|
59559
59428
|
const existing = writers.get(filePath);
|
|
59560
59429
|
if (existing) return existing;
|
|
59561
59430
|
const dir = path.dirname(filePath);
|
|
59562
|
-
const ready =
|
|
59431
|
+
const ready = fs$1.mkdir(dir, { recursive: true }).catch(() => void 0);
|
|
59563
59432
|
let queue = Promise.resolve();
|
|
59564
59433
|
const writer = {
|
|
59565
59434
|
filePath,
|
|
59566
59435
|
write: (line) => {
|
|
59567
|
-
queue = queue.then(() => ready).then(() =>
|
|
59436
|
+
queue = queue.then(() => ready).then(() => fs$1.appendFile(filePath, line, "utf8")).catch(() => void 0);
|
|
59568
59437
|
}
|
|
59569
59438
|
};
|
|
59570
59439
|
writers.set(filePath, writer);
|
|
@@ -59805,6 +59674,74 @@ function createCacheTrace(params) {
|
|
|
59805
59674
|
};
|
|
59806
59675
|
}
|
|
59807
59676
|
|
|
59677
|
+
//#endregion
|
|
59678
|
+
//#region src/agents/model-aware-stream.ts
|
|
59679
|
+
/**
|
|
59680
|
+
* Create a single stream function wrapper that handles all provider-specific
|
|
59681
|
+
* param injection via one onPayload hook.
|
|
59682
|
+
*
|
|
59683
|
+
* Replaces: createStreamFnWithExtraParams, createVllmCompatWrapper,
|
|
59684
|
+
* createOpenRouterHeadersWrapper.
|
|
59685
|
+
*/
|
|
59686
|
+
function createModelAwareStreamFn(opts) {
|
|
59687
|
+
const underlying = opts.baseStreamFn ?? streamSimple;
|
|
59688
|
+
const mergedParams = {
|
|
59689
|
+
...opts.profile.params,
|
|
59690
|
+
...opts.configExtraParams,
|
|
59691
|
+
...opts.streamParamsOverride
|
|
59692
|
+
};
|
|
59693
|
+
const nativeOpts = {};
|
|
59694
|
+
if (typeof mergedParams.temperature === "number") nativeOpts.temperature = mergedParams.temperature;
|
|
59695
|
+
if (typeof mergedParams.max_tokens === "number") nativeOpts.maxTokens = mergedParams.max_tokens;
|
|
59696
|
+
else if (typeof mergedParams.maxTokens === "number") nativeOpts.maxTokens = mergedParams.maxTokens;
|
|
59697
|
+
const injections = {};
|
|
59698
|
+
if (Array.isArray(mergedParams.stop) && mergedParams.stop.length > 0) injections.stop = mergedParams.stop;
|
|
59699
|
+
if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
|
|
59700
|
+
if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
|
|
59701
|
+
if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
|
|
59702
|
+
const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
|
|
59703
|
+
const isOpenRouter = opts.provider === "openrouter";
|
|
59704
|
+
const extraHeaders = {};
|
|
59705
|
+
if (isOpenRouter) {
|
|
59706
|
+
extraHeaders["HTTP-Referer"] = "https://symi.ai";
|
|
59707
|
+
extraHeaders["X-Title"] = "Symi";
|
|
59708
|
+
}
|
|
59709
|
+
const hasExtraHeaders = Object.keys(extraHeaders).length > 0;
|
|
59710
|
+
const onPayloadHook = (payload, callerOnPayload) => {
|
|
59711
|
+
if (payload && typeof payload === "object") {
|
|
59712
|
+
const p = payload;
|
|
59713
|
+
for (const [key, val] of Object.entries(injections)) if (p[key] === void 0) p[key] = val;
|
|
59714
|
+
if (isVllm) {
|
|
59715
|
+
if (p.max_completion_tokens && !p.max_tokens) {
|
|
59716
|
+
p.max_tokens = p.max_completion_tokens;
|
|
59717
|
+
delete p.max_completion_tokens;
|
|
59718
|
+
}
|
|
59719
|
+
delete p.store;
|
|
59720
|
+
}
|
|
59721
|
+
}
|
|
59722
|
+
callerOnPayload?.(payload);
|
|
59723
|
+
};
|
|
59724
|
+
return (model, context, options) => {
|
|
59725
|
+
const callerOnPayload = options?.onPayload;
|
|
59726
|
+
return underlying(model, context, {
|
|
59727
|
+
...nativeOpts,
|
|
59728
|
+
...options,
|
|
59729
|
+
onPayload: (payload) => onPayloadHook(payload, callerOnPayload),
|
|
59730
|
+
...hasExtraHeaders ? { headers: {
|
|
59731
|
+
...extraHeaders,
|
|
59732
|
+
...options?.headers
|
|
59733
|
+
} } : {}
|
|
59734
|
+
});
|
|
59735
|
+
};
|
|
59736
|
+
}
|
|
59737
|
+
/** Detect vLLM/Gemma providers by model hints or baseUrl patterns. */
|
|
59738
|
+
function isVllmProvider(provider, modelId, config) {
|
|
59739
|
+
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
59740
|
+
if (["gemma", "redsand"].some((h) => lower.includes(h))) return true;
|
|
59741
|
+
const baseUrl = ((config?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
59742
|
+
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
59743
|
+
}
|
|
59744
|
+
|
|
59808
59745
|
//#endregion
|
|
59809
59746
|
//#region src/auto-reply/reply/streaming-directives.ts
|
|
59810
59747
|
const splitTrailingDirective = (text) => {
|
|
@@ -61956,7 +61893,7 @@ async function prepareSessionManagerForRun(params) {
|
|
|
61956
61893
|
return;
|
|
61957
61894
|
}
|
|
61958
61895
|
if (params.hadSessionFile && header && !hasAssistant) {
|
|
61959
|
-
await
|
|
61896
|
+
await fs$1.writeFile(params.sessionFile, "", "utf-8");
|
|
61960
61897
|
sm.fileEntries = [header];
|
|
61961
61898
|
sm.byId?.clear?.();
|
|
61962
61899
|
sm.labelsById?.clear?.();
|
|
@@ -62514,7 +62451,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
62514
62451
|
const prevCwd = process.cwd();
|
|
62515
62452
|
const runAbortController = new AbortController();
|
|
62516
62453
|
log$2.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
|
|
62517
|
-
await
|
|
62454
|
+
await fs$1.mkdir(resolvedWorkspace, { recursive: true });
|
|
62518
62455
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
62519
62456
|
const sandbox = await resolveSandboxContext({
|
|
62520
62457
|
config: params.config,
|
|
@@ -62522,7 +62459,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
62522
62459
|
workspaceDir: resolvedWorkspace
|
|
62523
62460
|
});
|
|
62524
62461
|
const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
|
|
62525
|
-
await
|
|
62462
|
+
await fs$1.mkdir(effectiveWorkspace, { recursive: true });
|
|
62526
62463
|
let restoreSkillEnv;
|
|
62527
62464
|
process.chdir(effectiveWorkspace);
|
|
62528
62465
|
try {
|
|
@@ -62750,7 +62687,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
62750
62687
|
sessionFile: params.sessionFile,
|
|
62751
62688
|
warn: (message) => log$2.warn(message)
|
|
62752
62689
|
});
|
|
62753
|
-
const hadSessionFile = await
|
|
62690
|
+
const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
|
|
62754
62691
|
const transcriptPolicy = resolveTranscriptPolicy({
|
|
62755
62692
|
modelApi: params.model?.api,
|
|
62756
62693
|
provider: params.provider,
|
|
@@ -62855,14 +62792,39 @@ async function runEmbeddedAttempt(params) {
|
|
|
62855
62792
|
modelApi: params.model.api,
|
|
62856
62793
|
workspaceDir: params.workspaceDir
|
|
62857
62794
|
});
|
|
62858
|
-
|
|
62859
|
-
|
|
62860
|
-
|
|
62861
|
-
|
|
62862
|
-
|
|
62863
|
-
|
|
62864
|
-
|
|
62865
|
-
|
|
62795
|
+
{
|
|
62796
|
+
let baseStreamFn = streamSimple;
|
|
62797
|
+
if (params.model.api === "ollama") {
|
|
62798
|
+
const providerConfig = params.config?.models?.providers?.[params.model.provider];
|
|
62799
|
+
const modelBaseUrl = typeof params.model.baseUrl === "string" ? params.model.baseUrl.trim() : "";
|
|
62800
|
+
const providerBaseUrl = typeof providerConfig?.baseUrl === "string" ? providerConfig.baseUrl.trim() : "";
|
|
62801
|
+
baseStreamFn = createOllamaStreamFn(modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL);
|
|
62802
|
+
}
|
|
62803
|
+
const configExtraParams = resolveExtraParams({
|
|
62804
|
+
cfg: params.config,
|
|
62805
|
+
provider: params.provider,
|
|
62806
|
+
modelId: params.modelId
|
|
62807
|
+
});
|
|
62808
|
+
activeSession.agent.streamFn = createModelAwareStreamFn({
|
|
62809
|
+
baseStreamFn,
|
|
62810
|
+
profile: modelProfile,
|
|
62811
|
+
provider: params.provider,
|
|
62812
|
+
modelId: params.modelId,
|
|
62813
|
+
config: params.config,
|
|
62814
|
+
configExtraParams,
|
|
62815
|
+
streamParamsOverride: params.streamParams
|
|
62816
|
+
});
|
|
62817
|
+
const merged = {
|
|
62818
|
+
...configExtraParams,
|
|
62819
|
+
...params.streamParams
|
|
62820
|
+
};
|
|
62821
|
+
const anthropicBetas = resolveAnthropicBetas(merged, params.provider, params.modelId);
|
|
62822
|
+
if (anthropicBetas?.length) activeSession.agent.streamFn = createAnthropicBetaHeadersWrapper(activeSession.agent.streamFn, anthropicBetas);
|
|
62823
|
+
if (params.provider === "zai" || params.provider === "z-ai") {
|
|
62824
|
+
if (merged?.tool_stream !== false) activeSession.agent.streamFn = createZaiToolStreamWrapper(activeSession.agent.streamFn, true);
|
|
62825
|
+
}
|
|
62826
|
+
activeSession.agent.streamFn = createOpenAIResponsesStoreWrapper(activeSession.agent.streamFn);
|
|
62827
|
+
}
|
|
62866
62828
|
if (cacheTrace) {
|
|
62867
62829
|
cacheTrace.recordStage("session:loaded", {
|
|
62868
62830
|
messages: activeSession.messages,
|
|
@@ -63768,7 +63730,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
63768
63730
|
}
|
|
63769
63731
|
runLoopIterations += 1;
|
|
63770
63732
|
attemptedThinking.add(thinkLevel);
|
|
63771
|
-
await
|
|
63733
|
+
await fs$1.mkdir(resolvedWorkspace, { recursive: true });
|
|
63772
63734
|
const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
|
|
63773
63735
|
const attempt = await runEmbeddedAttempt({
|
|
63774
63736
|
sessionId: params.sessionId,
|
|
@@ -68110,7 +68072,7 @@ async function handleCommands(params) {
|
|
|
68110
68072
|
try {
|
|
68111
68073
|
const messages = [];
|
|
68112
68074
|
if (sessionFile) {
|
|
68113
|
-
const content = await
|
|
68075
|
+
const content = await fs$1.readFile(sessionFile, "utf-8");
|
|
68114
68076
|
for (const line of content.split("\n")) {
|
|
68115
68077
|
if (!line.trim()) continue;
|
|
68116
68078
|
try {
|
|
@@ -71768,7 +71730,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
71768
71730
|
return;
|
|
71769
71731
|
}
|
|
71770
71732
|
try {
|
|
71771
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
71733
|
+
const { deliverOutboundPayloads } = await import("./deliver-CceEhg3d.js").then((n) => n.n);
|
|
71772
71734
|
await deliverOutboundPayloads({
|
|
71773
71735
|
cfg: params.cfg,
|
|
71774
71736
|
channel,
|
|
@@ -72143,7 +72105,7 @@ async function stageSandboxMedia(params) {
|
|
|
72143
72105
|
};
|
|
72144
72106
|
try {
|
|
72145
72107
|
const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
|
|
72146
|
-
await
|
|
72108
|
+
await fs$1.mkdir(destDir, { recursive: true });
|
|
72147
72109
|
const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
|
|
72148
72110
|
cfg,
|
|
72149
72111
|
accountId: ctx.AccountId
|
|
@@ -72193,7 +72155,7 @@ async function stageSandboxMedia(params) {
|
|
|
72193
72155
|
usedNames.add(fileName);
|
|
72194
72156
|
const dest = path.join(destDir, fileName);
|
|
72195
72157
|
if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
|
|
72196
|
-
else await
|
|
72158
|
+
else await fs$1.copyFile(source, dest);
|
|
72197
72159
|
const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
|
|
72198
72160
|
staged.set(source, stagedPath);
|
|
72199
72161
|
}
|