@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
@@ -44208,7 +44208,7 @@ function isVoiceChannelType(type) {
44208
44208
  function createDefaultDeps() {
44209
44209
  return {
44210
44210
  sendMessageWhatsApp: async (...args) => {
44211
- const { sendMessageWhatsApp } = await import("./web-GL_nqURg.js");
44211
+ const { sendMessageWhatsApp } = await import("./web-D-oCzJTU.js");
44212
44212
  return await sendMessageWhatsApp(...args);
44213
44213
  },
44214
44214
  sendMessageTelegram: async (...args) => {
@@ -59524,7 +59524,7 @@ function loadWebLoginQr() {
59524
59524
  return webLoginQrPromise;
59525
59525
  }
59526
59526
  function loadWebChannel() {
59527
- webChannelPromise ??= import("./web-GL_nqURg.js");
59527
+ webChannelPromise ??= import("./web-D-oCzJTU.js");
59528
59528
  return webChannelPromise;
59529
59529
  }
59530
59530
  function loadWhatsAppActions() {
@@ -60757,8 +60757,16 @@ const GEMMA_TOKEN_PATTERNS = [
60757
60757
  /<start_of_turn>(?:model|user)?/g,
60758
60758
  /<end_of_turn>/g,
60759
60759
  /<\|(?:fim_prefix|fim_suffix|fim_middle)\|>/g,
60760
- /^\s*<bos>\s*/gm
60760
+ /^\s*<bos>\s*/gm,
60761
+ /<\|[^|>]{0,30}\|>/g,
60762
+ /<\|[^>]{0,30}>/g
60761
60763
  ];
60764
+ /**
60765
+ * Aggressively strip all fragments of model control token corruption from
60766
+ * tool arguments. This catches cases where the model produces raw garbage
60767
+ * like `<|<|"|<|<|\'` that doesn't match any known token template.
60768
+ */
60769
+ const AGGRESSIVE_TOKEN_FRAGMENTS = [/<\|/g, /\|>/g];
60762
60770
  const GEMMA_MODEL_HINTS$1 = ["gemma", "redsand/"];
60763
60771
  function isGemmaModel$1(modelId) {
60764
60772
  const lower = modelId.toLowerCase();
@@ -60768,6 +60776,10 @@ function isGemmaModel$1(modelId) {
60768
60776
  * Strip known control tokens from text. Only applies to Gemma-family models;
60769
60777
  * other models pass through unchanged.
60770
60778
  */
60779
+ /**
60780
+ * Strip known control tokens from text. Only applies to Gemma-family models;
60781
+ * other models pass through unchanged. Used for streamed text output.
60782
+ */
60771
60783
  function stripModelTokens(text, modelId) {
60772
60784
  if (!text || !isGemmaModel$1(modelId)) return text;
60773
60785
  let result = text;
@@ -60777,6 +60789,21 @@ function stripModelTokens(text, modelId) {
60777
60789
  }
60778
60790
  return result;
60779
60791
  }
60792
+ /**
60793
+ * Aggressively strip ALL token-like fragments from a string. Used for tool
60794
+ * call arguments where any `<|` corruption causes downstream failures.
60795
+ * More aggressive than `stripModelTokens` — removes bare `<|` and `|>` fragments
60796
+ * that don't match any known token template.
60797
+ */
60798
+ function stripModelTokensAggressive(text, modelId) {
60799
+ if (!text || !isGemmaModel$1(modelId)) return text;
60800
+ let result = stripModelTokens(text, modelId);
60801
+ for (const re of AGGRESSIVE_TOKEN_FRAGMENTS) {
60802
+ re.lastIndex = 0;
60803
+ result = result.replace(re, "");
60804
+ }
60805
+ return result;
60806
+ }
60780
60807
 
60781
60808
  //#endregion
60782
60809
  //#region src/agents/pi-tools.abort.ts
@@ -61896,10 +61923,10 @@ function wrapToolWithArgSanitization(tool, modelId) {
61896
61923
  };
61897
61924
  }
61898
61925
  function sanitizeToolArgs(params, modelId) {
61899
- if (!params || typeof params !== "object") return typeof params === "string" ? stripModelTokens(params, modelId) : params;
61926
+ if (!params || typeof params !== "object") return typeof params === "string" ? stripModelTokensAggressive(params, modelId) : params;
61900
61927
  if (Array.isArray(params)) return params.map((item) => sanitizeToolArgs(item, modelId));
61901
61928
  const result = {};
61902
- for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] = stripModelTokens(value, modelId);
61929
+ for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] = stripModelTokensAggressive(value, modelId);
61903
61930
  else if (value && typeof value === "object") result[key] = sanitizeToolArgs(value, modelId);
61904
61931
  else result[key] = value;
61905
61932
  return result;
@@ -65046,10 +65073,6 @@ function resolveModelProfile(modelId, userProfiles) {
65046
65073
 
65047
65074
  //#endregion
65048
65075
  //#region src/agents/pi-embedded-runner/extra-params.ts
65049
- const OPENROUTER_APP_HEADERS = {
65050
- "HTTP-Referer": "https://symi.ai",
65051
- "X-Title": "Symi"
65052
- };
65053
65076
  const ANTHROPIC_CONTEXT_1M_BETA = "context-1m-2025-08-07";
65054
65077
  const ANTHROPIC_1M_MODEL_PREFIXES = ["claude-opus-4", "claude-sonnet-4"];
65055
65078
  const OPENAI_RESPONSES_APIS = new Set(["openai-responses"]);
@@ -65067,70 +65090,6 @@ function resolveExtraParams(params) {
65067
65090
  const profile = resolveModelProfile(modelKey, params.cfg?.models?.profiles);
65068
65091
  if (profile.params && Object.keys(profile.params).length > 0) return { ...profile.params };
65069
65092
  }
65070
- /**
65071
- * Resolve cacheRetention from extraParams, supporting both new `cacheRetention`
65072
- * and legacy `cacheControlTtl` values for backwards compatibility.
65073
- *
65074
- * Mapping: "5m" → "short", "1h" → "long"
65075
- *
65076
- * Only applies to Anthropic provider (OpenRouter uses openai-completions API
65077
- * with hardcoded cache_control, not the cacheRetention stream option).
65078
- *
65079
- * Defaults to "short" for Anthropic provider when not explicitly configured.
65080
- */
65081
- function resolveCacheRetention(extraParams, provider) {
65082
- if (provider !== "anthropic") return;
65083
- const newVal = extraParams?.cacheRetention;
65084
- if (newVal === "none" || newVal === "short" || newVal === "long") return newVal;
65085
- const legacy = extraParams?.cacheControlTtl;
65086
- if (legacy === "5m") return "short";
65087
- if (legacy === "1h") return "long";
65088
- return "short";
65089
- }
65090
- function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
65091
- if (!extraParams || Object.keys(extraParams).length === 0) return;
65092
- const streamParams = {};
65093
- if (typeof extraParams.temperature === "number") streamParams.temperature = extraParams.temperature;
65094
- if (typeof extraParams.maxTokens === "number") streamParams.maxTokens = extraParams.maxTokens;
65095
- if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
65096
- if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
65097
- if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
65098
- if (Array.isArray(extraParams.stop) && extraParams.stop.length > 0) streamParams.stop = extraParams.stop;
65099
- if (extraParams.chat_template_kwargs && typeof extraParams.chat_template_kwargs === "object") streamParams.chat_template_kwargs = extraParams.chat_template_kwargs;
65100
- const cacheRetention = resolveCacheRetention(extraParams, provider);
65101
- if (cacheRetention) streamParams.cacheRetention = cacheRetention;
65102
- if (Object.keys(streamParams).length === 0) return;
65103
- log$2.debug(`creating streamFn wrapper with params: ${JSON.stringify(streamParams)}`);
65104
- const sp = streamParams;
65105
- const payloadOverrides = {};
65106
- if (Array.isArray(sp.stop) && sp.stop.length > 0) payloadOverrides.stop = sp.stop;
65107
- if (typeof sp.top_p === "number") payloadOverrides.top_p = sp.top_p;
65108
- if (typeof sp.top_k === "number") payloadOverrides.top_k = sp.top_k;
65109
- if (typeof sp.repeat_penalty === "number") payloadOverrides.repeat_penalty = sp.repeat_penalty;
65110
- const hasPayloadOverrides = Object.keys(payloadOverrides).length > 0;
65111
- const underlying = baseStreamFn ?? streamSimple;
65112
- const wrappedStreamFn = (model, context, options) => {
65113
- if (hasPayloadOverrides) {
65114
- const originalOnPayload = options?.onPayload;
65115
- return underlying(model, context, {
65116
- ...streamParams,
65117
- ...options,
65118
- onPayload: (payload) => {
65119
- if (payload && typeof payload === "object") {
65120
- const p = payload;
65121
- for (const [key, value] of Object.entries(payloadOverrides)) if (p[key] === void 0) p[key] = value;
65122
- }
65123
- originalOnPayload?.(payload);
65124
- }
65125
- });
65126
- }
65127
- return underlying(model, context, {
65128
- ...streamParams,
65129
- ...options
65130
- });
65131
- };
65132
- return wrappedStreamFn;
65133
- }
65134
65093
  function isDirectOpenAIBaseUrl(baseUrl) {
65135
65094
  if (typeof baseUrl !== "string" || !baseUrl.trim()) return true;
65136
65095
  try {
@@ -65211,20 +65170,6 @@ function createAnthropicBetaHeadersWrapper(baseStreamFn, betas) {
65211
65170
  };
65212
65171
  }
65213
65172
  /**
65214
- * Create a streamFn wrapper that adds OpenRouter app attribution headers.
65215
- * These headers allow Symi to appear on OpenRouter's leaderboard.
65216
- */
65217
- function createOpenRouterHeadersWrapper(baseStreamFn) {
65218
- const underlying = baseStreamFn ?? streamSimple;
65219
- return (model, context, options) => underlying(model, context, {
65220
- ...options,
65221
- headers: {
65222
- ...OPENROUTER_APP_HEADERS,
65223
- ...options?.headers
65224
- }
65225
- });
65226
- }
65227
- /**
65228
65173
  * Create a streamFn wrapper that injects tool_stream=true for Z.AI providers.
65229
65174
  *
65230
65175
  * Z.AI's API supports the `tool_stream` parameter to enable real-time streaming
@@ -65247,82 +65192,6 @@ function createZaiToolStreamWrapper(baseStreamFn, enabled) {
65247
65192
  });
65248
65193
  };
65249
65194
  }
65250
- const GEMMA_STOP_SEQUENCES = ["<end_of_turn>", "<eos>"];
65251
- const VLLM_GEMMA_HINTS = ["gemma", "redsand"];
65252
- function isVllmOrGemmaProvider(provider, modelId, cfg) {
65253
- const lower = `${provider}/${modelId}`.toLowerCase();
65254
- if (VLLM_GEMMA_HINTS.some((h) => lower.includes(h))) return true;
65255
- const baseUrl = ((cfg?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
65256
- return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
65257
- }
65258
- /**
65259
- * Wrap the stream function to fix vLLM/Gemma compat issues via onPayload:
65260
- * 1. Replace `max_completion_tokens` with `max_tokens` (vLLM ignores the former)
65261
- * 2. Inject Gemma stop sequences if none are set
65262
- * 3. Remove unsupported fields (store, stream_options.include_usage on older vLLM)
65263
- */
65264
- function createVllmCompatWrapper(baseStreamFn, extraParams) {
65265
- const underlying = baseStreamFn ?? streamSimple;
65266
- const configuredStop = Array.isArray(extraParams.stop) ? extraParams.stop : GEMMA_STOP_SEQUENCES;
65267
- return (model, context, options) => {
65268
- const originalOnPayload = options?.onPayload;
65269
- return underlying(model, context, {
65270
- ...options,
65271
- onPayload: (payload) => {
65272
- if (payload && typeof payload === "object") {
65273
- const p = payload;
65274
- if (p.max_completion_tokens && !p.max_tokens) {
65275
- p.max_tokens = p.max_completion_tokens;
65276
- delete p.max_completion_tokens;
65277
- }
65278
- if (!p.stop && configuredStop.length > 0) p.stop = configuredStop;
65279
- delete p.store;
65280
- }
65281
- originalOnPayload?.(payload);
65282
- }
65283
- });
65284
- };
65285
- }
65286
- /**
65287
- * Apply extra params (like temperature) to an agent's streamFn.
65288
- * Also adds OpenRouter app attribution headers when using the OpenRouter provider.
65289
- *
65290
- * @internal Exported for testing
65291
- */
65292
- function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverride) {
65293
- const extraParams = resolveExtraParams({
65294
- cfg,
65295
- provider,
65296
- modelId
65297
- });
65298
- const override = extraParamsOverride && Object.keys(extraParamsOverride).length > 0 ? Object.fromEntries(Object.entries(extraParamsOverride).filter(([, value]) => value !== void 0)) : void 0;
65299
- const merged = Object.assign({}, extraParams, override);
65300
- const wrappedStreamFn = createStreamFnWithExtraParams(agent.streamFn, merged, provider);
65301
- if (wrappedStreamFn) {
65302
- log$2.debug(`applying extraParams to agent streamFn for ${provider}/${modelId}`);
65303
- agent.streamFn = wrappedStreamFn;
65304
- }
65305
- const anthropicBetas = resolveAnthropicBetas(merged, provider, modelId);
65306
- if (anthropicBetas?.length) {
65307
- log$2.debug(`applying Anthropic beta header for ${provider}/${modelId}: ${anthropicBetas.join(",")}`);
65308
- agent.streamFn = createAnthropicBetaHeadersWrapper(agent.streamFn, anthropicBetas);
65309
- }
65310
- if (provider === "openrouter") {
65311
- log$2.debug(`applying OpenRouter app attribution headers for ${provider}/${modelId}`);
65312
- agent.streamFn = createOpenRouterHeadersWrapper(agent.streamFn);
65313
- }
65314
- if (provider === "zai" || provider === "z-ai") {
65315
- if (merged?.tool_stream !== false) {
65316
- log$2.debug(`enabling Z.AI tool_stream for ${provider}/${modelId}`);
65317
- agent.streamFn = createZaiToolStreamWrapper(agent.streamFn, true);
65318
- }
65319
- }
65320
- if (isVllmOrGemmaProvider(provider, modelId, cfg)) {
65321
- log$2.debug(`applying vLLM/Gemma compat wrapper for ${provider}/${modelId}`);
65322
- agent.streamFn = createVllmCompatWrapper(agent.streamFn, merged);
65323
- }
65324
- agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
65325
- }
65326
65195
 
65327
65196
  //#endregion
65328
65197
  //#region src/utils/safe-json.ts
@@ -65599,6 +65468,74 @@ function createCacheTrace(params) {
65599
65468
  };
65600
65469
  }
65601
65470
 
65471
+ //#endregion
65472
+ //#region src/agents/model-aware-stream.ts
65473
+ /**
65474
+ * Create a single stream function wrapper that handles all provider-specific
65475
+ * param injection via one onPayload hook.
65476
+ *
65477
+ * Replaces: createStreamFnWithExtraParams, createVllmCompatWrapper,
65478
+ * createOpenRouterHeadersWrapper.
65479
+ */
65480
+ function createModelAwareStreamFn(opts) {
65481
+ const underlying = opts.baseStreamFn ?? streamSimple;
65482
+ const mergedParams = {
65483
+ ...opts.profile.params,
65484
+ ...opts.configExtraParams,
65485
+ ...opts.streamParamsOverride
65486
+ };
65487
+ const nativeOpts = {};
65488
+ if (typeof mergedParams.temperature === "number") nativeOpts.temperature = mergedParams.temperature;
65489
+ if (typeof mergedParams.max_tokens === "number") nativeOpts.maxTokens = mergedParams.max_tokens;
65490
+ else if (typeof mergedParams.maxTokens === "number") nativeOpts.maxTokens = mergedParams.maxTokens;
65491
+ const injections = {};
65492
+ if (Array.isArray(mergedParams.stop) && mergedParams.stop.length > 0) injections.stop = mergedParams.stop;
65493
+ if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
65494
+ if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
65495
+ if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
65496
+ const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
65497
+ const isOpenRouter = opts.provider === "openrouter";
65498
+ const extraHeaders = {};
65499
+ if (isOpenRouter) {
65500
+ extraHeaders["HTTP-Referer"] = "https://symi.ai";
65501
+ extraHeaders["X-Title"] = "Symi";
65502
+ }
65503
+ const hasExtraHeaders = Object.keys(extraHeaders).length > 0;
65504
+ const onPayloadHook = (payload, callerOnPayload) => {
65505
+ if (payload && typeof payload === "object") {
65506
+ const p = payload;
65507
+ for (const [key, val] of Object.entries(injections)) if (p[key] === void 0) p[key] = val;
65508
+ if (isVllm) {
65509
+ if (p.max_completion_tokens && !p.max_tokens) {
65510
+ p.max_tokens = p.max_completion_tokens;
65511
+ delete p.max_completion_tokens;
65512
+ }
65513
+ delete p.store;
65514
+ }
65515
+ }
65516
+ callerOnPayload?.(payload);
65517
+ };
65518
+ return (model, context, options) => {
65519
+ const callerOnPayload = options?.onPayload;
65520
+ return underlying(model, context, {
65521
+ ...nativeOpts,
65522
+ ...options,
65523
+ onPayload: (payload) => onPayloadHook(payload, callerOnPayload),
65524
+ ...hasExtraHeaders ? { headers: {
65525
+ ...extraHeaders,
65526
+ ...options?.headers
65527
+ } } : {}
65528
+ });
65529
+ };
65530
+ }
65531
+ /** Detect vLLM/Gemma providers by model hints or baseUrl patterns. */
65532
+ function isVllmProvider(provider, modelId, config) {
65533
+ const lower = `${provider}/${modelId}`.toLowerCase();
65534
+ if (["gemma", "redsand"].some((h) => lower.includes(h))) return true;
65535
+ const baseUrl = ((config?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
65536
+ return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
65537
+ }
65538
+
65602
65539
  //#endregion
65603
65540
  //#region src/auto-reply/reply/streaming-directives.ts
65604
65541
  const splitTrailingDirective = (text) => {
@@ -68649,14 +68586,39 @@ async function runEmbeddedAttempt(params) {
68649
68586
  modelApi: params.model.api,
68650
68587
  workspaceDir: params.workspaceDir
68651
68588
  });
68652
- if (params.model.api === "ollama") {
68653
- const providerConfig = params.config?.models?.providers?.[params.model.provider];
68654
- const modelBaseUrl = typeof params.model.baseUrl === "string" ? params.model.baseUrl.trim() : "";
68655
- const providerBaseUrl = typeof providerConfig?.baseUrl === "string" ? providerConfig.baseUrl.trim() : "";
68656
- const ollamaBaseUrl = modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL;
68657
- activeSession.agent.streamFn = createOllamaStreamFn(ollamaBaseUrl);
68658
- } else activeSession.agent.streamFn = streamSimple;
68659
- applyExtraParamsToAgent(activeSession.agent, params.config, params.provider, params.modelId, params.streamParams);
68589
+ {
68590
+ let baseStreamFn = streamSimple;
68591
+ if (params.model.api === "ollama") {
68592
+ const providerConfig = params.config?.models?.providers?.[params.model.provider];
68593
+ const modelBaseUrl = typeof params.model.baseUrl === "string" ? params.model.baseUrl.trim() : "";
68594
+ const providerBaseUrl = typeof providerConfig?.baseUrl === "string" ? providerConfig.baseUrl.trim() : "";
68595
+ baseStreamFn = createOllamaStreamFn(modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL);
68596
+ }
68597
+ const configExtraParams = resolveExtraParams({
68598
+ cfg: params.config,
68599
+ provider: params.provider,
68600
+ modelId: params.modelId
68601
+ });
68602
+ activeSession.agent.streamFn = createModelAwareStreamFn({
68603
+ baseStreamFn,
68604
+ profile: modelProfile,
68605
+ provider: params.provider,
68606
+ modelId: params.modelId,
68607
+ config: params.config,
68608
+ configExtraParams,
68609
+ streamParamsOverride: params.streamParams
68610
+ });
68611
+ const merged = {
68612
+ ...configExtraParams,
68613
+ ...params.streamParams
68614
+ };
68615
+ const anthropicBetas = resolveAnthropicBetas(merged, params.provider, params.modelId);
68616
+ if (anthropicBetas?.length) activeSession.agent.streamFn = createAnthropicBetaHeadersWrapper(activeSession.agent.streamFn, anthropicBetas);
68617
+ if (params.provider === "zai" || params.provider === "z-ai") {
68618
+ if (merged?.tool_stream !== false) activeSession.agent.streamFn = createZaiToolStreamWrapper(activeSession.agent.streamFn, true);
68619
+ }
68620
+ activeSession.agent.streamFn = createOpenAIResponsesStoreWrapper(activeSession.agent.streamFn);
68621
+ }
68660
68622
  if (cacheTrace) {
68661
68623
  cacheTrace.recordStage("session:loaded", {
68662
68624
  messages: activeSession.messages,
@@ -1,7 +1,7 @@
1
1
  import { fileURLToPath } from "node:url";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
- import fsPromises from "node:fs/promises";
4
+ import fs$1 from "node:fs/promises";
5
5
 
6
6
  //#region src/agents/skills/filter.ts
7
7
  function normalizeSkillFilter(skillFilter) {
@@ -26,7 +26,7 @@ function matchesSkillFilter(cached, next) {
26
26
  const CORE_PACKAGE_NAMES = new Set(["symi", "@symerian/symi"]);
27
27
  async function readPackageName(dir) {
28
28
  try {
29
- const raw = await fsPromises.readFile(path.join(dir, "package.json"), "utf-8");
29
+ const raw = await fs$1.readFile(path.join(dir, "package.json"), "utf-8");
30
30
  const parsed = JSON.parse(raw);
31
31
  return typeof parsed.name === "string" ? parsed.name : null;
32
32
  } catch {
@@ -3,27 +3,27 @@ import { B as theme, O as danger } from "./utils-B-0b9bGM.js";
3
3
  import "./registry-Cja8eT7G.js";
4
4
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
5
5
  import "./exec-CWkblSrI.js";
6
- import "./agent-scope-BRwEc2pG.js";
7
- import { At as ensureAuthProfileStore, l as normalizeProviderId } from "./model-selection-X1oLh3CE.js";
6
+ import "./agent-scope-CgUHAtCo.js";
7
+ import { At as ensureAuthProfileStore, l as normalizeProviderId } from "./model-selection-CyFvYcRt.js";
8
8
  import "./github-copilot-token-DAu1a6BX.js";
9
9
  import "./boolean-BsqeuxE6.js";
10
10
  import "./env-DPCHYPeH.js";
11
11
  import "./message-channel-aT-I_DTX.js";
12
- import "./config-CJMcIRQM.js";
12
+ import "./config-CHwyw6l5.js";
13
13
  import "./manifest-registry-C4BxOMWX.js";
14
- import "./client-BsrZnuSi.js";
15
- import "./call-Dd7-bkfG.js";
16
- import "./pairing-token-AV-MMfVE.js";
14
+ import "./client-CQSyCS4M.js";
15
+ import "./call-CJaS1iRF.js";
16
+ import "./pairing-token-CX3NN_qj.js";
17
17
  import { t as formatDocsLink } from "./links-3i1eUga4.js";
18
18
  import "./progress-jIePzvGA.js";
19
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-DFeD8pZh.js";
19
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BxkKeCZ0.js";
20
20
  import path from "node:path";
21
- import fsPromises from "node:fs/promises";
21
+ import fs from "node:fs/promises";
22
22
 
23
23
  //#region src/agents/pi-auth-json.ts
24
24
  async function readAuthJson(filePath) {
25
25
  try {
26
- const raw = await fsPromises.readFile(filePath, "utf8");
26
+ const raw = await fs.readFile(filePath, "utf8");
27
27
  const parsed = JSON.parse(raw);
28
28
  if (!parsed || typeof parsed !== "object") return {};
29
29
  return parsed;
@@ -115,11 +115,11 @@ async function ensurePiAuthJsonFromAuthProfiles(agentDir) {
115
115
  wrote: false,
116
116
  authPath
117
117
  };
118
- await fsPromises.mkdir(agentDir, {
118
+ await fs.mkdir(agentDir, {
119
119
  recursive: true,
120
120
  mode: 448
121
121
  });
122
- await fsPromises.writeFile(authPath, `${JSON.stringify(existing, null, 2)}\n`, { mode: 384 });
122
+ await fs.writeFile(authPath, `${JSON.stringify(existing, null, 2)}\n`, { mode: 384 });
123
123
  return {
124
124
  wrote: true,
125
125
  authPath
@@ -1,10 +1,10 @@
1
1
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
2
- import { d as isVersionManagedNodePath, h as resolveSystemNodePath, l as getMinimalServicePathPartsFromEnv, u as isSystemNodePath } from "./daemon-runtime--RiRUx_2.js";
3
- import { o as resolveSystemdUserUnitPath } from "./systemd-AhJEsmIk.js";
4
- import { c as resolveLaunchAgentPlistPath } from "./service--qMN5DPm.js";
2
+ import { d as isVersionManagedNodePath, h as resolveSystemNodePath, l as getMinimalServicePathPartsFromEnv, u as isSystemNodePath } from "./daemon-runtime-2mwX-jqj.js";
3
+ import { o as resolveSystemdUserUnitPath } from "./systemd-riq8uNJQ.js";
4
+ import { c as resolveLaunchAgentPlistPath } from "./service-Cl74hx8J.js";
5
5
  import { t as formatRuntimeStatusWithDetails } from "./runtime-status-CR9445g5.js";
6
6
  import path from "node:path";
7
- import fsPromises from "node:fs/promises";
7
+ import fs from "node:fs/promises";
8
8
 
9
9
  //#region src/daemon/runtime-format.ts
10
10
  function formatRuntimeStatus(runtime) {
@@ -85,7 +85,7 @@ async function auditSystemdUnit(env, issues) {
85
85
  const unitPath = resolveSystemdUserUnitPath(env);
86
86
  let content = "";
87
87
  try {
88
- content = await fsPromises.readFile(unitPath, "utf8");
88
+ content = await fs.readFile(unitPath, "utf8");
89
89
  } catch {
90
90
  return;
91
91
  }
@@ -113,7 +113,7 @@ async function auditLaunchdPlist(env, issues) {
113
113
  const plistPath = resolveLaunchAgentPlistPath(env);
114
114
  let content = "";
115
115
  try {
116
- content = await fsPromises.readFile(plistPath, "utf8");
116
+ content = await fs.readFile(plistPath, "utf8");
117
117
  } catch {
118
118
  return;
119
119
  }
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { t as note } from "./note-DeHoW7xO.js";
3
- import { d as readSystemdUserLingerStatus, r as isSystemdUserServiceAvailable, u as enableSystemdUserLinger } from "./systemd-AhJEsmIk.js";
3
+ import { d as readSystemdUserLingerStatus, r as isSystemdUserServiceAvailable, u as enableSystemdUserLinger } from "./systemd-riq8uNJQ.js";
4
4
 
5
5
  //#region src/commands/systemd-linger.ts
6
6
  var systemd_linger_exports = /* @__PURE__ */ __exportAll({
@@ -3,7 +3,7 @@ import { n as runExec, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
3
3
  import { d as resolveGatewaySystemdServiceName, l as resolveGatewayProfileSuffix, u as resolveGatewayServiceDescription } from "./constants-C8_BLnaW.js";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
- import fsPromises from "node:fs/promises";
6
+ import fs from "node:fs/promises";
7
7
  import { execFile } from "node:child_process";
8
8
 
9
9
  //#region src/daemon/exec-file.ts
@@ -289,7 +289,7 @@ function resolveSystemdUserUnitPath(env) {
289
289
  async function readSystemdServiceExecStart(env) {
290
290
  const unitPath = resolveSystemdUnitPath(env);
291
291
  try {
292
- const content = await fsPromises.readFile(unitPath, "utf8");
292
+ const content = await fs.readFile(unitPath, "utf8");
293
293
  let execStart = "";
294
294
  let workingDirectory = "";
295
295
  const environment = {};
@@ -360,7 +360,7 @@ async function assertSystemdAvailable() {
360
360
  async function installSystemdService({ env, stdout, programArguments, workingDirectory, environment, description }) {
361
361
  await assertSystemdAvailable();
362
362
  const unitPath = resolveSystemdUnitPath(env);
363
- await fsPromises.mkdir(path.dirname(unitPath), { recursive: true });
363
+ await fs.mkdir(path.dirname(unitPath), { recursive: true });
364
364
  const unit = buildSystemdUnit({
365
365
  description: resolveGatewayServiceDescription({
366
366
  env,
@@ -371,7 +371,7 @@ async function installSystemdService({ env, stdout, programArguments, workingDir
371
371
  workingDirectory,
372
372
  environment
373
373
  });
374
- await fsPromises.writeFile(unitPath, unit, "utf8");
374
+ await fs.writeFile(unitPath, unit, "utf8");
375
375
  const unitName = `${resolveGatewaySystemdServiceName(env.SYMI_PROFILE)}.service`;
376
376
  const reload = await execSystemctl(["--user", "daemon-reload"]);
377
377
  if (reload.code !== 0) throw new Error(`systemctl daemon-reload failed: ${reload.stderr || reload.stdout}`.trim());
@@ -403,7 +403,7 @@ async function uninstallSystemdService({ env, stdout }) {
403
403
  ]);
404
404
  const unitPath = resolveSystemdUnitPath(env);
405
405
  try {
406
- await fsPromises.unlink(unitPath);
406
+ await fs.unlink(unitPath);
407
407
  stdout.write(`${formatLine("Removed systemd service", unitPath)}\n`);
408
408
  } catch {
409
409
  stdout.write(`Systemd service not found at ${unitPath}\n`);
@@ -1,4 +1,4 @@
1
- import { r as markdownToIRWithMeta } from "./ir-Dt4hOzxG.js";
1
+ import { r as markdownToIRWithMeta } from "./ir-DZam9q5M.js";
2
2
  import { t as renderMarkdownWithMarkers } from "./render-CXDO_kgw.js";
3
3
 
4
4
  //#region src/markdown/tables.ts
@@ -1,6 +1,6 @@
1
- import { c as detectMime } from "./image-ops-DYbDWaIA.js";
2
- import { r as sanitizeToolResultImages } from "./tool-images-B-pqX3nX.js";
3
- import fsPromises from "node:fs/promises";
1
+ import { c as detectMime } from "./image-ops-1OJMSAUX.js";
2
+ import { r as sanitizeToolResultImages } from "./tool-images-DvUBlqjX.js";
3
+ import fs from "node:fs/promises";
4
4
 
5
5
  //#region src/agents/tools/common.ts
6
6
  var ToolInputError = class extends Error {
@@ -128,7 +128,7 @@ async function imageResult(params) {
128
128
  }, params.label, params.imageSanitization);
129
129
  }
130
130
  async function imageResultFromFile(params) {
131
- const buf = await fsPromises.readFile(params.path);
131
+ const buf = await fs.readFile(params.path);
132
132
  const mimeType = await detectMime({ buffer: buf.slice(0, 256) }) ?? "image/png";
133
133
  return await imageResult({
134
134
  label: params.label,
@@ -1,5 +1,5 @@
1
1
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
2
- import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-DYbDWaIA.js";
2
+ import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-1OJMSAUX.js";
3
3
 
4
4
  //#region src/agents/image-sanitization.ts
5
5
  const DEFAULT_IMAGE_MAX_DIMENSION_PX = 1200;
@@ -1,15 +1,15 @@
1
1
  import { c as normalizeUsageDisplay, r as listThinkingLevelLabels, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-EAliFiVK.js";
2
2
  import { S as parseAgentSessionKey, c as normalizeMainKey, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-DCt45XZa.js";
3
3
  import { l as stripAnsi, u as visibleWidth } from "./subsystem-D9vIQve0.js";
4
- import { l as resolveDefaultAgentId } from "./agent-scope-BRwEc2pG.js";
4
+ import { l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
5
5
  import { f as GATEWAY_CLIENT_CAPS, h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-aT-I_DTX.js";
6
- import { H as VERSION, i as loadConfig } from "./config-CJMcIRQM.js";
7
- import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-DO6u9K2t.js";
8
- import { k as stripLeadingInboundMetadata } from "./sessions-D5a7H247.js";
6
+ import { H as VERSION, i as loadConfig } from "./config-CHwyw6l5.js";
7
+ import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-CNPyv_ax.js";
8
+ import { k as stripLeadingInboundMetadata } from "./sessions-DgYpBvse.js";
9
9
  import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-D8N3rsYt.js";
10
- import { a as listChatCommandsForConfig, i as listChatCommands } from "./commands-registry-BZ0ZSQpM.js";
11
- import { kt as PROTOCOL_VERSION, t as GatewayClient } from "./client-BsrZnuSi.js";
12
- import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-Dd7-bkfG.js";
10
+ import { a as listChatCommandsForConfig, i as listChatCommands } from "./commands-registry-BT0-zzs3.js";
11
+ import { kt as PROTOCOL_VERSION, t as GatewayClient } from "./client-CQSyCS4M.js";
12
+ import { i as ensureExplicitGatewayAuth, o as resolveExplicitGatewayAuth, t as buildGatewayConnectionDetails } from "./call-CJaS1iRF.js";
13
13
  import { n as formatTimeAgo, t as formatRelativeTimestamp } from "./format-relative-BXoxEQVN.js";
14
14
  import { n as formatTokenCount } from "./usage-format-BzKEDn0q.js";
15
15
  import chalk from "chalk";