@symerian/symi 2.1.3 → 2.1.5

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 (88) hide show
  1. package/dist/{audio-preflight-5NsCxagO.js → audio-preflight-BZIRAXlv.js} +4 -4
  2. package/dist/build-info.json +3 -3
  3. package/dist/bundled/boot-md/handler.js +6 -6
  4. package/dist/bundled/session-memory/handler.js +6 -6
  5. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  6. package/dist/{chrome-DM65TRMk.js → chrome-791kNCCB.js} +7 -7
  7. package/dist/control-ui/js/app.js +6 -2
  8. package/dist/control-ui/js/render.js +3 -1
  9. package/dist/{deliver-Cgg1qwKP.js → deliver-CrlXl9KD.js} +1 -1
  10. package/dist/{image-xvVpGzK5.js → image-ycxQmhff.js} +1 -1
  11. package/dist/llm-slug-generator.js +6 -6
  12. package/dist/{pi-embedded-DuWfOlkO.js → pi-embedded-AKhKHxb6.js} +16 -16
  13. package/dist/{pi-embedded-helpers-Cd124krQ.js → pi-embedded-helpers-DoTustDz.js} +4 -4
  14. package/dist/plugin-sdk/{accounts-BtaOa4z_.js → accounts-BToL3HlP.js} +1 -1
  15. package/dist/plugin-sdk/{accounts-Ddm33hQm.js → accounts-D9zGZU5t.js} +3 -3
  16. package/dist/plugin-sdk/{accounts-s-AdhXVR.js → accounts-Dtszw3Zn.js} +1 -1
  17. package/dist/plugin-sdk/{active-listener-BXYeALs0.js → active-listener-bEk__wbB.js} +1 -1
  18. package/dist/plugin-sdk/{agent-scope-CYYpcO9W.js → agent-scope-C3gMMKCU.js} +2 -2
  19. package/dist/plugin-sdk/{api-key-rotation-BNN7DLRF.js → api-key-rotation-B7wX2cS9.js} +1 -1
  20. package/dist/plugin-sdk/{audio-preflight-Cx5FPiJc.js → audio-preflight-ni0fpVp8.js} +24 -24
  21. package/dist/plugin-sdk/{bindings-C7hRtgYW.js → bindings-BbwoUGPx.js} +2 -2
  22. package/dist/plugin-sdk/{channel-activity-DoC1xtDu.js → channel-activity-Ji7f0gqq.js} +1 -1
  23. package/dist/plugin-sdk/{channel-web-Bz7z_PrR.js → channel-web-DLpcsfAm.js} +22 -22
  24. package/dist/plugin-sdk/{chrome-BMG9BEuT.js → chrome-B3sE4bXC.js} +3 -3
  25. package/dist/plugin-sdk/{chunk-Dw2XBYXv.js → chunk-jvk9axTQ.js} +1 -1
  26. package/dist/plugin-sdk/{command-format-GKSevep4.js → command-format-DSdvQ_M5.js} +1 -1
  27. package/dist/plugin-sdk/{commands-registry-B6QKgH1z.js → commands-registry-DFVoW5Za.js} +4 -4
  28. package/dist/plugin-sdk/{config-ChoJh2v6.js → config-C8bdNl-t.js} +9 -9
  29. package/dist/plugin-sdk/{deliver-PHupXW27.js → deliver-DupqKEgT.js} +10 -10
  30. package/dist/plugin-sdk/{diagnostic-05pm5Rxi.js → diagnostic-mFf4i4G9.js} +1 -1
  31. package/dist/plugin-sdk/{image-ops-BlQR__MN.js → image-ops-Bnp6LXEx.js} +1 -1
  32. package/dist/plugin-sdk/{image-CZeY-Q2T.js → image-t0--fcO_.js} +4 -4
  33. package/dist/plugin-sdk/index.js +53 -53
  34. package/dist/plugin-sdk/{ir-BJ6BHE5b.js → ir-Fb3qpcis.js} +4 -4
  35. package/dist/plugin-sdk/{local-roots-BHLNSI8U.js → local-roots-Ckk1QfzI.js} +3 -3
  36. package/dist/plugin-sdk/{login-WrHy4q1W.js → login-YiSLGJpw.js} +7 -7
  37. package/dist/plugin-sdk/{login-qr-D30S2gk7.js → login-qr-Ct3iRCTA.js} +9 -9
  38. package/dist/plugin-sdk/{manager-Cn2S7u-y.js → manager-PXN_BUWT.js} +8 -8
  39. package/dist/plugin-sdk/{manifest-registry-CPnHl_K3.js → manifest-registry-B3ugY9-f.js} +1 -1
  40. package/dist/plugin-sdk/{markdown-tables-BoYFajMu.js → markdown-tables-Dfaqilz6.js} +1 -1
  41. package/dist/plugin-sdk/{message-channel-COTAJzHd.js → message-channel-BdI5Ra9S.js} +1 -1
  42. package/dist/plugin-sdk/{model-selection-CPEL3Uc_.js → model-selection-UQwTqGSw.js} +4 -4
  43. package/dist/plugin-sdk/{outbound-ps5sAOfw.js → outbound-BaAisH4u.js} +7 -7
  44. package/dist/plugin-sdk/{outbound-attachment-CnslKL38.js → outbound-attachment-DnVQfTG2.js} +2 -2
  45. package/dist/plugin-sdk/{pi-auth-json-D4gyc_V3.js → pi-auth-json-DAttpBPg.js} +5 -5
  46. package/dist/plugin-sdk/{pi-embedded-helpers-CU4D77Op.js → pi-embedded-helpers-CHlXbJGj.js} +17 -17
  47. package/dist/plugin-sdk/{plugins-BNByVCIH.js → plugins-BbAvhC25.js} +4 -4
  48. package/dist/plugin-sdk/{pw-ai-81tOC-Ch.js → pw-ai-JO8xac-v.js} +8 -8
  49. package/dist/plugin-sdk/{qmd-manager-CH0XbIHf.js → qmd-manager-mjKcdwVr.js} +4 -4
  50. package/dist/plugin-sdk/{registry-D0xTnUWt.js → registry--_pGht6S.js} +2 -2
  51. package/dist/plugin-sdk/{replies-zmY9bbot.js → replies-CVSgwFjl.js} +3 -3
  52. package/dist/plugin-sdk/{reply-BSikbH6_.js → reply-GcVMmckw.js} +78 -78
  53. package/dist/plugin-sdk/{reply-prefix-uxfMZW4p.js → reply-prefix-BHuV5t70.js} +1 -1
  54. package/dist/plugin-sdk/{resolve-outbound-target-BiyAyTWz.js → resolve-outbound-target-BkCUbYGV.js} +2 -2
  55. package/dist/plugin-sdk/{resolve-route-B3CCBumQ.js → resolve-route-D3JH_D2N.js} +3 -3
  56. package/dist/plugin-sdk/{retry-CwQ_iIj8.js → retry-ilSJqnz9.js} +1 -1
  57. package/dist/plugin-sdk/{runner-Co_eR7xp.js → runner-Dm_yIGe6.js} +9 -9
  58. package/dist/plugin-sdk/{send-BNZVvZHE.js → send-BEeCC5ku.js} +6 -6
  59. package/dist/plugin-sdk/{send-6DwkdgEF.js → send-C9rT2n2M.js} +7 -7
  60. package/dist/plugin-sdk/{send-D6BxZPP0.js → send-DNkOLgrC.js} +6 -6
  61. package/dist/plugin-sdk/{send-D8vgGF3T.js → send-DWr9Drgp.js} +10 -10
  62. package/dist/plugin-sdk/{send-Dw4gTEN6.js → send-mQr5eXnb.js} +10 -10
  63. package/dist/plugin-sdk/{session-BTN5wyhB.js → session-CQ5dJOsX.js} +4 -4
  64. package/dist/plugin-sdk/{skill-commands-BUVE0jBL.js → skill-commands-27tIhSRP.js} +5 -5
  65. package/dist/plugin-sdk/{skills-_yTP47Cd.js → skills-B1GeRYlu.js} +7 -7
  66. package/dist/plugin-sdk/{sqlite-CxAR5ttJ.js → sqlite-Cq_7Cg4E.js} +1 -1
  67. package/dist/plugin-sdk/{store-BdrNabcU.js → store-Do3t33-c.js} +2 -2
  68. package/dist/plugin-sdk/{subsystem-B2uDN3TV.js → subsystem-Coz2AgU8.js} +1 -1
  69. package/dist/plugin-sdk/{tables-DNwXwNFa.js → tables-DR0NmBeH.js} +1 -1
  70. package/dist/plugin-sdk/{target-errors-Paro1BjP.js → target-errors-B7YyMnIi.js} +2 -2
  71. package/dist/plugin-sdk/{thinking-CXqf7WTe.js → thinking-DCNUIAHY.js} +5 -5
  72. package/dist/plugin-sdk/{tokens-bC3UVmVH.js → tokens-CWMflosr.js} +1 -1
  73. package/dist/plugin-sdk/{tool-images-HJ2sfZDV.js → tool-images-D7Lno-TE.js} +2 -2
  74. package/dist/plugin-sdk/{tool-loop-detection-BVA6fax-.js → tool-loop-detection-edmW8ZiF.js} +2 -2
  75. package/dist/plugin-sdk/web-CJWupzDH.js +65 -0
  76. package/dist/plugin-sdk/{whatsapp-actions-DU3CTVCg.js → whatsapp-actions-ZlyPpuJN.js} +21 -21
  77. package/dist/{pw-ai-CL_YRdbc.js → pw-ai-DIVguI36.js} +1 -1
  78. package/dist/{runner-CCo2QuJE.js → runner-Cw5KZrjx.js} +1 -1
  79. package/dist/{web-BFa88W3e.js → web-Kz-ZuUjq.js} +6 -6
  80. package/extensions/outlook/index.ts +199 -0
  81. package/extensions/outlook/package.json +15 -0
  82. package/extensions/outlook/src/auth.ts +362 -0
  83. package/extensions/outlook/src/graph-mail.ts +150 -0
  84. package/extensions/outlook/src/store.ts +72 -0
  85. package/extensions/outlook/src/tools.ts +256 -0
  86. package/extensions/outlook/symi.plugin.json +11 -0
  87. package/package.json +1 -1
  88. package/dist/plugin-sdk/web-eAue9zIL.js +0 -65
@@ -14,10 +14,10 @@ import "./model-auth-64S8o7s-.js";
14
14
  import "./github-copilot-token-C_qUP7p5.js";
15
15
  import "./pi-model-discovery-DaNAekda.js";
16
16
  import "./message-channel-Dz5lr5b0.js";
17
- import "./pi-embedded-helpers-Cd124krQ.js";
17
+ import "./pi-embedded-helpers-DoTustDz.js";
18
18
  import "./config-CfZ-oKwR.js";
19
19
  import "./manifest-registry-D0IQ3WuX.js";
20
- import "./chrome-DM65TRMk.js";
20
+ import "./chrome-791kNCCB.js";
21
21
  import "./frontmatter-C_bv_0P8.js";
22
22
  import "./skills-BFekKL7i.js";
23
23
  import "./redact-jSxx6Ep2.js";
@@ -28,10 +28,10 @@ import "./thinking-CdlENGRW.js";
28
28
  import "./accounts-qtxJ-6em.js";
29
29
  import "./paths-DLyHUt31.js";
30
30
  import "./tool-images-DXB7tqWi.js";
31
- import "./image-xvVpGzK5.js";
31
+ import "./image-ycxQmhff.js";
32
32
  import "./gemini-auth-DzFcFvHV.js";
33
33
  import "./local-roots-DMwIh5cS.js";
34
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-CCo2QuJE.js";
34
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-Cw5KZrjx.js";
35
35
 
36
36
  //#region src/media-understanding/audio-preflight.ts
37
37
  /**
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.1.3",
3
- "commit": "34070b5d91a2a9075e70d50c5392c9c39a11f88a",
4
- "builtAt": "2026-03-31T13:15:13.349Z"
2
+ "version": "2.1.5",
3
+ "commit": "1d0607d2d61b8468c3c6a5d3867c574da83535a0",
4
+ "builtAt": "2026-04-02T22:46:11.885Z"
5
5
  }
@@ -5,7 +5,7 @@ import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "../../agent-sc
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "../../subsystem-Bs9YvKLa.js";
6
6
  import "../../workspace-wAaHI8-5.js";
7
7
  import { n as SILENT_REPLY_TOKEN } from "../../tokens-H1H1LiSQ.js";
8
- import { a as createDefaultDeps, i as agentCommand } from "../../pi-embedded-DuWfOlkO.js";
8
+ import { a as createDefaultDeps, i as agentCommand } from "../../pi-embedded-AKhKHxb6.js";
9
9
  import "../../plugins-DQYI3Fr-.js";
10
10
  import "../../accounts-tNElYrCH.js";
11
11
  import "../../boolean-B8-BqKGQ.js";
@@ -13,7 +13,7 @@ import "../../command-format-BaxDnULz.js";
13
13
  import "../../bindings-B7Ke6LJi.js";
14
14
  import "../../send-Ct3wqNP6.js";
15
15
  import "../../send-D0WfDllx.js";
16
- import "../../deliver-Cgg1qwKP.js";
16
+ import "../../deliver-CrlXl9KD.js";
17
17
  import "../../diagnostic-CI0kRQkt.js";
18
18
  import "../../diagnostic-session-state-Bxo4UHOL.js";
19
19
  import "../../accounts-CWktKM8a.js";
@@ -23,10 +23,10 @@ import "../../model-auth-64S8o7s-.js";
23
23
  import "../../github-copilot-token-C_qUP7p5.js";
24
24
  import "../../pi-model-discovery-DaNAekda.js";
25
25
  import "../../message-channel-Dz5lr5b0.js";
26
- import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-Cd124krQ.js";
26
+ import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-DoTustDz.js";
27
27
  import "../../config-CfZ-oKwR.js";
28
28
  import "../../manifest-registry-D0IQ3WuX.js";
29
- import "../../chrome-DM65TRMk.js";
29
+ import "../../chrome-791kNCCB.js";
30
30
  import "../../frontmatter-C_bv_0P8.js";
31
31
  import "../../skills-BFekKL7i.js";
32
32
  import "../../redact-jSxx6Ep2.js";
@@ -37,7 +37,7 @@ import "../../thinking-CdlENGRW.js";
37
37
  import "../../accounts-qtxJ-6em.js";
38
38
  import { s as resolveStorePath } from "../../paths-DLyHUt31.js";
39
39
  import "../../tool-images-DXB7tqWi.js";
40
- import "../../image-xvVpGzK5.js";
40
+ import "../../image-ycxQmhff.js";
41
41
  import "../../reply-prefix-XlyuyChD.js";
42
42
  import "../../manager-M83fJMDC.js";
43
43
  import "../../gemini-auth-DzFcFvHV.js";
@@ -51,7 +51,7 @@ import "../../ir-DccrnjsE.js";
51
51
  import "../../render-CDCvpfhh.js";
52
52
  import "../../commands-registry-BCRa0DAp.js";
53
53
  import "../../skill-commands-DCDG7ki5.js";
54
- import "../../runner-CCo2QuJE.js";
54
+ import "../../runner-Cw5KZrjx.js";
55
55
  import "../../fetch-Bso4i15F.js";
56
56
  import "../../channel-activity-CsM_hJ_s.js";
57
57
  import "../../tables-DuZspiBu.js";
@@ -5,7 +5,7 @@ import { s as resolveAgentWorkspaceDir } from "../../agent-scope-BxoUQqgM.js";
5
5
  import { t as createSubsystemLogger } from "../../subsystem-Bs9YvKLa.js";
6
6
  import "../../workspace-wAaHI8-5.js";
7
7
  import "../../tokens-H1H1LiSQ.js";
8
- import "../../pi-embedded-DuWfOlkO.js";
8
+ import "../../pi-embedded-AKhKHxb6.js";
9
9
  import "../../plugins-DQYI3Fr-.js";
10
10
  import "../../accounts-tNElYrCH.js";
11
11
  import "../../boolean-B8-BqKGQ.js";
@@ -13,7 +13,7 @@ import "../../command-format-BaxDnULz.js";
13
13
  import "../../bindings-B7Ke6LJi.js";
14
14
  import "../../send-Ct3wqNP6.js";
15
15
  import "../../send-D0WfDllx.js";
16
- import "../../deliver-Cgg1qwKP.js";
16
+ import "../../deliver-CrlXl9KD.js";
17
17
  import "../../diagnostic-CI0kRQkt.js";
18
18
  import "../../diagnostic-session-state-Bxo4UHOL.js";
19
19
  import "../../accounts-CWktKM8a.js";
@@ -23,10 +23,10 @@ import "../../model-auth-64S8o7s-.js";
23
23
  import "../../github-copilot-token-C_qUP7p5.js";
24
24
  import "../../pi-model-discovery-DaNAekda.js";
25
25
  import "../../message-channel-Dz5lr5b0.js";
26
- import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-Cd124krQ.js";
26
+ import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-DoTustDz.js";
27
27
  import "../../config-CfZ-oKwR.js";
28
28
  import "../../manifest-registry-D0IQ3WuX.js";
29
- import "../../chrome-DM65TRMk.js";
29
+ import "../../chrome-791kNCCB.js";
30
30
  import "../../frontmatter-C_bv_0P8.js";
31
31
  import "../../skills-BFekKL7i.js";
32
32
  import "../../redact-jSxx6Ep2.js";
@@ -37,7 +37,7 @@ import "../../thinking-CdlENGRW.js";
37
37
  import "../../accounts-qtxJ-6em.js";
38
38
  import "../../paths-DLyHUt31.js";
39
39
  import "../../tool-images-DXB7tqWi.js";
40
- import "../../image-xvVpGzK5.js";
40
+ import "../../image-ycxQmhff.js";
41
41
  import "../../reply-prefix-XlyuyChD.js";
42
42
  import "../../manager-M83fJMDC.js";
43
43
  import "../../gemini-auth-DzFcFvHV.js";
@@ -51,7 +51,7 @@ import "../../ir-DccrnjsE.js";
51
51
  import "../../render-CDCvpfhh.js";
52
52
  import "../../commands-registry-BCRa0DAp.js";
53
53
  import "../../skill-commands-DCDG7ki5.js";
54
- import "../../runner-CCo2QuJE.js";
54
+ import "../../runner-Cw5KZrjx.js";
55
55
  import "../../fetch-Bso4i15F.js";
56
56
  import "../../channel-activity-CsM_hJ_s.js";
57
57
  import "../../tables-DuZspiBu.js";
@@ -1 +1 @@
1
- b9ddc6713bce49b7aa7c7e0b71fc2e2a046af74209f813a85b5f1c899e20632d
1
+ 244228ec2c49d5b2b8729910500bb01f8e30cfe81c17e276404ff6056e0c5ce7
@@ -10,7 +10,7 @@ import fs$1 from "node:fs";
10
10
  import { execFileSync, spawn } from "node:child_process";
11
11
  import net from "node:net";
12
12
  import { createServer } from "node:http";
13
- import WebSocket$1, { WebSocketServer } from "ws";
13
+ import WebSocket, { WebSocketServer } from "ws";
14
14
  import { Buffer as Buffer$1 } from "node:buffer";
15
15
 
16
16
  //#region src/browser/constants.ts
@@ -178,7 +178,7 @@ async function ensureChromeExtensionRelayServer(opts) {
178
178
  let nextExtensionId = 1;
179
179
  const sendToExtension = async (payload) => {
180
180
  const ws = extensionWs;
181
- if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
181
+ if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
182
182
  ws.send(JSON.stringify(payload));
183
183
  return await new Promise((resolve, reject) => {
184
184
  const timer = setTimeout(() => {
@@ -195,12 +195,12 @@ async function ensureChromeExtensionRelayServer(opts) {
195
195
  const broadcastToCdpClients = (evt) => {
196
196
  const msg = JSON.stringify(evt);
197
197
  for (const ws of cdpClients) {
198
- if (ws.readyState !== WebSocket$1.OPEN) continue;
198
+ if (ws.readyState !== WebSocket.OPEN) continue;
199
199
  ws.send(msg);
200
200
  }
201
201
  };
202
202
  const sendResponseToCdp = (ws, res) => {
203
- if (ws.readyState !== WebSocket$1.OPEN) return;
203
+ if (ws.readyState !== WebSocket.OPEN) return;
204
204
  ws.send(JSON.stringify(res));
205
205
  };
206
206
  const ensureTargetEventsForClient = (ws, mode) => {
@@ -425,7 +425,7 @@ async function ensureChromeExtensionRelayServer(opts) {
425
425
  wssExtension.on("connection", (ws) => {
426
426
  extensionWs = ws;
427
427
  const ping = setInterval(() => {
428
- if (ws.readyState !== WebSocket$1.OPEN) return;
428
+ if (ws.readyState !== WebSocket.OPEN) return;
429
429
  ws.send(JSON.stringify({ method: "ping" }));
430
430
  }, 5e3);
431
431
  ws.on("message", (data) => {
@@ -743,7 +743,7 @@ async function fetchOk(url, timeoutMs = 1500, init) {
743
743
  }
744
744
  async function withCdpSocket(wsUrl, fn, opts) {
745
745
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
746
- const ws = new WebSocket$1(wsUrl, {
746
+ const ws = new WebSocket(wsUrl, {
747
747
  handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
748
748
  ...Object.keys(headers).length ? { headers } : {}
749
749
  });
@@ -1637,7 +1637,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
1637
1637
  async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
1638
1638
  return await new Promise((resolve) => {
1639
1639
  const headers = getHeadersWithAuth(wsUrl);
1640
- const ws = new WebSocket$1(wsUrl, {
1640
+ const ws = new WebSocket(wsUrl, {
1641
1641
  handshakeTimeout: timeoutMs,
1642
1642
  ...Object.keys(headers).length ? { headers } : {}
1643
1643
  });
@@ -293,7 +293,9 @@ function renderHistory(messages) {
293
293
  .join("")
294
294
  .trim();
295
295
  if (
296
- /SYMIPULSE|heartbeat/i.test(txt) ||
296
+ /SYMIPULSE|heartbeat|System\s*Health|Pattern\s*Detection|systemHealth|count\s*→/i.test(
297
+ txt,
298
+ ) ||
297
299
  /^[A-Z_]+_OK$/i.test(txt) ||
298
300
  /^\s*NO_REPLY\s*$/i.test(txt) ||
299
301
  /^⚠️.*(heartbeat|Agent failed before reply)/i.test(txt)
@@ -435,7 +437,9 @@ async function loadMoreHistory() {
435
437
  .join("")
436
438
  .trim();
437
439
  if (
438
- /SYMIPULSE|heartbeat/i.test(txt) ||
440
+ /SYMIPULSE|heartbeat|System\s*Health|Pattern\s*Detection|systemHealth|count\s*→/i.test(
441
+ txt,
442
+ ) ||
439
443
  /^[A-Z_]+_OK$/i.test(txt) ||
440
444
  /^\s*NO_REPLY\s*$/i.test(txt) ||
441
445
  /^⚠️.*(heartbeat|Agent failed before reply)/i.test(txt)
@@ -742,7 +742,9 @@ window.renderMessage = function (message) {
742
742
  // Heartbeat/symipulse and NO_REPLY assistant messages
743
743
  if (
744
744
  role === "assistant" &&
745
- (/SYMIPULSE|heartbeat/i.test(_msgText) ||
745
+ (/SYMIPULSE|heartbeat|System\s*Health|Pattern\s*Detection|systemHealth|count\s*→/i.test(
746
+ _msgText,
747
+ ) ||
746
748
  /^[A-Z_]+_OK$/i.test(_msgText) ||
747
749
  /^\s*NO_REPLY\s*$/i.test(_msgText) ||
748
750
  /^⚠️.*(heartbeat|Agent failed before reply)/i.test(_msgText))
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, x as trigge
5
5
  import { t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
6
6
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-H1H1LiSQ.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DQYI3Fr-.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-Cd124krQ.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-DoTustDz.js";
9
9
  import { d as getChannelDock } from "./thinking-CdlENGRW.js";
10
10
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BW5f05BR.js";
11
11
  import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { R as shortenHomeInString, k as isRecord } from "./registry-CK4e9hn8.js";
3
3
  import { B as resolveImplicitCopilotProvider, J as normalizeSecretInput, R as normalizeProviders, V as resolveImplicitProviders, r as requireApiKey, t as getApiKeyForModel, y as resolveSymiAgentDir, z as resolveImplicitBedrockProvider } from "./model-auth-64S8o7s-.js";
4
4
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
5
- import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-Cd124krQ.js";
5
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-DoTustDz.js";
6
6
  import { n as loadConfig } from "./config-CfZ-oKwR.js";
7
7
  import { n as redactToolDetail } from "./redact-jSxx6Ep2.js";
8
8
  import fs from "node:fs/promises";
@@ -4,7 +4,7 @@ import { c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWork
4
4
  import "./subsystem-Bs9YvKLa.js";
5
5
  import "./workspace-wAaHI8-5.js";
6
6
  import "./tokens-H1H1LiSQ.js";
7
- import { t as runEmbeddedPiAgent } from "./pi-embedded-DuWfOlkO.js";
7
+ import { t as runEmbeddedPiAgent } from "./pi-embedded-AKhKHxb6.js";
8
8
  import "./plugins-DQYI3Fr-.js";
9
9
  import "./accounts-tNElYrCH.js";
10
10
  import "./boolean-B8-BqKGQ.js";
@@ -12,7 +12,7 @@ import "./command-format-BaxDnULz.js";
12
12
  import "./bindings-B7Ke6LJi.js";
13
13
  import "./send-Ct3wqNP6.js";
14
14
  import "./send-D0WfDllx.js";
15
- import "./deliver-Cgg1qwKP.js";
15
+ import "./deliver-CrlXl9KD.js";
16
16
  import "./diagnostic-CI0kRQkt.js";
17
17
  import "./diagnostic-session-state-Bxo4UHOL.js";
18
18
  import "./accounts-CWktKM8a.js";
@@ -22,10 +22,10 @@ import "./model-auth-64S8o7s-.js";
22
22
  import "./github-copilot-token-C_qUP7p5.js";
23
23
  import "./pi-model-discovery-DaNAekda.js";
24
24
  import "./message-channel-Dz5lr5b0.js";
25
- import "./pi-embedded-helpers-Cd124krQ.js";
25
+ import "./pi-embedded-helpers-DoTustDz.js";
26
26
  import "./config-CfZ-oKwR.js";
27
27
  import "./manifest-registry-D0IQ3WuX.js";
28
- import "./chrome-DM65TRMk.js";
28
+ import "./chrome-791kNCCB.js";
29
29
  import "./frontmatter-C_bv_0P8.js";
30
30
  import "./skills-BFekKL7i.js";
31
31
  import "./redact-jSxx6Ep2.js";
@@ -36,7 +36,7 @@ import "./thinking-CdlENGRW.js";
36
36
  import "./accounts-qtxJ-6em.js";
37
37
  import "./paths-DLyHUt31.js";
38
38
  import "./tool-images-DXB7tqWi.js";
39
- import "./image-xvVpGzK5.js";
39
+ import "./image-ycxQmhff.js";
40
40
  import "./reply-prefix-XlyuyChD.js";
41
41
  import "./manager-M83fJMDC.js";
42
42
  import "./gemini-auth-DzFcFvHV.js";
@@ -50,7 +50,7 @@ import "./ir-DccrnjsE.js";
50
50
  import "./render-CDCvpfhh.js";
51
51
  import "./commands-registry-BCRa0DAp.js";
52
52
  import "./skill-commands-DCDG7ki5.js";
53
- import "./runner-CCo2QuJE.js";
53
+ import "./runner-Cw5KZrjx.js";
54
54
  import "./fetch-Bso4i15F.js";
55
55
  import "./channel-activity-CsM_hJ_s.js";
56
56
  import "./tables-DuZspiBu.js";
@@ -13,7 +13,7 @@ import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
13
13
  import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-BaxDnULz.js";
14
14
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-Ct3wqNP6.js";
15
15
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-D0WfDllx.js";
16
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Cgg1qwKP.js";
16
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CrlXl9KD.js";
17
17
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-CI0kRQkt.js";
18
18
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
19
19
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-CWktKM8a.js";
@@ -23,10 +23,10 @@ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider
23
23
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-C_qUP7p5.js";
24
24
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
25
25
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-Dz5lr5b0.js";
26
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-Cd124krQ.js";
26
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-DoTustDz.js";
27
27
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-CfZ-oKwR.js";
28
28
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-D0IQ3WuX.js";
29
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-DM65TRMk.js";
29
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-791kNCCB.js";
30
30
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BFekKL7i.js";
31
31
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
32
32
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -37,7 +37,7 @@ import { t as resolveIMessageAccount } from "./accounts-qtxJ-6em.js";
37
37
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DLyHUt31.js";
38
38
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
39
39
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DXB7tqWi.js";
40
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-xvVpGzK5.js";
40
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-ycxQmhff.js";
41
41
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-XlyuyChD.js";
42
42
  import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-M83fJMDC.js";
43
43
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-DRbx2dhW.js";
@@ -51,7 +51,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DccrnjsE.js";
51
51
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-BCRa0DAp.js";
52
52
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DCDG7ki5.js";
53
53
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
54
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-CCo2QuJE.js";
54
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-Cw5KZrjx.js";
55
55
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
56
56
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
57
57
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-CsM_hJ_s.js";
@@ -81,7 +81,7 @@ import { EdgeTTS } from "node-edge-tts";
81
81
  import AjvPkg from "ajv";
82
82
  import { createServer } from "node:http";
83
83
  import { ProxyAgent, fetch as fetch$1 } from "undici";
84
- import WebSocket$1, { WebSocket } from "ws";
84
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
85
85
  import { Buffer as Buffer$1 } from "node:buffer";
86
86
  import { createJiti } from "jiti";
87
87
  import { Type } from "@sinclair/typebox";
@@ -5716,7 +5716,7 @@ var GatewayClient = class {
5716
5716
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5717
5717
  });
5718
5718
  }
5719
- this.ws = new WebSocket(url, wsOptions);
5719
+ this.ws = new WebSocket$1(url, wsOptions);
5720
5720
  this.ws.on("open", () => {
5721
5721
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5722
5722
  const tlsError = this.validateTlsFingerprint();
@@ -5935,7 +5935,7 @@ var GatewayClient = class {
5935
5935
  return null;
5936
5936
  }
5937
5937
  async request(method, params, opts) {
5938
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
5938
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
5939
5939
  const id = randomUUID();
5940
5940
  const frame = {
5941
5941
  type: "req",
@@ -7201,7 +7201,7 @@ async function routeReply(params) {
7201
7201
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7202
7202
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7203
7203
  try {
7204
- const { deliverOutboundPayloads } = await import("./deliver-Cgg1qwKP.js").then((n) => n.n);
7204
+ const { deliverOutboundPayloads } = await import("./deliver-CrlXl9KD.js").then((n) => n.n);
7205
7205
  return {
7206
7206
  ok: true,
7207
7207
  messageId: (await deliverOutboundPayloads({
@@ -41657,7 +41657,7 @@ async function deliverSessionMaintenanceWarning(params) {
41657
41657
  return;
41658
41658
  }
41659
41659
  try {
41660
- const { deliverOutboundPayloads } = await import("./deliver-Cgg1qwKP.js").then((n) => n.n);
41660
+ const { deliverOutboundPayloads } = await import("./deliver-CrlXl9KD.js").then((n) => n.n);
41661
41661
  await deliverOutboundPayloads({
41662
41662
  cfg: params.cfg,
41663
41663
  channel,
@@ -45103,7 +45103,7 @@ async function describeStickerImage(params) {
45103
45103
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
45104
45104
  try {
45105
45105
  const buffer = await fs.readFile(imagePath);
45106
- const { describeImageWithModel } = await import("./image-xvVpGzK5.js").then((n) => n.n);
45106
+ const { describeImageWithModel } = await import("./image-ycxQmhff.js").then((n) => n.n);
45107
45107
  return (await describeImageWithModel({
45108
45108
  buffer,
45109
45109
  fileName: "sticker.webp",
@@ -47765,7 +47765,7 @@ async function preflightDiscordMessage(params) {
47765
47765
  let preflightTranscript;
47766
47766
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47767
47767
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47768
- const { transcribeFirstAudio } = await import("./audio-preflight-5NsCxagO.js");
47768
+ const { transcribeFirstAudio } = await import("./audio-preflight-BZIRAXlv.js");
47769
47769
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47770
47770
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47771
47771
  ctx: {
@@ -51771,7 +51771,7 @@ function isVoiceChannelType(type) {
51771
51771
  function createDefaultDeps() {
51772
51772
  return {
51773
51773
  sendMessageWhatsApp: async (...args) => {
51774
- const { sendMessageWhatsApp } = await import("./web-BFa88W3e.js");
51774
+ const { sendMessageWhatsApp } = await import("./web-Kz-ZuUjq.js");
51775
51775
  return await sendMessageWhatsApp(...args);
51776
51776
  },
51777
51777
  sendMessageTelegram: async (...args) => {
@@ -54678,7 +54678,7 @@ function createDiscordGatewayPlugin(params) {
54678
54678
  super(options);
54679
54679
  }
54680
54680
  createWebSocket(url) {
54681
- return new WebSocket$1(url, { agent });
54681
+ return new WebSocket(url, { agent });
54682
54682
  }
54683
54683
  }
54684
54684
  return new ProxyGatewayPlugin();
@@ -64896,7 +64896,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64896
64896
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64897
64897
  let preflightTranscript;
64898
64898
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64899
- const { transcribeFirstAudio } = await import("./audio-preflight-5NsCxagO.js");
64899
+ const { transcribeFirstAudio } = await import("./audio-preflight-BZIRAXlv.js");
64900
64900
  preflightTranscript = await transcribeFirstAudio({
64901
64901
  ctx: {
64902
64902
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -67053,7 +67053,7 @@ function loadWebLoginQr() {
67053
67053
  return webLoginQrPromise;
67054
67054
  }
67055
67055
  function loadWebChannel() {
67056
- webChannelPromise ??= import("./web-BFa88W3e.js");
67056
+ webChannelPromise ??= import("./web-Kz-ZuUjq.js");
67057
67057
  return webChannelPromise;
67058
67058
  }
67059
67059
  function loadWhatsAppActions() {
@@ -12,7 +12,7 @@ import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n a
12
12
  import { S as isPidAlive, x as resolveProcessScopedMap } from "./model-auth-64S8o7s-.js";
13
13
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-Dz5lr5b0.js";
14
14
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-CfZ-oKwR.js";
15
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-DM65TRMk.js";
15
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-791kNCCB.js";
16
16
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BFekKL7i.js";
17
17
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BoQgnc8X.js";
18
18
  import { t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
933
933
  }
934
934
  async function loadPwAiModule(mode) {
935
935
  try {
936
- return await import("./pw-ai-CL_YRdbc.js");
936
+ return await import("./pw-ai-DIVguI36.js");
937
937
  } catch (err) {
938
938
  if (mode === "soft") return null;
939
939
  if (isModuleNotFoundError(err)) return null;
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
3473
3473
  const userDataDir = resolveSymiUserDataDir(profile.name);
3474
3474
  const profileState = getProfileState();
3475
3475
  if (await isHttpReachable(300) && !profileState.running) try {
3476
- await (await import("./pw-ai-CL_YRdbc.js")).closePlaywrightBrowserConnection();
3476
+ await (await import("./pw-ai-DIVguI36.js")).closePlaywrightBrowserConnection();
3477
3477
  } catch {}
3478
3478
  if (profileState.running) await stopRunningBrowser();
3479
3479
  try {
3480
- await (await import("./pw-ai-CL_YRdbc.js")).closePlaywrightBrowserConnection();
3480
+ await (await import("./pw-ai-DIVguI36.js")).closePlaywrightBrowserConnection();
3481
3481
  } catch {}
3482
3482
  if (!fs$1.existsSync(userDataDir)) return {
3483
3483
  moved: false,
@@ -1,5 +1,5 @@
1
1
  import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
- import { _ as createAccountListHelpers } from "./accounts-Ddm33hQm.js";
2
+ import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
3
3
 
4
4
  //#region src/signal/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
@@ -1,8 +1,8 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { a as resolveOAuthDir } from "./paths-DR2yt_mP.js";
3
- import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry-D0xTnUWt.js";
4
- import { i as defaultRuntime } from "./subsystem-B2uDN3TV.js";
5
- import { t as formatCliCommand } from "./command-format-GKSevep4.js";
3
+ import { P as resolveUserPath, W as info, X as success, k as jidToE164, tt as getChildLogger } from "./registry--_pGht6S.js";
4
+ import { i as defaultRuntime } from "./subsystem-Coz2AgU8.js";
5
+ import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
6
6
  import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import fs$1 from "node:fs/promises";
@@ -1,5 +1,5 @@
1
1
  import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
- import { _ as createAccountListHelpers } from "./accounts-Ddm33hQm.js";
2
+ import { _ as createAccountListHelpers } from "./accounts-D9zGZU5t.js";
3
3
 
4
4
  //#region src/imessage/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
@@ -1,5 +1,5 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID } from "./session-key-C_0eELjb.js";
2
- import { t as formatCliCommand } from "./command-format-GKSevep4.js";
2
+ import { t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
3
3
 
4
4
  //#region src/web/active-listener.ts
5
5
  const listeners = /* @__PURE__ */ new Map();
@@ -1,7 +1,7 @@
1
1
  import { _ as isCronSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, v as isSubagentSessionKey, y as parseAgentSessionKey } from "./session-key-C_0eELjb.js";
2
2
  import { s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-DR2yt_mP.js";
3
- import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry-D0xTnUWt.js";
4
- import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
3
+ import { P as resolveUserPath, U as danger, W as info, Y as shouldLogVerbose, Z as warn, j as pathExists, nt as getLogger, q as logVerboseConsole } from "./registry--_pGht6S.js";
4
+ import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
5
5
  import fs from "node:fs";
6
6
  import path from "node:path";
7
7
  import os from "node:os";
@@ -1,4 +1,4 @@
1
- import { c as normalizeProviderId } from "./model-selection-CPEL3Uc_.js";
1
+ import { c as normalizeProviderId } from "./model-selection-UQwTqGSw.js";
2
2
  import { n as formatErrorMessage } from "./errors-Bv8oZiTO.js";
3
3
 
4
4
  //#region src/infra/gemini-auth.ts
@@ -1,34 +1,34 @@
1
- import "./accounts-Ddm33hQm.js";
1
+ import "./accounts-D9zGZU5t.js";
2
2
  import "./paths-DR2yt_mP.js";
3
3
  import "./github-copilot-token-D9X2phUj.js";
4
- import "./plugins-BNByVCIH.js";
5
- import { K as logVerbose, Y as shouldLogVerbose } from "./registry-D0xTnUWt.js";
6
- import "./config-ChoJh2v6.js";
7
- import "./subsystem-B2uDN3TV.js";
8
- import "./command-format-GKSevep4.js";
9
- import "./model-selection-CPEL3Uc_.js";
10
- import "./agent-scope-CYYpcO9W.js";
11
- import "./manifest-registry-CPnHl_K3.js";
4
+ import "./plugins-BbAvhC25.js";
5
+ import { K as logVerbose, Y as shouldLogVerbose } from "./registry--_pGht6S.js";
6
+ import "./config-C8bdNl-t.js";
7
+ import "./subsystem-Coz2AgU8.js";
8
+ import "./command-format-DSdvQ_M5.js";
9
+ import "./model-selection-UQwTqGSw.js";
10
+ import "./agent-scope-C3gMMKCU.js";
11
+ import "./manifest-registry-B3ugY9-f.js";
12
12
  import "./redact-DPnDWsnT.js";
13
13
  import "./errors-Bv8oZiTO.js";
14
- import "./image-ops-BlQR__MN.js";
14
+ import "./image-ops-Bnp6LXEx.js";
15
15
  import "./ssrf-DKZ8eBrk.js";
16
- import "./local-roots-BHLNSI8U.js";
17
- import "./message-channel-COTAJzHd.js";
18
- import "./bindings-C7hRtgYW.js";
19
- import "./tool-images-HJ2sfZDV.js";
20
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-Co_eR7xp.js";
21
- import "./skills-_yTP47Cd.js";
22
- import "./chrome-BMG9BEuT.js";
23
- import "./thinking-CXqf7WTe.js";
24
- import "./accounts-s-AdhXVR.js";
25
- import "./accounts-BtaOa4z_.js";
26
- import "./pi-embedded-helpers-CU4D77Op.js";
16
+ import "./local-roots-Ckk1QfzI.js";
17
+ import "./message-channel-BdI5Ra9S.js";
18
+ import "./bindings-BbwoUGPx.js";
19
+ import "./tool-images-D7Lno-TE.js";
20
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-Dm_yIGe6.js";
21
+ import "./skills-B1GeRYlu.js";
22
+ import "./chrome-B3sE4bXC.js";
23
+ import "./thinking-DCNUIAHY.js";
24
+ import "./accounts-Dtszw3Zn.js";
25
+ import "./accounts-BToL3HlP.js";
26
+ import "./pi-embedded-helpers-CHlXbJGj.js";
27
27
  import "./paths-A0xdf3yk.js";
28
- import "./store-BdrNabcU.js";
29
- import "./image-CZeY-Q2T.js";
28
+ import "./store-Do3t33-c.js";
29
+ import "./image-t0--fcO_.js";
30
30
  import "./pi-model-discovery-LbcEa65a.js";
31
- import "./api-key-rotation-BNN7DLRF.js";
31
+ import "./api-key-rotation-B7wX2cS9.js";
32
32
 
33
33
  //#region src/media-understanding/audio-preflight.ts
34
34
  /**