@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
|
@@ -14,7 +14,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExis
|
|
|
14
14
|
import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
15
15
|
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-D-hWrHoH.js";
|
|
16
16
|
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, 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 resolveDiscordSystemLocation, 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 resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-C1IYd3g7.js";
|
|
17
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, 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 throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
17
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, 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 throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-BH0l3UKW.js";
|
|
18
18
|
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-D0xmLpej.js";
|
|
19
19
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
|
|
20
20
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-8zZqL37v.js";
|
|
@@ -22,10 +22,10 @@ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normali
|
|
|
22
22
|
import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-ByaQt43P.js";
|
|
23
23
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
|
|
24
24
|
import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-BQINJQIT.js";
|
|
25
|
-
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
25
|
+
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-lgx_U5KS.js";
|
|
26
26
|
import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-BmV60pPT.js";
|
|
27
27
|
import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-D-mTF1cj.js";
|
|
28
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
28
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CDJYxX5a.js";
|
|
29
29
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BNpGMnp-.js";
|
|
30
30
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-CPfngF0S.js";
|
|
31
31
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -36,7 +36,7 @@ import { t as resolveIMessageAccount } from "./accounts-DImOt9jX.js";
|
|
|
36
36
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DkMamAQ-.js";
|
|
37
37
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
|
|
38
38
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-ChC2CXaN.js";
|
|
39
|
-
import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-
|
|
39
|
+
import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-CHzdaNJ4.js";
|
|
40
40
|
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-jpn5vRTY.js";
|
|
41
41
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-BNh23mUR.js";
|
|
42
42
|
import { n as retryAsync } from "./retry-QGp0jvVi.js";
|
|
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-F0moAwIl.js";
|
|
|
49
49
|
import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-C_aYUwpl.js";
|
|
50
50
|
import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DklY7Cj7.js";
|
|
51
51
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
|
|
52
|
-
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-
|
|
52
|
+
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-DUBExAb5.js";
|
|
53
53
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtLn7YU3.js";
|
|
54
54
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DtXYsHEc.js";
|
|
55
55
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D9q-fIPB.js";
|
|
@@ -79,7 +79,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
79
79
|
import AjvPkg from "ajv";
|
|
80
80
|
import { createServer } from "node:http";
|
|
81
81
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
82
|
-
import WebSocket, { WebSocket
|
|
82
|
+
import WebSocket$1, { WebSocket } from "ws";
|
|
83
83
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
84
84
|
import { createJiti } from "jiti";
|
|
85
85
|
import { Type } from "@sinclair/typebox";
|
|
@@ -5714,7 +5714,7 @@ var GatewayClient = class {
|
|
|
5714
5714
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5715
5715
|
});
|
|
5716
5716
|
}
|
|
5717
|
-
this.ws = new WebSocket
|
|
5717
|
+
this.ws = new WebSocket(url, wsOptions);
|
|
5718
5718
|
this.ws.on("open", () => {
|
|
5719
5719
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5720
5720
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -5933,7 +5933,7 @@ var GatewayClient = class {
|
|
|
5933
5933
|
return null;
|
|
5934
5934
|
}
|
|
5935
5935
|
async request(method, params, opts) {
|
|
5936
|
-
if (!this.ws || this.ws.readyState !== WebSocket
|
|
5936
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
5937
5937
|
const id = randomUUID();
|
|
5938
5938
|
const frame = {
|
|
5939
5939
|
type: "req",
|
|
@@ -7199,7 +7199,7 @@ async function routeReply(params) {
|
|
|
7199
7199
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7200
7200
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7201
7201
|
try {
|
|
7202
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7202
|
+
const { deliverOutboundPayloads } = await import("./deliver-BH0l3UKW.js").then((n) => n.n);
|
|
7203
7203
|
return {
|
|
7204
7204
|
ok: true,
|
|
7205
7205
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -41673,7 +41673,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
41673
41673
|
return;
|
|
41674
41674
|
}
|
|
41675
41675
|
try {
|
|
41676
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
41676
|
+
const { deliverOutboundPayloads } = await import("./deliver-BH0l3UKW.js").then((n) => n.n);
|
|
41677
41677
|
await deliverOutboundPayloads({
|
|
41678
41678
|
cfg: params.cfg,
|
|
41679
41679
|
channel,
|
|
@@ -45119,7 +45119,7 @@ async function describeStickerImage(params) {
|
|
|
45119
45119
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
45120
45120
|
try {
|
|
45121
45121
|
const buffer = await fs$1.readFile(imagePath);
|
|
45122
|
-
const { describeImageWithModel } = await import("./image-
|
|
45122
|
+
const { describeImageWithModel } = await import("./image-CHzdaNJ4.js").then((n) => n.n);
|
|
45123
45123
|
return (await describeImageWithModel({
|
|
45124
45124
|
buffer,
|
|
45125
45125
|
fileName: "sticker.webp",
|
|
@@ -47781,7 +47781,7 @@ async function preflightDiscordMessage(params) {
|
|
|
47781
47781
|
let preflightTranscript;
|
|
47782
47782
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
47783
47783
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
47784
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
47784
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-C40mKAp7.js");
|
|
47785
47785
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
47786
47786
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
47787
47787
|
ctx: {
|
|
@@ -51787,7 +51787,7 @@ function isVoiceChannelType(type) {
|
|
|
51787
51787
|
function createDefaultDeps() {
|
|
51788
51788
|
return {
|
|
51789
51789
|
sendMessageWhatsApp: async (...args) => {
|
|
51790
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51790
|
+
const { sendMessageWhatsApp } = await import("./web-DWNtg4iV.js");
|
|
51791
51791
|
return await sendMessageWhatsApp(...args);
|
|
51792
51792
|
},
|
|
51793
51793
|
sendMessageTelegram: async (...args) => {
|
|
@@ -54694,7 +54694,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
54694
54694
|
super(options);
|
|
54695
54695
|
}
|
|
54696
54696
|
createWebSocket(url) {
|
|
54697
|
-
return new WebSocket(url, { agent });
|
|
54697
|
+
return new WebSocket$1(url, { agent });
|
|
54698
54698
|
}
|
|
54699
54699
|
}
|
|
54700
54700
|
return new ProxyGatewayPlugin();
|
|
@@ -64912,7 +64912,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
64912
64912
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
64913
64913
|
let preflightTranscript;
|
|
64914
64914
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
64915
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
64915
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-C40mKAp7.js");
|
|
64916
64916
|
preflightTranscript = await transcribeFirstAudio({
|
|
64917
64917
|
ctx: {
|
|
64918
64918
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -67069,7 +67069,7 @@ function loadWebLoginQr() {
|
|
|
67069
67069
|
return webLoginQrPromise;
|
|
67070
67070
|
}
|
|
67071
67071
|
function loadWebChannel() {
|
|
67072
|
-
webChannelPromise ??= import("./web-
|
|
67072
|
+
webChannelPromise ??= import("./web-DWNtg4iV.js");
|
|
67073
67073
|
return webChannelPromise;
|
|
67074
67074
|
}
|
|
67075
67075
|
function loadWhatsAppActions() {
|
|
@@ -68302,8 +68302,16 @@ const GEMMA_TOKEN_PATTERNS = [
|
|
|
68302
68302
|
/<start_of_turn>(?:model|user)?/g,
|
|
68303
68303
|
/<end_of_turn>/g,
|
|
68304
68304
|
/<\|(?:fim_prefix|fim_suffix|fim_middle)\|>/g,
|
|
68305
|
-
/^\s*<bos>\s*/gm
|
|
68305
|
+
/^\s*<bos>\s*/gm,
|
|
68306
|
+
/<\|[^|>]{0,30}\|>/g,
|
|
68307
|
+
/<\|[^>]{0,30}>/g
|
|
68306
68308
|
];
|
|
68309
|
+
/**
|
|
68310
|
+
* Aggressively strip all fragments of model control token corruption from
|
|
68311
|
+
* tool arguments. This catches cases where the model produces raw garbage
|
|
68312
|
+
* like `<|<|"|<|<|\'` that doesn't match any known token template.
|
|
68313
|
+
*/
|
|
68314
|
+
const AGGRESSIVE_TOKEN_FRAGMENTS = [/<\|/g, /\|>/g];
|
|
68307
68315
|
const GEMMA_MODEL_HINTS$1 = ["gemma", "redsand/"];
|
|
68308
68316
|
function isGemmaModel$1(modelId) {
|
|
68309
68317
|
const lower = modelId.toLowerCase();
|
|
@@ -68313,6 +68321,10 @@ function isGemmaModel$1(modelId) {
|
|
|
68313
68321
|
* Strip known control tokens from text. Only applies to Gemma-family models;
|
|
68314
68322
|
* other models pass through unchanged.
|
|
68315
68323
|
*/
|
|
68324
|
+
/**
|
|
68325
|
+
* Strip known control tokens from text. Only applies to Gemma-family models;
|
|
68326
|
+
* other models pass through unchanged. Used for streamed text output.
|
|
68327
|
+
*/
|
|
68316
68328
|
function stripModelTokens(text, modelId) {
|
|
68317
68329
|
if (!text || !isGemmaModel$1(modelId)) return text;
|
|
68318
68330
|
let result = text;
|
|
@@ -68322,6 +68334,21 @@ function stripModelTokens(text, modelId) {
|
|
|
68322
68334
|
}
|
|
68323
68335
|
return result;
|
|
68324
68336
|
}
|
|
68337
|
+
/**
|
|
68338
|
+
* Aggressively strip ALL token-like fragments from a string. Used for tool
|
|
68339
|
+
* call arguments where any `<|` corruption causes downstream failures.
|
|
68340
|
+
* More aggressive than `stripModelTokens` — removes bare `<|` and `|>` fragments
|
|
68341
|
+
* that don't match any known token template.
|
|
68342
|
+
*/
|
|
68343
|
+
function stripModelTokensAggressive(text, modelId) {
|
|
68344
|
+
if (!text || !isGemmaModel$1(modelId)) return text;
|
|
68345
|
+
let result = stripModelTokens(text, modelId);
|
|
68346
|
+
for (const re of AGGRESSIVE_TOKEN_FRAGMENTS) {
|
|
68347
|
+
re.lastIndex = 0;
|
|
68348
|
+
result = result.replace(re, "");
|
|
68349
|
+
}
|
|
68350
|
+
return result;
|
|
68351
|
+
}
|
|
68325
68352
|
|
|
68326
68353
|
//#endregion
|
|
68327
68354
|
//#region src/agents/pi-tools.abort.ts
|
|
@@ -69637,10 +69664,10 @@ function wrapToolWithArgSanitization(tool, modelId) {
|
|
|
69637
69664
|
};
|
|
69638
69665
|
}
|
|
69639
69666
|
function sanitizeToolArgs(params, modelId) {
|
|
69640
|
-
if (!params || typeof params !== "object") return typeof params === "string" ?
|
|
69667
|
+
if (!params || typeof params !== "object") return typeof params === "string" ? stripModelTokensAggressive(params, modelId) : params;
|
|
69641
69668
|
if (Array.isArray(params)) return params.map((item) => sanitizeToolArgs(item, modelId));
|
|
69642
69669
|
const result = {};
|
|
69643
|
-
for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] =
|
|
69670
|
+
for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] = stripModelTokensAggressive(value, modelId);
|
|
69644
69671
|
else if (value && typeof value === "object") result[key] = sanitizeToolArgs(value, modelId);
|
|
69645
69672
|
else result[key] = value;
|
|
69646
69673
|
return result;
|
|
@@ -72809,10 +72836,6 @@ function resolveModelProfile(modelId, userProfiles) {
|
|
|
72809
72836
|
|
|
72810
72837
|
//#endregion
|
|
72811
72838
|
//#region src/agents/pi-embedded-runner/extra-params.ts
|
|
72812
|
-
const OPENROUTER_APP_HEADERS = {
|
|
72813
|
-
"HTTP-Referer": "https://symi.ai",
|
|
72814
|
-
"X-Title": "Symi"
|
|
72815
|
-
};
|
|
72816
72839
|
const ANTHROPIC_CONTEXT_1M_BETA = "context-1m-2025-08-07";
|
|
72817
72840
|
const ANTHROPIC_1M_MODEL_PREFIXES = ["claude-opus-4", "claude-sonnet-4"];
|
|
72818
72841
|
const OPENAI_RESPONSES_APIS = new Set(["openai-responses"]);
|
|
@@ -72830,70 +72853,6 @@ function resolveExtraParams(params) {
|
|
|
72830
72853
|
const profile = resolveModelProfile(modelKey, params.cfg?.models?.profiles);
|
|
72831
72854
|
if (profile.params && Object.keys(profile.params).length > 0) return { ...profile.params };
|
|
72832
72855
|
}
|
|
72833
|
-
/**
|
|
72834
|
-
* Resolve cacheRetention from extraParams, supporting both new `cacheRetention`
|
|
72835
|
-
* and legacy `cacheControlTtl` values for backwards compatibility.
|
|
72836
|
-
*
|
|
72837
|
-
* Mapping: "5m" → "short", "1h" → "long"
|
|
72838
|
-
*
|
|
72839
|
-
* Only applies to Anthropic provider (OpenRouter uses openai-completions API
|
|
72840
|
-
* with hardcoded cache_control, not the cacheRetention stream option).
|
|
72841
|
-
*
|
|
72842
|
-
* Defaults to "short" for Anthropic provider when not explicitly configured.
|
|
72843
|
-
*/
|
|
72844
|
-
function resolveCacheRetention(extraParams, provider) {
|
|
72845
|
-
if (provider !== "anthropic") return;
|
|
72846
|
-
const newVal = extraParams?.cacheRetention;
|
|
72847
|
-
if (newVal === "none" || newVal === "short" || newVal === "long") return newVal;
|
|
72848
|
-
const legacy = extraParams?.cacheControlTtl;
|
|
72849
|
-
if (legacy === "5m") return "short";
|
|
72850
|
-
if (legacy === "1h") return "long";
|
|
72851
|
-
return "short";
|
|
72852
|
-
}
|
|
72853
|
-
function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
|
|
72854
|
-
if (!extraParams || Object.keys(extraParams).length === 0) return;
|
|
72855
|
-
const streamParams = {};
|
|
72856
|
-
if (typeof extraParams.temperature === "number") streamParams.temperature = extraParams.temperature;
|
|
72857
|
-
if (typeof extraParams.maxTokens === "number") streamParams.maxTokens = extraParams.maxTokens;
|
|
72858
|
-
if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
|
|
72859
|
-
if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
|
|
72860
|
-
if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
|
|
72861
|
-
if (Array.isArray(extraParams.stop) && extraParams.stop.length > 0) streamParams.stop = extraParams.stop;
|
|
72862
|
-
if (extraParams.chat_template_kwargs && typeof extraParams.chat_template_kwargs === "object") streamParams.chat_template_kwargs = extraParams.chat_template_kwargs;
|
|
72863
|
-
const cacheRetention = resolveCacheRetention(extraParams, provider);
|
|
72864
|
-
if (cacheRetention) streamParams.cacheRetention = cacheRetention;
|
|
72865
|
-
if (Object.keys(streamParams).length === 0) return;
|
|
72866
|
-
log$2.debug(`creating streamFn wrapper with params: ${JSON.stringify(streamParams)}`);
|
|
72867
|
-
const sp = streamParams;
|
|
72868
|
-
const payloadOverrides = {};
|
|
72869
|
-
if (Array.isArray(sp.stop) && sp.stop.length > 0) payloadOverrides.stop = sp.stop;
|
|
72870
|
-
if (typeof sp.top_p === "number") payloadOverrides.top_p = sp.top_p;
|
|
72871
|
-
if (typeof sp.top_k === "number") payloadOverrides.top_k = sp.top_k;
|
|
72872
|
-
if (typeof sp.repeat_penalty === "number") payloadOverrides.repeat_penalty = sp.repeat_penalty;
|
|
72873
|
-
const hasPayloadOverrides = Object.keys(payloadOverrides).length > 0;
|
|
72874
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
72875
|
-
const wrappedStreamFn = (model, context, options) => {
|
|
72876
|
-
if (hasPayloadOverrides) {
|
|
72877
|
-
const originalOnPayload = options?.onPayload;
|
|
72878
|
-
return underlying(model, context, {
|
|
72879
|
-
...streamParams,
|
|
72880
|
-
...options,
|
|
72881
|
-
onPayload: (payload) => {
|
|
72882
|
-
if (payload && typeof payload === "object") {
|
|
72883
|
-
const p = payload;
|
|
72884
|
-
for (const [key, value] of Object.entries(payloadOverrides)) if (p[key] === void 0) p[key] = value;
|
|
72885
|
-
}
|
|
72886
|
-
originalOnPayload?.(payload);
|
|
72887
|
-
}
|
|
72888
|
-
});
|
|
72889
|
-
}
|
|
72890
|
-
return underlying(model, context, {
|
|
72891
|
-
...streamParams,
|
|
72892
|
-
...options
|
|
72893
|
-
});
|
|
72894
|
-
};
|
|
72895
|
-
return wrappedStreamFn;
|
|
72896
|
-
}
|
|
72897
72856
|
function isDirectOpenAIBaseUrl(baseUrl) {
|
|
72898
72857
|
if (typeof baseUrl !== "string" || !baseUrl.trim()) return true;
|
|
72899
72858
|
try {
|
|
@@ -72974,20 +72933,6 @@ function createAnthropicBetaHeadersWrapper(baseStreamFn, betas) {
|
|
|
72974
72933
|
};
|
|
72975
72934
|
}
|
|
72976
72935
|
/**
|
|
72977
|
-
* Create a streamFn wrapper that adds OpenRouter app attribution headers.
|
|
72978
|
-
* These headers allow Symi to appear on OpenRouter's leaderboard.
|
|
72979
|
-
*/
|
|
72980
|
-
function createOpenRouterHeadersWrapper(baseStreamFn) {
|
|
72981
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
72982
|
-
return (model, context, options) => underlying(model, context, {
|
|
72983
|
-
...options,
|
|
72984
|
-
headers: {
|
|
72985
|
-
...OPENROUTER_APP_HEADERS,
|
|
72986
|
-
...options?.headers
|
|
72987
|
-
}
|
|
72988
|
-
});
|
|
72989
|
-
}
|
|
72990
|
-
/**
|
|
72991
72936
|
* Create a streamFn wrapper that injects tool_stream=true for Z.AI providers.
|
|
72992
72937
|
*
|
|
72993
72938
|
* Z.AI's API supports the `tool_stream` parameter to enable real-time streaming
|
|
@@ -73010,82 +72955,6 @@ function createZaiToolStreamWrapper(baseStreamFn, enabled) {
|
|
|
73010
72955
|
});
|
|
73011
72956
|
};
|
|
73012
72957
|
}
|
|
73013
|
-
const GEMMA_STOP_SEQUENCES = ["<end_of_turn>", "<eos>"];
|
|
73014
|
-
const VLLM_GEMMA_HINTS = ["gemma", "redsand"];
|
|
73015
|
-
function isVllmOrGemmaProvider(provider, modelId, cfg) {
|
|
73016
|
-
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
73017
|
-
if (VLLM_GEMMA_HINTS.some((h) => lower.includes(h))) return true;
|
|
73018
|
-
const baseUrl = ((cfg?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
73019
|
-
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
73020
|
-
}
|
|
73021
|
-
/**
|
|
73022
|
-
* Wrap the stream function to fix vLLM/Gemma compat issues via onPayload:
|
|
73023
|
-
* 1. Replace `max_completion_tokens` with `max_tokens` (vLLM ignores the former)
|
|
73024
|
-
* 2. Inject Gemma stop sequences if none are set
|
|
73025
|
-
* 3. Remove unsupported fields (store, stream_options.include_usage on older vLLM)
|
|
73026
|
-
*/
|
|
73027
|
-
function createVllmCompatWrapper(baseStreamFn, extraParams) {
|
|
73028
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
73029
|
-
const configuredStop = Array.isArray(extraParams.stop) ? extraParams.stop : GEMMA_STOP_SEQUENCES;
|
|
73030
|
-
return (model, context, options) => {
|
|
73031
|
-
const originalOnPayload = options?.onPayload;
|
|
73032
|
-
return underlying(model, context, {
|
|
73033
|
-
...options,
|
|
73034
|
-
onPayload: (payload) => {
|
|
73035
|
-
if (payload && typeof payload === "object") {
|
|
73036
|
-
const p = payload;
|
|
73037
|
-
if (p.max_completion_tokens && !p.max_tokens) {
|
|
73038
|
-
p.max_tokens = p.max_completion_tokens;
|
|
73039
|
-
delete p.max_completion_tokens;
|
|
73040
|
-
}
|
|
73041
|
-
if (!p.stop && configuredStop.length > 0) p.stop = configuredStop;
|
|
73042
|
-
delete p.store;
|
|
73043
|
-
}
|
|
73044
|
-
originalOnPayload?.(payload);
|
|
73045
|
-
}
|
|
73046
|
-
});
|
|
73047
|
-
};
|
|
73048
|
-
}
|
|
73049
|
-
/**
|
|
73050
|
-
* Apply extra params (like temperature) to an agent's streamFn.
|
|
73051
|
-
* Also adds OpenRouter app attribution headers when using the OpenRouter provider.
|
|
73052
|
-
*
|
|
73053
|
-
* @internal Exported for testing
|
|
73054
|
-
*/
|
|
73055
|
-
function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverride) {
|
|
73056
|
-
const extraParams = resolveExtraParams({
|
|
73057
|
-
cfg,
|
|
73058
|
-
provider,
|
|
73059
|
-
modelId
|
|
73060
|
-
});
|
|
73061
|
-
const override = extraParamsOverride && Object.keys(extraParamsOverride).length > 0 ? Object.fromEntries(Object.entries(extraParamsOverride).filter(([, value]) => value !== void 0)) : void 0;
|
|
73062
|
-
const merged = Object.assign({}, extraParams, override);
|
|
73063
|
-
const wrappedStreamFn = createStreamFnWithExtraParams(agent.streamFn, merged, provider);
|
|
73064
|
-
if (wrappedStreamFn) {
|
|
73065
|
-
log$2.debug(`applying extraParams to agent streamFn for ${provider}/${modelId}`);
|
|
73066
|
-
agent.streamFn = wrappedStreamFn;
|
|
73067
|
-
}
|
|
73068
|
-
const anthropicBetas = resolveAnthropicBetas(merged, provider, modelId);
|
|
73069
|
-
if (anthropicBetas?.length) {
|
|
73070
|
-
log$2.debug(`applying Anthropic beta header for ${provider}/${modelId}: ${anthropicBetas.join(",")}`);
|
|
73071
|
-
agent.streamFn = createAnthropicBetaHeadersWrapper(agent.streamFn, anthropicBetas);
|
|
73072
|
-
}
|
|
73073
|
-
if (provider === "openrouter") {
|
|
73074
|
-
log$2.debug(`applying OpenRouter app attribution headers for ${provider}/${modelId}`);
|
|
73075
|
-
agent.streamFn = createOpenRouterHeadersWrapper(agent.streamFn);
|
|
73076
|
-
}
|
|
73077
|
-
if (provider === "zai" || provider === "z-ai") {
|
|
73078
|
-
if (merged?.tool_stream !== false) {
|
|
73079
|
-
log$2.debug(`enabling Z.AI tool_stream for ${provider}/${modelId}`);
|
|
73080
|
-
agent.streamFn = createZaiToolStreamWrapper(agent.streamFn, true);
|
|
73081
|
-
}
|
|
73082
|
-
}
|
|
73083
|
-
if (isVllmOrGemmaProvider(provider, modelId, cfg)) {
|
|
73084
|
-
log$2.debug(`applying vLLM/Gemma compat wrapper for ${provider}/${modelId}`);
|
|
73085
|
-
agent.streamFn = createVllmCompatWrapper(agent.streamFn, merged);
|
|
73086
|
-
}
|
|
73087
|
-
agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
|
|
73088
|
-
}
|
|
73089
72958
|
|
|
73090
72959
|
//#endregion
|
|
73091
72960
|
//#region src/utils/safe-json.ts
|
|
@@ -73362,6 +73231,74 @@ function createCacheTrace(params) {
|
|
|
73362
73231
|
};
|
|
73363
73232
|
}
|
|
73364
73233
|
|
|
73234
|
+
//#endregion
|
|
73235
|
+
//#region src/agents/model-aware-stream.ts
|
|
73236
|
+
/**
|
|
73237
|
+
* Create a single stream function wrapper that handles all provider-specific
|
|
73238
|
+
* param injection via one onPayload hook.
|
|
73239
|
+
*
|
|
73240
|
+
* Replaces: createStreamFnWithExtraParams, createVllmCompatWrapper,
|
|
73241
|
+
* createOpenRouterHeadersWrapper.
|
|
73242
|
+
*/
|
|
73243
|
+
function createModelAwareStreamFn(opts) {
|
|
73244
|
+
const underlying = opts.baseStreamFn ?? streamSimple;
|
|
73245
|
+
const mergedParams = {
|
|
73246
|
+
...opts.profile.params,
|
|
73247
|
+
...opts.configExtraParams,
|
|
73248
|
+
...opts.streamParamsOverride
|
|
73249
|
+
};
|
|
73250
|
+
const nativeOpts = {};
|
|
73251
|
+
if (typeof mergedParams.temperature === "number") nativeOpts.temperature = mergedParams.temperature;
|
|
73252
|
+
if (typeof mergedParams.max_tokens === "number") nativeOpts.maxTokens = mergedParams.max_tokens;
|
|
73253
|
+
else if (typeof mergedParams.maxTokens === "number") nativeOpts.maxTokens = mergedParams.maxTokens;
|
|
73254
|
+
const injections = {};
|
|
73255
|
+
if (Array.isArray(mergedParams.stop) && mergedParams.stop.length > 0) injections.stop = mergedParams.stop;
|
|
73256
|
+
if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
|
|
73257
|
+
if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
|
|
73258
|
+
if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
|
|
73259
|
+
const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
|
|
73260
|
+
const isOpenRouter = opts.provider === "openrouter";
|
|
73261
|
+
const extraHeaders = {};
|
|
73262
|
+
if (isOpenRouter) {
|
|
73263
|
+
extraHeaders["HTTP-Referer"] = "https://symi.ai";
|
|
73264
|
+
extraHeaders["X-Title"] = "Symi";
|
|
73265
|
+
}
|
|
73266
|
+
const hasExtraHeaders = Object.keys(extraHeaders).length > 0;
|
|
73267
|
+
const onPayloadHook = (payload, callerOnPayload) => {
|
|
73268
|
+
if (payload && typeof payload === "object") {
|
|
73269
|
+
const p = payload;
|
|
73270
|
+
for (const [key, val] of Object.entries(injections)) if (p[key] === void 0) p[key] = val;
|
|
73271
|
+
if (isVllm) {
|
|
73272
|
+
if (p.max_completion_tokens && !p.max_tokens) {
|
|
73273
|
+
p.max_tokens = p.max_completion_tokens;
|
|
73274
|
+
delete p.max_completion_tokens;
|
|
73275
|
+
}
|
|
73276
|
+
delete p.store;
|
|
73277
|
+
}
|
|
73278
|
+
}
|
|
73279
|
+
callerOnPayload?.(payload);
|
|
73280
|
+
};
|
|
73281
|
+
return (model, context, options) => {
|
|
73282
|
+
const callerOnPayload = options?.onPayload;
|
|
73283
|
+
return underlying(model, context, {
|
|
73284
|
+
...nativeOpts,
|
|
73285
|
+
...options,
|
|
73286
|
+
onPayload: (payload) => onPayloadHook(payload, callerOnPayload),
|
|
73287
|
+
...hasExtraHeaders ? { headers: {
|
|
73288
|
+
...extraHeaders,
|
|
73289
|
+
...options?.headers
|
|
73290
|
+
} } : {}
|
|
73291
|
+
});
|
|
73292
|
+
};
|
|
73293
|
+
}
|
|
73294
|
+
/** Detect vLLM/Gemma providers by model hints or baseUrl patterns. */
|
|
73295
|
+
function isVllmProvider(provider, modelId, config) {
|
|
73296
|
+
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
73297
|
+
if (["gemma", "redsand"].some((h) => lower.includes(h))) return true;
|
|
73298
|
+
const baseUrl = ((config?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
73299
|
+
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
73300
|
+
}
|
|
73301
|
+
|
|
73365
73302
|
//#endregion
|
|
73366
73303
|
//#region src/auto-reply/reply/streaming-directives.ts
|
|
73367
73304
|
const splitTrailingDirective = (text) => {
|
|
@@ -76409,14 +76346,39 @@ async function runEmbeddedAttempt(params) {
|
|
|
76409
76346
|
modelApi: params.model.api,
|
|
76410
76347
|
workspaceDir: params.workspaceDir
|
|
76411
76348
|
});
|
|
76412
|
-
|
|
76413
|
-
|
|
76414
|
-
|
|
76415
|
-
|
|
76416
|
-
|
|
76417
|
-
|
|
76418
|
-
|
|
76419
|
-
|
|
76349
|
+
{
|
|
76350
|
+
let baseStreamFn = streamSimple;
|
|
76351
|
+
if (params.model.api === "ollama") {
|
|
76352
|
+
const providerConfig = params.config?.models?.providers?.[params.model.provider];
|
|
76353
|
+
const modelBaseUrl = typeof params.model.baseUrl === "string" ? params.model.baseUrl.trim() : "";
|
|
76354
|
+
const providerBaseUrl = typeof providerConfig?.baseUrl === "string" ? providerConfig.baseUrl.trim() : "";
|
|
76355
|
+
baseStreamFn = createOllamaStreamFn(modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL);
|
|
76356
|
+
}
|
|
76357
|
+
const configExtraParams = resolveExtraParams({
|
|
76358
|
+
cfg: params.config,
|
|
76359
|
+
provider: params.provider,
|
|
76360
|
+
modelId: params.modelId
|
|
76361
|
+
});
|
|
76362
|
+
activeSession.agent.streamFn = createModelAwareStreamFn({
|
|
76363
|
+
baseStreamFn,
|
|
76364
|
+
profile: modelProfile,
|
|
76365
|
+
provider: params.provider,
|
|
76366
|
+
modelId: params.modelId,
|
|
76367
|
+
config: params.config,
|
|
76368
|
+
configExtraParams,
|
|
76369
|
+
streamParamsOverride: params.streamParams
|
|
76370
|
+
});
|
|
76371
|
+
const merged = {
|
|
76372
|
+
...configExtraParams,
|
|
76373
|
+
...params.streamParams
|
|
76374
|
+
};
|
|
76375
|
+
const anthropicBetas = resolveAnthropicBetas(merged, params.provider, params.modelId);
|
|
76376
|
+
if (anthropicBetas?.length) activeSession.agent.streamFn = createAnthropicBetaHeadersWrapper(activeSession.agent.streamFn, anthropicBetas);
|
|
76377
|
+
if (params.provider === "zai" || params.provider === "z-ai") {
|
|
76378
|
+
if (merged?.tool_stream !== false) activeSession.agent.streamFn = createZaiToolStreamWrapper(activeSession.agent.streamFn, true);
|
|
76379
|
+
}
|
|
76380
|
+
activeSession.agent.streamFn = createOpenAIResponsesStoreWrapper(activeSession.agent.streamFn);
|
|
76381
|
+
}
|
|
76420
76382
|
if (cacheTrace) {
|
|
76421
76383
|
cacheTrace.recordStage("session:loaded", {
|
|
76422
76384
|
messages: activeSession.messages,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { E as truncateUtf16Safe } from "./utils-B-0b9bGM.js";
|
|
2
2
|
import { s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
|
|
3
|
-
import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-
|
|
4
|
-
import { t as sanitizeContentBlocksImages } from "./tool-images-
|
|
3
|
+
import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-C-T6hOMv.js";
|
|
4
|
+
import { t as sanitizeContentBlocksImages } from "./tool-images-DvUBlqjX.js";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
7
|
import { createHash } from "node:crypto";
|
|
8
8
|
|
|
9
9
|
//#region src/agents/pi-embedded-helpers/bootstrap.ts
|
|
@@ -101,10 +101,10 @@ function clampToBudget(content, budget) {
|
|
|
101
101
|
async function ensureSessionHeader(params) {
|
|
102
102
|
const file = params.sessionFile;
|
|
103
103
|
try {
|
|
104
|
-
await
|
|
104
|
+
await fs.stat(file);
|
|
105
105
|
return;
|
|
106
106
|
} catch {}
|
|
107
|
-
await
|
|
107
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
108
108
|
const entry = {
|
|
109
109
|
type: "session",
|
|
110
110
|
version: 2,
|
|
@@ -112,7 +112,7 @@ async function ensureSessionHeader(params) {
|
|
|
112
112
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
113
113
|
cwd: params.cwd
|
|
114
114
|
};
|
|
115
|
-
await
|
|
115
|
+
await fs.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
|
|
116
116
|
}
|
|
117
117
|
function buildBootstrapContextFiles(files, opts) {
|
|
118
118
|
const maxChars = opts?.maxChars ?? DEFAULT_BOOTSTRAP_MAX_CHARS;
|
|
@@ -12,7 +12,7 @@ import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n a
|
|
|
12
12
|
import { S as isPidAlive, x as resolveProcessScopedMap } from "./model-auth-DK43VicI.js";
|
|
13
13
|
import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-Dz5lr5b0.js";
|
|
14
14
|
import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-DRbjHIwD.js";
|
|
15
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
15
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-BFekevcE.js";
|
|
16
16
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BFekKL7i.js";
|
|
17
17
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BoQgnc8X.js";
|
|
18
18
|
import { t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
|
|
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
|
|
|
933
933
|
}
|
|
934
934
|
async function loadPwAiModule(mode) {
|
|
935
935
|
try {
|
|
936
|
-
return await import("./pw-ai-
|
|
936
|
+
return await import("./pw-ai-BnAKvSuw.js");
|
|
937
937
|
} catch (err) {
|
|
938
938
|
if (mode === "soft") return null;
|
|
939
939
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
|
|
|
3473
3473
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3474
3474
|
const profileState = getProfileState();
|
|
3475
3475
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3476
|
-
await (await import("./pw-ai-
|
|
3476
|
+
await (await import("./pw-ai-BnAKvSuw.js")).closePlaywrightBrowserConnection();
|
|
3477
3477
|
} catch {}
|
|
3478
3478
|
if (profileState.running) await stopRunningBrowser();
|
|
3479
3479
|
try {
|
|
3480
|
-
await (await import("./pw-ai-
|
|
3480
|
+
await (await import("./pw-ai-BnAKvSuw.js")).closePlaywrightBrowserConnection();
|
|
3481
3481
|
} catch {}
|
|
3482
3482
|
if (!fs$1.existsSync(userDataDir)) return {
|
|
3483
3483
|
moved: false,
|
|
@@ -10,7 +10,7 @@ import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
|
10
10
|
import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-ByaQt43P.js";
|
|
11
11
|
import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-BQINJQIT.js";
|
|
12
12
|
import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BmV60pPT.js";
|
|
13
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
13
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CDJYxX5a.js";
|
|
14
14
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BNpGMnp-.js";
|
|
15
15
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
|
|
16
16
|
import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -931,7 +931,7 @@ function isModuleNotFoundError(err) {
|
|
|
931
931
|
}
|
|
932
932
|
async function loadPwAiModule(mode) {
|
|
933
933
|
try {
|
|
934
|
-
return await import("./pw-ai-
|
|
934
|
+
return await import("./pw-ai-De-KR9_s.js");
|
|
935
935
|
} catch (err) {
|
|
936
936
|
if (mode === "soft") return null;
|
|
937
937
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3471,11 +3471,11 @@ function createProfileContext(opts, profile) {
|
|
|
3471
3471
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3472
3472
|
const profileState = getProfileState();
|
|
3473
3473
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3474
|
-
await (await import("./pw-ai-
|
|
3474
|
+
await (await import("./pw-ai-De-KR9_s.js")).closePlaywrightBrowserConnection();
|
|
3475
3475
|
} catch {}
|
|
3476
3476
|
if (profileState.running) await stopRunningBrowser();
|
|
3477
3477
|
try {
|
|
3478
|
-
await (await import("./pw-ai-
|
|
3478
|
+
await (await import("./pw-ai-De-KR9_s.js")).closePlaywrightBrowserConnection();
|
|
3479
3479
|
} catch {}
|
|
3480
3480
|
if (!fs.existsSync(userDataDir)) return {
|
|
3481
3481
|
moved: false,
|