@symerian/symi 2.5.0 → 2.5.2

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 (171) hide show
  1. package/dist/{agents-BEPfMqrg.js → agents-DfyzZKBc.js} +4 -4
  2. package/dist/{agents.config-DPv-AmZD.js → agents.config-Dzr8Us0l.js} +1 -1
  3. package/dist/{agents.config-D60gMagv.js → agents.config-VjZQr5GP.js} +1 -1
  4. package/dist/{audio-preflight-CPBOQV4I.js → audio-preflight-C40mKAp7.js} +4 -4
  5. package/dist/{auth-choice-CTeG2A5P.js → auth-choice-BJPRC23V.js} +1 -1
  6. package/dist/{auth-choice-BeHaRQfM.js → auth-choice-C01glnpg.js} +1 -1
  7. package/dist/{banner-DihS8WHF.js → banner-B4wP-CCZ.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +1 -1
  10. package/dist/bundled/session-memory/handler.js +1 -1
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-D2Zf6a2L.js → channel-options-Bb2WRpn4.js} +1 -1
  13. package/dist/{channel-options-BJphNYiq.js → channel-options-DRK05uet.js} +1 -1
  14. package/dist/{channel-web-BnZ6c0_u.js → channel-web-Cv1L-jTo.js} +1 -1
  15. package/dist/{channels-cli-COMko9mZ.js → channels-cli-CPvaBiNE.js} +4 -4
  16. package/dist/{channels-cli-CF9LDCSC.js → channels-cli-Dnwswsi2.js} +4 -4
  17. package/dist/{chrome-D2SKJnR7.js → chrome-CDJYxX5a.js} +7 -7
  18. package/dist/{cli-DYNTJxmZ.js → cli-CgQySW2m.js} +1 -1
  19. package/dist/{cli-DXpAHJS4.js → cli-hT0g_Q65.js} +1 -1
  20. package/dist/{command-registry-X_FmrHib.js → command-registry-D7MjQKMD.js} +9 -9
  21. package/dist/{completion-cli-D1aObtjM.js → completion-cli-BLYlpN4p.js} +1 -1
  22. package/dist/{completion-cli-Dhj0jCR_.js → completion-cli-Bcv09Yuh.js} +2 -2
  23. package/dist/{config-cli-BrmaXVj4.js → config-cli-CIkKTucr.js} +1 -1
  24. package/dist/{config-cli-BDpBT1b-.js → config-cli-CtKkpyHu.js} +1 -1
  25. package/dist/{configure-CkCFJCKp.js → configure-BP4M7T_e.js} +3 -3
  26. package/dist/{configure-oMqP6jIk.js → configure-Bhm7x3Ri.js} +3 -3
  27. package/dist/control-ui/js/render.js +4 -32
  28. package/dist/{deliver-C-37cZUe.js → deliver-BH0l3UKW.js} +1 -1
  29. package/dist/{doctor-completion-vhqAoURB.js → doctor-completion-DVs_xVw4.js} +1 -1
  30. package/dist/{doctor-completion-wGoyzRH8.js → doctor-completion-bTUb2Em4.js} +1 -1
  31. package/dist/entry.js +1 -1
  32. package/dist/extensionAPI.js +6 -6
  33. package/dist/{gateway-cli-uDuGdJsH.js → gateway-cli-BPf1OUhU.js} +11 -45
  34. package/dist/{gateway-cli-BBPEwiAc.js → gateway-cli-CY_R8dGA.js} +11 -45
  35. package/dist/{glass-ui-ws-TCkne4L4.js → glass-ui-ws-Cx9mt64o.js} +7 -7
  36. package/dist/{glass-ui-ws-DiqQflvy.js → glass-ui-ws-DMQldmwk.js} +7 -7
  37. package/dist/{health-1KsVR3eN.js → health-CM3gPoYN.js} +1 -1
  38. package/dist/{health-CPYlV7Zg.js → health-vuMM-FAs.js} +1 -1
  39. package/dist/{hooks-cli-PKy2h3eb.js → hooks-cli-B8kuyvML.js} +2 -2
  40. package/dist/{hooks-cli-CL266d2E.js → hooks-cli-tLOOQscu.js} +2 -2
  41. package/dist/{image-DcpMiprB.js → image-CHzdaNJ4.js} +1 -1
  42. package/dist/index.js +6 -6
  43. package/dist/llm-slug-generator.js +1 -1
  44. package/dist/{models-BsS_l1gY.js → models-CBtd5YaQ.js} +2 -2
  45. package/dist/{models-cli-CmR7k-2e.js → models-cli-B8Fq0Of1.js} +2 -2
  46. package/dist/{models-cli-CvxkLybz.js → models-cli-CIp8mElS.js} +3 -3
  47. package/dist/{onboard-D2GpwLzg.js → onboard-CjSHwvTP.js} +2 -2
  48. package/dist/{onboard-Bgo_BcMo.js → onboard-DBCSZwxu.js} +2 -2
  49. package/dist/{onboard-channels-3WFDi7Ts.js → onboard-channels-BgMpB9vX.js} +1 -1
  50. package/dist/{onboard-channels-BNTeFCna.js → onboard-channels-eCCJophA.js} +1 -1
  51. package/dist/{onboarding-BUumoJYB.js → onboarding-3iCiOVeb.js} +3 -3
  52. package/dist/{onboarding-CbkyewZp.js → onboarding-ztTrPGQa.js} +3 -3
  53. package/dist/{onboarding.finalize-B2_mgA4K.js → onboarding.finalize-DsOBEKtX.js} +6 -6
  54. package/dist/{onboarding.finalize-sESCY9Iq.js → onboarding.finalize-bcSfd4yw.js} +5 -5
  55. package/dist/{pi-embedded-BIIdwXKr.js → pi-embedded-Ch-LcMWg.js} +108 -32
  56. package/dist/{pi-embedded-BOF7XlCO.js → pi-embedded-CpI5F8DC.js} +122 -46
  57. package/dist/{pi-embedded-helpers-B8kqLWns.js → pi-embedded-helpers-lgx_U5KS.js} +4 -4
  58. package/dist/{plugin-registry-IXa-nyg0.js → plugin-registry-BfqJjw6d.js} +1 -1
  59. package/dist/{plugin-registry-BDfC2z-e.js → plugin-registry-CL--iTFl.js} +1 -1
  60. package/dist/plugin-sdk/{accounts-BtaOa4z_.js → accounts-BToL3HlP.js} +1 -1
  61. package/dist/plugin-sdk/{accounts-Ddm33hQm.js → accounts-D9zGZU5t.js} +3 -3
  62. package/dist/plugin-sdk/{accounts-s-AdhXVR.js → accounts-Dtszw3Zn.js} +1 -1
  63. package/dist/plugin-sdk/{active-listener-BXYeALs0.js → active-listener-bEk__wbB.js} +1 -1
  64. package/dist/plugin-sdk/{agent-scope-CYYpcO9W.js → agent-scope-C3gMMKCU.js} +2 -2
  65. package/dist/plugin-sdk/agents/session-version.d.ts +48 -0
  66. package/dist/plugin-sdk/{api-key-rotation-D_sMvI5W.js → api-key-rotation-CVBMpnPc.js} +1 -1
  67. package/dist/plugin-sdk/{audio-preflight-VpItkiy3.js → audio-preflight-DoQQKlxa.js} +24 -24
  68. package/dist/plugin-sdk/{bindings-C7hRtgYW.js → bindings-BbwoUGPx.js} +2 -2
  69. package/dist/plugin-sdk/{channel-activity-DoC1xtDu.js → channel-activity-Ji7f0gqq.js} +1 -1
  70. package/dist/plugin-sdk/{channel-web-HznAZS1r.js → channel-web-mO5qO05p.js} +22 -22
  71. package/dist/plugin-sdk/{chrome-B7RdxmJ0.js → chrome-C7c_0I5M.js} +3 -3
  72. package/dist/plugin-sdk/{chunk-Dw2XBYXv.js → chunk-jvk9axTQ.js} +1 -1
  73. package/dist/plugin-sdk/{command-format-GKSevep4.js → command-format-DSdvQ_M5.js} +1 -1
  74. package/dist/plugin-sdk/{commands-registry-COIaslGl.js → commands-registry-CQFbmUMs.js} +4 -4
  75. package/dist/plugin-sdk/{config-KlTNfkFF.js → config-DDkdiUOR.js} +9 -9
  76. package/dist/plugin-sdk/{deliver-BZ99UKQq.js → deliver-BZ6iNLl7.js} +10 -10
  77. package/dist/plugin-sdk/{diagnostic-05pm5Rxi.js → diagnostic-mFf4i4G9.js} +1 -1
  78. package/dist/plugin-sdk/{image-CLOPx7yW.js → image-BOYy0Ump.js} +4 -4
  79. package/dist/plugin-sdk/{image-ops-BlQR__MN.js → image-ops-Bnp6LXEx.js} +1 -1
  80. package/dist/plugin-sdk/index.js +53 -53
  81. package/dist/plugin-sdk/{ir-BJ6BHE5b.js → ir-Fb3qpcis.js} +4 -4
  82. package/dist/plugin-sdk/{local-roots-BHLNSI8U.js → local-roots-Ckk1QfzI.js} +3 -3
  83. package/dist/plugin-sdk/{login-DQMXuxOk.js → login-Bh3DZPam.js} +7 -7
  84. package/dist/plugin-sdk/{login-qr-BjVZSoCi.js → login-qr-DbR7odSr.js} +9 -9
  85. package/dist/plugin-sdk/{manager-CBSBFuFz.js → manager-DckktAQ3.js} +8 -8
  86. package/dist/plugin-sdk/{manifest-registry-CPnHl_K3.js → manifest-registry-B3ugY9-f.js} +1 -1
  87. package/dist/plugin-sdk/{markdown-tables-BoYFajMu.js → markdown-tables-Dfaqilz6.js} +1 -1
  88. package/dist/plugin-sdk/{message-channel-COTAJzHd.js → message-channel-BdI5Ra9S.js} +1 -1
  89. package/dist/plugin-sdk/{model-selection-CsbEfrS0.js → model-selection-OpU8HN50.js} +4 -4
  90. package/dist/plugin-sdk/{outbound-attachment-CnslKL38.js → outbound-attachment-DnVQfTG2.js} +2 -2
  91. package/dist/plugin-sdk/{outbound-B0e8KdaR.js → outbound-rF6G8Xpr.js} +7 -7
  92. package/dist/plugin-sdk/{pi-auth-json-qWi7ZIYV.js → pi-auth-json-CJk8t14T.js} +5 -5
  93. package/dist/plugin-sdk/{pi-embedded-helpers-CW630epe.js → pi-embedded-helpers-BveUP4hk.js} +17 -17
  94. package/dist/plugin-sdk/{plugins-BNByVCIH.js → plugins-BbAvhC25.js} +4 -4
  95. package/dist/plugin-sdk/{pw-ai-CnbPIPY9.js → pw-ai-DjGUsee-.js} +8 -8
  96. package/dist/plugin-sdk/{qmd-manager-CH0XbIHf.js → qmd-manager-mjKcdwVr.js} +4 -4
  97. package/dist/plugin-sdk/{registry-D0xTnUWt.js → registry--_pGht6S.js} +2 -2
  98. package/dist/plugin-sdk/{replies-LLcQL3w6.js → replies-fI39rPGa.js} +3 -3
  99. package/dist/plugin-sdk/{reply-DpnW-aMb.js → reply-B4uPw1l4.js} +184 -108
  100. package/dist/plugin-sdk/{reply-prefix-uxfMZW4p.js → reply-prefix-BHuV5t70.js} +1 -1
  101. package/dist/plugin-sdk/{resolve-outbound-target-BiyAyTWz.js → resolve-outbound-target-BkCUbYGV.js} +2 -2
  102. package/dist/plugin-sdk/{resolve-route-B3CCBumQ.js → resolve-route-D3JH_D2N.js} +3 -3
  103. package/dist/plugin-sdk/{retry-CwQ_iIj8.js → retry-ilSJqnz9.js} +1 -1
  104. package/dist/plugin-sdk/{runner-CGBT7tgF.js → runner-BVqnEfNe.js} +9 -9
  105. package/dist/plugin-sdk/{send-C5h_YxNb.js → send-BHbXh8Ly.js} +7 -7
  106. package/dist/plugin-sdk/{send-pYqe432l.js → send-BMfJIhCk.js} +6 -6
  107. package/dist/plugin-sdk/{send-B2CEnVLL.js → send-BtANzsAo.js} +6 -6
  108. package/dist/plugin-sdk/{send-CjOBB3Vo.js → send-Bxdu6ZZy.js} +10 -10
  109. package/dist/plugin-sdk/{send-CRsR8-vO.js → send-D6LMZJ_h.js} +10 -10
  110. package/dist/plugin-sdk/{session-BsOrxiMj.js → session-kI0tzViQ.js} +4 -4
  111. package/dist/plugin-sdk/{skill-commands-ff_01_r3.js → skill-commands-DCNXVERE.js} +5 -5
  112. package/dist/plugin-sdk/{skills-_yTP47Cd.js → skills-B1GeRYlu.js} +7 -7
  113. package/dist/plugin-sdk/{sqlite-CxAR5ttJ.js → sqlite-Cq_7Cg4E.js} +1 -1
  114. package/dist/plugin-sdk/{store-BdrNabcU.js → store-Do3t33-c.js} +2 -2
  115. package/dist/plugin-sdk/{subsystem-B2uDN3TV.js → subsystem-Coz2AgU8.js} +1 -1
  116. package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
  117. package/dist/plugin-sdk/{target-errors-Paro1BjP.js → target-errors-B7YyMnIi.js} +2 -2
  118. package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
  119. package/dist/plugin-sdk/{tokens-bC3UVmVH.js → tokens-CWMflosr.js} +1 -1
  120. package/dist/plugin-sdk/{tool-images-HJ2sfZDV.js → tool-images-D7Lno-TE.js} +2 -2
  121. package/dist/plugin-sdk/{tool-loop-detection-BVA6fax-.js → tool-loop-detection-edmW8ZiF.js} +2 -2
  122. package/dist/plugin-sdk/web-BkEJ_MjB.js +65 -0
  123. package/dist/plugin-sdk/{whatsapp-actions-DfseosPO.js → whatsapp-actions-CcBzDuL-.js} +21 -21
  124. package/dist/{plugins-cli-DsYvb9az.js → plugins-cli-DVLIR6IN.js} +2 -2
  125. package/dist/{plugins-cli-DAxj0T7n.js → plugins-cli-MaXVJ6uV.js} +2 -2
  126. package/dist/{program-context-C-1s9IMf.js → program-context-C0vN6LYk.js} +17 -17
  127. package/dist/{program-C_UFd0ph.js → program-v4cRnLjP.js} +7 -7
  128. package/dist/{prompt-select-styled-uEjL8GAK.js → prompt-select-styled-CEmtUvNV.js} +4 -4
  129. package/dist/{prompt-select-styled-CYRG7OzR.js → prompt-select-styled-D48W5rxp.js} +4 -4
  130. package/dist/{provider-auth-helpers-CJUiVhCt.js → provider-auth-helpers-C4-EqP9W.js} +1 -1
  131. package/dist/{provider-auth-helpers-CpOR6tLS.js → provider-auth-helpers-CPbCxhvj.js} +1 -1
  132. package/dist/{push-apns-Ciljlk7J.js → push-apns-DpdcOumU.js} +1 -1
  133. package/dist/{push-apns-21LKYvkS.js → push-apns-glbAu-g9.js} +1 -1
  134. package/dist/{pw-ai-1htA-NnS.js → pw-ai-De-KR9_s.js} +1 -1
  135. package/dist/{register.agent-stsk6Gip.js → register.agent-2jRwf1Rt.js} +5 -5
  136. package/dist/{register.agent-BSv7WO-U.js → register.agent-DrocnT2d.js} +6 -6
  137. package/dist/{register.configure-DNQTd6SJ.js → register.configure-DULdexW6.js} +6 -6
  138. package/dist/{register.configure-C8oDtnaI.js → register.configure-yy5Qb8fJ.js} +6 -6
  139. package/dist/{register.maintenance-dTI3y4Eh.js → register.maintenance-CI3D-c8a.js} +8 -8
  140. package/dist/{register.maintenance-B3f3jkUo.js → register.maintenance-v_G9yCLf.js} +7 -7
  141. package/dist/{register.message-K9BDeFyy.js → register.message-DkwXioit.js} +2 -2
  142. package/dist/{register.message-Cbb4nH_0.js → register.message-UoA7D74J.js} +2 -2
  143. package/dist/{register.onboard-BBfmwa3j.js → register.onboard-D3qTCyiW.js} +4 -4
  144. package/dist/{register.onboard-Djz7Di9K.js → register.onboard-DFe3IAjB.js} +4 -4
  145. package/dist/{register.setup-Dmu1jt3n.js → register.setup-DO3vwGHY.js} +4 -4
  146. package/dist/{register.setup-B6hkCLH0.js → register.setup-DXT4OS3N.js} +4 -4
  147. package/dist/{register.status-health-sessions-DaSrMm3l.js → register.status-health-sessions-C5IRI7-t.js} +3 -3
  148. package/dist/{register.status-health-sessions-CvwhBkbb.js → register.status-health-sessions-DGLfWuS4.js} +3 -3
  149. package/dist/{register.subclis-Dv1WM9Kj.js → register.subclis-PQ2Ulz3J.js} +9 -9
  150. package/dist/{reply-BvVsPU7v.js → reply-kuehpmXb.js} +109 -33
  151. package/dist/{run-main-55CDVAv6.js → run-main-BHKGY1KH.js} +14 -14
  152. package/dist/{runner-BcQ0sF9T.js → runner-DUBExAb5.js} +1 -1
  153. package/dist/{server-methods-Bf8SpXoW.js → server-methods-BHjqwsiI.js} +7 -7
  154. package/dist/{server-methods-CDDLS3ke.js → server-methods-rmWST_iV.js} +7 -7
  155. package/dist/{server-node-events-B9iZK3qE.js → server-node-events-KVX4S5Md.js} +2 -2
  156. package/dist/{server-node-events-Dx0L419d.js → server-node-events-za7_iA-n.js} +2 -2
  157. package/dist/{status-C-vthqzQ.js → status-BJITmlhZ.js} +2 -2
  158. package/dist/{status-DEymUALi.js → status-Bow6kS56.js} +2 -2
  159. package/dist/{status-5XgxbiNb.js → status-CRuOmtVo.js} +1 -1
  160. package/dist/{status-C-kU0UFm.js → status-DJhmJYSu.js} +1 -1
  161. package/dist/{subagent-registry-CZah-77E.js → subagent-registry-BxM7J5m6.js} +109 -33
  162. package/dist/{update-cli-BSk-OFnI.js → update-cli-BfGdSZRk.js} +8 -8
  163. package/dist/{update-cli-B21iNb0v.js → update-cli-Dqh498qQ.js} +7 -7
  164. package/dist/{update-runner-DPwXk0QQ.js → update-runner-C0iELmzo.js} +1 -1
  165. package/dist/{update-runner-B5bKK21U.js → update-runner-YRJPtj9J.js} +1 -1
  166. package/dist/{web-mkZpWfVs.js → web-9AS0DiSZ.js} +1 -1
  167. package/dist/{web-CB23XCVF.js → web-CVAyVZBT.js} +2 -2
  168. package/dist/{web-DSgWG_2m.js → web-CubghJNN.js} +1 -1
  169. package/dist/{web-DVvZ_mDC.js → web-DFqKskm8.js} +6 -6
  170. package/package.json +1 -1
  171. package/dist/plugin-sdk/web-CGNEXRkp.js +0 -65
@@ -49,7 +49,7 @@ const entries = [
49
49
  description: "Run, inspect, and query the WebSocket Gateway",
50
50
  hasSubcommands: true,
51
51
  register: async (program) => {
52
- (await import("./gateway-cli-BBPEwiAc.js")).registerGatewayCli(program);
52
+ (await import("./gateway-cli-CY_R8dGA.js")).registerGatewayCli(program);
53
53
  }
54
54
  },
55
55
  {
@@ -81,7 +81,7 @@ const entries = [
81
81
  description: "Discover, scan, and configure models",
82
82
  hasSubcommands: true,
83
83
  register: async (program) => {
84
- (await import("./models-cli-CvxkLybz.js")).registerModelsCli(program);
84
+ (await import("./models-cli-CIp8mElS.js")).registerModelsCli(program);
85
85
  }
86
86
  },
87
87
  {
@@ -161,7 +161,7 @@ const entries = [
161
161
  description: "Manage internal agent hooks",
162
162
  hasSubcommands: true,
163
163
  register: async (program) => {
164
- (await import("./hooks-cli-PKy2h3eb.js")).registerHooksCli(program);
164
+ (await import("./hooks-cli-B8kuyvML.js")).registerHooksCli(program);
165
165
  }
166
166
  },
167
167
  {
@@ -185,7 +185,7 @@ const entries = [
185
185
  description: "Secure DM pairing (approve inbound requests)",
186
186
  hasSubcommands: true,
187
187
  register: async (program) => {
188
- const { registerPluginCliCommands } = await import("./cli-DXpAHJS4.js");
188
+ const { registerPluginCliCommands } = await import("./cli-hT0g_Q65.js");
189
189
  registerPluginCliCommands(program, await loadConfig());
190
190
  (await import("./pairing-cli-CQRAnpvm.js")).registerPairingCli(program);
191
191
  }
@@ -195,8 +195,8 @@ const entries = [
195
195
  description: "Manage Symi plugins and extensions",
196
196
  hasSubcommands: true,
197
197
  register: async (program) => {
198
- (await import("./plugins-cli-DAxj0T7n.js")).registerPluginsCli(program);
199
- const { registerPluginCliCommands } = await import("./cli-DXpAHJS4.js");
198
+ (await import("./plugins-cli-MaXVJ6uV.js")).registerPluginsCli(program);
199
+ const { registerPluginCliCommands } = await import("./cli-hT0g_Q65.js");
200
200
  registerPluginCliCommands(program, await loadConfig());
201
201
  }
202
202
  },
@@ -205,7 +205,7 @@ const entries = [
205
205
  description: "Manage connected chat channels (Telegram, Discord, etc.)",
206
206
  hasSubcommands: true,
207
207
  register: async (program) => {
208
- (await import("./channels-cli-COMko9mZ.js")).registerChannelsCli(program);
208
+ (await import("./channels-cli-CPvaBiNE.js")).registerChannelsCli(program);
209
209
  }
210
210
  },
211
211
  {
@@ -237,7 +237,7 @@ const entries = [
237
237
  description: "Update Symi and inspect update channel status",
238
238
  hasSubcommands: true,
239
239
  register: async (program) => {
240
- (await import("./update-cli-BSk-OFnI.js")).registerUpdateCli(program);
240
+ (await import("./update-cli-BfGdSZRk.js")).registerUpdateCli(program);
241
241
  }
242
242
  },
243
243
  {
@@ -245,7 +245,7 @@ const entries = [
245
245
  description: "Generate shell completion script",
246
246
  hasSubcommands: false,
247
247
  register: async (program) => {
248
- (await import("./completion-cli-Dhj0jCR_.js").then((n) => n.n)).registerCompletionCli(program);
248
+ (await import("./completion-cli-Bcv09Yuh.js").then((n) => n.n)).registerCompletionCli(program);
249
249
  }
250
250
  }
251
251
  ];
@@ -26180,6 +26180,109 @@ function guardSessionManager(sessionManager, opts) {
26180
26180
  return sessionManager;
26181
26181
  }
26182
26182
 
26183
+ //#endregion
26184
+ //#region src/agents/session-version.ts
26185
+ /**
26186
+ * Session Versioning — version-based session migration.
26187
+ *
26188
+ * Each session gets a `symiVersion` field in its JSONL header.
26189
+ * On session load, if the session was created by a known-poison version
26190
+ * (2.3.0-2.3.4), it's archived and a fresh session starts.
26191
+ *
26192
+ * Sessions without `symiVersion` predate 2.3.0 and were created with Claude,
26193
+ * which does not produce corrupted tool args or looping output. Do NOT
26194
+ * archive unversioned sessions — they are safe. Only sessions with an
26195
+ * explicit symiVersion in the known-poison range are archived.
26196
+ *
26197
+ * @module
26198
+ */
26199
+ /** Versions that produced corrupted sessions (tool arg garbage, looping). */
26200
+ const POISON_VERSION_MIN = [
26201
+ 2,
26202
+ 3,
26203
+ 0
26204
+ ];
26205
+ const POISON_VERSION_MAX = [
26206
+ 2,
26207
+ 3,
26208
+ 4
26209
+ ];
26210
+ function parseVersion(v) {
26211
+ return v.split(".").map((s) => parseInt(s, 10)).filter((n) => !Number.isNaN(n));
26212
+ }
26213
+ function compareVersions(a, b) {
26214
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
26215
+ const av = a[i] ?? 0;
26216
+ const bv = b[i] ?? 0;
26217
+ if (av < bv) return -1;
26218
+ if (av > bv) return 1;
26219
+ }
26220
+ return 0;
26221
+ }
26222
+ function isInPoisonRange(version) {
26223
+ const v = parseVersion(version);
26224
+ if (v.length < 3) return false;
26225
+ return compareVersions(v, POISON_VERSION_MIN) >= 0 && compareVersions(v, POISON_VERSION_MAX) <= 0;
26226
+ }
26227
+ /**
26228
+ * Check if a session file was created by a poisoned Symi version.
26229
+ * Returns the symiVersion if poisoned, null if safe.
26230
+ */
26231
+ async function checkSessionPoison(sessionFile) {
26232
+ try {
26233
+ const firstLine = (await fs$1.readFile(sessionFile, "utf-8")).split("\n")[0];
26234
+ if (!firstLine) return null;
26235
+ const header = JSON.parse(firstLine);
26236
+ if (header.type !== "session") return null;
26237
+ const symiVersion = header.symiVersion;
26238
+ if (typeof symiVersion !== "string") return null;
26239
+ if (isInPoisonRange(symiVersion)) return symiVersion;
26240
+ return null;
26241
+ } catch {
26242
+ return null;
26243
+ }
26244
+ }
26245
+ /**
26246
+ * Archive a poisoned session file by renaming it.
26247
+ * The archived file can be inspected later but won't be loaded.
26248
+ */
26249
+ async function archivePoisonedSession(sessionFile) {
26250
+ const archiveName = `${sessionFile}.archived-poison.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
26251
+ await fs$1.rename(sessionFile, archiveName);
26252
+ return archiveName;
26253
+ }
26254
+ /**
26255
+ * Stamp the current Symi version into a session file's header.
26256
+ * Reads the first line, adds/updates symiVersion, rewrites the line.
26257
+ */
26258
+ async function stampSessionVersion(sessionFile) {
26259
+ try {
26260
+ const lines = (await fs$1.readFile(sessionFile, "utf-8")).split("\n");
26261
+ if (lines.length === 0) return;
26262
+ const header = JSON.parse(lines[0]);
26263
+ if (header.type !== "session") return;
26264
+ if (header.symiVersion === VERSION) return;
26265
+ header.symiVersion = VERSION;
26266
+ lines[0] = JSON.stringify(header);
26267
+ await fs$1.writeFile(sessionFile, lines.join("\n"), "utf-8");
26268
+ } catch {}
26269
+ }
26270
+ /**
26271
+ * Check and handle a session file before use.
26272
+ * If poisoned: archive it and return { archived: true }.
26273
+ * Otherwise: stamp the current version and return { archived: false }.
26274
+ */
26275
+ async function handleSessionVersion(sessionFile) {
26276
+ const poison = await checkSessionPoison(sessionFile);
26277
+ if (poison) return {
26278
+ archived: true,
26279
+ archivePath: await archivePoisonedSession(sessionFile),
26280
+ poisonVersion: poison
26281
+ };
26282
+ await stampSessionVersion(sessionFile);
26283
+ return { archived: false };
26284
+ }
26285
+
26183
26286
  //#endregion
26184
26287
  //#region src/agents/stream-monitor.ts
26185
26288
  /**
@@ -29328,6 +29431,8 @@ async function runEmbeddedAttempt(params) {
29328
29431
  provider: params.provider,
29329
29432
  modelId: params.modelId
29330
29433
  });
29434
+ const versionCheck = await handleSessionVersion(params.sessionFile);
29435
+ if (versionCheck.archived) log$6.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
29331
29436
  await prewarmSessionFile(params.sessionFile);
29332
29437
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
29333
29438
  agentId: sessionAgentId,
@@ -30999,7 +31104,7 @@ async function runAgentTurn(params) {
30999
31104
  function createDefaultDeps() {
31000
31105
  return {
31001
31106
  sendMessageWhatsApp: async (...args) => {
31002
- const { sendMessageWhatsApp } = await import("./web-CB23XCVF.js");
31107
+ const { sendMessageWhatsApp } = await import("./web-CVAyVZBT.js");
31003
31108
  return await sendMessageWhatsApp(...args);
31004
31109
  },
31005
31110
  sendMessageTelegram: async (...args) => {
@@ -49430,7 +49535,7 @@ function loadWebLoginQr() {
49430
49535
  return webLoginQrPromise;
49431
49536
  }
49432
49537
  function loadWebChannel() {
49433
- webChannelPromise ??= import("./web-CB23XCVF.js");
49538
+ webChannelPromise ??= import("./web-CVAyVZBT.js");
49434
49539
  return webChannelPromise;
49435
49540
  }
49436
49541
  function loadWhatsAppActions() {
@@ -63968,31 +64073,6 @@ function resolveToolLoopDetectionConfig(params) {
63968
64073
  }
63969
64074
  };
63970
64075
  }
63971
- /**
63972
- * Wrap a tool to strip model-specific control tokens from string arguments
63973
- * before execution. Gemma 4 via vLLM sometimes injects tokens like `<|`
63974
- * into tool call arguments (e.g. `exec("<|node -v")`). This wrapper
63975
- * sanitizes all string values in the argument object.
63976
- */
63977
- function wrapToolWithArgSanitization(tool, modelId) {
63978
- const execute = tool.execute;
63979
- if (!execute) return tool;
63980
- return {
63981
- ...tool,
63982
- execute: async (toolCallId, params, signal, onUpdate) => {
63983
- return execute(toolCallId, sanitizeToolArgs(params, modelId), signal, onUpdate);
63984
- }
63985
- };
63986
- }
63987
- function sanitizeToolArgs(params, modelId) {
63988
- if (!params || typeof params !== "object") return typeof params === "string" ? stripModelTokensAggressive(params, modelId) : params;
63989
- if (Array.isArray(params)) return params.map((item) => sanitizeToolArgs(item, modelId));
63990
- const result = {};
63991
- for (const [key, value] of Object.entries(params)) if (typeof value === "string") result[key] = stripModelTokensAggressive(value, modelId);
63992
- else if (value && typeof value === "object") result[key] = sanitizeToolArgs(value, modelId);
63993
- else result[key] = value;
63994
- return result;
63995
- }
63996
64076
  function createSymiCodingTools(options) {
63997
64077
  const execToolName = "exec";
63998
64078
  const sandbox = options?.sandbox?.enabled ? options.sandbox : void 0;
@@ -64216,11 +64296,7 @@ function createSymiCodingTools(options) {
64216
64296
  agentId
64217
64297
  })
64218
64298
  }));
64219
- const withAbort = options?.abortSignal ? withHooks.map((tool) => wrapToolWithAbortSignal(tool, options.abortSignal)) : withHooks;
64220
- const modelId = options?.modelId ?? "";
64221
- const modelProvider = options?.modelProvider ?? "";
64222
- const fullModelId = modelProvider ? `${modelProvider}/${modelId}` : modelId;
64223
- return fullModelId ? withAbort.map((tool) => wrapToolWithArgSanitization(tool, fullModelId)) : withAbort;
64299
+ return options?.abortSignal ? withHooks.map((tool) => wrapToolWithAbortSignal(tool, options.abortSignal)) : withHooks;
64224
64300
  }
64225
64301
 
64226
64302
  //#endregion
@@ -73016,4 +73092,4 @@ async function getReplyFromConfig(ctx, opts, configOverride) {
73016
73092
  }
73017
73093
 
73018
73094
  //#endregion
73019
- export { buildDeliveryFromLegacyPayload as $, textToSpeech as $n, loadAgentIdentityFromWorkspace as $t, emitGatewayRestart as A, countActiveRunsForSession as An, extractFileContentFromSource as Ar, resolveHeartbeatDeliveryTarget as At, summarizeRestartSentinel as B, onAgentEvent as Bn, abortEmbeddedPiRun as Bt, ensureOutboundSessionEntry as C, hasControlCommand as Cn, isSystemEventContextChanged as Cr, requestBodyErrorToText as Ct, CHANNEL_MESSAGE_ACTION_NAMES as D, buildMentionRegexes as Dn, DEFAULT_INPUT_IMAGE_MIMES as Dr, resolveSessionKeyForRequest as Dt, resetDirectoryCache as E, stopSubagentsForRequester as En, DEFAULT_INPUT_IMAGE_MAX_BYTES as Er, agentCommand as Et, setPreRestartDeferralCheck as F, runSubagentAnnounceFlow as Fn, resolveAgentTimeoutMs as Fr, normalizeSendPolicy as Ft, normalizeCronJobPatch as G, isTtsProviderConfigured as Gn, runWithModelFallback as Gt, writeRestartSentinel as H, resolveUserTimezone as Hn, waitForEmbeddedPiRunEnd as Ht, consumeRestartSentinel as I, readLatestAssistantReply as In, resolveSendPolicy as It, normalizeOptionalSessionKey as J, resolveTtsConfig as Jn, runCliAgent as Jt, inferLegacyName as K, resolveTtsApiKey as Kn, getCliSessionId as Kt, formatDoctorNonInteractiveHint as L, clearAgentRunContext as Ln, createDefaultDeps as Lt, markGatewaySigusr1RestartHandled as M, listDescendantRunsForRequester as Mn, normalizeMimeList as Mr, resolveOutboundTarget as Mt, scheduleGatewaySigusr1Restart as N, listSubagentRunsForRequester as Nn, resolveInputFileLimits as Nr, resolveSessionDeliveryTarget as Nt, consumeGatewaySigusr1RestartAuthorization as O, normalizeMentionText as On, DEFAULT_INPUT_MAX_REDIRECTS as Or, resolveAgentDeliveryPlan as Ot, setGatewaySigusr1RestartPolicy as P, subagent_registry_exports as Pn, estimateBase64DecodedBytes as Pr, createOutboundSendDeps as Pt, migrateLegacyCronPayload as Q, setTtsProvider as Qn, identityHasValues as Qt, formatRestartSentinelMessage as R, emitAgentEvent as Rn, createOutboundSendDeps$1 as Rt, runMessageAction as S, formatZonedTimestamp as Sn, enqueueSystemEvent as Sr, readJsonBodyWithLimit as St, formatTargetDisplay as T, isAbortTrigger as Tn, peekSystemEvents as Tr, sleepWithAbort as Tt, normalizeHttpWebhookUrl as U, getTtsProvider as Un, stripModelTokens as Ut, trimLogTail as V, registerAgentRunContext as Vn, getActiveEmbeddedRunCount as Vt, normalizeCronJobCreate as W, isTtsEnabled as Wn, resolveModelProfile as Wt, normalizePayloadToSystemText as X, resolveTtsProviderOrder as Xn, describeFailoverError as Xt, normalizeOptionalText as Y, resolveTtsPrefsPath as Yn, sha256HexPrefix as Yt, normalizeRequiredName as Z, setTtsEnabled as Zn, resolveAgentAvatar as Zt, loadCombinedSessionStoreForGateway as _, createDedupeCache as _n, buildAuthHealthSummary as _r, formatUsageReportLines as _t, buildChannelSummary as a, unbindThreadBindingsBySessionKey as an, resetAllLanes as ar, persistBrowserProxyFiles as at, resolveGatewaySessionStoreTarget as b, formatInboundEnvelope as bn, applyVerboseOverride as br, resolveCommitHash as bt, clearSessionQueues as c, DEFAULT_GROUP_HISTORY_LIMIT as cn, CommandLane as cr, setHeartbeatWakeHandler as ct, createSymiTools as d, shouldAckReactionForWhatsApp as dn, isHeartbeatContentEffectivelyEmpty as dr, createPluginLoaderLogger as dt, parseIdentityMarkdown as en, OPENAI_TTS_MODELS as er, hasLegacyDeliveryHints as et, resolveAnnounceTargetFromKey as f, dispatchReplyWithBufferedBlockDispatcher as fn, resolveHeartbeatPrompt as fr, loadSymiPlugins as ft, listSessionsFromStore as g, getTotalPendingReplies as gn, DEFAULT_OAUTH_WARN_MS as gr, loadProviderUsageSummary as gt, listAgentsForGateway as h, createReplyDispatcher as hn, maskApiKey as hr, parseActivationCommand as ht, resolveCronStyleNow as i, isExternalHookSession as in, getTotalQueueSize as ir, applyBrowserProxyPaths as it, isGatewaySigusr1RestartExternallyAllowed as j, initSubagentRegistry as jn, extractImageContentFromSource as jr, resolveHeartbeatSenderContext as jt, deferGatewayRestartUntilIdle as k, countActiveDescendantRuns as kn, DEFAULT_INPUT_TIMEOUT_MS as kr, resolveAgentOutboundTarget as kt, applyToolPolicyPipeline as l, buildHistoryContextFromEntries as ln, DEFAULT_HEARTBEAT_ACK_MAX_CHARS as lr, resolveHeartbeatReasonKind as lt, classifySessionKey as m, dispatchInboundMessage as mn, lookupContextTokens as mr, normalizeGroupActivation as mt, BARE_SESSION_RESET_PROMPT as n, detectSuspiciousPatterns as nn, getActiveTaskCount as nr, CHANNEL_TARGETS_DESCRIPTION as nt, buildChannelAccountSnapshot as o, buildPairingReply as on, setCommandLaneConcurrency as or, sniffMimeFromBase64 as ot, canonicalizeSpawnedByForAgent as p, provider_dispatcher_exports as pn, stripHeartbeatToken as pr, deleteTelegramUpdateOffset as pt, normalizeOptionalAgentId as q, resolveTtsAutoMode as qn, setCliSessionId as qt, appendCronStyleCurrentTimeLine as r, getHookType as rn, getQueueSize as rr, CHANNEL_TARGET_DESCRIPTION as rt, formatChannelAllowFrom as s, resolveMentionGating as sn, waitForActiveTasks as sr, requestHeartbeatNow as st, getReplyFromConfig as t, buildSafeExternalPrompt as tn, OPENAI_TTS_VOICES as tr, stripLegacyDeliveryFields as tt, buildDefaultToolPolicyPipelineSteps as u, recordPendingHistoryEntryIfEnabled as un, DEFAULT_HEARTBEAT_EVERY as ur, getPluginToolMeta as ut, loadSessionEntry as v, createInboundDebouncer as vn, formatRemainingShort as vr, formatUsageWindowSummary as vt, resolveOutboundSessionRoute as w, shouldComputeCommandAuthorized as wn, peekSystemEventEntries as wr, computeBackoff as wt, resolveSessionModelRef as x, resolveEnvelopeFormatOptions as xn, parseVerboseOverride as xr, handleSlackHttpRequest as xt, pruneLegacyStoreKeys as y, resolveInboundDebounceMs as yn, applyModelOverrideToSessionEntry as yr, resolveUsageProviderId as yt, readRestartSentinel as z, getAgentRunContext as zn, runEmbeddedPiAgent as zt };
73095
+ export { buildDeliveryFromLegacyPayload as $, OPENAI_TTS_MODELS as $n, parseIdentityMarkdown as $t, emitGatewayRestart as A, initSubagentRegistry as An, extractImageContentFromSource as Ar, resolveHeartbeatDeliveryTarget as At, summarizeRestartSentinel as B, registerAgentRunContext as Bn, abortEmbeddedPiRun as Bt, ensureOutboundSessionEntry as C, shouldComputeCommandAuthorized as Cn, peekSystemEventEntries as Cr, requestBodyErrorToText as Ct, CHANNEL_MESSAGE_ACTION_NAMES as D, normalizeMentionText as Dn, DEFAULT_INPUT_MAX_REDIRECTS as Dr, resolveSessionKeyForRequest as Dt, resetDirectoryCache as E, buildMentionRegexes as En, DEFAULT_INPUT_IMAGE_MIMES as Er, agentCommand as Et, setPreRestartDeferralCheck as F, readLatestAssistantReply as Fn, normalizeSendPolicy as Ft, normalizeCronJobPatch as G, resolveTtsApiKey as Gn, getCliSessionId as Gt, writeRestartSentinel as H, getTtsProvider as Hn, waitForEmbeddedPiRunEnd as Ht, consumeRestartSentinel as I, clearAgentRunContext as In, resolveSendPolicy as It, normalizeOptionalSessionKey as J, resolveTtsPrefsPath as Jn, sha256HexPrefix as Jt, inferLegacyName as K, resolveTtsAutoMode as Kn, setCliSessionId as Kt, formatDoctorNonInteractiveHint as L, emitAgentEvent as Ln, createDefaultDeps as Lt, markGatewaySigusr1RestartHandled as M, listSubagentRunsForRequester as Mn, resolveInputFileLimits as Mr, resolveOutboundTarget as Mt, scheduleGatewaySigusr1Restart as N, subagent_registry_exports as Nn, estimateBase64DecodedBytes as Nr, resolveSessionDeliveryTarget as Nt, consumeGatewaySigusr1RestartAuthorization as O, countActiveDescendantRuns as On, DEFAULT_INPUT_TIMEOUT_MS as Or, resolveAgentDeliveryPlan as Ot, setGatewaySigusr1RestartPolicy as P, runSubagentAnnounceFlow as Pn, resolveAgentTimeoutMs as Pr, createOutboundSendDeps as Pt, migrateLegacyCronPayload as Q, textToSpeech as Qn, loadAgentIdentityFromWorkspace as Qt, formatRestartSentinelMessage as R, getAgentRunContext as Rn, createOutboundSendDeps$1 as Rt, runMessageAction as S, hasControlCommand as Sn, isSystemEventContextChanged as Sr, readJsonBodyWithLimit as St, formatTargetDisplay as T, stopSubagentsForRequester as Tn, DEFAULT_INPUT_IMAGE_MAX_BYTES as Tr, sleepWithAbort as Tt, normalizeHttpWebhookUrl as U, isTtsEnabled as Un, resolveModelProfile as Ut, trimLogTail as V, resolveUserTimezone as Vn, getActiveEmbeddedRunCount as Vt, normalizeCronJobCreate as W, isTtsProviderConfigured as Wn, runWithModelFallback as Wt, normalizePayloadToSystemText as X, setTtsEnabled as Xn, resolveAgentAvatar as Xt, normalizeOptionalText as Y, resolveTtsProviderOrder as Yn, describeFailoverError as Yt, normalizeRequiredName as Z, setTtsProvider as Zn, identityHasValues as Zt, loadCombinedSessionStoreForGateway as _, createInboundDebouncer as _n, formatRemainingShort as _r, formatUsageReportLines as _t, buildChannelSummary as a, buildPairingReply as an, setCommandLaneConcurrency as ar, persistBrowserProxyFiles as at, resolveGatewaySessionStoreTarget as b, resolveEnvelopeFormatOptions as bn, parseVerboseOverride as br, resolveCommitHash as bt, clearSessionQueues as c, buildHistoryContextFromEntries as cn, DEFAULT_HEARTBEAT_ACK_MAX_CHARS as cr, setHeartbeatWakeHandler as ct, createSymiTools as d, dispatchReplyWithBufferedBlockDispatcher as dn, resolveHeartbeatPrompt as dr, createPluginLoaderLogger as dt, buildSafeExternalPrompt as en, OPENAI_TTS_VOICES as er, hasLegacyDeliveryHints as et, resolveAnnounceTargetFromKey as f, provider_dispatcher_exports as fn, stripHeartbeatToken as fr, loadSymiPlugins as ft, listSessionsFromStore as g, createDedupeCache as gn, buildAuthHealthSummary as gr, loadProviderUsageSummary as gt, listAgentsForGateway as h, getTotalPendingReplies as hn, DEFAULT_OAUTH_WARN_MS as hr, parseActivationCommand as ht, resolveCronStyleNow as i, unbindThreadBindingsBySessionKey as in, resetAllLanes as ir, applyBrowserProxyPaths as it, isGatewaySigusr1RestartExternallyAllowed as j, listDescendantRunsForRequester as jn, normalizeMimeList as jr, resolveHeartbeatSenderContext as jt, deferGatewayRestartUntilIdle as k, countActiveRunsForSession as kn, extractFileContentFromSource as kr, resolveAgentOutboundTarget as kt, applyToolPolicyPipeline as l, recordPendingHistoryEntryIfEnabled as ln, DEFAULT_HEARTBEAT_EVERY as lr, resolveHeartbeatReasonKind as lt, classifySessionKey as m, createReplyDispatcher as mn, maskApiKey as mr, normalizeGroupActivation as mt, BARE_SESSION_RESET_PROMPT as n, getHookType as nn, getQueueSize as nr, CHANNEL_TARGETS_DESCRIPTION as nt, buildChannelAccountSnapshot as o, resolveMentionGating as on, waitForActiveTasks as or, sniffMimeFromBase64 as ot, canonicalizeSpawnedByForAgent as p, dispatchInboundMessage as pn, lookupContextTokens as pr, deleteTelegramUpdateOffset as pt, normalizeOptionalAgentId as q, resolveTtsConfig as qn, runCliAgent as qt, appendCronStyleCurrentTimeLine as r, isExternalHookSession as rn, getTotalQueueSize as rr, CHANNEL_TARGET_DESCRIPTION as rt, formatChannelAllowFrom as s, DEFAULT_GROUP_HISTORY_LIMIT as sn, CommandLane as sr, requestHeartbeatNow as st, getReplyFromConfig as t, detectSuspiciousPatterns as tn, getActiveTaskCount as tr, stripLegacyDeliveryFields as tt, buildDefaultToolPolicyPipelineSteps as u, shouldAckReactionForWhatsApp as un, isHeartbeatContentEffectivelyEmpty as ur, getPluginToolMeta as ut, loadSessionEntry as v, resolveInboundDebounceMs as vn, applyModelOverrideToSessionEntry as vr, formatUsageWindowSummary as vt, resolveOutboundSessionRoute as w, isAbortTrigger as wn, peekSystemEvents as wr, computeBackoff as wt, resolveSessionModelRef as x, formatZonedTimestamp as xn, enqueueSystemEvent as xr, handleSlackHttpRequest as xt, pruneLegacyStoreKeys as y, formatInboundEnvelope as yn, applyVerboseOverride as yr, resolveUsageProviderId as yt, readRestartSentinel as z, onAgentEvent as zn, runEmbeddedPiAgent as zt };
@@ -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-CZah-77E.js";
16
+ import "./subagent-registry-BxM7J5m6.js";
17
17
  import "./sessions-CJXnZVjR.js";
18
18
  import "./tokens-Csntmwwn.js";
19
19
  import "./plugins-CwSlLxM8.js";
@@ -101,9 +101,9 @@ import { t as ensureSymiCliOnPath } from "./path-env-Bic_wXs9.js";
101
101
  import "./catalog-DLQFKucJ.js";
102
102
  import "./note-DDecZomM.js";
103
103
  import "./plugin-auto-enable-D6ENR3Xg.js";
104
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BDfC2z-e.js";
104
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CL--iTFl.js";
105
105
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
106
- import { t as emitCliBanner } from "./banner-DihS8WHF.js";
106
+ import { t as emitCliBanner } from "./banner-B4wP-CCZ.js";
107
107
  import "./doctor-config-flow-CA3eiKhd.js";
108
108
  import { n as ensureConfigReady } from "./config-guard-CPHvOzsC.js";
109
109
  import process$1 from "node:process";
@@ -118,7 +118,7 @@ const routeHealth = {
118
118
  const verbose = getVerboseFlag(argv, { includeDebug: true });
119
119
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
120
120
  if (timeoutMs === null) return false;
121
- const { healthCommand } = await import("./health-CPYlV7Zg.js").then((n) => n.i);
121
+ const { healthCommand } = await import("./health-vuMM-FAs.js").then((n) => n.i);
122
122
  await healthCommand({
123
123
  json,
124
124
  timeoutMs,
@@ -138,7 +138,7 @@ const routeStatus = {
138
138
  const verbose = getVerboseFlag(argv, { includeDebug: true });
139
139
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
140
140
  if (timeoutMs === null) return false;
141
- const { statusCommand } = await import("./status-C-vthqzQ.js").then((n) => n.t);
141
+ const { statusCommand } = await import("./status-BJITmlhZ.js").then((n) => n.t);
142
142
  await statusCommand({
143
143
  json,
144
144
  deep,
@@ -172,7 +172,7 @@ const routeAgentsList = {
172
172
  run: async (argv) => {
173
173
  const json = hasFlag(argv, "--json");
174
174
  const bindings = hasFlag(argv, "--bindings");
175
- const { agentsListCommand } = await import("./agents-BEPfMqrg.js").then((n) => n.t);
175
+ const { agentsListCommand } = await import("./agents-DfyzZKBc.js").then((n) => n.t);
176
176
  await agentsListCommand({
177
177
  json,
178
178
  bindings
@@ -243,7 +243,7 @@ const routes = [
243
243
  const pathArg = getCommandPositionals(argv)[2];
244
244
  if (!pathArg) return false;
245
245
  const json = hasFlag(argv, "--json");
246
- const { runConfigGet } = await import("./config-cli-BDpBT1b-.js");
246
+ const { runConfigGet } = await import("./config-cli-CtKkpyHu.js");
247
247
  await runConfigGet({
248
248
  path: pathArg,
249
249
  json
@@ -256,7 +256,7 @@ const routes = [
256
256
  run: async (argv) => {
257
257
  const pathArg = getCommandPositionals(argv)[2];
258
258
  if (!pathArg) return false;
259
- const { runConfigUnset } = await import("./config-cli-BDpBT1b-.js");
259
+ const { runConfigUnset } = await import("./config-cli-CtKkpyHu.js");
260
260
  await runConfigUnset({ path: pathArg });
261
261
  return true;
262
262
  }
@@ -270,7 +270,7 @@ const routes = [
270
270
  const local = hasFlag(argv, "--local");
271
271
  const json = hasFlag(argv, "--json");
272
272
  const plain = hasFlag(argv, "--plain");
273
- const { modelsListCommand } = await import("./models-BsS_l1gY.js").then((n) => n.t);
273
+ const { modelsListCommand } = await import("./models-CBtd5YaQ.js").then((n) => n.t);
274
274
  await modelsListCommand({
275
275
  all,
276
276
  local,
@@ -301,7 +301,7 @@ const routes = [
301
301
  const plain = hasFlag(argv, "--plain");
302
302
  const check = hasFlag(argv, "--check");
303
303
  const probe = hasFlag(argv, "--probe");
304
- const { modelsStatusCommand } = await import("./models-BsS_l1gY.js").then((n) => n.t);
304
+ const { modelsStatusCommand } = await import("./models-CBtd5YaQ.js").then((n) => n.t);
305
305
  await modelsStatusCommand({
306
306
  json,
307
307
  plain,
@@ -379,7 +379,7 @@ async function runCli(argv = process$1.argv) {
379
379
  assertSupportedRuntime();
380
380
  if (await tryRouteCli(normalizedArgv)) return;
381
381
  enableConsoleCapture();
382
- const { buildProgram } = await import("./program-C_UFd0ph.js");
382
+ const { buildProgram } = await import("./program-v4cRnLjP.js");
383
383
  const program = buildProgram();
384
384
  installUnhandledRejectionHandler();
385
385
  process$1.on("uncaughtException", (error) => {
@@ -411,10 +411,10 @@ async function runCli(argv = process$1.argv) {
411
411
  const { getProgramContext } = await import("./program-context-CqzR_m-7.js").then((n) => n.n);
412
412
  const ctx = getProgramContext(program);
413
413
  if (ctx) {
414
- const { registerCoreCliByName } = await import("./command-registry-X_FmrHib.js").then((n) => n.t);
414
+ const { registerCoreCliByName } = await import("./command-registry-D7MjQKMD.js").then((n) => n.t);
415
415
  await registerCoreCliByName(program, ctx, primary, parseArgv);
416
416
  }
417
- const { registerSubCliByName } = await import("./register.subclis-Dv1WM9Kj.js").then((n) => n.a);
417
+ const { registerSubCliByName } = await import("./register.subclis-PQ2Ulz3J.js").then((n) => n.a);
418
418
  await registerSubCliByName(program, primary);
419
419
  }
420
420
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -423,7 +423,7 @@ async function runCli(argv = process$1.argv) {
423
423
  primary,
424
424
  hasBuiltinPrimary
425
425
  })) {
426
- const { registerPluginCliCommands } = await import("./cli-DXpAHJS4.js");
426
+ const { registerPluginCliCommands } = await import("./cli-hT0g_Q65.js");
427
427
  const { loadConfig } = await import("./config-DHBLS1Hl.js").then((n) => n.t);
428
428
  registerPluginCliCommands(program, loadConfig());
429
429
  }
@@ -4,7 +4,7 @@ import { G as resolveSymiAgentDir, T as resolveApiKeyForProvider, c as normalize
4
4
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
5
5
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-ByaQt43P.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-BmV60pPT.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-DcpMiprB.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-CHzdaNJ4.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-CSlZZ1Pw.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BheTNyes.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-CC8jiKDk.js";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir, t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { D as isPlainObject, U as getResolvedLoggerSettings, r as clamp, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-EAliFiVK.js";
4
- import { $n as textToSpeech, Bn as onAgentEvent, Bt as abortEmbeddedPiRun, C as ensureOutboundSessionEntry, Cr as isSystemEventContextChanged, En as stopSubagentsForRequester, Et as agentCommand, Fr as resolveAgentTimeoutMs, Ft as normalizeSendPolicy, G as normalizeCronJobPatch, Gn as isTtsProviderConfigured, H as writeRestartSentinel, Hn as resolveUserTimezone, Ht as waitForEmbeddedPiRunEnd, It as resolveSendPolicy, Jn as resolveTtsConfig, Kn as resolveTtsApiKey, L as formatDoctorNonInteractiveHint, Mn as listDescendantRunsForRequester, Mt as resolveOutboundTarget, N as scheduleGatewaySigusr1Restart, Nn as listSubagentRunsForRequester, Ot as resolveAgentDeliveryPlan, Qn as setTtsProvider, Rt as createOutboundSendDeps, Sn as formatZonedTimestamp, Sr as enqueueSystemEvent, Tn as isAbortTrigger, Un as getTtsProvider, Vn as registerAgentRunContext, W as normalizeCronJobCreate, Wn as isTtsEnabled, Xn as resolveTtsProviderOrder, Yn as resolveTtsPrefsPath, Zn as setTtsEnabled, _ as loadCombinedSessionStoreForGateway, an as unbindThreadBindingsBySessionKey, at as persistBrowserProxyFiles, b as resolveGatewaySessionStoreTarget, br as applyVerboseOverride, c as clearSessionQueues, er as OPENAI_TTS_MODELS, ft as loadSymiPlugins, g as listSessionsFromStore, gt as loadProviderUsageSummary, h as listAgentsForGateway, hn as createReplyDispatcher, it as applyBrowserProxyPaths, kt as resolveAgentOutboundTarget, mn as dispatchInboundMessage, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, p as canonicalizeSpawnedByForAgent, qn as resolveTtsAutoMode, tr as OPENAI_TTS_VOICES, v as loadSessionEntry, w as resolveOutboundSessionRoute, x as resolveSessionModelRef, xr as parseVerboseOverride, y as pruneLegacyStoreKeys, yr as applyModelOverrideToSessionEntry } from "./reply-BvVsPU7v.js";
4
+ import { $n as OPENAI_TTS_MODELS, Bn as registerAgentRunContext, Bt as abortEmbeddedPiRun, C as ensureOutboundSessionEntry, Et as agentCommand, Ft as normalizeSendPolicy, G as normalizeCronJobPatch, Gn as resolveTtsApiKey, H as writeRestartSentinel, Hn as getTtsProvider, Ht as waitForEmbeddedPiRunEnd, It as resolveSendPolicy, Jn as resolveTtsPrefsPath, Kn as resolveTtsAutoMode, L as formatDoctorNonInteractiveHint, Mn as listSubagentRunsForRequester, Mt as resolveOutboundTarget, N as scheduleGatewaySigusr1Restart, Ot as resolveAgentDeliveryPlan, Pr as resolveAgentTimeoutMs, Qn as textToSpeech, Rt as createOutboundSendDeps, Sr as isSystemEventContextChanged, Tn as stopSubagentsForRequester, Un as isTtsEnabled, Vn as resolveUserTimezone, W as normalizeCronJobCreate, Wn as isTtsProviderConfigured, Xn as setTtsEnabled, Yn as resolveTtsProviderOrder, Zn as setTtsProvider, _ as loadCombinedSessionStoreForGateway, at as persistBrowserProxyFiles, b as resolveGatewaySessionStoreTarget, br as parseVerboseOverride, c as clearSessionQueues, er as OPENAI_TTS_VOICES, ft as loadSymiPlugins, g as listSessionsFromStore, gt as loadProviderUsageSummary, h as listAgentsForGateway, in as unbindThreadBindingsBySessionKey, it as applyBrowserProxyPaths, jn as listDescendantRunsForRequester, kt as resolveAgentOutboundTarget, mn as createReplyDispatcher, mt as normalizeGroupActivation, n as BARE_SESSION_RESET_PROMPT, p as canonicalizeSpawnedByForAgent, pn as dispatchInboundMessage, qn as resolveTtsConfig, v as loadSessionEntry, vr as applyModelOverrideToSessionEntry, w as resolveOutboundSessionRoute, wn as isAbortTrigger, x as resolveSessionModelRef, xn as formatZonedTimestamp, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys, yr as applyVerboseOverride, zn as onAgentEvent } from "./reply-kuehpmXb.js";
5
5
  import { S as parseAgentSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey } from "./session-key-DCt45XZa.js";
6
6
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
7
7
  import { C as createInternalHookEvent, T as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, t as CHANNEL_IDS } from "./registry-Cja8eT7G.js";
@@ -39,14 +39,14 @@ import { t as WizardCancelledError } from "./prompts-Xu2Sveka.js";
39
39
  import { t as resolveChannelDefaultAccountId } from "./helpers-BcGbMZD1.js";
40
40
  import { t as buildChannelAccountSnapshot } from "./status-BrV-afZE.js";
41
41
  import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-CrITRV6w.js";
42
- import { n as getStatusSummary } from "./status-DEymUALi.js";
43
- import { s as setHeartbeatsEnabled } from "./health-1KsVR3eN.js";
42
+ import { n as getStatusSummary } from "./status-Bow6kS56.js";
43
+ import { s as setHeartbeatsEnabled } from "./health-CM3gPoYN.js";
44
44
  import { m as normalizeUpdateChannel } from "./update-check-CtckACbb.js";
45
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-21LKYvkS.js";
46
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DPv-AmZD.js";
45
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-glbAu-g9.js";
46
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Dzr8Us0l.js";
47
47
  import { t as resolveSystemRunCommand } from "./system-run-command-ByVa3txU.js";
48
48
  import { t as installSkill } from "./skills-install-D67isO1L.js";
49
- import { t as runGatewayUpdate } from "./update-runner-DPwXk0QQ.js";
49
+ import { t as runGatewayUpdate } from "./update-runner-C0iELmzo.js";
50
50
  import * as fs$2 from "node:fs";
51
51
  import fs from "node:fs";
52
52
  import * as os$1 from "node:os";
@@ -6853,7 +6853,7 @@ const nodeHandlers = {
6853
6853
  const p = params;
6854
6854
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6855
6855
  await respondUnavailableOnThrow(respond, async () => {
6856
- const { handleNodeEvent } = await import("./server-node-events-B9iZK3qE.js");
6856
+ const { handleNodeEvent } = await import("./server-node-events-KVX4S5Md.js");
6857
6857
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6858
6858
  await handleNodeEvent({
6859
6859
  deps: context.deps,
@@ -12,7 +12,7 @@ import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessa
12
12
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-Byh6drgn.js";
13
13
  import { s as pickPrimaryLanIPv4 } from "./net-DZ5Ayk-W.js";
14
14
  import { i as normalizeInputProvenance } from "./input-provenance-D0lNkCf6.js";
15
- import { $n as resolveTtsApiKey, C as resolveAgentDeliveryPlan, Cn as parseVerboseOverride, D as createOutboundSendDeps, Dt as normalizeCronJobCreate, Gn as isAbortTrigger, Gt as applyBrowserProxyPaths, Hn as formatZonedTimestamp, K as dispatchInboundMessage, Kn as stopSubagentsForRequester, Kt as persistBrowserProxyFiles, Ln as resolveAgentTimeoutMs, Ot as normalizeCronJobPatch, Qn as isTtsProviderConfigured, Qt as scheduleGatewaySigusr1Restart, Sn as applyVerboseOverride, Tn as isSystemEventContextChanged, Tr as registerAgentRunContext, Tt as writeRestartSentinel, Xn as getTtsProvider, Yn as resolveUserTimezone, Z as BARE_SESSION_RESET_PROMPT, Zn as isTtsEnabled, a as listSubagentRunsForRequester, ar as setTtsProvider, bt as formatDoctorNonInteractiveHint, c as clearSessionQueues, cr as OPENAI_TTS_VOICES, ct as ensureOutboundSessionEntry, er as resolveTtsAutoMode, ft as resolveOutboundTarget, gn as resolveSendPolicy, hn as normalizeSendPolicy, i as listDescendantRunsForRequester, in as loadProviderUsageSummary, ir as setTtsEnabled, j as waitForEmbeddedPiRunEnd, k as abortEmbeddedPiRun, lt as resolveOutboundSessionRoute, m as loadSymiPlugins, nn as normalizeGroupActivation, nr as resolveTtsPrefsPath, or as textToSpeech, q as createReplyDispatcher, rr as resolveTtsProviderOrder, sr as OPENAI_TTS_MODELS, tn as unbindThreadBindingsBySessionKey, tr as resolveTtsConfig, w as resolveAgentOutboundTarget, wn as enqueueSystemEvent, wr as onAgentEvent, x as agentCommand, xn as applyModelOverrideToSessionEntry } from "./subagent-registry-CZah-77E.js";
15
+ import { $n as resolveTtsAutoMode, C as resolveAgentDeliveryPlan, Cn as enqueueSystemEvent, Cr as onAgentEvent, D as createOutboundSendDeps, Dt as normalizeCronJobPatch, Et as normalizeCronJobCreate, G as dispatchInboundMessage, Gn as stopSubagentsForRequester, Gt as persistBrowserProxyFiles, In as resolveAgentTimeoutMs, Jn as resolveUserTimezone, K as createReplyDispatcher, Qn as resolveTtsApiKey, Sn as parseVerboseOverride, Vn as formatZonedTimestamp, Wn as isAbortTrigger, Wt as applyBrowserProxyPaths, X as BARE_SESSION_RESET_PROMPT, Xn as isTtsEnabled, Yn as getTtsProvider, Zn as isTtsProviderConfigured, Zt as scheduleGatewaySigusr1Restart, a as listSubagentRunsForRequester, ar as textToSpeech, bn as applyModelOverrideToSessionEntry, c as clearSessionQueues, ct as resolveOutboundSessionRoute, dt as resolveOutboundTarget, en as unbindThreadBindingsBySessionKey, er as resolveTtsConfig, hn as resolveSendPolicy, i as listDescendantRunsForRequester, ir as setTtsProvider, j as waitForEmbeddedPiRunEnd, k as abortEmbeddedPiRun, m as loadSymiPlugins, mn as normalizeSendPolicy, nr as resolveTtsProviderOrder, or as OPENAI_TTS_MODELS, rn as loadProviderUsageSummary, rr as setTtsEnabled, sr as OPENAI_TTS_VOICES, st as ensureOutboundSessionEntry, tn as normalizeGroupActivation, tr as resolveTtsPrefsPath, w as resolveAgentOutboundTarget, wn as isSystemEventContextChanged, wr as registerAgentRunContext, wt as writeRestartSentinel, x as agentCommand, xn as applyVerboseOverride, yt as formatDoctorNonInteractiveHint } from "./subagent-registry-BxM7J5m6.js";
16
16
  import { F as resolveMainSessionKey, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-CJXnZVjR.js";
17
17
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";
18
18
  import { n as createBrowserRouteDispatcher } from "./with-timeout-Di0nddLY.js";
@@ -37,14 +37,14 @@ import { t as WizardCancelledError } from "./prompts-m1IJwIAx.js";
37
37
  import { t as resolveChannelDefaultAccountId } from "./helpers-cLP5YLeQ.js";
38
38
  import { t as buildChannelAccountSnapshot } from "./status-BUedPCLb.js";
39
39
  import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-Byo5jCLN.js";
40
- import { r as getStatusSummary } from "./status-C-vthqzQ.js";
41
- import { c as setHeartbeatsEnabled } from "./health-CPYlV7Zg.js";
40
+ import { r as getStatusSummary } from "./status-BJITmlhZ.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-vuMM-FAs.js";
42
42
  import { m as normalizeUpdateChannel } from "./update-check-ZdimP1aU.js";
43
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-Ciljlk7J.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-D60gMagv.js";
43
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-DpdcOumU.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-VjZQr5GP.js";
45
45
  import { t as resolveSystemRunCommand } from "./system-run-command-ByVa3txU.js";
46
46
  import { t as installSkill } from "./skills-install-1ZdwGTnh.js";
47
- import { t as runGatewayUpdate } from "./update-runner-B5bKK21U.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-YRJPtj9J.js";
48
48
  import { spawnSync } from "node:child_process";
49
49
  import * as os$1 from "node:os";
50
50
  import os from "node:os";
@@ -6851,7 +6851,7 @@ const nodeHandlers = {
6851
6851
  const p = params;
6852
6852
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
6853
6853
  await respondUnavailableOnThrow(respond, async () => {
6854
- const { handleNodeEvent } = await import("./server-node-events-Dx0L419d.js");
6854
+ const { handleNodeEvent } = await import("./server-node-events-za7_iA-n.js");
6855
6855
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
6856
6856
  await handleNodeEvent({
6857
6857
  deps: context.deps,
@@ -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 { Et as agentCommand, Mt as resolveOutboundTarget, Pt as createOutboundSendDeps, Sr as enqueueSystemEvent, b as resolveGatewaySessionStoreTarget, st as requestHeartbeatNow, v as loadSessionEntry, y as pruneLegacyStoreKeys } from "./reply-BvVsPU7v.js";
4
+ import { Et as agentCommand, Mt as resolveOutboundTarget, Pt as createOutboundSendDeps, b as resolveGatewaySessionStoreTarget, st as requestHeartbeatNow, v as loadSessionEntry, xr as enqueueSystemEvent, y as pruneLegacyStoreKeys } from "./reply-kuehpmXb.js";
5
5
  import { c as normalizeMainKey } from "./session-key-DCt45XZa.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -102,7 +102,7 @@ import "./pi-tools.policy-CIDBbw6x.js";
102
102
  import "./control-service-Bz7rxLWq.js";
103
103
  import "./stagger-BUClb97_.js";
104
104
  import "./channel-selection-DuWs0Aak.js";
105
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-21LKYvkS.js";
105
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-glbAu-g9.js";
106
106
  import { randomUUID } from "node:crypto";
107
107
 
108
108
  //#region src/gateway/server-node-events.ts
@@ -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 { T as createOutboundSendDeps, fn as requestHeartbeatNow, ft as resolveOutboundTarget, wn as enqueueSystemEvent, x as agentCommand } from "./subagent-registry-CZah-77E.js";
17
+ import { Cn as enqueueSystemEvent, T as createOutboundSendDeps, dn as requestHeartbeatNow, dt as resolveOutboundTarget, x as agentCommand } from "./subagent-registry-BxM7J5m6.js";
18
18
  import { d as updateSessionStore } from "./sessions-CJXnZVjR.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import { r as normalizeChannelId } from "./plugins-CwSlLxM8.js";
@@ -98,7 +98,7 @@ import "./onboard-helpers-_pit1NZW.js";
98
98
  import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-D1HDboV2.js";
100
100
  import "./pi-tools.policy-De00gPXt.js";
101
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-Ciljlk7J.js";
101
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-DpdcOumU.js";
102
102
  import { randomUUID } from "node:crypto";
103
103
 
104
104
  //#region src/gateway/server-node-events.ts
@@ -9,7 +9,7 @@ import { c as resolveAgentWorkspaceDir } from "./agent-scope-D-jRCY0d.js";
9
9
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DKXJ-tbi.js";
10
10
  import { H as VERSION, i as loadConfig, o as readConfigFileSnapshot } from "./config-DHBLS1Hl.js";
11
11
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BcE47FtD.js";
12
- import { Ct as summarizeRestartSentinel, Dn as peekSystemEvents, St as readRestartSentinel, an as formatUsageReportLines, cn as buildChannelSummary, in as loadProviderUsageSummary, ln as buildChannelAccountSnapshot, rt as sha256HexPrefix, un as formatChannelAllowFrom } from "./subagent-registry-CZah-77E.js";
12
+ import { En as peekSystemEvents, St as summarizeRestartSentinel, cn as buildChannelAccountSnapshot, in as formatUsageReportLines, ln as formatChannelAllowFrom, nt as sha256HexPrefix, rn as loadProviderUsageSummary, sn as buildChannelSummary, xt as readRestartSentinel } from "./subagent-registry-BxM7J5m6.js";
13
13
  import { F as resolveMainSessionKey, j as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-CJXnZVjR.js";
14
14
  import { n as listChannelPlugins } from "./plugins-CwSlLxM8.js";
15
15
  import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CbbvYNVw.js";
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-hFVEC3wO.j
29
29
  import { t as readLastGatewayErrorLine } from "./diagnostics-CS1ov_hH.js";
30
30
  import { t as renderTable } from "./table-D01d2GuY.js";
31
31
  import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-Byo5jCLN.js";
32
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-CPYlV7Zg.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-vuMM-FAs.js";
33
33
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-ZdimP1aU.js";
34
34
  import { t as resolveNodeService } from "./node-service-fcZExd22.js";
35
35
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-DVLB9DNB.js";
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, k as info, z as isRich } from "./utils-B-0b9bGM.js";
3
- import { B as summarizeRestartSentinel, Tr as peekSystemEvents, Yt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, mr as lookupContextTokens, o as buildChannelAccountSnapshot, s as formatChannelAllowFrom, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-BvVsPU7v.js";
3
+ import { B as summarizeRestartSentinel, Jt as sha256HexPrefix, _t as formatUsageReportLines, a as buildChannelSummary, gt as loadProviderUsageSummary, h as listAgentsForGateway, m as classifySessionKey, o as buildChannelAccountSnapshot, pr as lookupContextTokens, s as formatChannelAllowFrom, wr as peekSystemEvents, x as resolveSessionModelRef, z as readRestartSentinel } from "./reply-kuehpmXb.js";
4
4
  import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
5
5
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
6
  import { n as runExec } from "./exec-CWkblSrI.js";
@@ -28,7 +28,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-CR9445g5.j
28
28
  import { t as readLastGatewayErrorLine } from "./diagnostics-BAMlsVVX.js";
29
29
  import { t as renderTable } from "./table-BTgkRafz.js";
30
30
  import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-CrITRV6w.js";
31
- import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-1KsVR3eN.js";
31
+ import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-CM3gPoYN.js";
32
32
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-CtckACbb.js";
33
33
  import { t as resolveNodeService } from "./node-service-Cxz4e-Qd.js";
34
34
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-yQZNwAF2.js";
@@ -1,4 +1,4 @@
1
- import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-BvVsPU7v.js";
1
+ import { dt as createPluginLoaderLogger, ft as loadSymiPlugins } from "./reply-kuehpmXb.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
3
3
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
4
4
  import { i as loadConfig } from "./config-CHwyw6l5.js";
@@ -1,7 +1,7 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
2
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
3
3
  import { i as loadConfig } from "./config-DHBLS1Hl.js";
4
- import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-CZah-77E.js";
4
+ import { m as loadSymiPlugins, p as createPluginLoaderLogger } from "./subagent-registry-BxM7J5m6.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");