@symerian/symi 2.5.2 → 2.5.4

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 (163) hide show
  1. package/dist/{agents-DfyzZKBc.js → agents-CTPFuwCu.js} +4 -4
  2. package/dist/{agents.config-VjZQr5GP.js → agents.config-CQVRXowo.js} +1 -1
  3. package/dist/{agents.config-Dzr8Us0l.js → agents.config-CVlanyIt.js} +1 -1
  4. package/dist/{auth-choice-C01glnpg.js → auth-choice-AlA3IixA.js} +1 -1
  5. package/dist/{auth-choice-BJPRC23V.js → auth-choice-BKmjyPNC.js} +1 -1
  6. package/dist/{banner-B4wP-CCZ.js → banner-8_qXSW1S.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +1 -1
  9. package/dist/bundled/session-memory/handler.js +1 -1
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-DRK05uet.js → channel-options-CMm67N4v.js} +1 -1
  12. package/dist/{channel-options-Bb2WRpn4.js → channel-options-nfXd5NWO.js} +1 -1
  13. package/dist/{channel-web-Cv1L-jTo.js → channel-web-D6t5UK5A.js} +1 -1
  14. package/dist/{channels-cli-Dnwswsi2.js → channels-cli-BA9QVK8Q.js} +4 -4
  15. package/dist/{channels-cli-CPvaBiNE.js → channels-cli-B_iBgjWh.js} +4 -4
  16. package/dist/{cli-CgQySW2m.js → cli-BF2nSOtU.js} +1 -1
  17. package/dist/{cli-hT0g_Q65.js → cli-DyI0-h78.js} +1 -1
  18. package/dist/{command-registry-D7MjQKMD.js → command-registry-Be3hDEmx.js} +9 -9
  19. package/dist/{completion-cli-Bcv09Yuh.js → completion-cli-C3hbO0zE.js} +2 -2
  20. package/dist/{completion-cli-BLYlpN4p.js → completion-cli-DxditxWW.js} +1 -1
  21. package/dist/{config-cli-CIkKTucr.js → config-cli-7yzVs6sD.js} +1 -1
  22. package/dist/{config-cli-CtKkpyHu.js → config-cli-9MIL9tVq.js} +1 -1
  23. package/dist/{configure-BP4M7T_e.js → configure-BWIGtf_8.js} +3 -3
  24. package/dist/{configure-Bhm7x3Ri.js → configure-rs23A6dR.js} +3 -3
  25. package/dist/control-ui/js/app.js +2 -1
  26. package/dist/{doctor-completion-bTUb2Em4.js → doctor-completion-CRgIetEl.js} +1 -1
  27. package/dist/{doctor-completion-DVs_xVw4.js → doctor-completion-DKL7Fzep.js} +1 -1
  28. package/dist/entry.js +1 -1
  29. package/dist/extensionAPI.js +1 -1
  30. package/dist/{gateway-cli-CY_R8dGA.js → gateway-cli-CEWIFRt0.js} +9 -9
  31. package/dist/{gateway-cli-BPf1OUhU.js → gateway-cli-q04qp27D.js} +9 -9
  32. package/dist/{glass-ui-ws-Cx9mt64o.js → glass-ui-ws-0yPnNh0o.js} +37 -19
  33. package/dist/{glass-ui-ws-DMQldmwk.js → glass-ui-ws-DtFvFNZp.js} +37 -19
  34. package/dist/{health-vuMM-FAs.js → health-CGJe8xON.js} +1 -1
  35. package/dist/{health-CM3gPoYN.js → health-R_6vQfbY.js} +1 -1
  36. package/dist/{hooks-cli-tLOOQscu.js → hooks-cli-CUTMGbml.js} +2 -2
  37. package/dist/{hooks-cli-B8kuyvML.js → hooks-cli-Cvc0R8C2.js} +2 -2
  38. package/dist/index.js +6 -6
  39. package/dist/llm-slug-generator.js +1 -1
  40. package/dist/{models-CBtd5YaQ.js → models-DPk6zVF5.js} +2 -2
  41. package/dist/{models-cli-B8Fq0Of1.js → models-cli-1hWA7FrI.js} +2 -2
  42. package/dist/{models-cli-CIp8mElS.js → models-cli-BhijD6uM.js} +3 -3
  43. package/dist/{onboard-DBCSZwxu.js → onboard-FadtPlJX.js} +2 -2
  44. package/dist/{onboard-CjSHwvTP.js → onboard-Ob6VUhMj.js} +2 -2
  45. package/dist/{onboard-channels-BgMpB9vX.js → onboard-channels-D680exuN.js} +1 -1
  46. package/dist/{onboard-channels-eCCJophA.js → onboard-channels-r6Gvo5Cd.js} +1 -1
  47. package/dist/{onboarding-3iCiOVeb.js → onboarding-BL5h6kMP.js} +3 -3
  48. package/dist/{onboarding-ztTrPGQa.js → onboarding-CeLx4VEB.js} +3 -3
  49. package/dist/{onboarding.finalize-DsOBEKtX.js → onboarding.finalize-EOjEh487.js} +6 -6
  50. package/dist/{onboarding.finalize-bcSfd4yw.js → onboarding.finalize-y1rlw-1v.js} +5 -5
  51. package/dist/{pi-embedded-Ch-LcMWg.js → pi-embedded-Cuoz1LlF.js} +20 -8
  52. package/dist/{pi-embedded-CpI5F8DC.js → pi-embedded-D7S6Iuxk.js} +20 -8
  53. package/dist/{plugin-registry-CL--iTFl.js → plugin-registry-BtIkzwfi.js} +1 -1
  54. package/dist/{plugin-registry-BfqJjw6d.js → plugin-registry-DZ4m64Mr.js} +1 -1
  55. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  56. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  57. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  58. package/dist/plugin-sdk/{active-listener-bEk__wbB.js → active-listener-BXYeALs0.js} +1 -1
  59. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  60. package/dist/plugin-sdk/{api-key-rotation-CVBMpnPc.js → api-key-rotation-D_sMvI5W.js} +1 -1
  61. package/dist/plugin-sdk/{audio-preflight-DoQQKlxa.js → audio-preflight-VpItkiy3.js} +24 -24
  62. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  63. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  64. package/dist/plugin-sdk/{channel-web-mO5qO05p.js → channel-web-CkBYE0D-.js} +22 -22
  65. package/dist/plugin-sdk/{chrome-C7c_0I5M.js → chrome-B7RdxmJ0.js} +3 -3
  66. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  67. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  68. package/dist/plugin-sdk/{commands-registry-CQFbmUMs.js → commands-registry-COIaslGl.js} +4 -4
  69. package/dist/plugin-sdk/{config-DDkdiUOR.js → config-KlTNfkFF.js} +9 -9
  70. package/dist/plugin-sdk/{deliver-BZ6iNLl7.js → deliver-BZ99UKQq.js} +10 -10
  71. package/dist/plugin-sdk/{diagnostic-mFf4i4G9.js → diagnostic-05pm5Rxi.js} +1 -1
  72. package/dist/plugin-sdk/{image-BOYy0Ump.js → image-CLOPx7yW.js} +4 -4
  73. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  74. package/dist/plugin-sdk/index.js +53 -53
  75. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  76. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  77. package/dist/plugin-sdk/{login-Bh3DZPam.js → login-DQMXuxOk.js} +7 -7
  78. package/dist/plugin-sdk/{login-qr-DbR7odSr.js → login-qr-BjVZSoCi.js} +9 -9
  79. package/dist/plugin-sdk/{manager-DckktAQ3.js → manager-CBSBFuFz.js} +8 -8
  80. package/dist/plugin-sdk/{manifest-registry-B3ugY9-f.js → manifest-registry-CPnHl_K3.js} +1 -1
  81. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  82. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  83. package/dist/plugin-sdk/{model-selection-OpU8HN50.js → model-selection-CsbEfrS0.js} +4 -4
  84. package/dist/plugin-sdk/{outbound-rF6G8Xpr.js → outbound-B0e8KdaR.js} +7 -7
  85. package/dist/plugin-sdk/{outbound-attachment-DnVQfTG2.js → outbound-attachment-CnslKL38.js} +2 -2
  86. package/dist/plugin-sdk/{pi-auth-json-CJk8t14T.js → pi-auth-json-qWi7ZIYV.js} +5 -5
  87. package/dist/plugin-sdk/{pi-embedded-helpers-BveUP4hk.js → pi-embedded-helpers-CW630epe.js} +17 -17
  88. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  89. package/dist/plugin-sdk/{pw-ai-DjGUsee-.js → pw-ai-CnbPIPY9.js} +8 -8
  90. package/dist/plugin-sdk/{qmd-manager-mjKcdwVr.js → qmd-manager-CH0XbIHf.js} +4 -4
  91. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  92. package/dist/plugin-sdk/{replies-fI39rPGa.js → replies-LLcQL3w6.js} +3 -3
  93. package/dist/plugin-sdk/{reply-B4uPw1l4.js → reply-DCiyoHqU.js} +96 -84
  94. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  95. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  96. package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
  97. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  98. package/dist/plugin-sdk/{runner-BVqnEfNe.js → runner-CGBT7tgF.js} +9 -9
  99. package/dist/plugin-sdk/{send-BtANzsAo.js → send-B2CEnVLL.js} +6 -6
  100. package/dist/plugin-sdk/{send-BHbXh8Ly.js → send-C5h_YxNb.js} +7 -7
  101. package/dist/plugin-sdk/{send-D6LMZJ_h.js → send-CRsR8-vO.js} +10 -10
  102. package/dist/plugin-sdk/{send-Bxdu6ZZy.js → send-CjOBB3Vo.js} +10 -10
  103. package/dist/plugin-sdk/{send-BMfJIhCk.js → send-pYqe432l.js} +6 -6
  104. package/dist/plugin-sdk/{session-kI0tzViQ.js → session-BsOrxiMj.js} +4 -4
  105. package/dist/plugin-sdk/{skill-commands-DCNXVERE.js → skill-commands-ff_01_r3.js} +5 -5
  106. package/dist/plugin-sdk/{skills-B1GeRYlu.js → skills-_yTP47Cd.js} +7 -7
  107. package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
  108. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  109. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  110. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  111. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  112. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  113. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  114. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  115. package/dist/plugin-sdk/{tool-loop-detection-edmW8ZiF.js → tool-loop-detection-BVA6fax-.js} +2 -2
  116. package/dist/plugin-sdk/web-DMTBKWMU.js +65 -0
  117. package/dist/plugin-sdk/{whatsapp-actions-CcBzDuL-.js → whatsapp-actions-DfseosPO.js} +21 -21
  118. package/dist/{plugins-cli-DVLIR6IN.js → plugins-cli-CRb9nRFi.js} +2 -2
  119. package/dist/{plugins-cli-MaXVJ6uV.js → plugins-cli-DqE-InfX.js} +2 -2
  120. package/dist/{program-v4cRnLjP.js → program-Dh_NkeL_.js} +7 -7
  121. package/dist/{program-context-C0vN6LYk.js → program-context-C6OueMej.js} +17 -17
  122. package/dist/{prompt-select-styled-D48W5rxp.js → prompt-select-styled-B_XU_pph.js} +4 -4
  123. package/dist/{prompt-select-styled-CEmtUvNV.js → prompt-select-styled-CmbX-Peb.js} +4 -4
  124. package/dist/{provider-auth-helpers-CPbCxhvj.js → provider-auth-helpers-BDN3x0AU.js} +1 -1
  125. package/dist/{provider-auth-helpers-C4-EqP9W.js → provider-auth-helpers-CwUeZ41c.js} +1 -1
  126. package/dist/{push-apns-DpdcOumU.js → push-apns-BBaXO4aV.js} +1 -1
  127. package/dist/{push-apns-glbAu-g9.js → push-apns-CgmHr336.js} +1 -1
  128. package/dist/{register.agent-2jRwf1Rt.js → register.agent-BDIn4sRN.js} +5 -5
  129. package/dist/{register.agent-DrocnT2d.js → register.agent-zqbU35_d.js} +6 -6
  130. package/dist/{register.configure-yy5Qb8fJ.js → register.configure-B9Atehb4.js} +6 -6
  131. package/dist/{register.configure-DULdexW6.js → register.configure-CBWMCe2I.js} +6 -6
  132. package/dist/{register.maintenance-CI3D-c8a.js → register.maintenance-CzdnuWVy.js} +8 -8
  133. package/dist/{register.maintenance-v_G9yCLf.js → register.maintenance-aLrIiGjI.js} +7 -7
  134. package/dist/{register.message-DkwXioit.js → register.message-B6KDPfgh.js} +2 -2
  135. package/dist/{register.message-UoA7D74J.js → register.message-Dg0Q8NL0.js} +2 -2
  136. package/dist/{register.onboard-DFe3IAjB.js → register.onboard-B_0R2fhe.js} +4 -4
  137. package/dist/{register.onboard-D3qTCyiW.js → register.onboard-DY6yrdh6.js} +4 -4
  138. package/dist/{register.setup-DXT4OS3N.js → register.setup-BMEEidVS.js} +4 -4
  139. package/dist/{register.setup-DO3vwGHY.js → register.setup-DUBzMFHd.js} +4 -4
  140. package/dist/{register.status-health-sessions-DGLfWuS4.js → register.status-health-sessions-C3M6B_3w.js} +3 -3
  141. package/dist/{register.status-health-sessions-C5IRI7-t.js → register.status-health-sessions-DL9QESHL.js} +3 -3
  142. package/dist/{register.subclis-PQ2Ulz3J.js → register.subclis-CWosGlSy.js} +9 -9
  143. package/dist/{reply-kuehpmXb.js → reply-ahHa59uT.js} +20 -8
  144. package/dist/{run-main-BHKGY1KH.js → run-main-ChZAqQNU.js} +14 -14
  145. package/dist/{server-methods-BHjqwsiI.js → server-methods-B9ZPWP0q.js} +7 -7
  146. package/dist/{server-methods-rmWST_iV.js → server-methods-CGVoOkf3.js} +7 -7
  147. package/dist/{server-node-events-za7_iA-n.js → server-node-events-CjoofPGv.js} +2 -2
  148. package/dist/{server-node-events-KVX4S5Md.js → server-node-events-DzlyRIPt.js} +2 -2
  149. package/dist/{status-BJITmlhZ.js → status-Csa1fdSW.js} +2 -2
  150. package/dist/{status-DJhmJYSu.js → status-DNRd5-AN.js} +1 -1
  151. package/dist/{status-Bow6kS56.js → status-Dd3-6fq5.js} +2 -2
  152. package/dist/{status-CRuOmtVo.js → status-TUjwchut.js} +1 -1
  153. package/dist/{subagent-registry-BxM7J5m6.js → subagent-registry-DfimjEyh.js} +20 -8
  154. package/dist/{update-cli-Dqh498qQ.js → update-cli-B8TIn1_v.js} +7 -7
  155. package/dist/{update-cli-BfGdSZRk.js → update-cli-_VRN7Kfv.js} +8 -8
  156. package/dist/{update-runner-YRJPtj9J.js → update-runner-C0hYiaj2.js} +1 -1
  157. package/dist/{update-runner-C0iELmzo.js → update-runner-CB0M0lum.js} +1 -1
  158. package/dist/{web-9AS0DiSZ.js → web-BMLeQ_Ql.js} +1 -1
  159. package/dist/{web-CVAyVZBT.js → web-BUrK0rTE.js} +2 -2
  160. package/dist/{web-CubghJNN.js → web-DEbB7-Xr.js} +1 -1
  161. package/dist/{web-DFqKskm8.js → web-ysMm0Pnv.js} +1 -1
  162. package/package.json +1 -1
  163. package/dist/plugin-sdk/web-BkEJ_MjB.js +0 -65
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-kuehpmXb.js";
4
+ import "./reply-ahHa59uT.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -113,18 +113,18 @@ import "./service-Cl74hx8J.js";
113
113
  import "./diagnostics-BAMlsVVX.js";
114
114
  import "./table-BTgkRafz.js";
115
115
  import "./audit-CrITRV6w.js";
116
- import "./status-Bow6kS56.js";
117
- import "./health-CM3gPoYN.js";
116
+ import "./status-Dd3-6fq5.js";
117
+ import "./health-R_6vQfbY.js";
118
118
  import "./control-ui-assets-Z947tKLt.js";
119
119
  import "./update-check-CtckACbb.js";
120
- import { n as handleGatewayRequest } from "./server-methods-BHjqwsiI.js";
121
- import "./push-apns-glbAu-g9.js";
122
- import "./agents.config-Dzr8Us0l.js";
120
+ import { n as handleGatewayRequest } from "./server-methods-B9ZPWP0q.js";
121
+ import "./push-apns-CgmHr336.js";
122
+ import "./agents.config-CVlanyIt.js";
123
123
  import "./dm-policy-shared-Bh3TbexU.js";
124
124
  import "./node-service-Cxz4e-Qd.js";
125
125
  import "./status.update-DtwCUTf-.js";
126
126
  import "./skills-install-D67isO1L.js";
127
- import "./update-runner-C0iELmzo.js";
127
+ import "./update-runner-CB0M0lum.js";
128
128
 
129
129
  //#region src/gateway/glass-ui-ws.ts
130
130
  const SESSION_KEY = "agent:main:main";
@@ -155,23 +155,38 @@ function safeSend(ws, data) {
155
155
  }
156
156
  function createGlassUiBridge(opts) {
157
157
  const { wss, context, extraHandlers, onBroadcast } = opts;
158
- const browserClients = /* @__PURE__ */ new Set();
159
- function broadcastToBrowsers(msg) {
160
- for (const client of browserClients) safeSend(client, msg);
158
+ const browserClients = /* @__PURE__ */ new Map();
159
+ let broadcastSeq = 0;
160
+ function broadcastToBrowsers(msg, seq) {
161
+ for (const [, state] of browserClients) {
162
+ if (seq <= state.lastBroadcastSeq) continue;
163
+ state.lastBroadcastSeq = seq;
164
+ safeSend(state.ws, msg);
165
+ }
161
166
  }
162
167
  const broadcastUnsub = onBroadcast((event, payload) => {
168
+ broadcastSeq++;
169
+ const seq = broadcastSeq;
163
170
  if (event === "chat") broadcastToBrowsers({
164
171
  type: "chat",
165
- payload
166
- });
172
+ payload,
173
+ _seq: seq
174
+ }, seq);
167
175
  else if (event === "agent") broadcastToBrowsers({
168
176
  type: "agent",
169
- payload
170
- });
177
+ payload,
178
+ _seq: seq
179
+ }, seq);
171
180
  else if (event === "subagent") broadcastToBrowsers({
172
181
  type: "subagent",
173
- payload
174
- });
182
+ payload,
183
+ _seq: seq
184
+ }, seq);
185
+ else if (event === "profile") broadcastToBrowsers({
186
+ type: "profile",
187
+ payload,
188
+ _seq: seq
189
+ }, seq);
175
190
  });
176
191
  /** Dispatch an RPC method through the gateway's internal handler. */
177
192
  async function dispatchRpc(method, params) {
@@ -215,7 +230,10 @@ function createGlassUiBridge(opts) {
215
230
  } catch {}
216
231
  }
217
232
  wss.on("connection", (ws) => {
218
- browserClients.add(ws);
233
+ browserClients.set(ws, {
234
+ ws,
235
+ lastBroadcastSeq: broadcastSeq
236
+ });
219
237
  safeSend(ws, {
220
238
  type: "status",
221
239
  connected: true
@@ -297,8 +315,8 @@ function createGlassUiBridge(opts) {
297
315
  });
298
316
  return () => {
299
317
  broadcastUnsub();
300
- for (const client of browserClients) try {
301
- client.close();
318
+ for (const [, state] of browserClients) try {
319
+ state.ws.close();
302
320
  } catch {}
303
321
  browserClients.clear();
304
322
  };
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
13
13
  import "./call-BcE47FtD.js";
14
14
  import "./message-channel-C9dERklz.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-BxM7J5m6.js";
16
+ import "./subagent-registry-DfimjEyh.js";
17
17
  import "./sessions-CJXnZVjR.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -108,18 +108,18 @@ import "./service-Cm9j9WzQ.js";
108
108
  import "./diagnostics-CS1ov_hH.js";
109
109
  import "./table-D01d2GuY.js";
110
110
  import "./audit-Byo5jCLN.js";
111
- import "./status-BJITmlhZ.js";
112
- import "./health-vuMM-FAs.js";
111
+ import "./status-Csa1fdSW.js";
112
+ import "./health-CGJe8xON.js";
113
113
  import "./control-ui-assets-BseSWee1.js";
114
114
  import "./update-check-ZdimP1aU.js";
115
- import { n as handleGatewayRequest } from "./server-methods-rmWST_iV.js";
116
- import "./push-apns-DpdcOumU.js";
117
- import "./agents.config-VjZQr5GP.js";
115
+ import { n as handleGatewayRequest } from "./server-methods-CGVoOkf3.js";
116
+ import "./push-apns-BBaXO4aV.js";
117
+ import "./agents.config-CQVRXowo.js";
118
118
  import "./dm-policy-shared-DJ-61hCT.js";
119
119
  import "./node-service-fcZExd22.js";
120
120
  import "./status.update-DbmZz0Aq.js";
121
121
  import "./skills-install-1ZdwGTnh.js";
122
- import "./update-runner-YRJPtj9J.js";
122
+ import "./update-runner-C0hYiaj2.js";
123
123
 
124
124
  //#region src/gateway/glass-ui-ws.ts
125
125
  const SESSION_KEY = "agent:main:main";
@@ -150,23 +150,38 @@ function safeSend(ws, data) {
150
150
  }
151
151
  function createGlassUiBridge(opts) {
152
152
  const { wss, context, extraHandlers, onBroadcast } = opts;
153
- const browserClients = /* @__PURE__ */ new Set();
154
- function broadcastToBrowsers(msg) {
155
- for (const client of browserClients) safeSend(client, msg);
153
+ const browserClients = /* @__PURE__ */ new Map();
154
+ let broadcastSeq = 0;
155
+ function broadcastToBrowsers(msg, seq) {
156
+ for (const [, state] of browserClients) {
157
+ if (seq <= state.lastBroadcastSeq) continue;
158
+ state.lastBroadcastSeq = seq;
159
+ safeSend(state.ws, msg);
160
+ }
156
161
  }
157
162
  const broadcastUnsub = onBroadcast((event, payload) => {
163
+ broadcastSeq++;
164
+ const seq = broadcastSeq;
158
165
  if (event === "chat") broadcastToBrowsers({
159
166
  type: "chat",
160
- payload
161
- });
167
+ payload,
168
+ _seq: seq
169
+ }, seq);
162
170
  else if (event === "agent") broadcastToBrowsers({
163
171
  type: "agent",
164
- payload
165
- });
172
+ payload,
173
+ _seq: seq
174
+ }, seq);
166
175
  else if (event === "subagent") broadcastToBrowsers({
167
176
  type: "subagent",
168
- payload
169
- });
177
+ payload,
178
+ _seq: seq
179
+ }, seq);
180
+ else if (event === "profile") broadcastToBrowsers({
181
+ type: "profile",
182
+ payload,
183
+ _seq: seq
184
+ }, seq);
170
185
  });
171
186
  /** Dispatch an RPC method through the gateway's internal handler. */
172
187
  async function dispatchRpc(method, params) {
@@ -210,7 +225,10 @@ function createGlassUiBridge(opts) {
210
225
  } catch {}
211
226
  }
212
227
  wss.on("connection", (ws) => {
213
- browserClients.add(ws);
228
+ browserClients.set(ws, {
229
+ ws,
230
+ lastBroadcastSeq: broadcastSeq
231
+ });
214
232
  safeSend(ws, {
215
233
  type: "status",
216
234
  connected: true
@@ -292,8 +310,8 @@ function createGlassUiBridge(opts) {
292
310
  });
293
311
  return () => {
294
312
  broadcastUnsub();
295
- for (const client of browserClients) try {
296
- client.close();
313
+ for (const [, state] of browserClients) try {
314
+ state.ws.close();
297
315
  } catch {}
298
316
  browserClients.clear();
299
317
  };
@@ -4,7 +4,7 @@ import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as no
4
4
  import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-D-jRCY0d.js";
5
5
  import { C as parseDurationMs, i as loadConfig } from "./config-DHBLS1Hl.js";
6
6
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BcE47FtD.js";
7
- import { Jn as resolveUserTimezone, Tn as peekSystemEventEntries, Y as getReplyFromConfig, Z as appendCronStyleCurrentTimeLine, _r as isHeartbeatContentEffectivelyEmpty, dn as requestHeartbeatNow, fn as setHeartbeatWakeHandler, gr as DEFAULT_HEARTBEAT_EVERY, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lr as getQueueSize, lt as resolveHeartbeatDeliveryTarget, mr as CommandLane, pn as resolveHeartbeatReasonKind, ut as resolveHeartbeatSenderContext, vr as resolveHeartbeatPrompt$1, yr as stripHeartbeatToken } from "./subagent-registry-BxM7J5m6.js";
7
+ import { Jn as resolveUserTimezone, Tn as peekSystemEventEntries, Y as getReplyFromConfig, Z as appendCronStyleCurrentTimeLine, _r as isHeartbeatContentEffectivelyEmpty, dn as requestHeartbeatNow, fn as setHeartbeatWakeHandler, gr as DEFAULT_HEARTBEAT_EVERY, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lr as getQueueSize, lt as resolveHeartbeatDeliveryTarget, mr as CommandLane, pn as resolveHeartbeatReasonKind, ut as resolveHeartbeatSenderContext, vr as resolveHeartbeatPrompt$1, yr as stripHeartbeatToken } from "./subagent-registry-DfimjEyh.js";
8
8
  import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-CJXnZVjR.js";
9
9
  import { r as SYMIPULSE_TOKEN } from "./tokens-Csntmwwn.js";
10
10
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
@@ -1,5 +1,5 @@
1
1
  import { B as theme, k as info, l as escapeRegExp, z as isRich } from "./utils-B-0b9bGM.js";
2
- import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-kuehpmXb.js";
2
+ import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-ahHa59uT.js";
3
3
  import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-DCt45XZa.js";
4
4
  import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
5
5
  import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-CgUHAtCo.js";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, S as shortenHomePath, t as CONFIG_DIR, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-kuehpmXb.js";
4
+ import "./reply-ahHa59uT.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -108,7 +108,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
108
108
  import { t as renderTable } from "./table-BTgkRafz.js";
109
109
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-CYxdoAlY.js";
110
110
  import { t as buildWorkspaceHookStatus } from "./hooks-status-BqLZtMLa.js";
111
- import { t as buildPluginStatusReport } from "./status-CRuOmtVo.js";
111
+ import { t as buildPluginStatusReport } from "./status-TUjwchut.js";
112
112
  import fs from "node:fs";
113
113
  import path from "node:path";
114
114
  import fs$1 from "node:fs/promises";
@@ -15,7 +15,7 @@ import "./client-DMBZpU6X.js";
15
15
  import "./call-BcE47FtD.js";
16
16
  import "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import "./subagent-registry-BxM7J5m6.js";
18
+ import "./subagent-registry-DfimjEyh.js";
19
19
  import "./sessions-CJXnZVjR.js";
20
20
  import "./tokens-Csntmwwn.js";
21
21
  import "./plugins-CwSlLxM8.js";
@@ -104,7 +104,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
104
104
  import { t as renderTable } from "./table-D01d2GuY.js";
105
105
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-B51TF6q3.js";
106
106
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CEoLdlyb.js";
107
- import { t as buildPluginStatusReport } from "./status-DJhmJYSu.js";
107
+ import { t as buildPluginStatusReport } from "./status-DNRd5-AN.js";
108
108
  import path from "node:path";
109
109
  import fs from "node:fs";
110
110
  import fs$1 from "node:fs/promises";
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import "./paths-Cqn-zk3M.js";
3
3
  import { B as theme, P as setVerbose, T as toWhatsappJid, l as escapeRegExp, m as normalizeE164, n as assertWebChannel, z as isRich } from "./utils-B-0b9bGM.js";
4
4
  import "./thinking-EAliFiVK.js";
5
- import { Lt as createDefaultDeps, bt as resolveCommitHash, t as getReplyFromConfig } from "./reply-kuehpmXb.js";
5
+ import { Lt as createDefaultDeps, bt as resolveCommitHash, t as getReplyFromConfig } from "./reply-ahHa59uT.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime, r as enableConsoleCapture, u as visibleWidth } from "./subsystem-D9vIQve0.js";
8
8
  import { n as runExec, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
@@ -103,7 +103,7 @@ import "./pi-tools.policy-CIDBbw6x.js";
103
103
  import "./control-service-Bz7rxLWq.js";
104
104
  import "./stagger-BUClb97_.js";
105
105
  import "./channel-selection-DuWs0Aak.js";
106
- import { r as waitForever, t as monitorWebChannel } from "./channel-web-Cv1L-jTo.js";
106
+ import { r as waitForever, t as monitorWebChannel } from "./channel-web-D6t5UK5A.js";
107
107
  import "./outbound-DB5Zus0-.js";
108
108
  import "./session-DIBTkyvE.js";
109
109
  import "./login-dIlDkG4X.js";
@@ -112,10 +112,10 @@ import { t as ensureSymiCliOnPath } from "./path-env-MnzRq6nD.js";
112
112
  import { t as assertSupportedRuntime } from "./runtime-guard-B37eizu-.js";
113
113
  import "./ports-BX0kKI0g.js";
114
114
  import { a as hasFlag, i as getVerboseFlag, n as getCommandPath, o as hasHelpOrVersion, s as hasRootVersionAlias } from "./argv-C6ovOie2.js";
115
- import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-C0vN6LYk.js";
115
+ import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-C6OueMej.js";
116
116
  import "./catalog-RiADx7MA.js";
117
- import "./plugin-registry-BfqJjw6d.js";
118
- import { n as resolveCliChannelOptions } from "./channel-options-Bb2WRpn4.js";
117
+ import "./plugin-registry-DZ4m64Mr.js";
118
+ import { n as resolveCliChannelOptions } from "./channel-options-nfXd5NWO.js";
119
119
  import process$1 from "node:process";
120
120
  import { fileURLToPath } from "node:url";
121
121
  import { Command } from "commander";
@@ -515,7 +515,7 @@ function registerPreActionHooks(program, programVersion) {
515
515
  commandPath
516
516
  });
517
517
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
518
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-BfqJjw6d.js").then((n) => n.n);
518
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-DZ4m64Mr.js").then((n) => n.n);
519
519
  ensurePluginRegistryLoaded();
520
520
  }
521
521
  });
@@ -4,7 +4,7 @@ import { c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWork
4
4
  import "./subsystem-Bs9YvKLa.js";
5
5
  import "./workspace-wAaHI8-5.js";
6
6
  import "./tokens-H1H1LiSQ.js";
7
- import { a as runEmbeddedPiAgent } from "./pi-embedded-Ch-LcMWg.js";
7
+ import { a as runEmbeddedPiAgent } from "./pi-embedded-Cuoz1LlF.js";
8
8
  import "./plugins-DQYI3Fr-.js";
9
9
  import "./accounts-tNElYrCH.js";
10
10
  import "./boolean-B8-BqKGQ.js";
@@ -7,7 +7,7 @@ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CaX_1WHk.j
7
7
  import { i as resolveForwardCompatModel, r as ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES } from "./model-DiCH8rkE.js";
8
8
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Do3xMEtM.js";
9
9
  import { C as parseDurationMs, i as loadConfig } from "./config-DHBLS1Hl.js";
10
- import { O as runEmbeddedPiAgent, _n as DEFAULT_OAUTH_WARN_MS, _t as describeFailoverError, an as formatUsageWindowSummary, gn as maskApiKey, on as resolveUsageProviderId, rn as loadProviderUsageSummary, vn as buildAuthHealthSummary, yn as formatRemainingShort } from "./subagent-registry-BxM7J5m6.js";
10
+ import { O as runEmbeddedPiAgent, _n as DEFAULT_OAUTH_WARN_MS, _t as describeFailoverError, an as formatUsageWindowSummary, gn as maskApiKey, on as resolveUsageProviderId, rn as loadProviderUsageSummary, vn as buildAuthHealthSummary, yn as formatRemainingShort } from "./subagent-registry-DfimjEyh.js";
11
11
  import { i as resolveSessionTranscriptPath, s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
12
12
  import { t as ensureSymiModelsJson } from "./models-config-CCMpqFyr.js";
13
13
  import { n as loadModelCatalog } from "./model-catalog-CqCsARJX.js";
@@ -21,7 +21,7 @@ import { n as redactSecrets } from "./format-DVLB9DNB.js";
21
21
  import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-D8K9MkWg.js";
22
22
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-Cmrk2TPo.js";
23
23
  import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
24
- import { a as createVpsAwareOAuthHandlers, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-CPbCxhvj.js";
24
+ import { a as createVpsAwareOAuthHandlers, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-BDN3x0AU.js";
25
25
  import path from "node:path";
26
26
  import fs from "node:fs/promises";
27
27
  import { complete, getEnvApiKey, getModel } from "@mariozechner/pi-ai";
@@ -1,7 +1,7 @@
1
1
  import { t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, R as colorize, S as shortenHomePath, z as isRich$1 } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Yt as describeFailoverError, _r as formatRemainingShort, gr as buildAuthHealthSummary, gt as loadProviderUsageSummary, hr as DEFAULT_OAUTH_WARN_MS, mr as maskApiKey, vt as formatUsageWindowSummary, yt as resolveUsageProviderId, zt as runEmbeddedPiAgent } from "./reply-kuehpmXb.js";
4
+ import { Yt as describeFailoverError, _r as formatRemainingShort, gr as buildAuthHealthSummary, gt as loadProviderUsageSummary, hr as DEFAULT_OAUTH_WARN_MS, mr as maskApiKey, vt as formatUsageWindowSummary, yt as resolveUsageProviderId, zt as runEmbeddedPiAgent } from "./reply-ahHa59uT.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -110,7 +110,7 @@ import { n as redactSecrets } from "./format-yQZNwAF2.js";
110
110
  import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-Knv1hy6h.js";
111
111
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-BnOynwk4.js";
112
112
  import { n as logConfigUpdated } from "./logging-BzzwiKjv.js";
113
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-C4-EqP9W.js";
113
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-CwUeZ41c.js";
114
114
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./system-cli-UMsMEurS.js";
115
115
  import path from "node:path";
116
116
  import fs from "node:fs/promises";
@@ -14,7 +14,7 @@ import "./client-DMBZpU6X.js";
14
14
  import "./call-BcE47FtD.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-BxM7J5m6.js";
17
+ import "./subagent-registry-DfimjEyh.js";
18
18
  import "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -104,8 +104,8 @@ import "./table-D01d2GuY.js";
104
104
  import "./shared-D8K9MkWg.js";
105
105
  import "./auth-token-Cmrk2TPo.js";
106
106
  import "./logging-BGewRZy0.js";
107
- import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-CPbCxhvj.js";
108
- import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-CBtd5YaQ.js";
107
+ import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-BDN3x0AU.js";
108
+ import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-DPk6zVF5.js";
109
109
 
110
110
  //#region src/cli/models-cli.ts
111
111
  function runModelsCommand(action) {
@@ -9,8 +9,8 @@ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGate
9
9
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
10
10
  import { r as isSystemdUserServiceAvailable } from "./systemd-DlMdyFDY.js";
11
11
  import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
12
- import { r as healthCommand } from "./health-vuMM-FAs.js";
13
- import { t as runOnboardingWizard } from "./onboarding-3iCiOVeb.js";
12
+ import { r as healthCommand } from "./health-CGJe8xON.js";
13
+ import { t as runOnboardingWizard } from "./onboarding-BL5h6kMP.js";
14
14
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-Cmrk2TPo.js";
15
15
  import { n as logConfigUpdated } from "./logging-BGewRZy0.js";
16
16
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-BKXTgyr4.js";
@@ -11,8 +11,8 @@ import { t as createClackPrompter } from "./clack-prompter-B7pN13HV.js";
11
11
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-2mwX-jqj.js";
12
12
  import { r as isSystemdUserServiceAvailable } from "./systemd-riq8uNJQ.js";
13
13
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
14
- import { r as healthCommand } from "./health-CM3gPoYN.js";
15
- import { t as runOnboardingWizard } from "./onboarding-ztTrPGQa.js";
14
+ import { r as healthCommand } from "./health-R_6vQfbY.js";
15
+ import { t as runOnboardingWizard } from "./onboarding-CeLx4VEB.js";
16
16
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-BnOynwk4.js";
17
17
  import { n as logConfigUpdated } from "./logging-BzzwiKjv.js";
18
18
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-Ch38-Kbr.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-kuehpmXb.js";
2
+ import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-ahHa59uT.js";
3
3
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DCt45XZa.js";
4
4
  import { a as formatChannelSelectionLine, i as formatChannelPrimerLine, s as listChatChannels } from "./registry-Cja8eT7G.js";
5
5
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
@@ -3,7 +3,7 @@ import { E as formatChannelSelectionLine, O as listChatChannels, T as formatChan
3
3
  import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
4
4
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DjZ7Z1hW.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
6
- import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-BxM7J5m6.js";
6
+ import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-DfimjEyh.js";
7
7
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
8
8
  import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
9
9
  import { r as listChannelPluginCatalogEntries } from "./catalog-DLQFKucJ.js";
@@ -223,7 +223,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
223
223
  const { ensureAuthProfileStore } = await import("./auth-profiles-Q1xTr5SX.js").then((n) => n.t);
224
224
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-DVcYPG2v.js").then((n) => n.t);
225
225
  const { promptCustomApiConfig } = await import("./onboard-custom-DdWPfzJO.js").then((n) => n.r);
226
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-C01glnpg.js").then((n) => n.t);
226
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-AlA3IixA.js").then((n) => n.t);
227
227
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-D5nCutGW.js").then((n) => n.i);
228
228
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
229
229
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -276,7 +276,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
276
276
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
277
277
  else {
278
278
  const { listChannelPlugins } = await import("./plugins-CwSlLxM8.js").then((n) => n.i);
279
- const { setupChannels } = await import("./onboard-channels-eCCJophA.js").then((n) => n.n);
279
+ const { setupChannels } = await import("./onboard-channels-r6Gvo5Cd.js").then((n) => n.n);
280
280
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
281
281
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
282
282
  allowSignalInstall: true,
@@ -302,7 +302,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
302
302
  mode
303
303
  });
304
304
  await writeConfigFile(nextConfig);
305
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DsOBEKtX.js");
305
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-EOjEh487.js");
306
306
  const { launchedTui } = await finalizeOnboardingWizard({
307
307
  flow,
308
308
  opts,
@@ -225,7 +225,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
225
225
  const { ensureAuthProfileStore } = await import("./model-selection-CyFvYcRt.js").then((n) => n.dt);
226
226
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-BLzEBA1v.js").then((n) => n.t);
227
227
  const { promptCustomApiConfig } = await import("./onboard-custom-C7O-zfQ1.js").then((n) => n.r);
228
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-BJPRC23V.js").then((n) => n.t);
228
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-BKmjyPNC.js").then((n) => n.t);
229
229
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-Ddo3jHe-.js").then((n) => n.i);
230
230
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
231
231
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -278,7 +278,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
278
278
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
279
279
  else {
280
280
  const { listChannelPlugins } = await import("./plugins-DKDeQZF0.js").then((n) => n.i);
281
- const { setupChannels } = await import("./onboard-channels-BgMpB9vX.js").then((n) => n.n);
281
+ const { setupChannels } = await import("./onboard-channels-D680exuN.js").then((n) => n.n);
282
282
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
283
283
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
284
284
  allowSignalInstall: true,
@@ -304,7 +304,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
304
304
  mode
305
305
  });
306
306
  await writeConfigFile(nextConfig);
307
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-bcSfd4yw.js");
307
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-y1rlw-1v.js");
308
308
  const { launchedTui } = await finalizeOnboardingWizard({
309
309
  flow,
310
310
  opts,
@@ -14,7 +14,7 @@ import "./client-DMBZpU6X.js";
14
14
  import "./call-BcE47FtD.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-BxM7J5m6.js";
17
+ import "./subagent-registry-DfimjEyh.js";
18
18
  import "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -99,18 +99,18 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-D1HDboV2.js";
100
100
  import "./pi-tools.policy-De00gPXt.js";
101
101
  import "./note-DDecZomM.js";
102
- import "./register.subclis-PQ2Ulz3J.js";
103
- import "./command-registry-D7MjQKMD.js";
102
+ import "./register.subclis-CWosGlSy.js";
103
+ import "./command-registry-Be3hDEmx.js";
104
104
  import "./program-context-CqzR_m-7.js";
105
- import { r as installCompletion } from "./completion-cli-Bcv09Yuh.js";
105
+ import { r as installCompletion } from "./completion-cli-C3hbO0zE.js";
106
106
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CfRwa6qh.js";
107
107
  import "./runtime-guard-D7waq_Ho.js";
108
108
  import { r as isSystemdUserServiceAvailable } from "./systemd-DlMdyFDY.js";
109
109
  import { t as resolveGatewayService } from "./service-Cm9j9WzQ.js";
110
- import { r as healthCommand } from "./health-vuMM-FAs.js";
110
+ import { r as healthCommand } from "./health-CGJe8xON.js";
111
111
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BseSWee1.js";
112
112
  import { t as formatHealthCheckFailure } from "./health-format-CzgUHmmX.js";
113
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-bTUb2Em4.js";
113
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CRgIetEl.js";
114
114
  import { t as runTui } from "./tui-BJB80muc.js";
115
115
  import os from "node:os";
116
116
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { h as pathExists, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-kuehpmXb.js";
4
+ import "./reply-ahHa59uT.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import { p as restoreTerminalState } from "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -103,16 +103,16 @@ import "./control-service-Bz7rxLWq.js";
103
103
  import "./stagger-BUClb97_.js";
104
104
  import "./channel-selection-DuWs0Aak.js";
105
105
  import "./runtime-guard-B37eizu-.js";
106
- import "./program-context-C0vN6LYk.js";
106
+ import "./program-context-C6OueMej.js";
107
107
  import "./note-DeHoW7xO.js";
108
- import { r as installCompletion } from "./completion-cli-BLYlpN4p.js";
108
+ import { r as installCompletion } from "./completion-cli-DxditxWW.js";
109
109
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-2mwX-jqj.js";
110
110
  import { r as isSystemdUserServiceAvailable } from "./systemd-riq8uNJQ.js";
111
111
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
112
- import { r as healthCommand } from "./health-CM3gPoYN.js";
112
+ import { r as healthCommand } from "./health-R_6vQfbY.js";
113
113
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Z947tKLt.js";
114
114
  import { t as formatHealthCheckFailure } from "./health-format-DSwnXZPU.js";
115
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DVs_xVw4.js";
115
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DKL7Fzep.js";
116
116
  import { t as runTui } from "./tui-CriznorL.js";
117
117
  import os from "node:os";
118
118
  import path from "node:path";
@@ -51819,7 +51819,16 @@ const BUILTIN_PROFILES = [
51819
51819
  suppressMonologue: true,
51820
51820
  hasStructuredThinking: false
51821
51821
  },
51822
- promptAdditions: ["You are running locally via Ollama. Do not output raw control tokens or internal monologue. Send brief progress updates on long tasks."],
51822
+ promptAdditions: [
51823
+ "CRITICAL OUTPUT RULES:",
51824
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
51825
+ "- Do not output raw control tokens, channel tags, or turn markers.",
51826
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
51827
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
51828
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
51829
+ "- If you need to verify your work, do so before writing your response, not after.",
51830
+ "- Send brief progress updates on long tasks so the user knows you are active."
51831
+ ],
51823
51832
  ui: {
51824
51833
  badge: "Local",
51825
51834
  watchdogMs: 9e5,
@@ -51879,12 +51888,15 @@ const BUILTIN_PROFILES = [
51879
51888
  hasStructuredThinking: false
51880
51889
  },
51881
51890
  promptAdditions: [
51882
- "You are running as Gemma 4 via vLLM. Important behavioral rules:",
51883
- "- Never output raw control tokens, channel tags, or turn markers in your responses.",
51884
- "- Never display internal status checks, plans, or self-assessments. Your visible output should only be conversational responses and final results.",
51885
- "- When working on multi-step tasks, send a brief one-line status update every 30-60 seconds so the user knows you are active.",
51891
+ "CRITICAL OUTPUT RULES:",
51892
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
51893
+ "- Do not output raw control tokens, channel tags, turn markers, or <|channel>thought syntax.",
51894
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
51895
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
51896
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
51897
+ "- If you need to verify your work, do so before writing your response, not after.",
51886
51898
  "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
51887
- "- Do not use <|channel>thought or similar syntax. If you need to reason, do so silently."
51899
+ "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
51888
51900
  ],
51889
51901
  ui: {
51890
51902
  badge: "CoreWeave",
@@ -60306,7 +60318,7 @@ async function runAgentTurn(params) {
60306
60318
  function createDefaultDeps() {
60307
60319
  return {
60308
60320
  sendMessageWhatsApp: async (...args) => {
60309
- const { sendMessageWhatsApp } = await import("./web-CubghJNN.js");
60321
+ const { sendMessageWhatsApp } = await import("./web-DEbB7-Xr.js");
60310
60322
  return await sendMessageWhatsApp(...args);
60311
60323
  },
60312
60324
  sendMessageTelegram: async (...args) => {
@@ -75586,7 +75598,7 @@ function loadWebLoginQr() {
75586
75598
  return webLoginQrPromise;
75587
75599
  }
75588
75600
  function loadWebChannel() {
75589
- webChannelPromise ??= import("./web-CubghJNN.js");
75601
+ webChannelPromise ??= import("./web-DEbB7-Xr.js");
75590
75602
  return webChannelPromise;
75591
75603
  }
75592
75604
  function loadWhatsAppActions() {