@symerian/symi 2.4.0 → 2.4.1

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 (169) hide show
  1. package/dist/{accounts-tNElYrCH.js → accounts-CI6zQTJj.js} +14 -14
  2. package/dist/{accounts-qtxJ-6em.js → accounts-CJR8j_Kq.js} +1 -1
  3. package/dist/{accounts-CWktKM8a.js → accounts-ChTFYj8Q.js} +1 -1
  4. package/dist/{active-listener-C9r8ZB9m.js → active-listener-D6sXIjAg.js} +1 -1
  5. package/dist/{agent-scope-BxoUQqgM.js → agent-scope-Bw1Ed8W9.js} +3 -3
  6. package/dist/{agents-CI3xxYc_.js → agents-BrpbYYTb.js} +4 -4
  7. package/dist/{agents.config-DCE3RGr9.js → agents.config-Bf8u_0ts.js} +1 -1
  8. package/dist/{agents.config-DTUAM1AG.js → agents.config-j4SWyB6K.js} +1 -1
  9. package/dist/{audio-preflight-O3ASWbaG.js → audio-preflight-BkIfnmpi.js} +29 -29
  10. package/dist/{auth-choice-IiIysHGO.js → auth-choice-BYB9fJiu.js} +1 -1
  11. package/dist/{auth-choice-DuQwRfJc.js → auth-choice-DlrjQI-v.js} +1 -1
  12. package/dist/{banner-xhDZu_ZJ.js → banner-DRJJmkv1.js} +1 -1
  13. package/dist/{bindings-B7Ke6LJi.js → bindings-BU2hsBd9.js} +2 -2
  14. package/dist/build-info.json +3 -3
  15. package/dist/bundled/boot-md/handler.js +53 -53
  16. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  17. package/dist/bundled/command-logger/handler.js +1 -1
  18. package/dist/bundled/session-memory/handler.js +53 -53
  19. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  20. package/dist/{channel-activity-CsM_hJ_s.js → channel-activity-C9-gaquj.js} +1 -1
  21. package/dist/{channel-options-D3gGVwBd.js → channel-options-BQz0F4El.js} +1 -1
  22. package/dist/{channel-options-Dvxd7eJY.js → channel-options-CxSIp3x-.js} +1 -1
  23. package/dist/{channel-web-a5tX1YI3.js → channel-web-BY4lhNxW.js} +1 -1
  24. package/dist/{channels-cli-C9wBYmDe.js → channels-cli--rkhLJvR.js} +4 -4
  25. package/dist/{channels-cli-BLUkl5Li.js → channels-cli-B5Nj_nHr.js} +4 -4
  26. package/dist/{chrome-BFekevcE.js → chrome-CxSAp8x3.js} +20 -20
  27. package/dist/{chunk-BW5f05BR.js → chunk-ClbN9Pqy.js} +1 -1
  28. package/dist/{cli-Cw45F0yJ.js → cli-CATf6JAq.js} +1 -1
  29. package/dist/{cli-CaEE46xi.js → cli-Ds6poYQ6.js} +1 -1
  30. package/dist/{command-format-BaxDnULz.js → command-format-UKHV-j0K.js} +1 -1
  31. package/dist/{command-registry-ea9SD1eA.js → command-registry-DXt0PsFy.js} +9 -9
  32. package/dist/{commands-registry-D7CTCQPm.js → commands-registry-VSmULp-g.js} +4 -4
  33. package/dist/{completion-cli-CMJmUQbI.js → completion-cli-BsSDzZNA.js} +1 -1
  34. package/dist/{completion-cli-DVkiEAEA.js → completion-cli-CPMOXTf2.js} +2 -2
  35. package/dist/{config-cli-B2d28_hb.js → config-cli-B_KCvdli.js} +1 -1
  36. package/dist/{config-cli-VIg0PSyq.js → config-cli-C_GarUko.js} +1 -1
  37. package/dist/{config-DRbjHIwD.js → config-eEaJddXj.js} +12 -12
  38. package/dist/{configure-C_TVBt76.js → configure-CM-z8YCS.js} +3 -3
  39. package/dist/{configure-D-3FiJbK.js → configure-vfmJApU8.js} +3 -3
  40. package/dist/{deliver-CvCK5Mm9.js → deliver-BA7ZN3iM.js} +20 -20
  41. package/dist/{diagnostic-CI0kRQkt.js → diagnostic-C3nsWaw3.js} +1 -1
  42. package/dist/{doctor-completion-CJHJYIwQ.js → doctor-completion-8qbLmeX0.js} +1 -1
  43. package/dist/{doctor-completion-DeRX6gkI.js → doctor-completion-Dnxn_-ov.js} +1 -1
  44. package/dist/entry.js +1 -1
  45. package/dist/extensionAPI.js +1 -1
  46. package/dist/{frontmatter-C_bv_0P8.js → frontmatter-DPlG6yha.js} +2 -2
  47. package/dist/{gateway-cli-DiDJ6Z2d.js → gateway-cli-DKDpOBp-.js} +9 -9
  48. package/dist/{gateway-cli-BDDHBfYP.js → gateway-cli-XIsXoJZ3.js} +9 -9
  49. package/dist/{gemini-auth-CdSPHuLl.js → gemini-auth-CF48hUR9.js} +1 -1
  50. package/dist/{github-copilot-token-C_qUP7p5.js → github-copilot-token-DJqsJ2-r.js} +7 -7
  51. package/dist/{glass-ui-ws-Bj1IuJXt.js → glass-ui-ws-Be_AOhp7.js} +7 -7
  52. package/dist/{glass-ui-ws-rGIAkViC.js → glass-ui-ws-Z_wtGa_A.js} +7 -7
  53. package/dist/{health-CypF_2ZD.js → health-BBGgp_dC.js} +1 -1
  54. package/dist/{health-Bst5HnLF.js → health-BmaWws9G.js} +1 -1
  55. package/dist/{hooks-cli-CfsqqxPX.js → hooks-cli-C5eV9sxP.js} +2 -2
  56. package/dist/{hooks-cli-CDMcqTy4.js → hooks-cli-W_aoP9nb.js} +2 -2
  57. package/dist/{image-B0wGflxA.js → image-BGmVDkkw.js} +4 -4
  58. package/dist/{image-ops-CvJzsyvE.js → image-ops-S8-8dAhx.js} +1 -1
  59. package/dist/index.js +6 -6
  60. package/dist/{ir-DccrnjsE.js → ir-CbFUkv_T.js} +4 -4
  61. package/dist/llm-slug-generator.js +53 -53
  62. package/dist/{local-roots-DMwIh5cS.js → local-roots-C7OCYACU.js} +5 -5
  63. package/dist/{login-CwCoxapk.js → login-B8uiUAnV.js} +7 -7
  64. package/dist/{login-qr-Batf3PT5.js → login-qr-CIZk8uKX.js} +12 -12
  65. package/dist/{manager-D_LwXbc6.js → manager-BoLr3xR_.js} +13 -13
  66. package/dist/{manifest-registry-D0IQ3WuX.js → manifest-registry-CneMHk0N.js} +19 -19
  67. package/dist/{markdown-tables-iMQQZu4Q.js → markdown-tables-DSHvnTLx.js} +1 -1
  68. package/dist/{message-channel-Dz5lr5b0.js → message-channel-DbsRltF2.js} +1 -1
  69. package/dist/{model-auth-DK43VicI.js → model-auth-CwOuTuXl.js} +9 -9
  70. package/dist/{models-ZEOGlFx7.js → models-COaQWNz5.js} +2 -2
  71. package/dist/{models-cli-BM1QyeXr.js → models-cli-DH17yK8M.js} +3 -3
  72. package/dist/{models-cli-BwOQhZ_c.js → models-cli-DeG1qheS.js} +2 -2
  73. package/dist/{onboard-CU-pntZD.js → onboard-CXOUIg28.js} +2 -2
  74. package/dist/{onboard-DQ34giB5.js → onboard-DBeHwdks.js} +2 -2
  75. package/dist/{onboard-channels-g5cvwJpx.js → onboard-channels-BCUkNB26.js} +1 -1
  76. package/dist/{onboard-channels-BOBxxhHX.js → onboard-channels-D93AAHMd.js} +1 -1
  77. package/dist/{onboarding-CXWUjdM5.js → onboarding-C58wjONa.js} +3 -3
  78. package/dist/{onboarding-DWs6tHZ9.js → onboarding-Dfjn2-9q.js} +3 -3
  79. package/dist/{onboarding.finalize-CAYf88mf.js → onboarding.finalize-7r1HYXWd.js} +6 -6
  80. package/dist/{onboarding.finalize-vupGASMK.js → onboarding.finalize-DGD56sXW.js} +5 -5
  81. package/dist/{outbound-attachment-DjNDa3zn.js → outbound-attachment-Co2diKdP.js} +2 -2
  82. package/dist/{outbound-D4fN_ZlE.js → outbound-opDNxv-l.js} +7 -7
  83. package/dist/{paths-DLyHUt31.js → paths-Cb87-LzP.js} +1 -1
  84. package/dist/{paths-Cce4PUkG.js → paths-CySxpNhH.js} +5 -5
  85. package/dist/{pi-auth-json-0SYBFZTt.js → pi-auth-json-DPWPoruO.js} +8 -8
  86. package/dist/{pi-embedded-CJsSOG2j.js → pi-embedded-B6uRrG1f.js} +254 -162
  87. package/dist/{pi-embedded-DwbQz0MC.js → pi-embedded-CAJ6egA1.js} +94 -2
  88. package/dist/{pi-embedded-helpers-DLFjnVBb.js → pi-embedded-helpers-DEEaCvEp.js} +52 -52
  89. package/dist/{plugin-registry-CZeHSx_c.js → plugin-registry-C0iHnZ7j.js} +1 -1
  90. package/dist/{plugin-registry-BDpdOTei.js → plugin-registry-D_BAH1V5.js} +1 -1
  91. package/dist/plugin-sdk/agents/pi-embedded-runner/extra-params.d.ts +6 -0
  92. package/dist/plugin-sdk/agents/stream-monitor.d.ts +62 -0
  93. package/dist/plugin-sdk/{channel-web-uUypcT9Q.js → channel-web-ilY3YUmF.js} +1 -1
  94. package/dist/plugin-sdk/index.js +2 -2
  95. package/dist/plugin-sdk/{reply-DTKTuCrn.js → reply-CSgeVqcV.js} +94 -2
  96. package/dist/plugin-sdk/{web-Dh6Youzv.js → web-BVg5EjiY.js} +2 -2
  97. package/dist/{plugins-DQYI3Fr-.js → plugins-C4C9637U.js} +9 -9
  98. package/dist/{plugins-cli-CCQ3skeQ.js → plugins-cli-BhOXY_Ay.js} +2 -2
  99. package/dist/{plugins-cli-D_RzeRoE.js → plugins-cli-LqQNHF1I.js} +2 -2
  100. package/dist/{program-Cl9i8ubQ.js → program-CutjuJj0.js} +7 -7
  101. package/dist/{program-context-BbmYGW-V.js → program-context-qVc_lsLV.js} +17 -17
  102. package/dist/{prompt-select-styled-BN0T6GxF.js → prompt-select-styled-BCHe7Fks.js} +4 -4
  103. package/dist/{prompt-select-styled-BfuyvChh.js → prompt-select-styled-C0yn8YjW.js} +4 -4
  104. package/dist/{provider-auth-helpers-CkmLFHXL.js → provider-auth-helpers-BzczCfh8.js} +1 -1
  105. package/dist/{provider-auth-helpers-CuT5EHza.js → provider-auth-helpers-Ds_HwlgY.js} +1 -1
  106. package/dist/{push-apns-DeJt9kAO.js → push-apns-CT8-VcK5.js} +1 -1
  107. package/dist/{push-apns-CFkFVwEz.js → push-apns-DvcqkHld.js} +1 -1
  108. package/dist/{pw-ai-BnAKvSuw.js → pw-ai-DhwRiS06.js} +11 -11
  109. package/dist/{qmd-manager-QHUP-_em.js → qmd-manager-DdZh9PHs.js} +7 -7
  110. package/dist/{register.agent-BQm4YmZp.js → register.agent-DMvHFw16.js} +6 -6
  111. package/dist/{register.agent-BygseJ7t.js → register.agent-yoXoJ_5O.js} +5 -5
  112. package/dist/{register.configure-Cj95vB2U.js → register.configure-B8UDTEcS.js} +6 -6
  113. package/dist/{register.configure-C2fhjZze.js → register.configure-BqrNBkwZ.js} +6 -6
  114. package/dist/{register.maintenance-K1x3E7OS.js → register.maintenance-D1MuIUlv.js} +7 -7
  115. package/dist/{register.maintenance-CClfXq5e.js → register.maintenance-DMLPFSKI.js} +8 -8
  116. package/dist/{register.message-BSr-kUvJ.js → register.message-BnLBwUw9.js} +2 -2
  117. package/dist/{register.message-CSRzBl-c.js → register.message-CgtrjEFw.js} +2 -2
  118. package/dist/{register.onboard-Bd6wPydW.js → register.onboard-CXHhSH4B.js} +4 -4
  119. package/dist/{register.onboard-TsU21RR7.js → register.onboard-D1X2dUGZ.js} +4 -4
  120. package/dist/{register.setup-C9gu0W5l.js → register.setup-DFDb5BDi.js} +4 -4
  121. package/dist/{register.setup-DK-zsne2.js → register.setup-Q58lN0TV.js} +4 -4
  122. package/dist/{register.status-health-sessions-DN5Ui3V0.js → register.status-health-sessions-CP7JWQHw.js} +3 -3
  123. package/dist/{register.status-health-sessions-rZsuoqtr.js → register.status-health-sessions-DhTfQ530.js} +3 -3
  124. package/dist/{register.subclis-DnzHFtLz.js → register.subclis-CrTXa8cj.js} +9 -9
  125. package/dist/{registry-CK4e9hn8.js → registry-DP24za6g.js} +17 -17
  126. package/dist/{replies-BIX_isV7.js → replies-DpPvWiGF.js} +3 -3
  127. package/dist/{reply-Ca3slrA3.js → reply-DkwaBRX-.js} +94 -2
  128. package/dist/{reply-prefix-XlyuyChD.js → reply-prefix-CtL0omgM.js} +1 -1
  129. package/dist/{resolve-route-CZ-1eqw0.js → resolve-route-BVikmvWO.js} +4 -4
  130. package/dist/{retry-Cly39XZB.js → retry-dGG-MbxL.js} +1 -1
  131. package/dist/{run-main-DlHh5iOO.js → run-main-BLKPL_vM.js} +14 -14
  132. package/dist/{runner-odEv83vv.js → runner-B_KP4voe.js} +9 -9
  133. package/dist/{send-DeFniOjh.js → send-CHEOWVc8.js} +6 -6
  134. package/dist/{send-WyRqb4WD.js → send-DbcLJb0P.js} +7 -7
  135. package/dist/{send-B1u-LrcS.js → send-DeEosX8F.js} +18 -18
  136. package/dist/{send-CiTGOvEc.js → send-DwKJK3sM.js} +10 -10
  137. package/dist/{send-DW96zgDL.js → send-zSarozV2.js} +6 -6
  138. package/dist/{server-methods-BYOkyf-q.js → server-methods-CbeCo-6O.js} +7 -7
  139. package/dist/{server-methods-b_Qod4tt.js → server-methods-EQ0JkHOg.js} +7 -7
  140. package/dist/{server-node-events-60nWpTh1.js → server-node-events-C1FDqJb9.js} +2 -2
  141. package/dist/{server-node-events-oU4Amei7.js → server-node-events-CBHpc_25.js} +2 -2
  142. package/dist/{session-SM36BTsl.js → session-DV1MNlbV.js} +8 -8
  143. package/dist/{skill-commands-BJMb_psG.js → skill-commands-D610IKhm.js} +9 -9
  144. package/dist/{skills-BFekKL7i.js → skills-o5WVqM4V.js} +21 -21
  145. package/dist/{sqlite-DRbx2dhW.js → sqlite-6H6Zw1cs.js} +4 -4
  146. package/dist/{status-BXW5l4sd.js → status-B1r3Wp0-.js} +2 -2
  147. package/dist/{status-D3-lP2_9.js → status-Cksz7z4T.js} +1 -1
  148. package/dist/{status-BxbbINLV.js → status-CnogoaI_.js} +2 -2
  149. package/dist/{status-kdz9P3tw.js → status-jVJSC_Ga.js} +1 -1
  150. package/dist/{store-C0wvOkae.js → store-vVE6N2mH.js} +2 -2
  151. package/dist/{subagent-registry-CbTbJKLs.js → subagent-registry-Jwg44JMf.js} +94 -2
  152. package/dist/{subsystem-Bs9YvKLa.js → subsystem-DgpxyDQ_.js} +1 -1
  153. package/dist/{tables-DuZspiBu.js → tables-BIWsCKXJ.js} +1 -1
  154. package/dist/{target-errors-Be1SwYlW.js → target-errors-DyItGyW9.js} +2 -2
  155. package/dist/{thinking-CdlENGRW.js → thinking-Ni0HF-w6.js} +5 -5
  156. package/dist/{tokens-H1H1LiSQ.js → tokens-c_SLAkVb.js} +1 -1
  157. package/dist/{tool-images-DXB7tqWi.js → tool-images-DBCfXdli.js} +2 -2
  158. package/dist/{tool-loop-detection-Cs8_HCsx.js → tool-loop-detection-Bbc9OPFR.js} +3 -3
  159. package/dist/{update-cli-Cy0gdWRf.js → update-cli-BkU6ori8.js} +8 -8
  160. package/dist/{update-cli-B5TI650v.js → update-cli-D18nWvzY.js} +7 -7
  161. package/dist/{update-runner-Bacq0oLK.js → update-runner-BQg__DB5.js} +1 -1
  162. package/dist/{update-runner-B0NdgPvD.js → update-runner-le1Hcqx4.js} +1 -1
  163. package/dist/{web-DmED3zDP.js → web-BSs2eYJa.js} +2 -2
  164. package/dist/{web-QVwKg99Q.js → web-BsjZ2RTT.js} +57 -57
  165. package/dist/{web-D-oCzJTU.js → web-DajtZMaX.js} +1 -1
  166. package/dist/{web-DWNtg4iV.js → web-KYh3LgI0.js} +1 -1
  167. package/dist/{whatsapp-actions-D1RsnX7P.js → whatsapp-actions-oRQjcdQe.js} +23 -23
  168. package/dist/{workspace-wAaHI8-5.js → workspace-CbvamIU6.js} +6 -6
  169. package/package.json +1 -1
@@ -22374,7 +22374,7 @@ async function runWithImageModelFallback(params) {
22374
22374
  function createDefaultDeps() {
22375
22375
  return {
22376
22376
  sendMessageWhatsApp: async (...args) => {
22377
- const { sendMessageWhatsApp } = await import("./web-DmED3zDP.js");
22377
+ const { sendMessageWhatsApp } = await import("./web-BSs2eYJa.js");
22378
22378
  return await sendMessageWhatsApp(...args);
22379
22379
  },
22380
22380
  sendMessageTelegram: async (...args) => {
@@ -40937,7 +40937,7 @@ function loadWebLoginQr() {
40937
40937
  return webLoginQrPromise;
40938
40938
  }
40939
40939
  function loadWebChannel() {
40940
- webChannelPromise ??= import("./web-DmED3zDP.js");
40940
+ webChannelPromise ??= import("./web-BSs2eYJa.js");
40941
40941
  return webChannelPromise;
40942
40942
  }
40943
40943
  function loadWhatsAppActions() {
@@ -61725,6 +61725,89 @@ Use the message tool with buttons:
61725
61725
  [{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
61726
61726
  </plan_mode>`;
61727
61727
 
61728
+ //#endregion
61729
+ //#region src/agents/stream-monitor.ts
61730
+ /**
61731
+ * Create a stream monitor configured for the given model profile.
61732
+ *
61733
+ * - Claude (hasStructuredThinking: true): repetition detection only
61734
+ * - Gemma/vLLM (hasStructuredThinking: false): tool JSON + repetition detection
61735
+ */
61736
+ function createStreamMonitor(profile, overrides) {
61737
+ const detectToolJson = overrides?.detectToolJson ?? !profile.filters.hasStructuredThinking;
61738
+ const detectRepetition = overrides?.detectRepetition ?? true;
61739
+ const minBlockSize = overrides?.repetitionMinBlockSize ?? 150;
61740
+ let accumulated = "";
61741
+ let stopSignaled = false;
61742
+ let stopReason;
61743
+ return {
61744
+ onChunk(delta) {
61745
+ if (stopSignaled) return;
61746
+ accumulated += delta;
61747
+ if (detectToolJson && hasCompleteToolJson(accumulated)) {
61748
+ stopSignaled = true;
61749
+ stopReason = "complete-tool-json";
61750
+ return;
61751
+ }
61752
+ if (detectRepetition && hasRepetition(accumulated, minBlockSize)) {
61753
+ stopSignaled = true;
61754
+ stopReason = "repetition-detected";
61755
+ return;
61756
+ }
61757
+ },
61758
+ shouldStop: () => stopSignaled,
61759
+ getAccumulated: () => accumulated,
61760
+ getStopReason: () => stopReason,
61761
+ reset() {
61762
+ accumulated = "";
61763
+ stopSignaled = false;
61764
+ stopReason = void 0;
61765
+ }
61766
+ };
61767
+ }
61768
+ /**
61769
+ * Detect if the accumulated text contains a syntactically complete JSON
61770
+ * object with tool_name and tool_args. Used for models that output tool
61771
+ * calls as plain text JSON (not native structured tool calls).
61772
+ */
61773
+ function hasCompleteToolJson(text) {
61774
+ const hasToolKey = text.includes("tool_name") || text.includes("\"tool\"");
61775
+ const hasArgsKey = text.includes("tool_args") || text.includes("\"args\"");
61776
+ if (!hasToolKey || !hasArgsKey) return false;
61777
+ const lastBrace = text.lastIndexOf("}");
61778
+ if (lastBrace < 0) return false;
61779
+ let depth = 0;
61780
+ let start = -1;
61781
+ for (let i = lastBrace; i >= 0; i--) {
61782
+ if (text[i] === "}") depth++;
61783
+ if (text[i] === "{") depth--;
61784
+ if (depth === 0) {
61785
+ start = i;
61786
+ break;
61787
+ }
61788
+ }
61789
+ if (start < 0) return false;
61790
+ const candidate = text.slice(start, lastBrace + 1);
61791
+ try {
61792
+ const parsed = JSON.parse(candidate);
61793
+ return typeof parsed === "object" && parsed !== null && (typeof parsed.tool_name === "string" || typeof parsed.tool === "string") && (typeof parsed.tool_args === "object" || typeof parsed.args === "object");
61794
+ } catch {
61795
+ return false;
61796
+ }
61797
+ }
61798
+ /**
61799
+ * Detect if the accumulated text contains a repeated block, indicating
61800
+ * a looping cascade. Returns true if a block of `minBlockSize` chars
61801
+ * from the first half appears again in the second half.
61802
+ */
61803
+ function hasRepetition(text, minBlockSize) {
61804
+ if (text.length < minBlockSize * 2.5) return false;
61805
+ const sampleStart = Math.floor(text.length * .25);
61806
+ const sample = text.slice(sampleStart, sampleStart + minBlockSize);
61807
+ const searchStart = sampleStart + minBlockSize;
61808
+ return text.indexOf(sample, searchStart) >= 0;
61809
+ }
61810
+
61728
61811
  //#endregion
61729
61812
  //#region src/agents/symipulse-timeout.ts
61730
61813
  /**
@@ -62942,6 +63025,7 @@ async function runEmbeddedAttempt(params) {
62942
63025
  return fn(...args);
62943
63026
  });
62944
63027
  };
63028
+ const streamMonitor = createStreamMonitor(modelProfile);
62945
63029
  const subscription = subscribeEmbeddedPiSession({
62946
63030
  session: activeSession,
62947
63031
  runId: params.runId,
@@ -62963,6 +63047,14 @@ async function runEmbeddedAttempt(params) {
62963
63047
  onAgentEvent: (evt) => {
62964
63048
  armSymipulseTimer();
62965
63049
  params.onAgentEvent?.(evt);
63050
+ if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
63051
+ streamMonitor.onChunk(evt.data.text);
63052
+ if (streamMonitor.shouldStop()) {
63053
+ const reason = streamMonitor.getStopReason();
63054
+ log$2.warn(`stream monitor triggered abort: runId=${params.runId} reason=${reason}`);
63055
+ abortRun(false, /* @__PURE__ */ new Error(`stream-monitor:${reason}`));
63056
+ }
63057
+ }
62966
63058
  },
62967
63059
  enforceFinalTag: params.enforceFinalTag,
62968
63060
  config: params.config,
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { n as resolveAgentConfig } from "./agent-scope-BxoUQqgM.js";
2
+ import { n as resolveAgentConfig } from "./agent-scope-Bw1Ed8W9.js";
3
3
 
4
4
  //#region src/agents/identity.ts
5
5
  const DEFAULT_ACK_REACTION = "👀";
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { d as sanitizeAgentId, f as DEFAULT_ACCOUNT_ID, i as buildAgentPeerSessionKey, n as DEFAULT_MAIN_KEY, p as normalizeAccountId, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
3
- import { Z as shouldLogVerbose } from "./registry-CK4e9hn8.js";
4
- import { c as resolveDefaultAgentId } from "./agent-scope-BxoUQqgM.js";
5
- import { y as logDebug } from "./workspace-wAaHI8-5.js";
3
+ import { Z as shouldLogVerbose } from "./registry-DP24za6g.js";
4
+ import { c as resolveDefaultAgentId } from "./agent-scope-Bw1Ed8W9.js";
5
+ import { y as logDebug } from "./workspace-CbvamIU6.js";
6
6
  import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
7
- import { t as listBindings } from "./bindings-B7Ke6LJi.js";
7
+ import { t as listBindings } from "./bindings-BU2hsBd9.js";
8
8
 
9
9
  //#region src/routing/resolve-route.ts
10
10
  var resolve_route_exports = /* @__PURE__ */ __exportAll({
@@ -1,4 +1,4 @@
1
- import { B as sleep } from "./registry-CK4e9hn8.js";
1
+ import { B as sleep } from "./registry-DP24za6g.js";
2
2
 
3
3
  //#region src/infra/retry.ts
4
4
  const DEFAULT_RETRY_CONFIG = {
@@ -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-CbTbJKLs.js";
16
+ import "./subagent-registry-Jwg44JMf.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-BDpdOTei.js";
104
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-D_BAH1V5.js";
105
105
  import { t as assertSupportedRuntime } from "./runtime-guard-D7waq_Ho.js";
106
- import { t as emitCliBanner } from "./banner-xhDZu_ZJ.js";
106
+ import { t as emitCliBanner } from "./banner-DRJJmkv1.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-Bst5HnLF.js").then((n) => n.i);
121
+ const { healthCommand } = await import("./health-BmaWws9G.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-BxbbINLV.js").then((n) => n.t);
141
+ const { statusCommand } = await import("./status-CnogoaI_.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-CI3xxYc_.js").then((n) => n.t);
175
+ const { agentsListCommand } = await import("./agents-BrpbYYTb.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-VIg0PSyq.js");
246
+ const { runConfigGet } = await import("./config-cli-C_GarUko.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-VIg0PSyq.js");
259
+ const { runConfigUnset } = await import("./config-cli-C_GarUko.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-ZEOGlFx7.js").then((n) => n.t);
273
+ const { modelsListCommand } = await import("./models-COaQWNz5.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-ZEOGlFx7.js").then((n) => n.t);
304
+ const { modelsStatusCommand } = await import("./models-COaQWNz5.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-Cl9i8ubQ.js");
382
+ const { buildProgram } = await import("./program-CutjuJj0.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-ea9SD1eA.js").then((n) => n.t);
414
+ const { registerCoreCliByName } = await import("./command-registry-DXt0PsFy.js").then((n) => n.t);
415
415
  await registerCoreCliByName(program, ctx, primary, parseArgv);
416
416
  }
417
- const { registerSubCliByName } = await import("./register.subclis-DnzHFtLz.js").then((n) => n.a);
417
+ const { registerSubCliByName } = await import("./register.subclis-CrTXa8cj.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-CaEE46xi.js");
426
+ const { registerPluginCliCommands } = await import("./cli-Ds6poYQ6.js");
427
427
  const { loadConfig } = await import("./config-DHBLS1Hl.js").then((n) => n.t);
428
428
  registerPluginCliCommands(program, loadConfig());
429
429
  }
@@ -1,13 +1,13 @@
1
- import { J as logVerbose, Z as shouldLogVerbose } from "./registry-CK4e9hn8.js";
2
- import { _ as runExec } from "./workspace-wAaHI8-5.js";
1
+ import { J as logVerbose, Z as shouldLogVerbose } from "./registry-DP24za6g.js";
2
+ import { _ as runExec } from "./workspace-CbvamIU6.js";
3
3
  import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
4
- import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-CvJzsyvE.js";
5
- import { A as normalizeProviderId, L as normalizeGoogleModelId, i as resolveApiKeyForProvider, r as requireApiKey, y as resolveSymiAgentDir } from "./model-auth-DK43VicI.js";
6
- import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-DRbjHIwD.js";
7
- import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-B0wGflxA.js";
8
- import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-CdSPHuLl.js";
4
+ import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-S8-8dAhx.js";
5
+ import { A as normalizeProviderId, L as normalizeGoogleModelId, i as resolveApiKeyForProvider, r as requireApiKey, y as resolveSymiAgentDir } from "./model-auth-CwOuTuXl.js";
6
+ import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-eEaJddXj.js";
7
+ import { S as ensureSymiModelsJson, t as describeImageWithModel } from "./image-BGmVDkkw.js";
8
+ import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-CF48hUR9.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
10
- import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-DMwIh5cS.js";
10
+ import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-C7OCYACU.js";
11
11
  import fs from "node:fs/promises";
12
12
  import os from "node:os";
13
13
  import path from "node:path";
@@ -882,7 +882,7 @@ async function loadModelCatalog(params) {
882
882
  });
883
883
  try {
884
884
  await ensureSymiModelsJson(params?.config ?? loadConfig());
885
- await (await import("./pi-auth-json-0SYBFZTt.js")).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir());
885
+ await (await import("./pi-auth-json-DPWPoruO.js")).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir());
886
886
  const piSdk = await importPiSdk();
887
887
  const agentDir = resolveSymiAgentDir();
888
888
  const { join } = await import("node:path");
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { J as logVerbose } from "./registry-CK4e9hn8.js";
3
- import { d as resolveSlackAccount, m as resolveSlackBotToken } from "./plugins-DQYI3Fr-.js";
2
+ import { J as logVerbose } from "./registry-DP24za6g.js";
3
+ import { d as resolveSlackAccount, m as resolveSlackBotToken } from "./plugins-C4C9637U.js";
4
4
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-CFovdgJI.js";
5
- import { n as loadConfig } from "./config-DRbjHIwD.js";
6
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-BW5f05BR.js";
7
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
8
- import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-DccrnjsE.js";
5
+ import { n as loadConfig } from "./config-eEaJddXj.js";
6
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit } from "./chunk-ClbN9Pqy.js";
7
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
8
+ import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-CbFUkv_T.js";
9
9
  import { t as renderMarkdownWithMarkers } from "./render-CDCvpfhh.js";
10
10
  import { WebClient } from "@slack/web-api";
11
11
 
@@ -1,11 +1,11 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { I as resolveUserPath, M as normalizeE164 } from "./registry-CK4e9hn8.js";
3
- import { x as mediaKindFromMime } from "./image-ops-CvJzsyvE.js";
4
- import { n as loadConfig } from "./config-DRbjHIwD.js";
5
- import { t as resolveIMessageAccount } from "./accounts-qtxJ-6em.js";
6
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
7
- import { t as convertMarkdownTables } from "./tables-DuZspiBu.js";
8
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DjNDa3zn.js";
2
+ import { I as resolveUserPath, M as normalizeE164 } from "./registry-DP24za6g.js";
3
+ import { x as mediaKindFromMime } from "./image-ops-S8-8dAhx.js";
4
+ import { n as loadConfig } from "./config-eEaJddXj.js";
5
+ import { t as resolveIMessageAccount } from "./accounts-CJR8j_Kq.js";
6
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
7
+ import { t as convertMarkdownTables } from "./tables-BIWsCKXJ.js";
8
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Co2diKdP.js";
9
9
  import { spawn } from "node:child_process";
10
10
  import { createInterface } from "node:readline";
11
11
 
@@ -1,24 +1,24 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { a as resolveOAuthDir, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-Cce4PUkG.js";
3
- import { G as danger, J as logVerbose, L as safeParseJson } from "./registry-CK4e9hn8.js";
4
- import { t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
5
- import { l as resolveTelegramAccount, n as listChannelPlugins, t as getChannelPlugin } from "./plugins-DQYI3Fr-.js";
6
- import { r as isTruthyEnvValue } from "./command-format-BaxDnULz.js";
7
- import { g as isGifMedia, p as getFileExtension, v as normalizeMimeType, x as mediaKindFromMime } from "./image-ops-CvJzsyvE.js";
8
- import { b as withFileLock$1 } from "./model-auth-DK43VicI.js";
9
- import { n as loadConfig } from "./config-DRbjHIwD.js";
2
+ import { a as resolveOAuthDir, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-CySxpNhH.js";
3
+ import { G as danger, J as logVerbose, L as safeParseJson } from "./registry-DP24za6g.js";
4
+ import { t as createSubsystemLogger } from "./subsystem-DgpxyDQ_.js";
5
+ import { l as resolveTelegramAccount, n as listChannelPlugins, t as getChannelPlugin } from "./plugins-C4C9637U.js";
6
+ import { r as isTruthyEnvValue } from "./command-format-UKHV-j0K.js";
7
+ import { g as isGifMedia, p as getFileExtension, v as normalizeMimeType, x as mediaKindFromMime } from "./image-ops-S8-8dAhx.js";
8
+ import { b as withFileLock$1 } from "./model-auth-CwOuTuXl.js";
9
+ import { n as loadConfig } from "./config-eEaJddXj.js";
10
10
  import { t as redactSensitiveText } from "./redact-jSxx6Ep2.js";
11
11
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-BoQgnc8X.js";
12
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
13
- import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-DccrnjsE.js";
12
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
13
+ import { a as loadWebMedia, n as markdownToIR, t as chunkMarkdownIR } from "./ir-CbFUkv_T.js";
14
14
  import { t as renderMarkdownWithMarkers } from "./render-CDCvpfhh.js";
15
15
  import { t as resolveFetch } from "./fetch-Bso4i15F.js";
16
- import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-CsM_hJ_s.js";
16
+ import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-C9-gaquj.js";
17
17
  import { n as normalizePollInput } from "./polls-CCuCaqgv.js";
18
18
  import { t as makeProxyFetch } from "./proxy-CBJ1upuz.js";
19
19
  import os from "node:os";
20
20
  import path from "node:path";
21
- import fs from "node:fs";
21
+ import fsSync from "node:fs";
22
22
  import crypto from "node:crypto";
23
23
  import process$1 from "node:process";
24
24
  import * as net$1 from "node:net";
@@ -131,7 +131,7 @@ function getPairingAdapter(channelId) {
131
131
  //#region src/plugin-sdk/json-store.ts
132
132
  async function readJsonFileWithFallback(filePath, fallback) {
133
133
  try {
134
- const parsed = safeParseJson(await fs.promises.readFile(filePath, "utf-8"));
134
+ const parsed = safeParseJson(await fsSync.promises.readFile(filePath, "utf-8"));
135
135
  if (parsed == null) return {
136
136
  value: fallback,
137
137
  exists: true
@@ -153,14 +153,14 @@ async function readJsonFileWithFallback(filePath, fallback) {
153
153
  }
154
154
  async function writeJsonFileAtomically(filePath, value) {
155
155
  const dir = path.dirname(filePath);
156
- await fs.promises.mkdir(dir, {
156
+ await fsSync.promises.mkdir(dir, {
157
157
  recursive: true,
158
158
  mode: 448
159
159
  });
160
160
  const tmp = path.join(dir, `${path.basename(filePath)}.${crypto.randomUUID()}.tmp`);
161
- await fs.promises.writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf-8" });
162
- await fs.promises.chmod(tmp, 384);
163
- await fs.promises.rename(tmp, filePath);
161
+ await fsSync.promises.writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf-8" });
162
+ await fsSync.promises.chmod(tmp, 384);
163
+ await fsSync.promises.rename(tmp, filePath);
164
164
  }
165
165
 
166
166
  //#endregion
@@ -221,7 +221,7 @@ async function readPairingRequests(filePath) {
221
221
  }
222
222
  async function ensureJsonFile(filePath, fallback) {
223
223
  try {
224
- await fs.promises.access(filePath);
224
+ await fsSync.promises.access(filePath);
225
225
  } catch {
226
226
  await writeJsonFile(filePath, fallback);
227
227
  }
@@ -1,17 +1,17 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { dt as resolvePreferredSymiTmpDir } from "./registry-CK4e9hn8.js";
3
- import { _ as resolveDiscordAccount, v as normalizeDiscordToken } from "./plugins-DQYI3Fr-.js";
2
+ import { dt as resolvePreferredSymiTmpDir } from "./registry-DP24za6g.js";
3
+ import { _ as resolveDiscordAccount, v as normalizeDiscordToken } from "./plugins-C4C9637U.js";
4
4
  import { a as requireTargetKind, i as parseTargetPrefixes, n as ensureTargetId, r as parseTargetMention, t as buildMessagingTarget } from "./targets-CFovdgJI.js";
5
- import { b as maxBytesForKind, f as extensionForMime } from "./image-ops-CvJzsyvE.js";
6
- import { n as loadConfig } from "./config-DRbjHIwD.js";
7
- import { n as retryAsync, t as resolveRetryConfig } from "./retry-Cly39XZB.js";
8
- import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-BW5f05BR.js";
9
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
10
- import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-DccrnjsE.js";
5
+ import { b as maxBytesForKind, f as extensionForMime } from "./image-ops-S8-8dAhx.js";
6
+ import { n as loadConfig } from "./config-eEaJddXj.js";
7
+ import { n as retryAsync, t as resolveRetryConfig } from "./retry-dGG-MbxL.js";
8
+ import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-ClbN9Pqy.js";
9
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
10
+ import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-CbFUkv_T.js";
11
11
  import { t as resolveFetch } from "./fetch-Bso4i15F.js";
12
- import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-CsM_hJ_s.js";
12
+ import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-C9-gaquj.js";
13
13
  import { n as normalizePollInput, t as normalizePollDurationHours } from "./polls-CCuCaqgv.js";
14
- import { t as convertMarkdownTables } from "./tables-DuZspiBu.js";
14
+ import { t as convertMarkdownTables } from "./tables-BIWsCKXJ.js";
15
15
  import fs from "node:fs/promises";
16
16
  import path from "node:path";
17
17
  import { execFile } from "node:child_process";
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { n as resolveSignalAccount } from "./accounts-CWktKM8a.js";
3
- import { x as mediaKindFromMime } from "./image-ops-CvJzsyvE.js";
4
- import { n as loadConfig } from "./config-DRbjHIwD.js";
5
- import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
2
+ import { n as resolveSignalAccount } from "./accounts-ChTFYj8Q.js";
3
+ import { x as mediaKindFromMime } from "./image-ops-S8-8dAhx.js";
4
+ import { n as loadConfig } from "./config-eEaJddXj.js";
5
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DSHvnTLx.js";
6
6
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
7
- import { n as markdownToIR, t as chunkMarkdownIR } from "./ir-DccrnjsE.js";
7
+ import { n as markdownToIR, t as chunkMarkdownIR } from "./ir-CbFUkv_T.js";
8
8
  import { t as resolveFetch } from "./fetch-Bso4i15F.js";
9
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DjNDa3zn.js";
9
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-Co2diKdP.js";
10
10
  import { randomUUID } from "node:crypto";
11
11
 
12
12
  //#region src/signal/format.ts
@@ -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, C as loadSessionEntry, Cr as isSystemEventContextChanged, E as resolveSessionModelRef, En as stopSubagentsForRequester, Fr as resolveAgentTimeoutMs, Ft as resolveAgentOutboundTarget, Gn as isTtsProviderConfigured, H as formatDoctorNonInteractiveHint, Hn as resolveUserTimezone, Ht as resolveSendPolicy, Jn as resolveTtsConfig, Kn as resolveTtsApiKey, Mn as listDescendantRunsForRequester, Mt as agentCommand, Nn as listSubagentRunsForRequester, O as ensureOutboundSessionEntry, Pt as resolveAgentDeliveryPlan, Qn as setTtsProvider, R as scheduleGatewaySigusr1Restart, Rt as resolveOutboundTarget, S as loadCombinedSessionStoreForGateway, Sn as formatZonedTimestamp, Sr as enqueueSystemEvent, St as loadProviderUsageSummary, T as resolveGatewaySessionStoreTarget, Tn as isAbortTrigger, Un as getTtsProvider, Vn as registerAgentRunContext, Vt as normalizeSendPolicy, Wn as isTtsEnabled, Wt as createOutboundSendDeps, X as normalizeCronJobPatch, Xn as resolveTtsProviderOrder, Y as normalizeCronJobCreate, Yn as resolveTtsPrefsPath, Zn as setTtsEnabled, an as unbindThreadBindingsBySessionKey, b as listAgentsForGateway, br as applyVerboseOverride, bt as normalizeGroupActivation, c as clearSessionQueues, er as OPENAI_TTS_MODELS, f as waitForEmbeddedPiRunEnd, hn as createReplyDispatcher, k as resolveOutboundSessionRoute, lt as applyBrowserProxyPaths, mn as dispatchInboundMessage, n as BARE_SESSION_RESET_PROMPT, q as writeRestartSentinel, qn as resolveTtsAutoMode, tr as OPENAI_TTS_VOICES, u as abortEmbeddedPiRun, ut as persistBrowserProxyFiles, v as canonicalizeSpawnedByForAgent, vt as loadSymiPlugins, w as pruneLegacyStoreKeys, x as listSessionsFromStore, xr as parseVerboseOverride, yr as applyModelOverrideToSessionEntry } from "./reply-Ca3slrA3.js";
4
+ import { $n as textToSpeech, Bn as onAgentEvent, C as loadSessionEntry, Cr as isSystemEventContextChanged, E as resolveSessionModelRef, En as stopSubagentsForRequester, Fr as resolveAgentTimeoutMs, Ft as resolveAgentOutboundTarget, Gn as isTtsProviderConfigured, H as formatDoctorNonInteractiveHint, Hn as resolveUserTimezone, Ht as resolveSendPolicy, Jn as resolveTtsConfig, Kn as resolveTtsApiKey, Mn as listDescendantRunsForRequester, Mt as agentCommand, Nn as listSubagentRunsForRequester, O as ensureOutboundSessionEntry, Pt as resolveAgentDeliveryPlan, Qn as setTtsProvider, R as scheduleGatewaySigusr1Restart, Rt as resolveOutboundTarget, S as loadCombinedSessionStoreForGateway, Sn as formatZonedTimestamp, Sr as enqueueSystemEvent, St as loadProviderUsageSummary, T as resolveGatewaySessionStoreTarget, Tn as isAbortTrigger, Un as getTtsProvider, Vn as registerAgentRunContext, Vt as normalizeSendPolicy, Wn as isTtsEnabled, Wt as createOutboundSendDeps, X as normalizeCronJobPatch, Xn as resolveTtsProviderOrder, Y as normalizeCronJobCreate, Yn as resolveTtsPrefsPath, Zn as setTtsEnabled, an as unbindThreadBindingsBySessionKey, b as listAgentsForGateway, br as applyVerboseOverride, bt as normalizeGroupActivation, c as clearSessionQueues, er as OPENAI_TTS_MODELS, f as waitForEmbeddedPiRunEnd, hn as createReplyDispatcher, k as resolveOutboundSessionRoute, lt as applyBrowserProxyPaths, mn as dispatchInboundMessage, n as BARE_SESSION_RESET_PROMPT, q as writeRestartSentinel, qn as resolveTtsAutoMode, tr as OPENAI_TTS_VOICES, u as abortEmbeddedPiRun, ut as persistBrowserProxyFiles, v as canonicalizeSpawnedByForAgent, vt as loadSymiPlugins, w as pruneLegacyStoreKeys, x as listSessionsFromStore, xr as parseVerboseOverride, yr as applyModelOverrideToSessionEntry } from "./reply-DkwaBRX-.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-BXW5l4sd.js";
43
- import { s as setHeartbeatsEnabled } from "./health-CypF_2ZD.js";
42
+ import { n as getStatusSummary } from "./status-B1r3Wp0-.js";
43
+ import { s as setHeartbeatsEnabled } from "./health-BBGgp_dC.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-DeJt9kAO.js";
46
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DCE3RGr9.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-CT8-VcK5.js";
46
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Bf8u_0ts.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-Bacq0oLK.js";
49
+ import { t as runGatewayUpdate } from "./update-runner-BQg__DB5.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-60nWpTh1.js");
6856
+ const { handleNodeEvent } = await import("./server-node-events-C1FDqJb9.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, A as resolveAgentOutboundTarget, Cn as parseVerboseOverride, D as agentCommand, Dt as normalizeCronJobCreate, Gn as isAbortTrigger, Gt as applyBrowserProxyPaths, Hn as formatZonedTimestamp, K as dispatchInboundMessage, Kn as stopSubagentsForRequester, Kt as persistBrowserProxyFiles, Ln as resolveAgentTimeoutMs, N as createOutboundSendDeps, 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, b as loadSymiPlugins, bt as formatDoctorNonInteractiveHint, c as clearSessionQueues, cr as OPENAI_TTS_VOICES, ct as ensureOutboundSessionEntry, er as resolveTtsAutoMode, f as waitForEmbeddedPiRunEnd, ft as resolveOutboundTarget, gn as resolveSendPolicy, hn as normalizeSendPolicy, i as listDescendantRunsForRequester, in as loadProviderUsageSummary, ir as setTtsEnabled, k as resolveAgentDeliveryPlan, lt as resolveOutboundSessionRoute, 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, u as abortEmbeddedPiRun, wn as enqueueSystemEvent, wr as onAgentEvent, xn as applyModelOverrideToSessionEntry } from "./subagent-registry-CbTbJKLs.js";
15
+ import { $n as resolveTtsApiKey, A as resolveAgentOutboundTarget, Cn as parseVerboseOverride, D as agentCommand, Dt as normalizeCronJobCreate, Gn as isAbortTrigger, Gt as applyBrowserProxyPaths, Hn as formatZonedTimestamp, K as dispatchInboundMessage, Kn as stopSubagentsForRequester, Kt as persistBrowserProxyFiles, Ln as resolveAgentTimeoutMs, N as createOutboundSendDeps, 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, b as loadSymiPlugins, bt as formatDoctorNonInteractiveHint, c as clearSessionQueues, cr as OPENAI_TTS_VOICES, ct as ensureOutboundSessionEntry, er as resolveTtsAutoMode, f as waitForEmbeddedPiRunEnd, ft as resolveOutboundTarget, gn as resolveSendPolicy, hn as normalizeSendPolicy, i as listDescendantRunsForRequester, in as loadProviderUsageSummary, ir as setTtsEnabled, k as resolveAgentDeliveryPlan, lt as resolveOutboundSessionRoute, 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, u as abortEmbeddedPiRun, wn as enqueueSystemEvent, wr as onAgentEvent, xn as applyModelOverrideToSessionEntry } from "./subagent-registry-Jwg44JMf.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-BxbbINLV.js";
41
- import { c as setHeartbeatsEnabled } from "./health-Bst5HnLF.js";
40
+ import { r as getStatusSummary } from "./status-CnogoaI_.js";
41
+ import { c as setHeartbeatsEnabled } from "./health-BmaWws9G.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-CFkFVwEz.js";
44
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DTUAM1AG.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-DvcqkHld.js";
44
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-j4SWyB6K.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-B0NdgPvD.js";
47
+ import { t as runGatewayUpdate } from "./update-runner-le1Hcqx4.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-oU4Amei7.js");
6854
+ const { handleNodeEvent } = await import("./server-node-events-CBHpc_25.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 { Bt as createOutboundSendDeps, C as loadSessionEntry, Mt as agentCommand, Rt as resolveOutboundTarget, Sr as enqueueSystemEvent, T as resolveGatewaySessionStoreTarget, pt as requestHeartbeatNow, w as pruneLegacyStoreKeys } from "./reply-Ca3slrA3.js";
4
+ import { Bt as createOutboundSendDeps, C as loadSessionEntry, Mt as agentCommand, Rt as resolveOutboundTarget, Sr as enqueueSystemEvent, T as resolveGatewaySessionStoreTarget, pt as requestHeartbeatNow, w as pruneLegacyStoreKeys } from "./reply-DkwaBRX-.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-DeJt9kAO.js";
105
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CT8-VcK5.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 { D as agentCommand, fn as requestHeartbeatNow, ft as resolveOutboundTarget, j as createOutboundSendDeps, wn as enqueueSystemEvent } from "./subagent-registry-CbTbJKLs.js";
17
+ import { D as agentCommand, fn as requestHeartbeatNow, ft as resolveOutboundTarget, j as createOutboundSendDeps, wn as enqueueSystemEvent } from "./subagent-registry-Jwg44JMf.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-CFkFVwEz.js";
101
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-DvcqkHld.js";
102
102
  import { randomUUID } from "node:crypto";
103
103
 
104
104
  //#region src/gateway/server-node-events.ts