@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
|
@@ -13,7 +13,7 @@ import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
|
|
|
13
13
|
import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-BaxDnULz.js";
|
|
14
14
|
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-DeFniOjh.js";
|
|
15
15
|
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-CiTGOvEc.js";
|
|
16
|
-
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-
|
|
16
|
+
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-CvCK5Mm9.js";
|
|
17
17
|
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-CI0kRQkt.js";
|
|
18
18
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
|
|
19
19
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-CWktKM8a.js";
|
|
@@ -23,10 +23,10 @@ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider
|
|
|
23
23
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-C_qUP7p5.js";
|
|
24
24
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
|
|
25
25
|
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-Dz5lr5b0.js";
|
|
26
|
-
import { $ as normalizeDeliveryContext, 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, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, 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 mergeDeliveryContext, 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 deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
26
|
+
import { $ as normalizeDeliveryContext, 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, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, 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 mergeDeliveryContext, 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 deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-DLFjnVBb.js";
|
|
27
27
|
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-DRbjHIwD.js";
|
|
28
28
|
import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-D0IQ3WuX.js";
|
|
29
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
29
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BFekevcE.js";
|
|
30
30
|
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-BFekKL7i.js";
|
|
31
31
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
|
|
32
32
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
|
|
@@ -37,7 +37,7 @@ import { t as resolveIMessageAccount } from "./accounts-qtxJ-6em.js";
|
|
|
37
37
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DLyHUt31.js";
|
|
38
38
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
|
|
39
39
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DXB7tqWi.js";
|
|
40
|
-
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-
|
|
40
|
+
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-B0wGflxA.js";
|
|
41
41
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-XlyuyChD.js";
|
|
42
42
|
import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-D_LwXbc6.js";
|
|
43
43
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-DRbx2dhW.js";
|
|
@@ -51,7 +51,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DccrnjsE.js";
|
|
|
51
51
|
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-D7CTCQPm.js";
|
|
52
52
|
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-BJMb_psG.js";
|
|
53
53
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
|
|
54
|
-
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-
|
|
54
|
+
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-odEv83vv.js";
|
|
55
55
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
|
|
56
56
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
|
|
57
57
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-CsM_hJ_s.js";
|
|
@@ -81,7 +81,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
81
81
|
import AjvPkg from "ajv";
|
|
82
82
|
import { createServer } from "node:http";
|
|
83
83
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
84
|
-
import WebSocket, { WebSocket
|
|
84
|
+
import WebSocket$1, { WebSocket } from "ws";
|
|
85
85
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
86
86
|
import { createJiti } from "jiti";
|
|
87
87
|
import { Type } from "@sinclair/typebox";
|
|
@@ -5716,7 +5716,7 @@ var GatewayClient = class {
|
|
|
5716
5716
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5717
5717
|
});
|
|
5718
5718
|
}
|
|
5719
|
-
this.ws = new WebSocket
|
|
5719
|
+
this.ws = new WebSocket(url, wsOptions);
|
|
5720
5720
|
this.ws.on("open", () => {
|
|
5721
5721
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5722
5722
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -5935,7 +5935,7 @@ var GatewayClient = class {
|
|
|
5935
5935
|
return null;
|
|
5936
5936
|
}
|
|
5937
5937
|
async request(method, params, opts) {
|
|
5938
|
-
if (!this.ws || this.ws.readyState !== WebSocket
|
|
5938
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
5939
5939
|
const id = randomUUID();
|
|
5940
5940
|
const frame = {
|
|
5941
5941
|
type: "req",
|
|
@@ -7201,7 +7201,7 @@ async function routeReply(params) {
|
|
|
7201
7201
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7202
7202
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7203
7203
|
try {
|
|
7204
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7204
|
+
const { deliverOutboundPayloads } = await import("./deliver-CvCK5Mm9.js").then((n) => n.n);
|
|
7205
7205
|
return {
|
|
7206
7206
|
ok: true,
|
|
7207
7207
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -41675,7 +41675,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
41675
41675
|
return;
|
|
41676
41676
|
}
|
|
41677
41677
|
try {
|
|
41678
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
41678
|
+
const { deliverOutboundPayloads } = await import("./deliver-CvCK5Mm9.js").then((n) => n.n);
|
|
41679
41679
|
await deliverOutboundPayloads({
|
|
41680
41680
|
cfg: params.cfg,
|
|
41681
41681
|
channel,
|
|
@@ -45121,7 +45121,7 @@ async function describeStickerImage(params) {
|
|
|
45121
45121
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
45122
45122
|
try {
|
|
45123
45123
|
const buffer = await fs.readFile(imagePath);
|
|
45124
|
-
const { describeImageWithModel } = await import("./image-
|
|
45124
|
+
const { describeImageWithModel } = await import("./image-B0wGflxA.js").then((n) => n.n);
|
|
45125
45125
|
return (await describeImageWithModel({
|
|
45126
45126
|
buffer,
|
|
45127
45127
|
fileName: "sticker.webp",
|
|
@@ -47783,7 +47783,7 @@ async function preflightDiscordMessage(params) {
|
|
|
47783
47783
|
let preflightTranscript;
|
|
47784
47784
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
47785
47785
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
47786
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
47786
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-O3ASWbaG.js");
|
|
47787
47787
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
47788
47788
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
47789
47789
|
ctx: {
|
|
@@ -51789,7 +51789,7 @@ function isVoiceChannelType(type) {
|
|
|
51789
51789
|
function createDefaultDeps() {
|
|
51790
51790
|
return {
|
|
51791
51791
|
sendMessageWhatsApp: async (...args) => {
|
|
51792
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51792
|
+
const { sendMessageWhatsApp } = await import("./web-QVwKg99Q.js");
|
|
51793
51793
|
return await sendMessageWhatsApp(...args);
|
|
51794
51794
|
},
|
|
51795
51795
|
sendMessageTelegram: async (...args) => {
|
|
@@ -54696,7 +54696,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
54696
54696
|
super(options);
|
|
54697
54697
|
}
|
|
54698
54698
|
createWebSocket(url) {
|
|
54699
|
-
return new WebSocket(url, { agent });
|
|
54699
|
+
return new WebSocket$1(url, { agent });
|
|
54700
54700
|
}
|
|
54701
54701
|
}
|
|
54702
54702
|
return new ProxyGatewayPlugin();
|
|
@@ -64914,7 +64914,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
64914
64914
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
64915
64915
|
let preflightTranscript;
|
|
64916
64916
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
64917
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
64917
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-O3ASWbaG.js");
|
|
64918
64918
|
preflightTranscript = await transcribeFirstAudio({
|
|
64919
64919
|
ctx: {
|
|
64920
64920
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -67071,7 +67071,7 @@ function loadWebLoginQr() {
|
|
|
67071
67071
|
return webLoginQrPromise;
|
|
67072
67072
|
}
|
|
67073
67073
|
function loadWebChannel() {
|
|
67074
|
-
webChannelPromise ??= import("./web-
|
|
67074
|
+
webChannelPromise ??= import("./web-QVwKg99Q.js");
|
|
67075
67075
|
return webChannelPromise;
|
|
67076
67076
|
}
|
|
67077
67077
|
function loadWhatsAppActions() {
|
|
@@ -68304,8 +68304,16 @@ const GEMMA_TOKEN_PATTERNS = [
|
|
|
68304
68304
|
/<start_of_turn>(?:model|user)?/g,
|
|
68305
68305
|
/<end_of_turn>/g,
|
|
68306
68306
|
/<\|(?:fim_prefix|fim_suffix|fim_middle)\|>/g,
|
|
68307
|
-
/^\s*<bos>\s*/gm
|
|
68307
|
+
/^\s*<bos>\s*/gm,
|
|
68308
|
+
/<\|[^|>]{0,30}\|>/g,
|
|
68309
|
+
/<\|[^>]{0,30}>/g
|
|
68308
68310
|
];
|
|
68311
|
+
/**
|
|
68312
|
+
* Aggressively strip all fragments of model control token corruption from
|
|
68313
|
+
* tool arguments. This catches cases where the model produces raw garbage
|
|
68314
|
+
* like `<|<|"|<|<|\'` that doesn't match any known token template.
|
|
68315
|
+
*/
|
|
68316
|
+
const AGGRESSIVE_TOKEN_FRAGMENTS = [/<\|/g, /\|>/g];
|
|
68309
68317
|
const GEMMA_MODEL_HINTS$1 = ["gemma", "redsand/"];
|
|
68310
68318
|
function isGemmaModel$1(modelId) {
|
|
68311
68319
|
const lower = modelId.toLowerCase();
|
|
@@ -68315,6 +68323,10 @@ function isGemmaModel$1(modelId) {
|
|
|
68315
68323
|
* Strip known control tokens from text. Only applies to Gemma-family models;
|
|
68316
68324
|
* other models pass through unchanged.
|
|
68317
68325
|
*/
|
|
68326
|
+
/**
|
|
68327
|
+
* Strip known control tokens from text. Only applies to Gemma-family models;
|
|
68328
|
+
* other models pass through unchanged. Used for streamed text output.
|
|
68329
|
+
*/
|
|
68318
68330
|
function stripModelTokens(text, modelId) {
|
|
68319
68331
|
if (!text || !isGemmaModel$1(modelId)) return text;
|
|
68320
68332
|
let result = text;
|
|
@@ -68324,6 +68336,21 @@ function stripModelTokens(text, modelId) {
|
|
|
68324
68336
|
}
|
|
68325
68337
|
return result;
|
|
68326
68338
|
}
|
|
68339
|
+
/**
|
|
68340
|
+
* Aggressively strip ALL token-like fragments from a string. Used for tool
|
|
68341
|
+
* call arguments where any `<|` corruption causes downstream failures.
|
|
68342
|
+
* More aggressive than `stripModelTokens` — removes bare `<|` and `|>` fragments
|
|
68343
|
+
* that don't match any known token template.
|
|
68344
|
+
*/
|
|
68345
|
+
function stripModelTokensAggressive(text, modelId) {
|
|
68346
|
+
if (!text || !isGemmaModel$1(modelId)) return text;
|
|
68347
|
+
let result = stripModelTokens(text, modelId);
|
|
68348
|
+
for (const re of AGGRESSIVE_TOKEN_FRAGMENTS) {
|
|
68349
|
+
re.lastIndex = 0;
|
|
68350
|
+
result = result.replace(re, "");
|
|
68351
|
+
}
|
|
68352
|
+
return result;
|
|
68353
|
+
}
|
|
68327
68354
|
|
|
68328
68355
|
//#endregion
|
|
68329
68356
|
//#region src/agents/pi-tools.abort.ts
|
|
@@ -69639,10 +69666,10 @@ function wrapToolWithArgSanitization(tool, modelId) {
|
|
|
69639
69666
|
};
|
|
69640
69667
|
}
|
|
69641
69668
|
function sanitizeToolArgs(params, modelId) {
|
|
69642
|
-
if (!params || typeof params !== "object") return typeof params === "string" ?
|
|
69669
|
+
if (!params || typeof params !== "object") return typeof params === "string" ? stripModelTokensAggressive(params, modelId) : params;
|
|
69643
69670
|
if (Array.isArray(params)) return params.map((item) => sanitizeToolArgs(item, modelId));
|
|
69644
69671
|
const result = {};
|
|
69645
|
-
for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] =
|
|
69672
|
+
for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] = stripModelTokensAggressive(value, modelId);
|
|
69646
69673
|
else if (value && typeof value === "object") result[key] = sanitizeToolArgs(value, modelId);
|
|
69647
69674
|
else result[key] = value;
|
|
69648
69675
|
return result;
|
|
@@ -72811,10 +72838,6 @@ function resolveModelProfile(modelId, userProfiles) {
|
|
|
72811
72838
|
|
|
72812
72839
|
//#endregion
|
|
72813
72840
|
//#region src/agents/pi-embedded-runner/extra-params.ts
|
|
72814
|
-
const OPENROUTER_APP_HEADERS = {
|
|
72815
|
-
"HTTP-Referer": "https://symi.ai",
|
|
72816
|
-
"X-Title": "Symi"
|
|
72817
|
-
};
|
|
72818
72841
|
const ANTHROPIC_CONTEXT_1M_BETA = "context-1m-2025-08-07";
|
|
72819
72842
|
const ANTHROPIC_1M_MODEL_PREFIXES = ["claude-opus-4", "claude-sonnet-4"];
|
|
72820
72843
|
const OPENAI_RESPONSES_APIS = new Set(["openai-responses"]);
|
|
@@ -72832,70 +72855,6 @@ function resolveExtraParams(params) {
|
|
|
72832
72855
|
const profile = resolveModelProfile(modelKey, params.cfg?.models?.profiles);
|
|
72833
72856
|
if (profile.params && Object.keys(profile.params).length > 0) return { ...profile.params };
|
|
72834
72857
|
}
|
|
72835
|
-
/**
|
|
72836
|
-
* Resolve cacheRetention from extraParams, supporting both new `cacheRetention`
|
|
72837
|
-
* and legacy `cacheControlTtl` values for backwards compatibility.
|
|
72838
|
-
*
|
|
72839
|
-
* Mapping: "5m" → "short", "1h" → "long"
|
|
72840
|
-
*
|
|
72841
|
-
* Only applies to Anthropic provider (OpenRouter uses openai-completions API
|
|
72842
|
-
* with hardcoded cache_control, not the cacheRetention stream option).
|
|
72843
|
-
*
|
|
72844
|
-
* Defaults to "short" for Anthropic provider when not explicitly configured.
|
|
72845
|
-
*/
|
|
72846
|
-
function resolveCacheRetention(extraParams, provider) {
|
|
72847
|
-
if (provider !== "anthropic") return;
|
|
72848
|
-
const newVal = extraParams?.cacheRetention;
|
|
72849
|
-
if (newVal === "none" || newVal === "short" || newVal === "long") return newVal;
|
|
72850
|
-
const legacy = extraParams?.cacheControlTtl;
|
|
72851
|
-
if (legacy === "5m") return "short";
|
|
72852
|
-
if (legacy === "1h") return "long";
|
|
72853
|
-
return "short";
|
|
72854
|
-
}
|
|
72855
|
-
function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
|
|
72856
|
-
if (!extraParams || Object.keys(extraParams).length === 0) return;
|
|
72857
|
-
const streamParams = {};
|
|
72858
|
-
if (typeof extraParams.temperature === "number") streamParams.temperature = extraParams.temperature;
|
|
72859
|
-
if (typeof extraParams.maxTokens === "number") streamParams.maxTokens = extraParams.maxTokens;
|
|
72860
|
-
if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
|
|
72861
|
-
if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
|
|
72862
|
-
if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
|
|
72863
|
-
if (Array.isArray(extraParams.stop) && extraParams.stop.length > 0) streamParams.stop = extraParams.stop;
|
|
72864
|
-
if (extraParams.chat_template_kwargs && typeof extraParams.chat_template_kwargs === "object") streamParams.chat_template_kwargs = extraParams.chat_template_kwargs;
|
|
72865
|
-
const cacheRetention = resolveCacheRetention(extraParams, provider);
|
|
72866
|
-
if (cacheRetention) streamParams.cacheRetention = cacheRetention;
|
|
72867
|
-
if (Object.keys(streamParams).length === 0) return;
|
|
72868
|
-
log$2.debug(`creating streamFn wrapper with params: ${JSON.stringify(streamParams)}`);
|
|
72869
|
-
const sp = streamParams;
|
|
72870
|
-
const payloadOverrides = {};
|
|
72871
|
-
if (Array.isArray(sp.stop) && sp.stop.length > 0) payloadOverrides.stop = sp.stop;
|
|
72872
|
-
if (typeof sp.top_p === "number") payloadOverrides.top_p = sp.top_p;
|
|
72873
|
-
if (typeof sp.top_k === "number") payloadOverrides.top_k = sp.top_k;
|
|
72874
|
-
if (typeof sp.repeat_penalty === "number") payloadOverrides.repeat_penalty = sp.repeat_penalty;
|
|
72875
|
-
const hasPayloadOverrides = Object.keys(payloadOverrides).length > 0;
|
|
72876
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
72877
|
-
const wrappedStreamFn = (model, context, options) => {
|
|
72878
|
-
if (hasPayloadOverrides) {
|
|
72879
|
-
const originalOnPayload = options?.onPayload;
|
|
72880
|
-
return underlying(model, context, {
|
|
72881
|
-
...streamParams,
|
|
72882
|
-
...options,
|
|
72883
|
-
onPayload: (payload) => {
|
|
72884
|
-
if (payload && typeof payload === "object") {
|
|
72885
|
-
const p = payload;
|
|
72886
|
-
for (const [key, value] of Object.entries(payloadOverrides)) if (p[key] === void 0) p[key] = value;
|
|
72887
|
-
}
|
|
72888
|
-
originalOnPayload?.(payload);
|
|
72889
|
-
}
|
|
72890
|
-
});
|
|
72891
|
-
}
|
|
72892
|
-
return underlying(model, context, {
|
|
72893
|
-
...streamParams,
|
|
72894
|
-
...options
|
|
72895
|
-
});
|
|
72896
|
-
};
|
|
72897
|
-
return wrappedStreamFn;
|
|
72898
|
-
}
|
|
72899
72858
|
function isDirectOpenAIBaseUrl(baseUrl) {
|
|
72900
72859
|
if (typeof baseUrl !== "string" || !baseUrl.trim()) return true;
|
|
72901
72860
|
try {
|
|
@@ -72976,20 +72935,6 @@ function createAnthropicBetaHeadersWrapper(baseStreamFn, betas) {
|
|
|
72976
72935
|
};
|
|
72977
72936
|
}
|
|
72978
72937
|
/**
|
|
72979
|
-
* Create a streamFn wrapper that adds OpenRouter app attribution headers.
|
|
72980
|
-
* These headers allow Symi to appear on OpenRouter's leaderboard.
|
|
72981
|
-
*/
|
|
72982
|
-
function createOpenRouterHeadersWrapper(baseStreamFn) {
|
|
72983
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
72984
|
-
return (model, context, options) => underlying(model, context, {
|
|
72985
|
-
...options,
|
|
72986
|
-
headers: {
|
|
72987
|
-
...OPENROUTER_APP_HEADERS,
|
|
72988
|
-
...options?.headers
|
|
72989
|
-
}
|
|
72990
|
-
});
|
|
72991
|
-
}
|
|
72992
|
-
/**
|
|
72993
72938
|
* Create a streamFn wrapper that injects tool_stream=true for Z.AI providers.
|
|
72994
72939
|
*
|
|
72995
72940
|
* Z.AI's API supports the `tool_stream` parameter to enable real-time streaming
|
|
@@ -73012,82 +72957,6 @@ function createZaiToolStreamWrapper(baseStreamFn, enabled) {
|
|
|
73012
72957
|
});
|
|
73013
72958
|
};
|
|
73014
72959
|
}
|
|
73015
|
-
const GEMMA_STOP_SEQUENCES = ["<end_of_turn>", "<eos>"];
|
|
73016
|
-
const VLLM_GEMMA_HINTS = ["gemma", "redsand"];
|
|
73017
|
-
function isVllmOrGemmaProvider(provider, modelId, cfg) {
|
|
73018
|
-
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
73019
|
-
if (VLLM_GEMMA_HINTS.some((h) => lower.includes(h))) return true;
|
|
73020
|
-
const baseUrl = ((cfg?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
73021
|
-
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
73022
|
-
}
|
|
73023
|
-
/**
|
|
73024
|
-
* Wrap the stream function to fix vLLM/Gemma compat issues via onPayload:
|
|
73025
|
-
* 1. Replace `max_completion_tokens` with `max_tokens` (vLLM ignores the former)
|
|
73026
|
-
* 2. Inject Gemma stop sequences if none are set
|
|
73027
|
-
* 3. Remove unsupported fields (store, stream_options.include_usage on older vLLM)
|
|
73028
|
-
*/
|
|
73029
|
-
function createVllmCompatWrapper(baseStreamFn, extraParams) {
|
|
73030
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
73031
|
-
const configuredStop = Array.isArray(extraParams.stop) ? extraParams.stop : GEMMA_STOP_SEQUENCES;
|
|
73032
|
-
return (model, context, options) => {
|
|
73033
|
-
const originalOnPayload = options?.onPayload;
|
|
73034
|
-
return underlying(model, context, {
|
|
73035
|
-
...options,
|
|
73036
|
-
onPayload: (payload) => {
|
|
73037
|
-
if (payload && typeof payload === "object") {
|
|
73038
|
-
const p = payload;
|
|
73039
|
-
if (p.max_completion_tokens && !p.max_tokens) {
|
|
73040
|
-
p.max_tokens = p.max_completion_tokens;
|
|
73041
|
-
delete p.max_completion_tokens;
|
|
73042
|
-
}
|
|
73043
|
-
if (!p.stop && configuredStop.length > 0) p.stop = configuredStop;
|
|
73044
|
-
delete p.store;
|
|
73045
|
-
}
|
|
73046
|
-
originalOnPayload?.(payload);
|
|
73047
|
-
}
|
|
73048
|
-
});
|
|
73049
|
-
};
|
|
73050
|
-
}
|
|
73051
|
-
/**
|
|
73052
|
-
* Apply extra params (like temperature) to an agent's streamFn.
|
|
73053
|
-
* Also adds OpenRouter app attribution headers when using the OpenRouter provider.
|
|
73054
|
-
*
|
|
73055
|
-
* @internal Exported for testing
|
|
73056
|
-
*/
|
|
73057
|
-
function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverride) {
|
|
73058
|
-
const extraParams = resolveExtraParams({
|
|
73059
|
-
cfg,
|
|
73060
|
-
provider,
|
|
73061
|
-
modelId
|
|
73062
|
-
});
|
|
73063
|
-
const override = extraParamsOverride && Object.keys(extraParamsOverride).length > 0 ? Object.fromEntries(Object.entries(extraParamsOverride).filter(([, value]) => value !== void 0)) : void 0;
|
|
73064
|
-
const merged = Object.assign({}, extraParams, override);
|
|
73065
|
-
const wrappedStreamFn = createStreamFnWithExtraParams(agent.streamFn, merged, provider);
|
|
73066
|
-
if (wrappedStreamFn) {
|
|
73067
|
-
log$2.debug(`applying extraParams to agent streamFn for ${provider}/${modelId}`);
|
|
73068
|
-
agent.streamFn = wrappedStreamFn;
|
|
73069
|
-
}
|
|
73070
|
-
const anthropicBetas = resolveAnthropicBetas(merged, provider, modelId);
|
|
73071
|
-
if (anthropicBetas?.length) {
|
|
73072
|
-
log$2.debug(`applying Anthropic beta header for ${provider}/${modelId}: ${anthropicBetas.join(",")}`);
|
|
73073
|
-
agent.streamFn = createAnthropicBetaHeadersWrapper(agent.streamFn, anthropicBetas);
|
|
73074
|
-
}
|
|
73075
|
-
if (provider === "openrouter") {
|
|
73076
|
-
log$2.debug(`applying OpenRouter app attribution headers for ${provider}/${modelId}`);
|
|
73077
|
-
agent.streamFn = createOpenRouterHeadersWrapper(agent.streamFn);
|
|
73078
|
-
}
|
|
73079
|
-
if (provider === "zai" || provider === "z-ai") {
|
|
73080
|
-
if (merged?.tool_stream !== false) {
|
|
73081
|
-
log$2.debug(`enabling Z.AI tool_stream for ${provider}/${modelId}`);
|
|
73082
|
-
agent.streamFn = createZaiToolStreamWrapper(agent.streamFn, true);
|
|
73083
|
-
}
|
|
73084
|
-
}
|
|
73085
|
-
if (isVllmOrGemmaProvider(provider, modelId, cfg)) {
|
|
73086
|
-
log$2.debug(`applying vLLM/Gemma compat wrapper for ${provider}/${modelId}`);
|
|
73087
|
-
agent.streamFn = createVllmCompatWrapper(agent.streamFn, merged);
|
|
73088
|
-
}
|
|
73089
|
-
agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
|
|
73090
|
-
}
|
|
73091
72960
|
|
|
73092
72961
|
//#endregion
|
|
73093
72962
|
//#region src/utils/safe-json.ts
|
|
@@ -73364,6 +73233,74 @@ function createCacheTrace(params) {
|
|
|
73364
73233
|
};
|
|
73365
73234
|
}
|
|
73366
73235
|
|
|
73236
|
+
//#endregion
|
|
73237
|
+
//#region src/agents/model-aware-stream.ts
|
|
73238
|
+
/**
|
|
73239
|
+
* Create a single stream function wrapper that handles all provider-specific
|
|
73240
|
+
* param injection via one onPayload hook.
|
|
73241
|
+
*
|
|
73242
|
+
* Replaces: createStreamFnWithExtraParams, createVllmCompatWrapper,
|
|
73243
|
+
* createOpenRouterHeadersWrapper.
|
|
73244
|
+
*/
|
|
73245
|
+
function createModelAwareStreamFn(opts) {
|
|
73246
|
+
const underlying = opts.baseStreamFn ?? streamSimple;
|
|
73247
|
+
const mergedParams = {
|
|
73248
|
+
...opts.profile.params,
|
|
73249
|
+
...opts.configExtraParams,
|
|
73250
|
+
...opts.streamParamsOverride
|
|
73251
|
+
};
|
|
73252
|
+
const nativeOpts = {};
|
|
73253
|
+
if (typeof mergedParams.temperature === "number") nativeOpts.temperature = mergedParams.temperature;
|
|
73254
|
+
if (typeof mergedParams.max_tokens === "number") nativeOpts.maxTokens = mergedParams.max_tokens;
|
|
73255
|
+
else if (typeof mergedParams.maxTokens === "number") nativeOpts.maxTokens = mergedParams.maxTokens;
|
|
73256
|
+
const injections = {};
|
|
73257
|
+
if (Array.isArray(mergedParams.stop) && mergedParams.stop.length > 0) injections.stop = mergedParams.stop;
|
|
73258
|
+
if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
|
|
73259
|
+
if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
|
|
73260
|
+
if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
|
|
73261
|
+
const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
|
|
73262
|
+
const isOpenRouter = opts.provider === "openrouter";
|
|
73263
|
+
const extraHeaders = {};
|
|
73264
|
+
if (isOpenRouter) {
|
|
73265
|
+
extraHeaders["HTTP-Referer"] = "https://symi.ai";
|
|
73266
|
+
extraHeaders["X-Title"] = "Symi";
|
|
73267
|
+
}
|
|
73268
|
+
const hasExtraHeaders = Object.keys(extraHeaders).length > 0;
|
|
73269
|
+
const onPayloadHook = (payload, callerOnPayload) => {
|
|
73270
|
+
if (payload && typeof payload === "object") {
|
|
73271
|
+
const p = payload;
|
|
73272
|
+
for (const [key, val] of Object.entries(injections)) if (p[key] === void 0) p[key] = val;
|
|
73273
|
+
if (isVllm) {
|
|
73274
|
+
if (p.max_completion_tokens && !p.max_tokens) {
|
|
73275
|
+
p.max_tokens = p.max_completion_tokens;
|
|
73276
|
+
delete p.max_completion_tokens;
|
|
73277
|
+
}
|
|
73278
|
+
delete p.store;
|
|
73279
|
+
}
|
|
73280
|
+
}
|
|
73281
|
+
callerOnPayload?.(payload);
|
|
73282
|
+
};
|
|
73283
|
+
return (model, context, options) => {
|
|
73284
|
+
const callerOnPayload = options?.onPayload;
|
|
73285
|
+
return underlying(model, context, {
|
|
73286
|
+
...nativeOpts,
|
|
73287
|
+
...options,
|
|
73288
|
+
onPayload: (payload) => onPayloadHook(payload, callerOnPayload),
|
|
73289
|
+
...hasExtraHeaders ? { headers: {
|
|
73290
|
+
...extraHeaders,
|
|
73291
|
+
...options?.headers
|
|
73292
|
+
} } : {}
|
|
73293
|
+
});
|
|
73294
|
+
};
|
|
73295
|
+
}
|
|
73296
|
+
/** Detect vLLM/Gemma providers by model hints or baseUrl patterns. */
|
|
73297
|
+
function isVllmProvider(provider, modelId, config) {
|
|
73298
|
+
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
73299
|
+
if (["gemma", "redsand"].some((h) => lower.includes(h))) return true;
|
|
73300
|
+
const baseUrl = ((config?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
73301
|
+
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
73302
|
+
}
|
|
73303
|
+
|
|
73367
73304
|
//#endregion
|
|
73368
73305
|
//#region src/auto-reply/reply/streaming-directives.ts
|
|
73369
73306
|
const splitTrailingDirective = (text) => {
|
|
@@ -76411,14 +76348,39 @@ async function runEmbeddedAttempt(params) {
|
|
|
76411
76348
|
modelApi: params.model.api,
|
|
76412
76349
|
workspaceDir: params.workspaceDir
|
|
76413
76350
|
});
|
|
76414
|
-
|
|
76415
|
-
|
|
76416
|
-
|
|
76417
|
-
|
|
76418
|
-
|
|
76419
|
-
|
|
76420
|
-
|
|
76421
|
-
|
|
76351
|
+
{
|
|
76352
|
+
let baseStreamFn = streamSimple;
|
|
76353
|
+
if (params.model.api === "ollama") {
|
|
76354
|
+
const providerConfig = params.config?.models?.providers?.[params.model.provider];
|
|
76355
|
+
const modelBaseUrl = typeof params.model.baseUrl === "string" ? params.model.baseUrl.trim() : "";
|
|
76356
|
+
const providerBaseUrl = typeof providerConfig?.baseUrl === "string" ? providerConfig.baseUrl.trim() : "";
|
|
76357
|
+
baseStreamFn = createOllamaStreamFn(modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL);
|
|
76358
|
+
}
|
|
76359
|
+
const configExtraParams = resolveExtraParams({
|
|
76360
|
+
cfg: params.config,
|
|
76361
|
+
provider: params.provider,
|
|
76362
|
+
modelId: params.modelId
|
|
76363
|
+
});
|
|
76364
|
+
activeSession.agent.streamFn = createModelAwareStreamFn({
|
|
76365
|
+
baseStreamFn,
|
|
76366
|
+
profile: modelProfile,
|
|
76367
|
+
provider: params.provider,
|
|
76368
|
+
modelId: params.modelId,
|
|
76369
|
+
config: params.config,
|
|
76370
|
+
configExtraParams,
|
|
76371
|
+
streamParamsOverride: params.streamParams
|
|
76372
|
+
});
|
|
76373
|
+
const merged = {
|
|
76374
|
+
...configExtraParams,
|
|
76375
|
+
...params.streamParams
|
|
76376
|
+
};
|
|
76377
|
+
const anthropicBetas = resolveAnthropicBetas(merged, params.provider, params.modelId);
|
|
76378
|
+
if (anthropicBetas?.length) activeSession.agent.streamFn = createAnthropicBetaHeadersWrapper(activeSession.agent.streamFn, anthropicBetas);
|
|
76379
|
+
if (params.provider === "zai" || params.provider === "z-ai") {
|
|
76380
|
+
if (merged?.tool_stream !== false) activeSession.agent.streamFn = createZaiToolStreamWrapper(activeSession.agent.streamFn, true);
|
|
76381
|
+
}
|
|
76382
|
+
activeSession.agent.streamFn = createOpenAIResponsesStoreWrapper(activeSession.agent.streamFn);
|
|
76383
|
+
}
|
|
76422
76384
|
if (cacheTrace) {
|
|
76423
76385
|
cacheTrace.recordStage("session:loaded", {
|
|
76424
76386
|
messages: activeSession.messages,
|