@symerian/symi 2.8.4 → 2.8.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 (131) hide show
  1. package/dist/{audio-preflight-D0nJ1LEt.js → audio-preflight-DIXDvyz5.js} +4 -4
  2. package/dist/{audio-preflight-D_g9Duqw.js → audio-preflight-lr-WPpc9.js} +4 -4
  3. package/dist/build-info.json +3 -3
  4. package/dist/bundled/boot-md/handler.js +6 -6
  5. package/dist/bundled/session-memory/handler.js +6 -6
  6. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  7. package/dist/{chrome-BUT--ob3.js → chrome-B14NNyfm.js} +7 -7
  8. package/dist/{chrome-C08Z0XAa.js → chrome-ROtrXlNs.js} +7 -7
  9. package/dist/control-ui/js/app.js +9 -2
  10. package/dist/control-ui/js/render.js +5 -2
  11. package/dist/{deliver-CLZGlRZt.js → deliver-BC3liFsT.js} +1 -1
  12. package/dist/{deliver-B36OzmeP.js → deliver-DrC7tG6s.js} +1 -1
  13. package/dist/extensionAPI.js +6 -6
  14. package/dist/{image-BnO8X_hj.js → image-C6v6m8Id.js} +1 -1
  15. package/dist/{image-BHhzdmbq.js → image-CKeN0xJL.js} +1 -1
  16. package/dist/llm-slug-generator.js +6 -6
  17. package/dist/{pi-embedded-BaNpG0Aq.js → pi-embedded-BIATvD3R.js} +16 -16
  18. package/dist/{pi-embedded-helpers-DcN8GHTt.js → pi-embedded-helpers-BUNbSNWw.js} +4 -4
  19. package/dist/{pi-embedded-helpers-BET359cH.js → pi-embedded-helpers-D8YgtMdl.js} +4 -4
  20. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  21. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  22. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  23. package/dist/plugin-sdk/{active-listener-BRYwA2Ic.js → active-listener-BgwYQkdI.js} +1 -1
  24. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  25. package/dist/plugin-sdk/{api-key-rotation-CBsLb_4V.js → api-key-rotation-DGJZ8SVa.js} +1 -1
  26. package/dist/plugin-sdk/{audio-preflight-B-Laxbmb.js → audio-preflight-pBBHur9T.js} +24 -24
  27. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  28. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  29. package/dist/plugin-sdk/{channel-web-C6_r-2VI.js → channel-web-D-ct3FR3.js} +22 -22
  30. package/dist/plugin-sdk/{chrome-D9kN9org.js → chrome-CEqfiEs0.js} +3 -3
  31. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  32. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  33. package/dist/plugin-sdk/{commands-registry-By2smfUF.js → commands-registry-Be2qTyJK.js} +4 -4
  34. package/dist/plugin-sdk/{config-BzupW6LN.js → config-Ckum15iC.js} +9 -9
  35. package/dist/plugin-sdk/{deliver-CNuL0O4P.js → deliver-pjxCQeHb.js} +10 -10
  36. package/dist/plugin-sdk/{diagnostic-EyuCSUXO.js → diagnostic-W5975qL9.js} +1 -1
  37. package/dist/plugin-sdk/{image-BmU8yYnz.js → image-CvB1H1Oa.js} +4 -4
  38. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  39. package/dist/plugin-sdk/index.js +54 -54
  40. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  41. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  42. package/dist/plugin-sdk/{login-eqtXmx21.js → login-BS724Asp.js} +7 -7
  43. package/dist/plugin-sdk/{login-qr-Cbt9KlK3.js → login-qr-DcD9oY98.js} +9 -9
  44. package/dist/plugin-sdk/{manager-Dc9yVyTt.js → manager-UQQc8UDq.js} +8 -8
  45. package/dist/plugin-sdk/{manifest-registry-hy3Bn-r9.js → manifest-registry-BRx4JDK0.js} +1 -1
  46. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  47. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  48. package/dist/plugin-sdk/{model-selection-CtVwtb6y.js → model-selection-Bbs4XGPG.js} +4 -4
  49. package/dist/plugin-sdk/{outbound-ZcDVYNoy.js → outbound-Bgwpl10i.js} +7 -7
  50. package/dist/plugin-sdk/{outbound-attachment-DJ3CI92h.js → outbound-attachment-CqhMcNuS.js} +2 -2
  51. package/dist/plugin-sdk/{pi-auth-json-r2U9wDoc.js → pi-auth-json-B_aZna6j.js} +1 -1
  52. package/dist/plugin-sdk/{pi-embedded-helpers-BCNFLt_H.js → pi-embedded-helpers-C7fh8gtj.js} +17 -17
  53. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  54. package/dist/plugin-sdk/{pw-ai-B3jHOSti.js → pw-ai-B3QctKIy.js} +8 -8
  55. package/dist/plugin-sdk/{qmd-manager-C6GM0Qik.js → qmd-manager-BZvD_Hd3.js} +4 -4
  56. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  57. package/dist/plugin-sdk/{replies-DkGqfiO4.js → replies-BrD5w1DK.js} +3 -3
  58. package/dist/plugin-sdk/{reply-CIDYJYie.js → reply-Gpdxnjey.js} +79 -79
  59. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  60. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  61. package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
  62. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  63. package/dist/plugin-sdk/{runner-WzrwRCvL.js → runner-Blso4_CP.js} +9 -9
  64. package/dist/plugin-sdk/{send-BGE1fXlm.js → send-CI9BF7Rs.js} +6 -6
  65. package/dist/plugin-sdk/{send-7NqCWP0r.js → send-CMCTJG-m.js} +7 -7
  66. package/dist/plugin-sdk/{send-FFUmNt0K.js → send-CwRUaqoE.js} +10 -10
  67. package/dist/plugin-sdk/{send-ZhAe1nXO.js → send-Djq5IPRa.js} +10 -10
  68. package/dist/plugin-sdk/{send-BP5pSPaZ.js → send-fNRDT21N.js} +6 -6
  69. package/dist/plugin-sdk/{session-8vfTL_H6.js → session-_9Y0E4Ol.js} +4 -4
  70. package/dist/plugin-sdk/{skill-commands-DF3ouLEu.js → skill-commands-CuBIT3kO.js} +5 -5
  71. package/dist/plugin-sdk/{skills-C9DbB-Kp.js → skills-BfsaS1F9.js} +7 -7
  72. package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
  73. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  74. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  75. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  76. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  77. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  78. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  79. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  80. package/dist/plugin-sdk/{tool-loop-detection-BAUvBvAO.js → tool-loop-detection-Dthxc7SC.js} +2 -2
  81. package/dist/plugin-sdk/web-BFa_GJSK.js +66 -0
  82. package/dist/plugin-sdk/{whatsapp-actions-0DfquiaD.js → whatsapp-actions-B8ZG7vfh.js} +21 -21
  83. package/dist/{pw-ai-B476LzSK.js → pw-ai-BLrC_W1X.js} +1 -1
  84. package/dist/{pw-ai-DE8wmtet.js → pw-ai-DTmHAKPA.js} +1 -1
  85. package/dist/{runner-BVgCl6yZ.js → runner-COpebDew.js} +1 -1
  86. package/dist/{runner-D5nFF9E6.js → runner-QX0Z6K1w.js} +1 -1
  87. package/dist/{unified-runner-BojeuKIk.js → unified-runner-CUXcv08a.js} +16 -16
  88. package/dist/{web-Dxkxcp7P.js → web-DgoKLcMP.js} +6 -6
  89. package/dist/{web-f1xT-H2y.js → web-Ifwqx6Dt.js} +6 -6
  90. package/extensions/bluebubbles/package.json +1 -1
  91. package/extensions/copilot-proxy/package.json +1 -1
  92. package/extensions/diagnostics-otel/package.json +1 -1
  93. package/extensions/discord/package.json +1 -1
  94. package/extensions/feishu/package.json +1 -1
  95. package/extensions/google-antigravity-auth/package.json +1 -1
  96. package/extensions/google-gemini-cli-auth/package.json +1 -1
  97. package/extensions/googlechat/package.json +1 -1
  98. package/extensions/imessage/package.json +1 -1
  99. package/extensions/irc/package.json +1 -1
  100. package/extensions/learning-loop/package.json +1 -1
  101. package/extensions/line/package.json +1 -1
  102. package/extensions/llm-task/package.json +1 -1
  103. package/extensions/matrix/CHANGELOG.md +6 -0
  104. package/extensions/matrix/package.json +1 -1
  105. package/extensions/mattermost/package.json +1 -1
  106. package/extensions/memory-core/package.json +1 -1
  107. package/extensions/memory-lancedb/package.json +1 -1
  108. package/extensions/minimax-portal-auth/package.json +1 -1
  109. package/extensions/msteams/CHANGELOG.md +6 -0
  110. package/extensions/msteams/package.json +1 -1
  111. package/extensions/nextcloud-talk/package.json +1 -1
  112. package/extensions/nostr/CHANGELOG.md +6 -0
  113. package/extensions/nostr/package.json +1 -1
  114. package/extensions/open-prose/package.json +1 -1
  115. package/extensions/outlook/package.json +1 -1
  116. package/extensions/pipeline/package.json +1 -1
  117. package/extensions/signal/package.json +1 -1
  118. package/extensions/slack/package.json +1 -1
  119. package/extensions/telegram/package.json +1 -1
  120. package/extensions/tlon/package.json +1 -1
  121. package/extensions/twitch/CHANGELOG.md +6 -0
  122. package/extensions/twitch/package.json +1 -1
  123. package/extensions/voice-call/CHANGELOG.md +6 -0
  124. package/extensions/voice-call/package.json +1 -1
  125. package/extensions/whatsapp/package.json +1 -1
  126. package/extensions/zalo/CHANGELOG.md +6 -0
  127. package/extensions/zalo/package.json +1 -1
  128. package/extensions/zalouser/CHANGELOG.md +6 -0
  129. package/extensions/zalouser/package.json +1 -1
  130. package/package.json +1 -1
  131. package/dist/plugin-sdk/web-CHKraWl6.js +0 -66
@@ -8,10 +8,10 @@ import "./auth-profiles-C2vj6htZ.js";
8
8
  import "./env-BDXYbTKj.js";
9
9
  import "./github-copilot-token-cCYzSU9h.js";
10
10
  import "./boolean-CE7i9tBR.js";
11
- import "./pi-embedded-helpers-DcN8GHTt.js";
11
+ import "./pi-embedded-helpers-BUNbSNWw.js";
12
12
  import "./config-BkZ9HOKT.js";
13
13
  import "./manifest-registry-CBCGTsIb.js";
14
- import "./chrome-C08Z0XAa.js";
14
+ import "./chrome-ROtrXlNs.js";
15
15
  import "./frontmatter-CTR5f_Ez.js";
16
16
  import "./skills-CXxrn_e2.js";
17
17
  import "./redact-BDMXB06K.js";
@@ -27,11 +27,11 @@ import "./accounts-3dCrO3oZ.js";
27
27
  import "./accounts-BuZxOb3B.js";
28
28
  import "./bindings-BsHoBLIE.js";
29
29
  import "./tool-images-SqqWIT22.js";
30
- import "./image-BnO8X_hj.js";
30
+ import "./image-C6v6m8Id.js";
31
31
  import "./pi-model-discovery-CuZX_Q4t.js";
32
32
  import "./gemini-auth-BefM10YB.js";
33
33
  import "./local-roots-Se92wAN5.js";
34
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-D5nFF9E6.js";
34
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-QX0Z6K1w.js";
35
35
 
36
36
  //#region src/media-understanding/audio-preflight.ts
37
37
  /**
@@ -12,10 +12,10 @@ import "./accounts-8zZqL37v.js";
12
12
  import "./image-ops-ByaQt43P.js";
13
13
  import "./pi-model-discovery-j5tVLINv.js";
14
14
  import "./message-channel-BQINJQIT.js";
15
- import "./pi-embedded-helpers-BET359cH.js";
15
+ import "./pi-embedded-helpers-D8YgtMdl.js";
16
16
  import "./config-BAVNLbja.js";
17
17
  import "./manifest-registry-DWdYdchb.js";
18
- import "./chrome-BUT--ob3.js";
18
+ import "./chrome-B14NNyfm.js";
19
19
  import "./skills-XEbTRNYL.js";
20
20
  import "./redact-1NGYV_8p.js";
21
21
  import "./errors-CPfngF0S.js";
@@ -25,10 +25,10 @@ import "./thinking-W85Rb32m.js";
25
25
  import "./accounts-DImOt9jX.js";
26
26
  import "./paths-DkMamAQ-.js";
27
27
  import "./tool-images-ChC2CXaN.js";
28
- import "./image-BHhzdmbq.js";
28
+ import "./image-CKeN0xJL.js";
29
29
  import "./gemini-auth-DVcG-42i.js";
30
30
  import "./local-roots-CC8jiKDk.js";
31
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-BVgCl6yZ.js";
31
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-COpebDew.js";
32
32
 
33
33
  //#region src/media-understanding/audio-preflight.ts
34
34
  /**
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.8.4",
3
- "commit": "1c356158df9310b346cbad9a1fee26071153c066",
4
- "builtAt": "2026-04-22T06:28:31.872Z"
2
+ "version": "2.8.5",
3
+ "commit": "b234605a8b8b70c4383aba3de8c2d4ab2f8d94f4",
4
+ "builtAt": "2026-04-22T06:45:45.463Z"
5
5
  }
@@ -4,16 +4,16 @@ import { b as isGatewayStartupEvent } from "../../registry-DYq1AYOv.js";
4
4
  import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "../../agent-scope-CpEJ0B88.js";
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "../../subsystem-BjyjJF-d.js";
6
6
  import "../../workspace-DscDraUb.js";
7
- import { a as createDefaultDeps, i as agentCommand } from "../../unified-runner-BojeuKIk.js";
7
+ import { a as createDefaultDeps, i as agentCommand } from "../../unified-runner-CUXcv08a.js";
8
8
  import { s as resolveStorePath } from "../../paths-CbQV9WEg.js";
9
9
  import "../../auth-profiles-C2vj6htZ.js";
10
10
  import "../../env-BDXYbTKj.js";
11
11
  import "../../github-copilot-token-cCYzSU9h.js";
12
12
  import "../../boolean-CE7i9tBR.js";
13
- import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-DcN8GHTt.js";
13
+ import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-BUNbSNWw.js";
14
14
  import "../../config-BkZ9HOKT.js";
15
15
  import "../../manifest-registry-CBCGTsIb.js";
16
- import "../../chrome-C08Z0XAa.js";
16
+ import "../../chrome-ROtrXlNs.js";
17
17
  import "../../frontmatter-CTR5f_Ez.js";
18
18
  import "../../skills-CXxrn_e2.js";
19
19
  import "../../redact-BDMXB06K.js";
@@ -31,10 +31,10 @@ import "../../bindings-BsHoBLIE.js";
31
31
  import "../../send-B7aHpAco.js";
32
32
  import "../../send-Yzy50T1h.js";
33
33
  import "../../tool-images-SqqWIT22.js";
34
- import "../../deliver-CLZGlRZt.js";
34
+ import "../../deliver-BC3liFsT.js";
35
35
  import "../../diagnostic-CQiU0O8b.js";
36
36
  import "../../diagnostic-session-state-Zw87xFym.js";
37
- import "../../image-BnO8X_hj.js";
37
+ import "../../image-C6v6m8Id.js";
38
38
  import "../../pi-auth-json-RXOlh8ar.js";
39
39
  import { n as SILENT_REPLY_TOKEN } from "../../tokens-W0JzCJJM.js";
40
40
  import "../../send-xTfsDEE2.js";
@@ -51,7 +51,7 @@ import "../../local-roots-Se92wAN5.js";
51
51
  import "../../ir-JAy_3A3B.js";
52
52
  import "../../render-DwEu-aCr.js";
53
53
  import "../../commands-registry-CfoYlMQB.js";
54
- import "../../runner-D5nFF9E6.js";
54
+ import "../../runner-QX0Z6K1w.js";
55
55
  import "../../skill-commands-D1hG6Ikz.js";
56
56
  import "../../fetch-Dnti0cFs.js";
57
57
  import "../../channel-activity-D-kw83R0.js";
@@ -4,16 +4,16 @@ import "../../registry-DYq1AYOv.js";
4
4
  import { s as resolveAgentWorkspaceDir } from "../../agent-scope-CpEJ0B88.js";
5
5
  import { t as createSubsystemLogger } from "../../subsystem-BjyjJF-d.js";
6
6
  import "../../workspace-DscDraUb.js";
7
- import "../../unified-runner-BojeuKIk.js";
7
+ import "../../unified-runner-CUXcv08a.js";
8
8
  import "../../paths-CbQV9WEg.js";
9
9
  import "../../auth-profiles-C2vj6htZ.js";
10
10
  import "../../env-BDXYbTKj.js";
11
11
  import "../../github-copilot-token-cCYzSU9h.js";
12
12
  import "../../boolean-CE7i9tBR.js";
13
- import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-DcN8GHTt.js";
13
+ import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-BUNbSNWw.js";
14
14
  import "../../config-BkZ9HOKT.js";
15
15
  import "../../manifest-registry-CBCGTsIb.js";
16
- import "../../chrome-C08Z0XAa.js";
16
+ import "../../chrome-ROtrXlNs.js";
17
17
  import "../../frontmatter-CTR5f_Ez.js";
18
18
  import "../../skills-CXxrn_e2.js";
19
19
  import "../../redact-BDMXB06K.js";
@@ -31,10 +31,10 @@ import "../../bindings-BsHoBLIE.js";
31
31
  import "../../send-B7aHpAco.js";
32
32
  import "../../send-Yzy50T1h.js";
33
33
  import "../../tool-images-SqqWIT22.js";
34
- import "../../deliver-CLZGlRZt.js";
34
+ import "../../deliver-BC3liFsT.js";
35
35
  import "../../diagnostic-CQiU0O8b.js";
36
36
  import "../../diagnostic-session-state-Zw87xFym.js";
37
- import "../../image-BnO8X_hj.js";
37
+ import "../../image-C6v6m8Id.js";
38
38
  import "../../pi-auth-json-RXOlh8ar.js";
39
39
  import "../../tokens-W0JzCJJM.js";
40
40
  import "../../send-xTfsDEE2.js";
@@ -51,7 +51,7 @@ import "../../local-roots-Se92wAN5.js";
51
51
  import "../../ir-JAy_3A3B.js";
52
52
  import "../../render-DwEu-aCr.js";
53
53
  import "../../commands-registry-CfoYlMQB.js";
54
- import "../../runner-D5nFF9E6.js";
54
+ import "../../runner-QX0Z6K1w.js";
55
55
  import "../../skill-commands-D1hG6Ikz.js";
56
56
  import "../../fetch-Dnti0cFs.js";
57
57
  import "../../channel-activity-D-kw83R0.js";
@@ -1 +1 @@
1
- 9c32688a48a35d00bbdcedb609a8cd135b904b947eaa92ae105a598087c0a393
1
+ aa0296c8acf93d4ce4f9d343586fc7bd60152a087de5e7399e450fbd2eaea036
@@ -10,7 +10,7 @@ import fs$1 from "node:fs/promises";
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
  });
@@ -10,7 +10,7 @@ import fs$1 from "node:fs/promises";
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
  });
@@ -427,7 +427,14 @@ function renderHistory(messages) {
427
427
  continue;
428
428
  }
429
429
 
430
- // Route plugin context user messages to Reasoning Panel
430
+ // Route plugin context user messages to Reasoning Panel.
431
+ // 2.8.5: the banner pattern must match the ENTIRE trimmed body, not just
432
+ // the prefix. Plugins (e.g. Outlook) use before_prompt_build + prependContext
433
+ // to prepend a banner like "[Outlook 365] Connected as X..." to every user
434
+ // turn's persisted text. The previous prefix-only regex dropped 100% of
435
+ // user messages on those sessions. Only divert when the banner IS the
436
+ // whole message (pure state-ping with no user content); if there's any
437
+ // real text after, fall through and render normally.
431
438
  if (m.role === "user") {
432
439
  const txt = Array.isArray(m.content)
433
440
  ? m.content
@@ -436,7 +443,7 @@ function renderHistory(messages) {
436
443
  .join("")
437
444
  .trim()
438
445
  : extractText(m.content).trim();
439
- if (/^\[.+\]\s+(Not connected|Connected as)\b/i.test(txt)) {
446
+ if (/^\[.+?\]\s+(Not connected|Connected as)\b[^\n]*$/i.test(txt)) {
440
447
  if (typeof window.appendToReasoningPanel === "function") {
441
448
  window.appendToReasoningPanel({ type: "text", text: "[Plugin context]" });
442
449
  }
@@ -791,8 +791,11 @@ window.renderMessage = function (message) {
791
791
 
792
792
  // NOTE: Monologue suppression moved server-side to OutputNormalizer.
793
793
 
794
- // Plugin context messages (e.g. "[Outlook 365] Not connected...")
795
- if (role === "user" && /^\[.+\]\s+(Not connected|Connected as)\b/i.test(_msgText)) {
794
+ // Plugin context messages (e.g. "[Outlook 365] Not connected...").
795
+ // 2.8.5: match ENTIRE body, not just prefix — plugins like Outlook prepend
796
+ // their banner to real user text via before_prompt_build/prependContext.
797
+ // Only divert when the banner is the whole message; otherwise render normally.
798
+ if (role === "user" && /^\[.+?\]\s+(Not connected|Connected as)\b[^\n]*$/i.test(_msgText)) {
796
799
  if (typeof window.appendToReasoningPanel === "function") {
797
800
  window.appendToReasoningPanel({ type: "text", text: "[Plugin context]" });
798
801
  }
@@ -3,7 +3,7 @@ import { s as resolveStateDir } from "./paths-CE7eVGHg.js";
3
3
  import { m as normalizeOptionalAccountId, p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
4
4
  import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-DYq1AYOv.js";
5
5
  import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
6
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-DcN8GHTt.js";
6
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-BUNbSNWw.js";
7
7
  import { d as getChannelDock } from "./thinking-BprCy23Z.js";
8
8
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BzmbgY7s.js";
9
9
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-W0JzCJJM.js";
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, y as trigge
5
5
  import { t as createSubsystemLogger } from "./subsystem-CZixfwU8.js";
6
6
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Cn6drXx2.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-71oIavrF.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-BET359cH.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-D8YgtMdl.js";
9
9
  import { d as getChannelDock } from "./thinking-W85Rb32m.js";
10
10
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-DTMTDXwE.js";
11
11
  import { n as resolveMarkdownTableMode } from "./markdown-tables-DawaaZEe.js";
@@ -7,13 +7,13 @@ import { a as resolveAgentIdentity } from "./reply-prefix-K_J_nfgx.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
8
  import "./env-CQ_DQOwT.js";
9
9
  import "./tokens-Cn6drXx2.js";
10
- import { D as resolveAgentTimeoutMs, p as runEmbeddedPiAgent } from "./pi-embedded-BaNpG0Aq.js";
10
+ import { D as resolveAgentTimeoutMs, p as runEmbeddedPiAgent } from "./pi-embedded-BIATvD3R.js";
11
11
  import "./plugins-71oIavrF.js";
12
12
  import "./accounts-DDEyGwby.js";
13
13
  import "./bindings-DYVakimr.js";
14
14
  import "./send-BuJyyJe7.js";
15
15
  import "./send-D8AIYNR_.js";
16
- import "./deliver-B36OzmeP.js";
16
+ import "./deliver-DrC7tG6s.js";
17
17
  import "./diagnostic-D0xmLpej.js";
18
18
  import "./diagnostic-session-state-C1vRJs5w.js";
19
19
  import "./accounts-8zZqL37v.js";
@@ -21,10 +21,10 @@ import "./send-C0K_2AUP.js";
21
21
  import "./image-ops-ByaQt43P.js";
22
22
  import "./pi-model-discovery-j5tVLINv.js";
23
23
  import "./message-channel-BQINJQIT.js";
24
- import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-BET359cH.js";
24
+ import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-D8YgtMdl.js";
25
25
  import "./config-BAVNLbja.js";
26
26
  import "./manifest-registry-DWdYdchb.js";
27
- import "./chrome-BUT--ob3.js";
27
+ import "./chrome-B14NNyfm.js";
28
28
  import "./skills-XEbTRNYL.js";
29
29
  import "./redact-1NGYV_8p.js";
30
30
  import "./errors-CPfngF0S.js";
@@ -34,7 +34,7 @@ import "./thinking-W85Rb32m.js";
34
34
  import "./accounts-DImOt9jX.js";
35
35
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-DkMamAQ-.js";
36
36
  import "./tool-images-ChC2CXaN.js";
37
- import "./image-BHhzdmbq.js";
37
+ import "./image-CKeN0xJL.js";
38
38
  import "./manager-B0BFUVEs.js";
39
39
  import "./gemini-auth-DVcG-42i.js";
40
40
  import "./sqlite-BNh23mUR.js";
@@ -47,7 +47,7 @@ import "./ir-F0moAwIl.js";
47
47
  import "./render-B1VqYyvo.js";
48
48
  import "./commands-registry-D9ZzWaEz.js";
49
49
  import "./skill-commands-CkqZdod4.js";
50
- import "./runner-BVgCl6yZ.js";
50
+ import "./runner-COpebDew.js";
51
51
  import "./fetch-DtLn7YU3.js";
52
52
  import "./channel-activity-D9q-fIPB.js";
53
53
  import "./tables-COnZ169v.js";
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { R as shortenHomeInString, k as isRecord } from "./registry-DYq1AYOv.js";
3
3
  import { L as getApiKeyForModel, M as resolveImplicitBedrockProvider, N as resolveImplicitCopilotProvider, P as resolveImplicitProviders, W as normalizeSecretInput, et as resolveSymiAgentDir, j as normalizeProviders, z as requireApiKey } from "./auth-profiles-C2vj6htZ.js";
4
- import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-DcN8GHTt.js";
4
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-BUNbSNWw.js";
5
5
  import { n as loadConfig } from "./config-BkZ9HOKT.js";
6
6
  import { n as redactToolDetail } from "./redact-BDMXB06K.js";
7
7
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { D as isRecord, I as shortenHomeInString } from "./registry-BhoUuugi.js";
3
3
  import { G as resolveSymiAgentDir, S as getApiKeyForModel, X as normalizeSecretInput, _ as resolveImplicitBedrockProvider, g as normalizeProviders, v as resolveImplicitCopilotProvider, w as requireApiKey, y as resolveImplicitProviders } from "./model-selection-vHAQ4r1b.js";
4
4
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
5
- import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-BET359cH.js";
5
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-D8YgtMdl.js";
6
6
  import { n as loadConfig } from "./config-BAVNLbja.js";
7
7
  import { n as redactToolDetail } from "./redact-1NGYV_8p.js";
8
8
  import path from "node:path";
@@ -3,16 +3,16 @@ import "./registry-DYq1AYOv.js";
3
3
  import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-CpEJ0B88.js";
4
4
  import "./subsystem-BjyjJF-d.js";
5
5
  import "./workspace-DscDraUb.js";
6
- import { t as runAgentTurn } from "./unified-runner-BojeuKIk.js";
6
+ import { t as runAgentTurn } from "./unified-runner-CUXcv08a.js";
7
7
  import "./paths-CbQV9WEg.js";
8
8
  import "./auth-profiles-C2vj6htZ.js";
9
9
  import "./env-BDXYbTKj.js";
10
10
  import "./github-copilot-token-cCYzSU9h.js";
11
11
  import "./boolean-CE7i9tBR.js";
12
- import "./pi-embedded-helpers-DcN8GHTt.js";
12
+ import "./pi-embedded-helpers-BUNbSNWw.js";
13
13
  import "./config-BkZ9HOKT.js";
14
14
  import "./manifest-registry-CBCGTsIb.js";
15
- import "./chrome-C08Z0XAa.js";
15
+ import "./chrome-ROtrXlNs.js";
16
16
  import "./frontmatter-CTR5f_Ez.js";
17
17
  import "./skills-CXxrn_e2.js";
18
18
  import "./redact-BDMXB06K.js";
@@ -30,10 +30,10 @@ import "./bindings-BsHoBLIE.js";
30
30
  import "./send-B7aHpAco.js";
31
31
  import "./send-Yzy50T1h.js";
32
32
  import "./tool-images-SqqWIT22.js";
33
- import "./deliver-CLZGlRZt.js";
33
+ import "./deliver-BC3liFsT.js";
34
34
  import "./diagnostic-CQiU0O8b.js";
35
35
  import "./diagnostic-session-state-Zw87xFym.js";
36
- import "./image-BnO8X_hj.js";
36
+ import "./image-C6v6m8Id.js";
37
37
  import "./pi-auth-json-RXOlh8ar.js";
38
38
  import "./tokens-W0JzCJJM.js";
39
39
  import "./send-xTfsDEE2.js";
@@ -50,7 +50,7 @@ import "./local-roots-Se92wAN5.js";
50
50
  import "./ir-JAy_3A3B.js";
51
51
  import "./render-DwEu-aCr.js";
52
52
  import "./commands-registry-CfoYlMQB.js";
53
- import "./runner-D5nFF9E6.js";
53
+ import "./runner-QX0Z6K1w.js";
54
54
  import "./skill-commands-D1hG6Ikz.js";
55
55
  import "./fetch-Dnti0cFs.js";
56
56
  import "./channel-activity-D-kw83R0.js";
@@ -14,7 +14,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExis
14
14
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
15
15
  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-BuJyyJe7.js";
16
16
  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-D8AIYNR_.js";
17
- 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-B36OzmeP.js";
17
+ 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-DrC7tG6s.js";
18
18
  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-D0xmLpej.js";
19
19
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-8zZqL37v.js";
@@ -22,10 +22,10 @@ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normali
22
22
  import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-ByaQt43P.js";
23
23
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
24
24
  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-BQINJQIT.js";
25
- import { $ as mergeDeliveryContext, 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, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, 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 deliveryContextKey, 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 resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-BET359cH.js";
25
+ import { $ as mergeDeliveryContext, 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, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, 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 deliveryContextKey, 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 resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-D8YgtMdl.js";
26
26
  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-BAVNLbja.js";
27
27
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-DWdYdchb.js";
28
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BUT--ob3.js";
28
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-B14NNyfm.js";
29
29
  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-XEbTRNYL.js";
30
30
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-CPfngF0S.js";
31
31
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
@@ -36,7 +36,7 @@ import { t as resolveIMessageAccount } from "./accounts-DImOt9jX.js";
36
36
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DkMamAQ-.js";
37
37
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
38
38
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-ChC2CXaN.js";
39
- 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-BHhzdmbq.js";
39
+ 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-CKeN0xJL.js";
40
40
  import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-B0BFUVEs.js";
41
41
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-BNh23mUR.js";
42
42
  import { n as retryAsync } from "./retry-QGp0jvVi.js";
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-F0moAwIl.js";
49
49
  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-D9ZzWaEz.js";
50
50
  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-CkqZdod4.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
52
- 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-BVgCl6yZ.js";
52
+ 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-COpebDew.js";
53
53
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtLn7YU3.js";
54
54
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DtXYsHEc.js";
55
55
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D9q-fIPB.js";
@@ -80,7 +80,7 @@ import { EdgeTTS } from "node-edge-tts";
80
80
  import AjvPkg from "ajv";
81
81
  import { createServer } from "node:http";
82
82
  import { ProxyAgent, fetch as fetch$1 } from "undici";
83
- import WebSocket$1, { WebSocket } from "ws";
83
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
84
84
  import { Buffer as Buffer$1 } from "node:buffer";
85
85
  import { createJiti } from "jiti";
86
86
  import { Type } from "@sinclair/typebox";
@@ -5732,7 +5732,7 @@ var GatewayClient = class {
5732
5732
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5733
5733
  });
5734
5734
  }
5735
- this.ws = new WebSocket(url, wsOptions);
5735
+ this.ws = new WebSocket$1(url, wsOptions);
5736
5736
  this.ws.on("open", () => {
5737
5737
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5738
5738
  const tlsError = this.validateTlsFingerprint();
@@ -5951,7 +5951,7 @@ var GatewayClient = class {
5951
5951
  return null;
5952
5952
  }
5953
5953
  async request(method, params, opts) {
5954
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
5954
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
5955
5955
  const id = randomUUID();
5956
5956
  const frame = {
5957
5957
  type: "req",
@@ -7218,7 +7218,7 @@ async function routeReply(params) {
7218
7218
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7219
7219
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7220
7220
  try {
7221
- const { deliverOutboundPayloads } = await import("./deliver-B36OzmeP.js").then((n) => n.n);
7221
+ const { deliverOutboundPayloads } = await import("./deliver-DrC7tG6s.js").then((n) => n.n);
7222
7222
  return {
7223
7223
  ok: true,
7224
7224
  messageId: (await deliverOutboundPayloads({
@@ -51137,7 +51137,7 @@ async function deliverSessionMaintenanceWarning(params) {
51137
51137
  return;
51138
51138
  }
51139
51139
  try {
51140
- const { deliverOutboundPayloads } = await import("./deliver-B36OzmeP.js").then((n) => n.n);
51140
+ const { deliverOutboundPayloads } = await import("./deliver-DrC7tG6s.js").then((n) => n.n);
51141
51141
  await deliverOutboundPayloads({
51142
51142
  cfg: params.cfg,
51143
51143
  channel,
@@ -54583,7 +54583,7 @@ async function describeStickerImage(params) {
54583
54583
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
54584
54584
  try {
54585
54585
  const buffer = await fs$1.readFile(imagePath);
54586
- const { describeImageWithModel } = await import("./image-BHhzdmbq.js").then((n) => n.n);
54586
+ const { describeImageWithModel } = await import("./image-CKeN0xJL.js").then((n) => n.n);
54587
54587
  return (await describeImageWithModel({
54588
54588
  buffer,
54589
54589
  fileName: "sticker.webp",
@@ -57245,7 +57245,7 @@ async function preflightDiscordMessage(params) {
57245
57245
  let preflightTranscript;
57246
57246
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
57247
57247
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
57248
- const { transcribeFirstAudio } = await import("./audio-preflight-D_g9Duqw.js");
57248
+ const { transcribeFirstAudio } = await import("./audio-preflight-lr-WPpc9.js");
57249
57249
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
57250
57250
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
57251
57251
  ctx: {
@@ -61028,7 +61028,7 @@ function isVoiceChannelType(type) {
61028
61028
  function createDefaultDeps() {
61029
61029
  return {
61030
61030
  sendMessageWhatsApp: async (...args) => {
61031
- const { sendMessageWhatsApp } = await import("./web-f1xT-H2y.js");
61031
+ const { sendMessageWhatsApp } = await import("./web-Ifwqx6Dt.js");
61032
61032
  return await sendMessageWhatsApp(...args);
61033
61033
  },
61034
61034
  sendMessageTelegram: async (...args) => {
@@ -63933,7 +63933,7 @@ function createDiscordGatewayPlugin(params) {
63933
63933
  super(options);
63934
63934
  }
63935
63935
  createWebSocket(url) {
63936
- return new WebSocket$1(url, { agent });
63936
+ return new WebSocket(url, { agent });
63937
63937
  }
63938
63938
  }
63939
63939
  return new ProxyGatewayPlugin();
@@ -74151,7 +74151,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
74151
74151
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
74152
74152
  let preflightTranscript;
74153
74153
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
74154
- const { transcribeFirstAudio } = await import("./audio-preflight-D_g9Duqw.js");
74154
+ const { transcribeFirstAudio } = await import("./audio-preflight-lr-WPpc9.js");
74155
74155
  preflightTranscript = await transcribeFirstAudio({
74156
74156
  ctx: {
74157
74157
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -76308,7 +76308,7 @@ function loadWebLoginQr() {
76308
76308
  return webLoginQrPromise;
76309
76309
  }
76310
76310
  function loadWebChannel() {
76311
- webChannelPromise ??= import("./web-f1xT-H2y.js");
76311
+ webChannelPromise ??= import("./web-Ifwqx6Dt.js");
76312
76312
  return webChannelPromise;
76313
76313
  }
76314
76314
  function loadWhatsAppActions() {