@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.
Files changed (255) hide show
  1. package/dist/{accounts-Cd816n6l.js → accounts-DDuIpcln.js} +7 -7
  2. package/dist/{accounts-mN_EcgxC.js → accounts-DyJN4_vR.js} +1 -1
  3. package/dist/{accounts-CokRskCl.js → accounts-bK-Yqdwx.js} +1 -1
  4. package/dist/{acp-cli-BgyJMtqt.js → acp-cli-Cu4icbJT.js} +6 -6
  5. package/dist/{agent-scope-BRwEc2pG.js → agent-scope-CgUHAtCo.js} +18 -18
  6. package/dist/{agents-DjLt6jc3.js → agents-CI3xxYc_.js} +4 -4
  7. package/dist/{agents.config-u_ibObha.js → agents.config-DCE3RGr9.js} +2 -2
  8. package/dist/{agents.config-Dt7B_P5o.js → agents.config-DTUAM1AG.js} +1 -1
  9. package/dist/{api-key-rotation-CEr3lKih.js → api-key-rotation-CzuPlV2t.js} +1 -1
  10. package/dist/{audio-preflight-CPBOQV4I.js → audio-preflight-C40mKAp7.js} +4 -4
  11. package/dist/{audio-preflight-CjysqO8U.js → audio-preflight-CWnxkaac.js} +28 -28
  12. package/dist/{audio-preflight-D02HwB-I.js → audio-preflight-O3ASWbaG.js} +4 -4
  13. package/dist/{audit-BSB9NPSO.js → audit-CrITRV6w.js} +23 -23
  14. package/dist/{auth-choice-DmSG7c8J.js → auth-choice-DuQwRfJc.js} +8 -8
  15. package/dist/{auth-choice-DUUu6Nhg.js → auth-choice-IiIysHGO.js} +1 -1
  16. package/dist/{auth-token-DC5w1WoS.js → auth-token-BnOynwk4.js} +1 -1
  17. package/dist/{banner-BiAcdT2T.js → banner-xhDZu_ZJ.js} +1 -1
  18. package/dist/{bindings-ChzePa8q.js → bindings-DFaVVCsf.js} +1 -1
  19. package/dist/{browser-cli-C4D9Ql3c.js → browser-cli-BG4qPxpM.js} +9 -9
  20. package/dist/build-info.json +3 -3
  21. package/dist/bundled/boot-md/handler.js +6 -6
  22. package/dist/bundled/session-memory/handler.js +6 -6
  23. package/dist/{call-Dd7-bkfG.js → call-CJaS1iRF.js} +9 -9
  24. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  25. package/dist/{channel-options-vQREpu-n.js → channel-options-D3gGVwBd.js} +2 -2
  26. package/dist/{channel-options-ClfXE1B7.js → channel-options-Dvxd7eJY.js} +1 -1
  27. package/dist/{channel-selection-DjfBv8kq.js → channel-selection-DuWs0Aak.js} +1 -1
  28. package/dist/{channel-web-y6pd_GHr.js → channel-web-a5tX1YI3.js} +17 -17
  29. package/dist/{channels-cli-CjYD1_OO.js → channels-cli-BLUkl5Li.js} +75 -75
  30. package/dist/{channels-cli-suXRcyfF.js → channels-cli-C9wBYmDe.js} +4 -4
  31. package/dist/{channels-status-issues-BoH1ZJPN.js → channels-status-issues-B_kBkl_u.js} +1 -1
  32. package/dist/{chrome-EyvdASWt.js → chrome-BFekevcE.js} +7 -7
  33. package/dist/{chrome-D2SKJnR7.js → chrome-CDJYxX5a.js} +7 -7
  34. package/dist/{chrome-r4RThPxq.js → chrome-DtPkPq9T.js} +2 -2
  35. package/dist/cli/daemon-cli.js +1 -1
  36. package/dist/{cli-mbfUlFn3.js → cli-CaEE46xi.js} +1 -1
  37. package/dist/{cli-B-911QZL.js → cli-Cw45F0yJ.js} +62 -62
  38. package/dist/{client-BsrZnuSi.js → client-CQSyCS4M.js} +1 -1
  39. package/dist/{command-registry-y8CXSD5O.js → command-registry-ea9SD1eA.js} +9 -9
  40. package/dist/{commands-CtocZ4Lg.js → commands-BNLCWX6e.js} +1 -1
  41. package/dist/{commands-registry-BZ0ZSQpM.js → commands-registry-BT0-zzs3.js} +3 -3
  42. package/dist/{completion-cli-BLrwUAyo.js → completion-cli-CMJmUQbI.js} +12 -12
  43. package/dist/{completion-cli-2Mi5hts2.js → completion-cli-DVkiEAEA.js} +2 -2
  44. package/dist/{config-CJMcIRQM.js → config-CHwyw6l5.js} +2 -2
  45. package/dist/{config-cli-CF-wdLkO.js → config-cli-B2d28_hb.js} +4 -4
  46. package/dist/{config-cli-tYZAnvgQ.js → config-cli-VIg0PSyq.js} +1 -1
  47. package/dist/{config-guard-C1Rs8NZG.js → config-guard-BflmO0t7.js} +12 -12
  48. package/dist/{config-validation-ChQQVndI.js → config-validation-CmimHAES.js} +1 -1
  49. package/dist/{configure-si19m30s.js → configure-C_TVBt76.js} +3 -3
  50. package/dist/{configure-BHKdqhLb.js → configure-D-3FiJbK.js} +15 -15
  51. package/dist/{control-service-B8H3Bqpv.js → control-service-Bz7rxLWq.js} +4 -4
  52. package/dist/{control-ui-assets-DqGziq7x.js → control-ui-assets-Z947tKLt.js} +1 -1
  53. package/dist/{cron-cli-YrMWJCkm.js → cron-cli-DBIlCvp3.js} +10 -10
  54. package/dist/{daemon-cli-Dx4SXRyp.js → daemon-cli-DscwlsKW.js} +11 -11
  55. package/dist/{daemon-runtime--RiRUx_2.js → daemon-runtime-2mwX-jqj.js} +10 -10
  56. package/dist/{deliver-C-37cZUe.js → deliver-BH0l3UKW.js} +1 -1
  57. package/dist/{deliver-Um8yyhRA.js → deliver-CceEhg3d.js} +7 -7
  58. package/dist/{deliver-D1ZN6-fl.js → deliver-CvCK5Mm9.js} +1 -1
  59. package/dist/{devices-cli-DAJ84AOe.js → devices-cli-Dds-25Ve.js} +6 -6
  60. package/dist/{diagnostics-D2yUMZN1.js → diagnostics-BAMlsVVX.js} +5 -5
  61. package/dist/{directory-cli-C4h8KQLH.js → directory-cli-CpUByQew.js} +7 -7
  62. package/dist/{dm-policy-shared-BCSw0GJS.js → dm-policy-shared-Bh3TbexU.js} +2 -2
  63. package/dist/{dns-cli-s0ZWvTPm.js → dns-cli-Beyzdh3S.js} +3 -3
  64. package/dist/{dock-BYiRZSgZ.js → dock-BhS32F6E.js} +4 -4
  65. package/dist/{docs-cli-BfPfHTDs.js → docs-cli-BpnEOtJi.js} +1 -1
  66. package/dist/{doctor-completion-C19QYsQN.js → doctor-completion-CJHJYIwQ.js} +2 -2
  67. package/dist/{doctor-completion-Dn_Kn4gz.js → doctor-completion-DeRX6gkI.js} +1 -1
  68. package/dist/{doctor-config-flow-D05HlWdn.js → doctor-config-flow-QnaBd8kL.js} +10 -10
  69. package/dist/entry.js +1 -1
  70. package/dist/{exec-approvals-cli-Df1lyRyE.js → exec-approvals-cli-BliRl8VB.js} +13 -13
  71. package/dist/extensionAPI.js +6 -6
  72. package/dist/{fs-safe-CTDvb1DF.js → fs-safe-CUjO1ca2.js} +6 -6
  73. package/dist/{gateway-cli-B7khyAHs.js → gateway-cli-BDDHBfYP.js} +126 -121
  74. package/dist/{gateway-cli-DG_Mdw0H.js → gateway-cli-DiDJ6Z2d.js} +22 -17
  75. package/dist/{gateway-rpc-DFeD8pZh.js → gateway-rpc-BxkKeCZ0.js} +1 -1
  76. package/dist/{glass-ui-ws-BmQAULMj.js → glass-ui-ws-Bj1IuJXt.js} +82 -82
  77. package/dist/{glass-ui-ws-BAub_JoN.js → glass-ui-ws-rGIAkViC.js} +7 -7
  78. package/dist/{health-CboWXJkq.js → health-Bst5HnLF.js} +1 -1
  79. package/dist/{health-DkKXiUEF.js → health-CypF_2ZD.js} +13 -13
  80. package/dist/{hooks-cli-DLM_5caf.js → hooks-cli-CDMcqTy4.js} +2 -2
  81. package/dist/{hooks-cli-BrO_9pas.js → hooks-cli-CfsqqxPX.js} +76 -76
  82. package/dist/{image-Cp3JDEBB.js → image-B0wGflxA.js} +1 -1
  83. package/dist/{image-DcpMiprB.js → image-CHzdaNJ4.js} +1 -1
  84. package/dist/{image-BiY-PfMh.js → image-D9uvDTrc.js} +3 -3
  85. package/dist/{image-ops-DYbDWaIA.js → image-ops-1OJMSAUX.js} +10 -10
  86. package/dist/index.js +72 -72
  87. package/dist/{inspect-ZJkNX0WL.js → inspect-CllGjsWo.js} +4 -4
  88. package/dist/{install-safe-path-Qqr_t_tH.js → install-safe-path-tCLiMpmO.js} +11 -11
  89. package/dist/{installs-O9KlRu9h.js → installs-C1Cebk97.js} +10 -10
  90. package/dist/{ir-Dt4hOzxG.js → ir-DZam9q5M.js} +6 -6
  91. package/dist/{lifecycle-core-BkPSoGM2.js → lifecycle-core-D6LYXpFj.js} +5 -5
  92. package/dist/llm-slug-generator.js +6 -6
  93. package/dist/{local-roots-BBeKX7PX.js → local-roots-aAFLQGkY.js} +2 -2
  94. package/dist/{login-1sleXoB4.js → login-dIlDkG4X.js} +3 -3
  95. package/dist/{login-qr-wCWBOMwB.js → login-qr-pbXdFORv.js} +5 -5
  96. package/dist/{logs-cli-DVeEdUCU.js → logs-cli-xOzIPrHm.js} +7 -7
  97. package/dist/{manager-C1CfGzZ2.js → manager-D4LJSRyZ.js} +13 -13
  98. package/dist/{markdown-tables-ZwP14ydw.js → markdown-tables-CEbN0fEm.js} +1 -1
  99. package/dist/{memory-cli-lk6fRiwy.js → memory-cli-Ca5r9AUb.js} +14 -14
  100. package/dist/{model-catalog-C3NLvWC2.js → model-catalog-DvBJ8pMD.js} +4 -4
  101. package/dist/{model-picker-LKZLY2DL.js → model-picker-Ddo3jHe-.js} +3 -3
  102. package/dist/{model-selection-X1oLh3CE.js → model-selection-CyFvYcRt.js} +9 -9
  103. package/dist/{model-CeeOcylL.js → model-tWhwnFf8.js} +1 -1
  104. package/dist/{models-BmiRYEVd.js → models-ZEOGlFx7.js} +2 -2
  105. package/dist/{models-cli-Tf61I97Q.js → models-cli-BM1QyeXr.js} +3 -3
  106. package/dist/{models-cli-4vQrbW6G.js → models-cli-BwOQhZ_c.js} +72 -72
  107. package/dist/{models-config-CqDdkHJq.js → models-config-qyOXrOli.js} +7 -7
  108. package/dist/{node-cli-Jj2LTGzF.js → node-cli-C_G-Q3h-.js} +28 -28
  109. package/dist/{node-service-CJygtY5M.js → node-service-Cxz4e-Qd.js} +1 -1
  110. package/dist/{nodes-cli-C43ifECe.js → nodes-cli-BcnuJajV.js} +10 -10
  111. package/dist/{nodes-screen-C99kfE1u.js → nodes-screen-VBGXKdLk.js} +4 -4
  112. package/dist/{npm-registry-spec-DR_at_Hp.js → npm-registry-spec-C2JDdSZS.js} +9 -9
  113. package/dist/{onboard-FpptSqHZ.js → onboard-CU-pntZD.js} +2 -2
  114. package/dist/{onboard-D8uxVvMq.js → onboard-DQ34giB5.js} +13 -13
  115. package/dist/{onboard-channels-DOKid2w1.js → onboard-channels-BOBxxhHX.js} +5 -5
  116. package/dist/{onboard-channels-Q_xxgZ8O.js → onboard-channels-g5cvwJpx.js} +1 -1
  117. package/dist/{onboard-custom-DPJiy9aT.js → onboard-custom-C7O-zfQ1.js} +3 -3
  118. package/dist/{onboard-helpers-Dixh6cNh.js → onboard-helpers-ZmZYzlq3.js} +8 -8
  119. package/dist/{onboard-hooks-lsws7g2s.js → onboard-hooks-BAA8CoVv.js} +1 -1
  120. package/dist/{onboard-remote-B66ZWtkN.js → onboard-remote-zUjD7UtM.js} +1 -1
  121. package/dist/{onboard-skills-B0IA09ig.js → onboard-skills-BB0YhUmF.js} +4 -4
  122. package/dist/{onboarding-CdlGKa0U.js → onboarding-CXWUjdM5.js} +13 -13
  123. package/dist/{onboarding-DhIEUmp5.js → onboarding-DWs6tHZ9.js} +3 -3
  124. package/dist/{onboarding.finalize-CEYLIXkq.js → onboarding.finalize-CAYf88mf.js} +6 -6
  125. package/dist/{onboarding.finalize-DyBsPxXJ.js → onboarding.finalize-vupGASMK.js} +74 -74
  126. package/dist/{onboarding.gateway-config-CCJqI0kw.js → onboarding.gateway-config-CJUgDC6Y.js} +14 -14
  127. package/dist/{openai-model-default-BJ1IZ3TN.js → openai-model-default-DMjQRsb1.js} +2 -2
  128. package/dist/{outbound-NJCy0h4x.js → outbound-DB5Zus0-.js} +4 -4
  129. package/dist/{outbound-attachment-D62E0xDI.js → outbound-attachment-D_QuKi8U.js} +2 -2
  130. package/dist/{pairing-cli-CcW0ndhB.js → pairing-cli-CBLfGvqW.js} +8 -8
  131. package/dist/{pairing-labels-27SOKDzJ.js → pairing-labels-2S6x2UoV.js} +1 -1
  132. package/dist/{pairing-store-B8ktu-6j.js → pairing-store-CK726Dzq.js} +2 -2
  133. package/dist/{pairing-token-AV-MMfVE.js → pairing-token-CX3NN_qj.js} +7 -7
  134. package/dist/{paths-CT6jsi4E.js → paths-BBm9fwuG.js} +1 -1
  135. package/dist/{pi-auth-json-CCneTXUh.js → pi-auth-json-DayrlDg_.js} +3 -3
  136. package/dist/{pi-embedded-wr4HXhzm.js → pi-embedded-CJsSOG2j.js} +147 -185
  137. package/dist/{pi-embedded-BThV36aG.js → pi-embedded-DwbQz0MC.js} +147 -185
  138. package/dist/{pi-embedded-helpers-DO6u9K2t.js → pi-embedded-helpers-CNPyv_ax.js} +6 -6
  139. package/dist/{pi-embedded-helpers-ag2bosuj.js → pi-embedded-helpers-DLFjnVBb.js} +4 -4
  140. package/dist/{pi-embedded-helpers-B8kqLWns.js → pi-embedded-helpers-lgx_U5KS.js} +4 -4
  141. package/dist/{pi-tools.policy-juZV2uUv.js → pi-tools.policy-CIDBbw6x.js} +4 -4
  142. package/dist/{plugin-auto-enable-Bbm7MwFV.js → plugin-auto-enable-BzX1uAKy.js} +2 -2
  143. package/dist/{plugin-registry-DvWWctC9.js → plugin-registry-BDpdOTei.js} +1 -1
  144. package/dist/{plugin-registry-lWWSu9UD.js → plugin-registry-CZeHSx_c.js} +3 -3
  145. package/dist/plugin-sdk/agents/model-aware-stream.d.ts +41 -0
  146. package/dist/plugin-sdk/agents/model-token-filter.d.ts +11 -0
  147. package/dist/plugin-sdk/agents/pi-embedded-runner/extra-params.d.ts +13 -0
  148. package/dist/plugin-sdk/{channel-web-BnrTC55Y.js → channel-web-uUypcT9Q.js} +1 -1
  149. package/dist/plugin-sdk/index.js +2 -2
  150. package/dist/plugin-sdk/{reply-kuMxu6Q4.js → reply-DTKTuCrn.js} +133 -171
  151. package/dist/plugin-sdk/{web-TMIhKQyF.js → web-Dh6Youzv.js} +2 -2
  152. package/dist/{plugins-BAyxWQSz.js → plugins-DKDeQZF0.js} +2 -2
  153. package/dist/{plugins-cli-BHfzYAq6.js → plugins-cli-CCQ3skeQ.js} +71 -71
  154. package/dist/{plugins-cli-wlWRx4Oj.js → plugins-cli-D_RzeRoE.js} +2 -2
  155. package/dist/{ports-OZQlocB7.js → ports-BOmtxoTv.js} +2 -2
  156. package/dist/{ports-b36gHZbA.js → ports-BX0kKI0g.js} +1 -1
  157. package/dist/{program-CKy7s-bm.js → program-Cl9i8ubQ.js} +7 -7
  158. package/dist/{program-context-D4gbh6dg.js → program-context-BbmYGW-V.js} +39 -39
  159. package/dist/{prompt-select-styled-bh0GLMiQ.js → prompt-select-styled-BN0T6GxF.js} +4 -4
  160. package/dist/{prompt-select-styled-DlGPNq9c.js → prompt-select-styled-BfuyvChh.js} +38 -38
  161. package/dist/{provider-auth-helpers-B-YsKbwc.js → provider-auth-helpers-CkmLFHXL.js} +1 -1
  162. package/dist/{provider-auth-helpers-Bd5VVReu.js → provider-auth-helpers-CuT5EHza.js} +5 -5
  163. package/dist/{push-apns-ByyOJyDl.js → push-apns-CFkFVwEz.js} +1 -1
  164. package/dist/{push-apns-0et2AR44.js → push-apns-DeJt9kAO.js} +4 -4
  165. package/dist/{pw-ai-Ch7liUOW.js → pw-ai-BnAKvSuw.js} +1 -1
  166. package/dist/{pw-ai-1htA-NnS.js → pw-ai-De-KR9_s.js} +1 -1
  167. package/dist/{pw-ai-MVzi113V.js → pw-ai-DqL87js3.js} +7 -7
  168. package/dist/{qmd-manager-BP2r8b1D.js → qmd-manager-D85GJrir.js} +18 -18
  169. package/dist/{qr-cli-17laLZm_.js → qr-cli-jd9LdZpq.js} +3 -3
  170. package/dist/{register.agent-oKma6YjU.js → register.agent-BQm4YmZp.js} +6 -6
  171. package/dist/{register.agent-Dhijhxr5.js → register.agent-BygseJ7t.js} +81 -81
  172. package/dist/register.configure-C2fhjZze.js +147 -0
  173. package/dist/{register.configure-BX8vQ2Np.js → register.configure-Cj95vB2U.js} +6 -6
  174. package/dist/{register.maintenance-OJCduNdt.js → register.maintenance-CClfXq5e.js} +8 -8
  175. package/dist/{register.maintenance-B3TPb969.js → register.maintenance-K1x3E7OS.js} +84 -84
  176. package/dist/{register.message-CX8C_Fds.js → register.message-BSr-kUvJ.js} +2 -2
  177. package/dist/{register.message-D0aswsGo.js → register.message-CSRzBl-c.js} +63 -63
  178. package/dist/{register.onboard-CSepiSPt.js → register.onboard-Bd6wPydW.js} +4 -4
  179. package/dist/{register.onboard-BHTyEs6d.js → register.onboard-TsU21RR7.js} +74 -74
  180. package/dist/{register.setup-uhpgkBjU.js → register.setup-C9gu0W5l.js} +77 -77
  181. package/dist/{register.setup-lZSHKiGQ.js → register.setup-DK-zsne2.js} +4 -4
  182. package/dist/{register.status-health-sessions-Cbavf8do.js → register.status-health-sessions-DN5Ui3V0.js} +3 -3
  183. package/dist/{register.status-health-sessions-v1KN3eEp.js → register.status-health-sessions-rZsuoqtr.js} +75 -75
  184. package/dist/{register.subclis-DBEv5xOP.js → register.subclis-DnzHFtLz.js} +9 -9
  185. package/dist/{replies-BL7IBg12.js → replies-vgss3_QA.js} +1 -1
  186. package/dist/{reply-DVxU0AMq.js → reply-Ca3slrA3.js} +262 -300
  187. package/dist/{reply-prefix-BLOOs1aW.js → reply-prefix-CE2YmmsD.js} +1 -1
  188. package/dist/{resolve-route-BcnaXYvh.js → resolve-route-BMoTaVAH.js} +2 -2
  189. package/dist/{routes-CE-ohckF.js → routes-Ba9CUQ8M.js} +8 -8
  190. package/dist/{rpc-wovSCB5v.js → rpc-BfhojW8g.js} +1 -1
  191. package/dist/{run-main-DspjiCY1.js → run-main-DlHh5iOO.js} +14 -14
  192. package/dist/{runner-Cen70krW.js → runner-CUglpiFP.js} +20 -20
  193. package/dist/{runner-BcQ0sF9T.js → runner-DUBExAb5.js} +1 -1
  194. package/dist/{runner-D0QUGA_X.js → runner-odEv83vv.js} +1 -1
  195. package/dist/{sandbox-BzNrUHpt.js → sandbox-C-T6hOMv.js} +18 -18
  196. package/dist/{sandbox-cli-CZrMO34w.js → sandbox-cli-BllVdQzR.js} +20 -20
  197. package/dist/{security-cli-CeBoEmeN.js → security-cli-BFLtWWHy.js} +36 -36
  198. package/dist/{send-dH0xroTu.js → send-CPF8hSFp.js} +4 -4
  199. package/dist/{send-C95ZRvja.js → send-CXxQ_f7L.js} +6 -6
  200. package/dist/{send-BnuIB59F.js → send-CZr1hVHY.js} +13 -13
  201. package/dist/{send-BEeuDXqy.js → send-Cutb0ZDY.js} +6 -6
  202. package/dist/{send-BjdAgYLu.js → send-tanEMpHN.js} +6 -6
  203. package/dist/{server-context-DUXqnh6l.js → server-context-CEpFjqSk.js} +5 -5
  204. package/dist/{server-methods-BgBq7KRL.js → server-methods-BYOkyf-q.js} +54 -54
  205. package/dist/{server-methods-B9alalq5.js → server-methods-b_Qod4tt.js} +7 -7
  206. package/dist/{server-node-events-BrBsrcCd.js → server-node-events-60nWpTh1.js} +63 -63
  207. package/dist/{server-node-events-DWG81_Fo.js → server-node-events-oU4Amei7.js} +2 -2
  208. package/dist/{service--qMN5DPm.js → service-Cl74hx8J.js} +15 -15
  209. package/dist/{session-CsIk0Sqq.js → session-DIBTkyvE.js} +2 -2
  210. package/dist/{sessions-D5a7H247.js → sessions-DgYpBvse.js} +13 -13
  211. package/dist/{shared-Jm_QdQJQ.js → shared-BJvwnR5z.js} +1 -1
  212. package/dist/{shared-Gi3l7nlY.js → shared-Knv1hy6h.js} +3 -3
  213. package/dist/{skill-commands-ZXbEITKi.js → skill-commands-Cxw-jNxU.js} +5 -5
  214. package/dist/{skill-scanner-CXg9eeyc.js → skill-scanner-CLs8u6vQ.js} +5 -5
  215. package/dist/{skills-DqQUtOph.js → skills-6jdJQ5ZL.js} +4 -4
  216. package/dist/{skills-cli-D1JL_utC.js → skills-cli-BZTBLQTt.js} +7 -7
  217. package/dist/{skills-install-DjcTy3CT.js → skills-install-D67isO1L.js} +3 -3
  218. package/dist/{skills-status-DS-NZQiq.js → skills-status-CURJKnyY.js} +1 -1
  219. package/dist/{sqlite-BV5ILFtC.js → sqlite-Dx3J_aSE.js} +12 -12
  220. package/dist/{status-CgPPKk09.js → status-BXW5l4sd.js} +25 -25
  221. package/dist/{status-DxodHhzX.js → status-BxbbINLV.js} +2 -2
  222. package/dist/{status-DqMwkAnF.js → status-D3-lP2_9.js} +1 -1
  223. package/dist/{status-CkJV2sl6.js → status-kdz9P3tw.js} +3 -3
  224. package/dist/{status.update-CmGpjKSr.js → status.update-DtwCUTf-.js} +3 -3
  225. package/dist/{store-DvtcmOKj.js → store-r1DJSDq-.js} +5 -5
  226. package/dist/{subagent-registry-CBklD0OL.js → subagent-registry-CbTbJKLs.js} +133 -171
  227. package/dist/{symi-root-MF6_6SCS.js → symi-root-CrGJbkzf.js} +2 -2
  228. package/dist/{system-cli-Buhvt_H5.js → system-cli-UMsMEurS.js} +11 -11
  229. package/dist/{systemd-hints-Db0oImvK.js → systemd-hints-BR6gChwm.js} +6 -6
  230. package/dist/{systemd-linger-BXwqn1jL.js → systemd-linger-aQ75ZlXY.js} +1 -1
  231. package/dist/{systemd-AhJEsmIk.js → systemd-riq8uNJQ.js} +5 -5
  232. package/dist/{tables-C38rzF6E.js → tables-BEzT0Da4.js} +1 -1
  233. package/dist/{target-errors-CCz79CmV.js → target-errors-7AvoVa10.js} +4 -4
  234. package/dist/{tool-images-B-pqX3nX.js → tool-images-DvUBlqjX.js} +1 -1
  235. package/dist/{tui-C0A9W969.js → tui-CriznorL.js} +7 -7
  236. package/dist/{tui-cli-tCnkNdSx.js → tui-cli-CSIdfCTR.js} +28 -28
  237. package/dist/{update-check-C0oYCI89.js → update-check-CtckACbb.js} +5 -5
  238. package/dist/{update-cli-DYrpyu4a.js → update-cli-B5TI650v.js} +94 -94
  239. package/dist/{update-cli-BqdgQuYp.js → update-cli-Cy0gdWRf.js} +8 -8
  240. package/dist/{update-runner-CmZW3aeK.js → update-runner-B0NdgPvD.js} +1 -1
  241. package/dist/{update-runner-BgzyPjF5.js → update-runner-Bacq0oLK.js} +15 -15
  242. package/dist/{update-Df4sEKtI.js → update-rw7wJwHd.js} +3 -3
  243. package/dist/{web-GL_nqURg.js → web-D-oCzJTU.js} +1 -1
  244. package/dist/{web-CfZp0Jv6.js → web-DWNtg4iV.js} +6 -6
  245. package/dist/web-DmED3zDP.js +109 -0
  246. package/dist/{web-DNQzo8ao.js → web-QVwKg99Q.js} +6 -6
  247. package/dist/{webhooks-cli-Bp-7Rs2Y.js → webhooks-cli-cD58DWAE.js} +4 -4
  248. package/dist/{whatsapp-actions-CFXNPLco.js → whatsapp-actions-DbcsdOH3.js} +15 -15
  249. package/dist/{with-timeout-Cs6_LnHB.js → with-timeout-gmK6RciS.js} +1 -1
  250. package/dist/{workspace-dirs-DKu48umx.js → workspace-dirs-GpkFi6Kw.js} +1 -1
  251. package/dist/{wsl-BbXxnokd.js → wsl-C4424szg.js} +2 -2
  252. package/package.json +1 -1
  253. package/dist/register.configure-BcZ-7Yir.js +0 -147
  254. package/dist/session-dirs-D3qlvucD.js +0 -18
  255. 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-D1ZN6-fl.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-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-ag2bosuj.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-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-EyvdASWt.js";
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-Cp3JDEBB.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-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-D0QUGA_X.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-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 as WebSocket$1 } from "ws";
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$1(url, wsOptions);
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$1.OPEN) throw new Error("gateway not connected");
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-D1ZN6-fl.js").then((n) => n.n);
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-D1ZN6-fl.js").then((n) => n.n);
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-Cp3JDEBB.js").then((n) => n.n);
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-D02HwB-I.js");
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-DNQzo8ao.js");
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-D02HwB-I.js");
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-DNQzo8ao.js");
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" ? stripModelTokens(params, modelId) : params;
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] = stripModelTokens(value, modelId);
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
- if (params.model.api === "ollama") {
76415
- const providerConfig = params.config?.models?.providers?.[params.model.provider];
76416
- const modelBaseUrl = typeof params.model.baseUrl === "string" ? params.model.baseUrl.trim() : "";
76417
- const providerBaseUrl = typeof providerConfig?.baseUrl === "string" ? providerConfig.baseUrl.trim() : "";
76418
- const ollamaBaseUrl = modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL;
76419
- activeSession.agent.streamFn = createOllamaStreamFn(ollamaBaseUrl);
76420
- } else activeSession.agent.streamFn = streamSimple;
76421
- applyExtraParamsToAgent(activeSession.agent, params.config, params.provider, params.modelId, params.streamParams);
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,