@hanzo/bot 2026.3.11 → 2026.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/{audio-preflight-D2ryNxLv.js → audio-preflight-hEJ-K1Ib.js} +4 -4
  2. package/dist/{audio-transcription-runner-BI-TLd1r.js → audio-transcription-runner-CqUAFMxM.js} +1 -1
  3. package/dist/build-info.json +3 -3
  4. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  5. package/dist/{chrome-DWoTm_BG.js → chrome-jdOx2dAl.js} +8 -8
  6. package/dist/{cloud-connect-bZKXaJWj.js → cloud-connect-BKnkfbhQ.js} +1 -1
  7. package/dist/{deliver-BrVS3qD4.js → deliver-DpRQLcxS.js} +1 -1
  8. package/dist/{deliver-runtime-y426rL_k.js → deliver-runtime-9qy2zTFN.js} +3 -3
  9. package/dist/{deps-send-whatsapp.runtime-CUDRJQI6.js → deps-send-whatsapp.runtime-CZEk5mx7.js} +7 -7
  10. package/dist/entry.js +1 -1
  11. package/dist/extensionAPI.js +6 -6
  12. package/dist/{image-D99xLnGA.js → image-YeyG7rr8.js} +1 -1
  13. package/dist/{image-runtime-BHiX93k-.js → image-runtime-DZ9BSPkK.js} +3 -3
  14. package/dist/{local-launch-DO77bp0N.js → local-launch-CLA_3nnn.js} +26 -9
  15. package/dist/{pi-embedded-DoF5GLjn.js → pi-embedded-bklbT-yp.js} +24 -24
  16. package/dist/{pi-embedded-helpers-DkZKaPa4.js → pi-embedded-helpers-CSHUPpwW.js} +3 -3
  17. package/dist/plugin-sdk/{accounts-DskuKVrL.js → accounts-BKlUEbA2.js} +2 -2
  18. package/dist/plugin-sdk/{accounts-CXyl1mLm.js → accounts-CNg2VVWF.js} +2 -2
  19. package/dist/plugin-sdk/{accounts-Bm4PRMWH.js → accounts-Cad7hzfy.js} +3 -3
  20. package/dist/plugin-sdk/{active-listener-DjtXj-6l.js → active-listener-CORsVdRy.js} +2 -2
  21. package/dist/plugin-sdk/{api-key-rotation-dBvG_5yr.js → api-key-rotation-BMnwWQ0L.js} +2 -2
  22. package/dist/plugin-sdk/{audio-preflight-C3Pp9geS.js → audio-preflight-BIoyXlzE.js} +26 -26
  23. package/dist/plugin-sdk/{audio-transcription-runner-ClnCvQG5.js → audio-transcription-runner-Dt1i04m6.js} +11 -11
  24. package/dist/plugin-sdk/{audit-membership-runtime-rx3u3xYQ.js → audit-membership-runtime-CAJ6jHA7.js} +2 -2
  25. package/dist/plugin-sdk/{channel-activity-DXEHlqT_.js → channel-activity-BgBfJIZr.js} +3 -3
  26. package/dist/plugin-sdk/{channel-web-jhRFdgis.js → channel-web-D1WElkhV.js} +18 -18
  27. package/dist/plugin-sdk/{chrome-Ctkdm8kB.js → chrome-BOy2ZIdy.js} +6 -6
  28. package/dist/plugin-sdk/{commands-registry-DaOv_5Un.js → commands-registry-C746B-IO.js} +4 -4
  29. package/dist/plugin-sdk/{common-BTOQbnC9.js → common-DEicsf8f.js} +2 -2
  30. package/dist/plugin-sdk/{config-CPoIewKA.js → config-C2VN_Uze.js} +7 -7
  31. package/dist/plugin-sdk/{deliver-C3M9YkG8.js → deliver-CJDxdV38.js} +10 -10
  32. package/dist/plugin-sdk/deliver-runtime-Btv2N6ID.js +32 -0
  33. package/dist/plugin-sdk/deps-send-discord.runtime-CD6RkX7j.js +23 -0
  34. package/dist/plugin-sdk/deps-send-imessage.runtime-Bk6O4cQd.js +22 -0
  35. package/dist/plugin-sdk/deps-send-signal.runtime-D3VOhV12.js +21 -0
  36. package/dist/plugin-sdk/deps-send-slack.runtime-q_vIsWY0.js +19 -0
  37. package/dist/plugin-sdk/deps-send-telegram.runtime-CMfaSoMW.js +24 -0
  38. package/dist/plugin-sdk/deps-send-whatsapp.runtime-SlwDXgpa.js +57 -0
  39. package/dist/plugin-sdk/{diagnostic-DHES2IG3.js → diagnostic-Cmg_Guj5.js} +2 -2
  40. package/dist/plugin-sdk/discord.js +6 -6
  41. package/dist/plugin-sdk/{errors-B2jpHiod.js → errors-Cn3JyiMn.js} +1 -1
  42. package/dist/plugin-sdk/{fetch-guard-Bnbh_v36.js → fetch-guard-Dq4RGtrN.js} +2 -2
  43. package/dist/plugin-sdk/{fs-safe-Bycf8Dw-.js → fs-safe-Bkid3_6g.js} +3 -3
  44. package/dist/plugin-sdk/{image-moA_39gp.js → image-nVvwM3Xd.js} +6 -6
  45. package/dist/plugin-sdk/{image-ops-DhoADpAA.js → image-ops-CpF6ZEdk.js} +2 -2
  46. package/dist/plugin-sdk/image-runtime-DO1AG9xo.js +25 -0
  47. package/dist/plugin-sdk/{ir-g3OlfUVu.js → ir-sseErCNR.js} +7 -7
  48. package/dist/plugin-sdk/{local-roots-C4VMMVpe.js → local-roots-QiQIw_3f.js} +4 -4
  49. package/dist/plugin-sdk/{logger-Bl138Nx7.js → logger-Dj4IX2UB.js} +2 -2
  50. package/dist/plugin-sdk/{login-DncLyb_v.js → login-BQzorFUh.js} +4 -4
  51. package/dist/plugin-sdk/{login-qr-Bsk9WIKo.js → login-qr-CikVF257.js} +5 -5
  52. package/dist/plugin-sdk/{manager-dSeD3RrO.js → manager-BGXvWOFI.js} +8 -8
  53. package/dist/plugin-sdk/manager-runtime-ptNsDEQe.js +15 -0
  54. package/dist/plugin-sdk/mattermost.js +3 -3
  55. package/dist/plugin-sdk/{outbound-Uxln4ZUV.js → outbound-DI98BRHn.js} +5 -5
  56. package/dist/plugin-sdk/{outbound-attachment-BGdfM11-.js → outbound-attachment-D3JolQwb.js} +2 -2
  57. package/dist/plugin-sdk/{path-alias-guards-D7YFCGos.js → path-alias-guards-CaWErHTb.js} +1 -1
  58. package/dist/plugin-sdk/{paths-DG-hVM9r.js → paths-C9nUyfHf.js} +1 -1
  59. package/dist/plugin-sdk/{pi-embedded-helpers-DfSEAMtj.js → pi-embedded-helpers-CYIBgCUb.js} +16 -16
  60. package/dist/plugin-sdk/{pi-model-discovery-C-VTvWWv.js → pi-model-discovery-CnEHDSXe.js} +1 -1
  61. package/dist/plugin-sdk/pi-model-discovery-runtime-BTuhUPJQ.js +8 -0
  62. package/dist/plugin-sdk/{pi-tools.before-tool-call.runtime-DBmTGutA.js → pi-tools.before-tool-call.runtime-C-5gDvbX.js} +4 -4
  63. package/dist/plugin-sdk/{plugins-GsRN6ojJ.js → plugins-BNiirQsT.js} +4 -4
  64. package/dist/plugin-sdk/{proxy-env-CtTzyyij.js → proxy-env-nIDM2pb-.js} +1 -1
  65. package/dist/plugin-sdk/{proxy-fetch-C-fXKPD2.js → proxy-fetch-rtc8GmoB.js} +1 -1
  66. package/dist/plugin-sdk/{pw-ai-DdCaaGh3.js → pw-ai-CQc12I06.js} +9 -9
  67. package/dist/plugin-sdk/{qmd-manager-CPn_rv_D.js → qmd-manager-Crxi_fUd.js} +7 -7
  68. package/dist/plugin-sdk/{query-expansion-Bvu5XYRV.js → query-expansion-BoMWv8J7.js} +4 -4
  69. package/dist/plugin-sdk/{redact-C3rEm8A0.js → redact-CBwV828t.js} +1 -1
  70. package/dist/plugin-sdk/{reply-CN3fBNMb.js → reply-C46yX129.js} +73 -73
  71. package/dist/plugin-sdk/{resolve-outbound-target-CRToDwG-.js → resolve-outbound-target-BUyclz_e.js} +2 -2
  72. package/dist/plugin-sdk/{run-with-concurrency-BXedUJ_9.js → run-with-concurrency-BKOyMmQl.js} +1 -1
  73. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-Cmgk45l9.js +10 -0
  74. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-Dj9zjsRb.js +19 -0
  75. package/dist/plugin-sdk/{send-DLsh3eTd.js → send-C74B-7Md.js} +6 -6
  76. package/dist/plugin-sdk/{send-DyWir3i5.js → send-CyQZ_3dG.js} +5 -5
  77. package/dist/plugin-sdk/{send-C-o9yhwI.js → send-DBto6gUF.js} +7 -7
  78. package/dist/plugin-sdk/{send-66W_v3Rp.js → send-DRYHVkRK.js} +13 -13
  79. package/dist/plugin-sdk/{send-DzRN28wH.js → send-Ds3SvAXN.js} +8 -8
  80. package/dist/plugin-sdk/{session-67udJtLN.js → session-DfwhEElH.js} +3 -3
  81. package/dist/plugin-sdk/signal.js +2 -2
  82. package/dist/plugin-sdk/{skill-commands-DGcpUwSV.js → skill-commands-xwQoPrL7.js} +4 -4
  83. package/dist/plugin-sdk/{skills-BCUlsM7a.js → skills-8kOFtfG0.js} +6 -6
  84. package/dist/plugin-sdk/slash-commands.runtime-DhqEtB3N.js +13 -0
  85. package/dist/plugin-sdk/slash-dispatch.runtime-CRtIC9Sp.js +52 -0
  86. package/dist/plugin-sdk/slash-skill-commands.runtime-MqsnB6E8.js +16 -0
  87. package/dist/plugin-sdk/{store-B8uaah6Q.js → store-CuPS1X7b.js} +2 -2
  88. package/dist/plugin-sdk/subagent-registry-runtime-CCusNTee.js +52 -0
  89. package/dist/plugin-sdk/{tables-DKLz7bGv.js → tables-Bt_-pxQx.js} +1 -1
  90. package/dist/plugin-sdk/{thinking-zAYQzsCw.js → thinking-BLYI7Ns-.js} +7 -7
  91. package/dist/plugin-sdk/{tokens-DMbd3-Ct.js → tokens-D2fpVQt3.js} +1 -1
  92. package/dist/plugin-sdk/{tool-images-BVSRVXXq.js → tool-images-_v-9iCOI.js} +2 -2
  93. package/dist/plugin-sdk/web-BbS3ifBr.js +56 -0
  94. package/dist/plugin-sdk/{whatsapp-actions-BuSDFSP5.js → whatsapp-actions-DPHrLiQ8.js} +17 -17
  95. package/dist/plugin-sdk/whatsapp.js +50 -50
  96. package/dist/{pw-ai-Mq6HuD9y.js → pw-ai-C99W41P5.js} +1 -1
  97. package/dist/{run-main-BDJMRMI4.js → run-main-BKdAXafb.js} +2 -2
  98. package/dist/{slash-dispatch.runtime-BI4kyhSk.js → slash-dispatch.runtime-CLPlz-lX.js} +6 -6
  99. package/dist/{subagent-registry-runtime-nzkRCNeS.js → subagent-registry-runtime-TuyVULIb.js} +6 -6
  100. package/dist/{web-72kt7sM1.js → web-Ci3EFOGu.js} +6 -6
  101. package/extensions/acpx/package.json +1 -1
  102. package/extensions/bluebubbles/package.json +1 -1
  103. package/extensions/ci-fix-loop/package.json +1 -1
  104. package/extensions/continuous-learning/package.json +1 -1
  105. package/extensions/copilot-proxy/package.json +1 -1
  106. package/extensions/diagnostics-otel/package.json +1 -1
  107. package/extensions/diffs/package.json +1 -1
  108. package/extensions/discord/package.json +1 -1
  109. package/extensions/feishu/package.json +1 -1
  110. package/extensions/flow/package.json +1 -1
  111. package/extensions/google-antigravity-auth/package.json +1 -1
  112. package/extensions/google-gemini-cli-auth/package.json +1 -1
  113. package/extensions/googlechat/package.json +1 -1
  114. package/extensions/imessage/package.json +1 -1
  115. package/extensions/irc/package.json +1 -1
  116. package/extensions/line/package.json +1 -1
  117. package/extensions/llm-task/package.json +1 -1
  118. package/extensions/lobster/package.json +1 -1
  119. package/extensions/matrix/CHANGELOG.md +5 -0
  120. package/extensions/matrix/package.json +1 -1
  121. package/extensions/mattermost/package.json +1 -1
  122. package/extensions/memory-core/package.json +1 -1
  123. package/extensions/memory-lancedb/package.json +1 -1
  124. package/extensions/minimax-portal-auth/package.json +1 -1
  125. package/extensions/msteams/CHANGELOG.md +5 -0
  126. package/extensions/msteams/package.json +1 -1
  127. package/extensions/nextcloud-talk/package.json +1 -1
  128. package/extensions/nostr/CHANGELOG.md +5 -0
  129. package/extensions/nostr/package.json +1 -1
  130. package/extensions/open-prose/package.json +1 -1
  131. package/extensions/self-improvement/package.json +1 -1
  132. package/extensions/signal/package.json +1 -1
  133. package/extensions/slack/package.json +1 -1
  134. package/extensions/synology-chat/package.json +1 -1
  135. package/extensions/telegram/package.json +1 -1
  136. package/extensions/tlon/package.json +1 -1
  137. package/extensions/twitch/CHANGELOG.md +5 -0
  138. package/extensions/twitch/package.json +1 -1
  139. package/extensions/voice-call/CHANGELOG.md +5 -0
  140. package/extensions/voice-call/package.json +1 -1
  141. package/extensions/whatsapp/package.json +1 -1
  142. package/extensions/zalo/CHANGELOG.md +5 -0
  143. package/extensions/zalo/package.json +1 -1
  144. package/extensions/zalouser/CHANGELOG.md +5 -0
  145. package/extensions/zalouser/package.json +1 -1
  146. package/package.json +1 -1
  147. package/dist/plugin-sdk/deliver-runtime-mEh6dpX2.js +0 -32
  148. package/dist/plugin-sdk/deps-send-discord.runtime-CeLampf3.js +0 -23
  149. package/dist/plugin-sdk/deps-send-imessage.runtime-BtxPqajC.js +0 -22
  150. package/dist/plugin-sdk/deps-send-signal.runtime-ClFkIFJ-.js +0 -21
  151. package/dist/plugin-sdk/deps-send-slack.runtime-DaHmXzRC.js +0 -19
  152. package/dist/plugin-sdk/deps-send-telegram.runtime-DAF10iAG.js +0 -24
  153. package/dist/plugin-sdk/deps-send-whatsapp.runtime-DqlX4Oxz.js +0 -57
  154. package/dist/plugin-sdk/image-runtime-2bziw6eW.js +0 -25
  155. package/dist/plugin-sdk/manager-runtime-jDo0I-JG.js +0 -15
  156. package/dist/plugin-sdk/pi-model-discovery-runtime-CIuZW3i7.js +0 -8
  157. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B_rU-DWm.js +0 -10
  158. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-DsIXsR9d.js +0 -19
  159. package/dist/plugin-sdk/slash-commands.runtime-Bezqrk4r.js +0 -13
  160. package/dist/plugin-sdk/slash-dispatch.runtime-C1tsWtvv.js +0 -52
  161. package/dist/plugin-sdk/slash-skill-commands.runtime-CGNVU7M2.js +0 -16
  162. package/dist/plugin-sdk/subagent-registry-runtime-miVNHjsU.js +0 -52
  163. package/dist/plugin-sdk/web-DSj0-KxZ.js +0 -56
@@ -8,8 +8,8 @@ import "./accounts-DY1X-s7s.js";
8
8
  import "./plugins-D-0WTgB3.js";
9
9
  import "./accounts-DTt92bBI.js";
10
10
  import "./image-ops-H7-oxso2.js";
11
- import "./pi-embedded-helpers-DkZKaPa4.js";
12
- import "./chrome-DWoTm_BG.js";
11
+ import "./pi-embedded-helpers-CSHUPpwW.js";
12
+ import "./chrome-jdOx2dAl.js";
13
13
  import "./skills-DYPNXcqp.js";
14
14
  import "./path-alias-guards-CnMi477K.js";
15
15
  import "./redact-BYyl-Ec1.js";
@@ -20,8 +20,8 @@ import "./store-fRWpW53K.js";
20
20
  import "./accounts-Gr3z2vFt.js";
21
21
  import "./paths-CYxtj6M6.js";
22
22
  import "./tool-images-CP_K-W16.js";
23
- import "./image-D99xLnGA.js";
24
- import { g as isAudioAttachment, i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, t as runAudioTranscription } from "./audio-transcription-runner-BI-TLd1r.js";
23
+ import "./image-YeyG7rr8.js";
24
+ import { g as isAudioAttachment, i as normalizeMediaAttachments, o as resolveMediaAttachmentLocalRoots, t as runAudioTranscription } from "./audio-transcription-runner-CqUAFMxM.js";
25
25
  import "./fetch-eWgbLfn0.js";
26
26
  import "./fetch-guard-DuC_-ogd.js";
27
27
  import "./api-key-rotation-BGQLOWVR.js";
@@ -3,7 +3,7 @@ import { L as logVerbose, O as createSubsystemLogger, Y as resolvePreferredOpenC
3
3
  import { A as requireApiKey, X as loadConfig, at as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, c as normalizeProviderId, ct as resolveIMessageAttachmentRoots, dr as resolveOpenClawAgentDir, h as normalizeGoogleModelId, j as resolveApiKeyForProvider, ot as isInboundPathAllowed, st as mergeInboundPathRoots } from "./model-selection-DBsGeiK-.js";
4
4
  import { x as normalizeChatType } from "./plugins-D-0WTgB3.js";
5
5
  import { E as kindFromMime, S as getFileExtension, b as detectMime, w as isAudioFileName } from "./image-ops-H7-oxso2.js";
6
- import { t as describeImageWithModel, w as ensureOpenClawModelsJson } from "./image-D99xLnGA.js";
6
+ import { t as describeImageWithModel, w as ensureOpenClawModelsJson } from "./image-YeyG7rr8.js";
7
7
  import { a as getDefaultMediaLocalRoots, n as fetchRemoteMedia, t as MediaFetchError } from "./fetch-eWgbLfn0.js";
8
8
  import { n as fetchWithTimeout } from "./fetch-timeout-B_Wivh-n.js";
9
9
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DuC_-ogd.js";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.3.11",
3
- "commit": "42f97919fbbac1c8155ec8c0fde3b45f7b3b9c41",
4
- "builtAt": "2026-03-12T00:48:19.302Z"
2
+ "version": "2026.3.12",
3
+ "commit": "f39118e57b5741f25fa19ecec6b6f29adad483b1",
4
+ "builtAt": "2026-03-12T01:04:22.863Z"
5
5
  }
@@ -1 +1 @@
1
- 5a277ae4003024c01e30175deb33f40d8ac6544147a6e0dea446f0510158becc
1
+ c9af33cba455b468fe772df9ec357e8424dcffbbb0782c1cee165193c3dae81c
@@ -13,7 +13,7 @@ import { createHmac } from "node:crypto";
13
13
  import net from "node:net";
14
14
  import http, { createServer } from "node:http";
15
15
  import https from "node:https";
16
- import WebSocket$1, { WebSocketServer } from "ws";
16
+ import WebSocket, { WebSocketServer } from "ws";
17
17
  import { Buffer as Buffer$1 } from "node:buffer";
18
18
 
19
19
  //#region src/browser/constants.ts
@@ -625,7 +625,7 @@ async function ensureChromeExtensionRelayServer(opts) {
625
625
  let extensionWs = null;
626
626
  const cdpClients = /* @__PURE__ */ new Set();
627
627
  const connectedTargets = /* @__PURE__ */ new Map();
628
- const extensionConnected = () => extensionWs?.readyState === WebSocket$1.OPEN;
628
+ const extensionConnected = () => extensionWs?.readyState === WebSocket.OPEN;
629
629
  const hasConnectedTargets = () => connectedTargets.size > 0;
630
630
  let extensionDisconnectCleanupTimer = null;
631
631
  const extensionReconnectWaiters = /* @__PURE__ */ new Set();
@@ -677,7 +677,7 @@ async function ensureChromeExtensionRelayServer(opts) {
677
677
  let nextExtensionId = 1;
678
678
  const sendToExtension = async (payload) => {
679
679
  const ws = extensionWs;
680
- if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
680
+ if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
681
681
  ws.send(JSON.stringify(payload));
682
682
  return await new Promise((resolve, reject) => {
683
683
  const timer = setTimeout(() => {
@@ -694,12 +694,12 @@ async function ensureChromeExtensionRelayServer(opts) {
694
694
  const broadcastToCdpClients = (evt) => {
695
695
  const msg = JSON.stringify(evt);
696
696
  for (const ws of cdpClients) {
697
- if (ws.readyState !== WebSocket$1.OPEN) continue;
697
+ if (ws.readyState !== WebSocket.OPEN) continue;
698
698
  ws.send(msg);
699
699
  }
700
700
  };
701
701
  const sendResponseToCdp = (ws, res) => {
702
- if (ws.readyState !== WebSocket$1.OPEN) return;
702
+ if (ws.readyState !== WebSocket.OPEN) return;
703
703
  ws.send(JSON.stringify(res));
704
704
  };
705
705
  const dropConnectedTargetSession = (sessionId) => {
@@ -953,7 +953,7 @@ async function ensureChromeExtensionRelayServer(opts) {
953
953
  rejectUpgrade(socket, 401, "Unauthorized");
954
954
  return;
955
955
  }
956
- if (extensionWs && extensionWs.readyState !== WebSocket$1.OPEN) {
956
+ if (extensionWs && extensionWs.readyState !== WebSocket.OPEN) {
957
957
  try {
958
958
  extensionWs.terminate();
959
959
  } catch {}
@@ -986,7 +986,7 @@ async function ensureChromeExtensionRelayServer(opts) {
986
986
  clearExtensionDisconnectCleanupTimer();
987
987
  flushExtensionReconnectWaiters(true);
988
988
  const ping = setInterval(() => {
989
- if (ws.readyState !== WebSocket$1.OPEN) return;
989
+ if (ws.readyState !== WebSocket.OPEN) return;
990
990
  ws.send(JSON.stringify({ method: "ping" }));
991
991
  }, 5e3);
992
992
  ws.on("message", (data) => {
@@ -1342,7 +1342,7 @@ function openCdpWebSocket(wsUrl, opts) {
1342
1342
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
1343
1343
  const handshakeTimeoutMs = typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : CDP_WS_HANDSHAKE_TIMEOUT_MS;
1344
1344
  const agent = getDirectAgentForCdp(wsUrl);
1345
- return new WebSocket$1(wsUrl, {
1345
+ return new WebSocket(wsUrl, {
1346
1346
  handshakeTimeout: handshakeTimeoutMs,
1347
1347
  ...Object.keys(headers).length ? { headers } : {},
1348
1348
  ...agent ? { agent } : {}
@@ -235,7 +235,7 @@ async function showPostAuthMenu(accessToken) {
235
235
  process.exit(0);
236
236
  }
237
237
  if (choice === "local") {
238
- const { launchLocal } = await import("./local-launch-DO77bp0N.js");
238
+ const { launchLocal } = await import("./local-launch-CLA_3nnn.js");
239
239
  await launchLocal({ accessToken });
240
240
  } else {
241
241
  const { launchCloudNode } = await import("./cloud-launch-CvBfrrAD.js");
@@ -7,7 +7,7 @@ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-BNir7u
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-D-0WTgB3.js";
8
8
  import { n as generateSecureUuid } from "./secure-random-D68-1Hhs.js";
9
9
  import { r as parseTelegramTarget } from "./targets-D1wBrTyc.js";
10
- import { H as resolveMirroredTranscriptText, V as appendAssistantMessageToSessionTranscript, i as isMessagingToolDuplicate, lt as parseInlineDirectives } from "./pi-embedded-helpers-DkZKaPa4.js";
10
+ import { H as resolveMirroredTranscriptText, V as appendAssistantMessageToSessionTranscript, i as isMessagingToolDuplicate, lt as parseInlineDirectives } from "./pi-embedded-helpers-CSHUPpwW.js";
11
11
  import { i as getAgentScopedMediaLocalRoots } from "./fetch-eWgbLfn0.js";
12
12
  import { d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, l as chunkByParagraph, m as resolveChunkMode, s as resolveMarkdownTableMode, v as parseFenceSpans } from "./ir-BOZ-K2mM.js";
13
13
  import { c as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-C5J0G9XL.js";
@@ -7,11 +7,11 @@ import "./thinking-CfyiCA3G.js";
7
7
  import "./tokens-BNir7uMh.js";
8
8
  import "./accounts-DY1X-s7s.js";
9
9
  import "./plugins-D-0WTgB3.js";
10
- import { t as deliverOutboundPayloads } from "./deliver-BrVS3qD4.js";
10
+ import { t as deliverOutboundPayloads } from "./deliver-DpRQLcxS.js";
11
11
  import "./accounts-DTt92bBI.js";
12
12
  import "./image-ops-H7-oxso2.js";
13
- import "./pi-embedded-helpers-DkZKaPa4.js";
14
- import "./chrome-DWoTm_BG.js";
13
+ import "./pi-embedded-helpers-CSHUPpwW.js";
14
+ import "./chrome-jdOx2dAl.js";
15
15
  import "./skills-DYPNXcqp.js";
16
16
  import "./path-alias-guards-CnMi477K.js";
17
17
  import "./redact-BYyl-Ec1.js";
@@ -2,7 +2,7 @@ import "./run-with-concurrency-Cl6RA1jj.js";
2
2
  import "./paths-CaA28K0s.js";
3
3
  import "./logger-03l-fZAz.js";
4
4
  import "./model-selection-DBsGeiK-.js";
5
- import "./pi-embedded-DoF5GLjn.js";
5
+ import "./pi-embedded-bklbT-yp.js";
6
6
  import "./github-copilot-token-BWXANsA6.js";
7
7
  import "./thinking-CfyiCA3G.js";
8
8
  import "./tokens-BNir7uMh.js";
@@ -10,14 +10,14 @@ import "./accounts-DY1X-s7s.js";
10
10
  import "./plugins-D-0WTgB3.js";
11
11
  import "./send-RnwO-RHl.js";
12
12
  import "./send-D8sX0KzB.js";
13
- import "./deliver-BrVS3qD4.js";
13
+ import "./deliver-DpRQLcxS.js";
14
14
  import "./diagnostic-4mG4HPNM.js";
15
15
  import "./accounts-DTt92bBI.js";
16
16
  import "./image-ops-H7-oxso2.js";
17
17
  import "./send-BwwO-RRn.js";
18
18
  import "./pi-model-discovery-BCAL3jTa.js";
19
- import "./pi-embedded-helpers-DkZKaPa4.js";
20
- import "./chrome-DWoTm_BG.js";
19
+ import "./pi-embedded-helpers-CSHUPpwW.js";
20
+ import "./chrome-jdOx2dAl.js";
21
21
  import "./skills-DYPNXcqp.js";
22
22
  import "./path-alias-guards-CnMi477K.js";
23
23
  import "./redact-BYyl-Ec1.js";
@@ -28,8 +28,8 @@ import "./store-fRWpW53K.js";
28
28
  import "./accounts-Gr3z2vFt.js";
29
29
  import "./paths-CYxtj6M6.js";
30
30
  import "./tool-images-CP_K-W16.js";
31
- import "./image-D99xLnGA.js";
32
- import "./audio-transcription-runner-BI-TLd1r.js";
31
+ import "./image-YeyG7rr8.js";
32
+ import "./audio-transcription-runner-CqUAFMxM.js";
33
33
  import "./fetch-eWgbLfn0.js";
34
34
  import "./fetch-guard-DuC_-ogd.js";
35
35
  import "./api-key-rotation-BGQLOWVR.js";
@@ -51,6 +51,6 @@ import "./query-expansion-BT5d-kuZ.js";
51
51
  import { t as sendMessageWhatsApp } from "./outbound-Ciyf0u31.js";
52
52
  import "./session-T3VrCwRN.js";
53
53
  import "./login-_Q2hwnRV.js";
54
- import "./web-72kt7sM1.js";
54
+ import "./web-Ci3EFOGu.js";
55
55
 
56
56
  export { sendMessageWhatsApp };
package/dist/entry.js CHANGED
@@ -397,7 +397,7 @@ if (!isMainModule({
397
397
  applyCliProfileEnv({ profile: parsed.profile });
398
398
  process$1.argv = parsed.argv;
399
399
  }
400
- if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-BDJMRMI4.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
400
+ if (!tryHandleRootVersionFastPath(process$1.argv) && !tryHandleRootHelpFastPath(process$1.argv)) import("./run-main-BKdAXafb.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
401
401
  console.error("[openclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
402
402
  process$1.exitCode = 1;
403
403
  });
@@ -2,7 +2,7 @@ import { S as ensureAgentWorkspace, a as resolveAgentDir, c as resolveAgentWorks
2
2
  import "./paths-CaA28K0s.js";
3
3
  import "./logger-03l-fZAz.js";
4
4
  import { Or as DEFAULT_MODEL, kr as DEFAULT_PROVIDER, m as resolveThinkingDefault } from "./model-selection-DBsGeiK-.js";
5
- import { J as resolveAgentTimeoutMs, Y as resolveAgentIdentity, t as runEmbeddedPiAgent } from "./pi-embedded-DoF5GLjn.js";
5
+ import { J as resolveAgentTimeoutMs, Y as resolveAgentIdentity, t as runEmbeddedPiAgent } from "./pi-embedded-bklbT-yp.js";
6
6
  import "./github-copilot-token-BWXANsA6.js";
7
7
  import "./thinking-CfyiCA3G.js";
8
8
  import "./tokens-BNir7uMh.js";
@@ -10,14 +10,14 @@ import "./accounts-DY1X-s7s.js";
10
10
  import "./plugins-D-0WTgB3.js";
11
11
  import "./send-RnwO-RHl.js";
12
12
  import "./send-D8sX0KzB.js";
13
- import "./deliver-BrVS3qD4.js";
13
+ import "./deliver-DpRQLcxS.js";
14
14
  import "./diagnostic-4mG4HPNM.js";
15
15
  import "./accounts-DTt92bBI.js";
16
16
  import "./image-ops-H7-oxso2.js";
17
17
  import "./send-BwwO-RRn.js";
18
18
  import "./pi-model-discovery-BCAL3jTa.js";
19
- import { W as loadSessionStore, q as saveSessionStore } from "./pi-embedded-helpers-DkZKaPa4.js";
20
- import "./chrome-DWoTm_BG.js";
19
+ import { W as loadSessionStore, q as saveSessionStore } from "./pi-embedded-helpers-CSHUPpwW.js";
20
+ import "./chrome-jdOx2dAl.js";
21
21
  import "./skills-DYPNXcqp.js";
22
22
  import "./path-alias-guards-CnMi477K.js";
23
23
  import "./redact-BYyl-Ec1.js";
@@ -28,8 +28,8 @@ import "./store-fRWpW53K.js";
28
28
  import "./accounts-Gr3z2vFt.js";
29
29
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-CYxtj6M6.js";
30
30
  import "./tool-images-CP_K-W16.js";
31
- import "./image-D99xLnGA.js";
32
- import "./audio-transcription-runner-BI-TLd1r.js";
31
+ import "./image-YeyG7rr8.js";
32
+ import "./audio-transcription-runner-CqUAFMxM.js";
33
33
  import "./fetch-eWgbLfn0.js";
34
34
  import "./fetch-guard-DuC_-ogd.js";
35
35
  import "./api-key-rotation-BGQLOWVR.js";
@@ -1,7 +1,7 @@
1
1
  import { mt as resolveAgentModelPrimaryValue, pt as resolveAgentModelFallbackValues } from "./run-with-concurrency-Cl6RA1jj.js";
2
2
  import { f as isRecord, x as shortenHomeInString } from "./logger-03l-fZAz.js";
3
3
  import { A as requireApiKey, O as getApiKeyForModel, X as loadConfig, Xn as applyConfigEnvVars, _ as resolveImplicitBedrockProvider, br as normalizeSecretInput, dr as resolveOpenClawAgentDir, g as normalizeProviders, v as resolveImplicitCopilotProvider, y as resolveImplicitProviders } from "./model-selection-DBsGeiK-.js";
4
- import { P as sanitizeUserFacingText } from "./pi-embedded-helpers-DkZKaPa4.js";
4
+ import { P as sanitizeUserFacingText } from "./pi-embedded-helpers-CSHUPpwW.js";
5
5
  import { n as redactToolDetail } from "./redact-BYyl-Ec1.js";
6
6
  import path from "node:path";
7
7
  import fs from "node:fs/promises";
@@ -8,8 +8,8 @@ import "./accounts-DY1X-s7s.js";
8
8
  import "./plugins-D-0WTgB3.js";
9
9
  import "./accounts-DTt92bBI.js";
10
10
  import "./image-ops-H7-oxso2.js";
11
- import "./pi-embedded-helpers-DkZKaPa4.js";
12
- import "./chrome-DWoTm_BG.js";
11
+ import "./pi-embedded-helpers-CSHUPpwW.js";
12
+ import "./chrome-jdOx2dAl.js";
13
13
  import "./skills-DYPNXcqp.js";
14
14
  import "./path-alias-guards-CnMi477K.js";
15
15
  import "./redact-BYyl-Ec1.js";
@@ -20,6 +20,6 @@ import "./store-fRWpW53K.js";
20
20
  import "./accounts-Gr3z2vFt.js";
21
21
  import "./paths-CYxtj6M6.js";
22
22
  import "./tool-images-CP_K-W16.js";
23
- import { t as describeImageWithModel } from "./image-D99xLnGA.js";
23
+ import { t as describeImageWithModel } from "./image-YeyG7rr8.js";
24
24
 
25
25
  export { describeImageWithModel };
@@ -31,6 +31,7 @@ import "./call-DgqOmHW_.js";
31
31
  import "./pairing-token-Cq8xBTkk.js";
32
32
  import { f as openUrl } from "./onboard-helpers-CbaQqDNf.js";
33
33
  import "./prompt-style-Dws687Oa.js";
34
+ import { j as writeOAuthCredentials } from "./onboard-auth.credentials-CU1DhpBy.js";
34
35
  import os from "node:os";
35
36
  import path from "node:path";
36
37
 
@@ -39,23 +40,38 @@ import path from "node:path";
39
40
  * Local launch — starts the bot gateway on this machine.
40
41
  *
41
42
  * Flow:
42
- * 1. Write config with gateway.mode = "local"
43
- * 2. Start the gateway server (HTTP + WS on port 18789) with no auth (loopback-only)
44
- * 3. Open the Control UI in the user's browser
45
- * 4. Keep running until Ctrl+C
43
+ * 1. Store IAM credentials so the embedded agent can call AI models
44
+ * 2. Write config with gateway.mode = "local" and Hanzo API proxy
45
+ * 3. Start the gateway server (HTTP + WS on port 18789) with no auth (loopback-only)
46
+ * 4. Open the Control UI in the user's browser
47
+ * 5. Keep running until Ctrl+C
46
48
  *
47
- * Cloud Playground registration (connecting to wss://gw.hanzo.bot so the bot
48
- * appears in app.hanzo.bot) will be enabled in a future release once the cloud
49
- * gateway accepts IAM OAuth tokens for node registration.
49
+ * The IAM access token obtained during OAuth login is used to authenticate
50
+ * API calls to https://api.hanzo.ai which proxies to model providers
51
+ * (Anthropic, OpenAI, etc.) via unified Hanzo Cloud billing.
50
52
  */
53
+ /** Hanzo API proxy endpoint — accepts IAM tokens, proxies to model providers. */
54
+ const HANZO_API_BASE_URL = "https://api.hanzo.ai";
51
55
  const DEFAULT_PORT = 18789;
52
56
  async function launchLocal(params) {
53
- const { accessToken: _accessToken } = params;
57
+ const { accessToken } = params;
58
+ try {
59
+ await writeOAuthCredentials("anthropic", {
60
+ access: accessToken,
61
+ refresh: "",
62
+ expires: 0,
63
+ tokenType: "Bearer",
64
+ createdAt: Date.now()
65
+ });
66
+ } catch {}
67
+ process.env.ANTHROPIC_API_KEY = accessToken;
68
+ process.env.HANZO_API_KEY = accessToken;
54
69
  await writeConfigFile({
55
70
  gateway: {
56
71
  mode: "local",
57
72
  bind: "loopback"
58
73
  },
74
+ models: { providers: { anthropic: { baseUrl: HANZO_API_BASE_URL } } },
59
75
  agents: { defaults: { workspace: path.join(os.homedir(), ".hanzo", "bot", "workspace") } }
60
76
  });
61
77
  console.log("\n Starting local gateway...\n");
@@ -78,7 +94,8 @@ async function launchLocal(params) {
78
94
  await openUrl(`http://127.0.0.1:${port}/`);
79
95
  } catch {}
80
96
  console.log(` Gateway running on http://127.0.0.1:${port}/`);
81
- console.log(` Control UI opened in your browser.\n`);
97
+ console.log(` Control UI opened in your browser.`);
98
+ console.log(` AI models via Hanzo Cloud (api.hanzo.ai)\n`);
82
99
  console.log(" Press Ctrl+C to stop the gateway.\n");
83
100
  return server;
84
101
  }
@@ -11,15 +11,15 @@ import { C as createDiscordActionGate, E as normalizeDiscordToken, S as inspectD
11
11
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, n as markdownToSlackMrkdwnChunks, o as parseSlackBlocksInput, r as normalizeSlackOutboundText, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-RnwO-RHl.js";
12
12
  import { $ as stripUndefinedFields, A as unpinMessageDiscord, At as resolveChannelEntryMatchWithFallback, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveDiscordSystemLocation, D as pinMessageDiscord, Dt as applyChannelMatchMeta, E as listThreadsDiscord, Et as fetchDiscord, 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 buildChannelKeyCandidates, P as fetchChannelInfoDiscord, Q as sendDiscordText, R as kickMemberDiscord, S as deleteMessageDiscord, St as formatDiscordUserTag, T as listPinsDiscord, Tt as DiscordApiError, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendStickerDiscord, _t as resolveDiscordOwnerAllowFrom, a as sendDiscordComponentMessage, at as parseDiscordTarget, b as formatMention, bt as shouldEmitDiscordReactionNotification, c as parseDiscordComponentCustomId, ct as listDiscordDirectoryPeersLive, d as parseDiscordModalCustomIdForCarbon, dt as normalizeDiscordSlug, et as fetchChannelPermissionsDiscord, f as readDiscordComponentSpec, ft as resolveDiscordAllowListMatch, g as sendPollDiscord, gt as resolveDiscordOwnerAccess, h as sendMessageDiscord, ht as resolveDiscordMemberAccessState, i as removeReactionDiscord, it as createDiscordRestClient, j as addRoleDiscord, k as searchMessagesDiscord, kt as normalizeChannelSlug, l as parseDiscordComponentCustomIdForCarbon, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordModalEntry, mt as resolveDiscordGuildEntry, n as reactMessageDiscord, nt as chunkDiscordTextWithMode, o as createDiscordFormModal, ot as resolveDiscordChannelId, p as resolveDiscordComponentEntry, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as removeOwnReactionsDiscord, rt as createDiscordClient, s as formatDiscordComponentEventText, st as listDiscordDirectoryGroupsLive, t as fetchReactionsDiscord, tt as hasAnyGuildPermissionDiscord, u as parseDiscordModalCustomId, ut as normalizeDiscordAllowList, v as sendVoiceMessageDiscord, vt as resolveDiscordShouldRequireMention, w as fetchMessageDiscord, wt as resolveTimestampMs, x as createThreadDiscord, xt as formatDiscordReactionEmoji, y as sendWebhookMessageDiscord, yt as resolveGroupDmAllow, z as listGuildChannelsDiscord } from "./send-D8sX0KzB.js";
13
13
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-D68-1Hhs.js";
14
- import { A as joinPresentTextSegments, C as createReplyToModeFilterForChannel, D as normalizeTargetForProvider, E as normalizeChannelTargetInput, O as getGlobalHookRunner, S as shouldSuppressReasoningPayload, T as buildTargetResolverSignature, _ as applyReplyThreading, a as normalizeReplyPayloadsForDelivery, b as isRenderablePayload, c as splitMediaFromOutput, d as toInternalMessageReceivedContext, f as toInternalMessageTranscribedContext, g as applyReplyTagsToPayload, h as fireAndForgetHook, i as normalizeOutboundPayloadsForJson, k as initializeGlobalHookRunner, l as deriveInboundMessageHookContext, m as toPluginMessageReceivedEvent, n as formatOutboundPayloadLog, o as throwIfAborted, p as toPluginMessageContext, r as normalizeOutboundPayloads, s as parseReplyDirectives, t as deliverOutboundPayloads, u as toInternalMessagePreprocessedContext, v as filterMessagingToolDuplicates, w as resolveReplyToMode, x as shouldSuppressMessagingToolReplies, y as filterMessagingToolMediaDuplicates } from "./deliver-BrVS3qD4.js";
14
+ import { A as joinPresentTextSegments, C as createReplyToModeFilterForChannel, D as normalizeTargetForProvider, E as normalizeChannelTargetInput, O as getGlobalHookRunner, S as shouldSuppressReasoningPayload, T as buildTargetResolverSignature, _ as applyReplyThreading, a as normalizeReplyPayloadsForDelivery, b as isRenderablePayload, c as splitMediaFromOutput, d as toInternalMessageReceivedContext, f as toInternalMessageTranscribedContext, g as applyReplyTagsToPayload, h as fireAndForgetHook, i as normalizeOutboundPayloadsForJson, k as initializeGlobalHookRunner, l as deriveInboundMessageHookContext, m as toPluginMessageReceivedEvent, n as formatOutboundPayloadLog, o as throwIfAborted, p as toPluginMessageContext, r as normalizeOutboundPayloads, s as parseReplyDirectives, t as deliverOutboundPayloads, u as toInternalMessagePreprocessedContext, v as filterMessagingToolDuplicates, w as resolveReplyToMode, x as shouldSuppressMessagingToolReplies, y as filterMessagingToolMediaDuplicates } from "./deliver-DpRQLcxS.js";
15
15
  import { a as logMessageQueued, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, h as isDiagnosticsEnabled, i as logMessageProcessed, l as logWebhookProcessed, m as emitDiagnosticEvent, n as logLaneDequeue, o as logSessionStateChange, p as getDiagnosticSessionState, r as logLaneEnqueue, t as diag, u as logWebhookReceived } from "./diagnostic-4mG4HPNM.js";
16
16
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DTt92bBI.js";
17
17
  import { i as resolveTelegramTargetChatType, r as parseTelegramTarget } from "./targets-D1wBrTyc.js";
18
18
  import { A as mediaKindFromMime, C as imageMimeFromFormat, E as kindFromMime, O as MAX_IMAGE_BYTES, T as isGifMedia, _ as GATEWAY_CLIENT_IDS, b as detectMime, c as INTERNAL_MESSAGE_CHANNEL, d as isInternalMessageChannel, f as isMarkdownCapableMessageChannel, g as resolveMessageChannel, h as resolveGatewayMessageChannel, i as getImageMetadata, l as isDeliverableMessageChannel, m as normalizeMessageChannel, p as listDeliverableMessageChannels, s as resizeToJpeg, u as isGatewayMessageChannel, v as GATEWAY_CLIENT_MODES, w as isAudioFileName, x as extensionForMime, y as GATEWAY_CLIENT_NAMES } from "./image-ops-H7-oxso2.js";
19
19
  import { $ as removeChannelAllowFromStoreEntry, A as expandTextLinks, B as resolveTelegramThreadSpec, C as buildSenderName, D as buildTelegramThreadParams, E as buildTelegramParentPeer, F as resolveTelegramForumThreadId, G as firstDefined$1, H as normalizeAllowFrom$2, I as resolveTelegramGroupAllowFromContext, J as resolveGroupAllowFromSources, K as isSenderIdAllowed, L as resolveTelegramMediaPlaceholder, M as hasBotMention, N as normalizeForwardedContext, O as buildTypingThreadParams, P as resolveTelegramDirectPeerId, Q as readChannelAllowFromStore, R as resolveTelegramReplyId, S as buildSenderLabel, T as buildTelegramGroupPeerId, U as normalizeDmAllowFromWithStore$1, V as isSenderAllowed$1, W as resolveSenderAllowMatch$1, X as toLocationContext, Y as formatLocationText, Z as addChannelAllowFromStoreEntry, _ as splitTelegramCaption, a as reactMessageTelegram, at as isVoiceCompatibleAudio, b as resolveCronStorePath, c as sendStickerTelegram, d as isRecoverableTelegramNetworkError, et as upsertChannelPairingRequest, f as markdownToTelegramChunks, g as resolveTelegramFetch, h as wrapFileReferencesInHtml, i as editMessageTelegram, it as listPairingChannels, j as extractTelegramLocation, k as describeReplyTarget, l as resolveTelegramVoiceSend, m as renderTelegramHtmlText, n as createForumTopicTelegram, nt as writeJsonFileAtomically, o as sendMessageTelegram, p as markdownToTelegramHtml, q as mergeDmAllowFromSources, r as deleteMessageTelegram, rt as getPairingAdapter, s as sendPollTelegram, t as buildInlineKeyboard, tt as readJsonFileWithFallback, u as wasSentByBot, v as withTelegramApiErrorLogging, w as buildTelegramGroupFrom, x as buildGroupLabel, y as loadCronStore, z as resolveTelegramStreamMode } from "./send-BwwO-RRn.js";
20
20
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BCAL3jTa.js";
21
- import { $ as deliveryContextFromSession, $t as matchesAnyGlobPattern, A as isRawApiErrorPayload, At as resolveGroupSessionKey, B as parseSessionThreadInfo, Bt as resolveGatewayCredentialsFromConfig, C as isCloudCodeAssistFormatError, Ct as resolveFreshSessionTotalTokens, D as isFailoverErrorMessage, Dt as resolveMainSessionKey, E as isFailoverAssistantError, Et as resolveExplicitAgentSessionKey, F as isTimeoutErrorMessage, Ft as resolveBrowserConfig, G as readSessionUpdatedAt, Gt as collectExplicitAllowlist, Ht as resolveSandboxConfigForAgent, I as ensureSandboxWorkspaceForSession, It as resolveProfile, J as updateLastRoute, Jt as stripPluginOnlyAllowlist, K as recordSessionMetaFromInbound, Kt as expandPolicyWithPluginGroups, L as resolveSandboxContext, Lt as getBridgeAuthForPort, M as parseImageDimensionError, Mt as resolveSessionLockMaxHoldFromTimeout, N as parseImageSizeError, Nt as createBrowserRouteContext, O as isLikelyContextOverflowError, Ot as deriveSessionMetaPatch, P as sanitizeUserFacingText, Pt as registerBrowserRoutes, Q as resolveCacheTtlMs$1, Qt as compileGlobPatterns, R as resolveSandboxRuntimeStatus, Rt as ensureBrowserControlAuth, S as isBillingAssistantError, St as mergeSessionEntry, T as isContextOverflowError, Tt as canonicalizeMainSessionAlias, U as resolveAndPersistSessionFile, Ut as applyOwnerOnlyToolPolicy, V as appendAssistantMessageToSessionTranscript, Vt as trimToUndefined$1, W as loadSessionStore, Wt as buildPluginToolGroups, X as updateSessionStoreEntry, Xt as normalizeToolName, Y as updateSessionStore, Yt as expandToolGroups, Z as isCacheEnabled, Zt as resolveToolProfilePolicy, _ as formatAssistantErrorText, _t as resolveChannelResetConfig, a as isMessagingToolDuplicateNormalized, an as sanitizeGoogleTurnOrdering, at as archiveSessionTranscripts, b as getApiErrorPayloadFingerprint, bt as resolveThreadFlag, c as extractToolCallsFromAssistant, ct as extractToolCallNames, d as downgradeOpenAIFunctionCallReasoningPairs, dt as applyInputProvenanceToUserMessage, en as buildBootstrapContextFiles, et as deliveryContextKey, f as downgradeOpenAIReasoningBlocks, ft as hasInterSessionUserProvenance, g as classifyFailoverReasonFromHttpStatus, gt as evaluateSessionFreshness, h as classifyFailoverReason, ht as resolveSessionKey, in as resolveBootstrapTotalMaxChars, it as normalizeAccountId$3, j as isTransientHttpError, jt as acquireSessionWriteLock, k as isRateLimitAssistantError, kt as resolveConversationLabel, l as extractToolResultId, lt as parseInlineDirectives$1, m as BILLING_ERROR_USER_MESSAGE, mt as jsonUtf8Bytes, n as validateGeminiTurns, nn as resolveBootstrapMaxChars, nt as normalizeDeliveryContext, o as normalizeTextForComparison, ot as capArrayByJsonBytes, p as isGoogleModelApi, pt as normalizeInputProvenance, qt as mergeAlsoAllowPolicy, r as pickFallbackThinkingLevel, rn as resolveBootstrapPromptTruncationWarningMode, rt as normalizeSessionDeliveryFields, s as sanitizeSessionMessagesImages, st as countToolResults, t as validateAnthropicTurns, tn as ensureSessionHeader, tt as mergeDeliveryContext, u as sanitizeToolCallIdsForCloudCodeAssist, ut as INPUT_PROVENANCE_KIND_VALUES, v as formatBillingErrorMessage, vt as resolveSessionResetPolicy, w as isCompactionFailureError, wt as setSessionRuntimeModel, x as isAuthAssistantError, xt as DEFAULT_RESET_TRIGGERS, y as formatRawAssistantErrorForUi, yt as resolveSessionResetType, z as extractDeliveryInfo, zt as resolveBrowserControlAuth } from "./pi-embedded-helpers-DkZKaPa4.js";
22
- import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-DWoTm_BG.js";
21
+ import { $ as deliveryContextFromSession, $t as matchesAnyGlobPattern, A as isRawApiErrorPayload, At as resolveGroupSessionKey, B as parseSessionThreadInfo, Bt as resolveGatewayCredentialsFromConfig, C as isCloudCodeAssistFormatError, Ct as resolveFreshSessionTotalTokens, D as isFailoverErrorMessage, Dt as resolveMainSessionKey, E as isFailoverAssistantError, Et as resolveExplicitAgentSessionKey, F as isTimeoutErrorMessage, Ft as resolveBrowserConfig, G as readSessionUpdatedAt, Gt as collectExplicitAllowlist, Ht as resolveSandboxConfigForAgent, I as ensureSandboxWorkspaceForSession, It as resolveProfile, J as updateLastRoute, Jt as stripPluginOnlyAllowlist, K as recordSessionMetaFromInbound, Kt as expandPolicyWithPluginGroups, L as resolveSandboxContext, Lt as getBridgeAuthForPort, M as parseImageDimensionError, Mt as resolveSessionLockMaxHoldFromTimeout, N as parseImageSizeError, Nt as createBrowserRouteContext, O as isLikelyContextOverflowError, Ot as deriveSessionMetaPatch, P as sanitizeUserFacingText, Pt as registerBrowserRoutes, Q as resolveCacheTtlMs$1, Qt as compileGlobPatterns, R as resolveSandboxRuntimeStatus, Rt as ensureBrowserControlAuth, S as isBillingAssistantError, St as mergeSessionEntry, T as isContextOverflowError, Tt as canonicalizeMainSessionAlias, U as resolveAndPersistSessionFile, Ut as applyOwnerOnlyToolPolicy, V as appendAssistantMessageToSessionTranscript, Vt as trimToUndefined$1, W as loadSessionStore, Wt as buildPluginToolGroups, X as updateSessionStoreEntry, Xt as normalizeToolName, Y as updateSessionStore, Yt as expandToolGroups, Z as isCacheEnabled, Zt as resolveToolProfilePolicy, _ as formatAssistantErrorText, _t as resolveChannelResetConfig, a as isMessagingToolDuplicateNormalized, an as sanitizeGoogleTurnOrdering, at as archiveSessionTranscripts, b as getApiErrorPayloadFingerprint, bt as resolveThreadFlag, c as extractToolCallsFromAssistant, ct as extractToolCallNames, d as downgradeOpenAIFunctionCallReasoningPairs, dt as applyInputProvenanceToUserMessage, en as buildBootstrapContextFiles, et as deliveryContextKey, f as downgradeOpenAIReasoningBlocks, ft as hasInterSessionUserProvenance, g as classifyFailoverReasonFromHttpStatus, gt as evaluateSessionFreshness, h as classifyFailoverReason, ht as resolveSessionKey, in as resolveBootstrapTotalMaxChars, it as normalizeAccountId$3, j as isTransientHttpError, jt as acquireSessionWriteLock, k as isRateLimitAssistantError, kt as resolveConversationLabel, l as extractToolResultId, lt as parseInlineDirectives$1, m as BILLING_ERROR_USER_MESSAGE, mt as jsonUtf8Bytes, n as validateGeminiTurns, nn as resolveBootstrapMaxChars, nt as normalizeDeliveryContext, o as normalizeTextForComparison, ot as capArrayByJsonBytes, p as isGoogleModelApi, pt as normalizeInputProvenance, qt as mergeAlsoAllowPolicy, r as pickFallbackThinkingLevel, rn as resolveBootstrapPromptTruncationWarningMode, rt as normalizeSessionDeliveryFields, s as sanitizeSessionMessagesImages, st as countToolResults, t as validateAnthropicTurns, tn as ensureSessionHeader, tt as mergeDeliveryContext, u as sanitizeToolCallIdsForCloudCodeAssist, ut as INPUT_PROVENANCE_KIND_VALUES, v as formatBillingErrorMessage, vt as resolveSessionResetPolicy, w as isCompactionFailureError, wt as setSessionRuntimeModel, x as isAuthAssistantError, xt as DEFAULT_RESET_TRIGGERS, y as formatRawAssistantErrorForUi, yt as resolveSessionResetType, z as extractDeliveryInfo, zt as resolveBrowserControlAuth } from "./pi-embedded-helpers-CSHUPpwW.js";
22
+ import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-jdOx2dAl.js";
23
23
  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-DYPNXcqp.js";
24
24
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CnMi477K.js";
25
25
  import { i as testRegexWithBoundedInput, r as compileSafeRegex, t as redactSensitiveText } from "./redact-BYyl-Ec1.js";
@@ -32,8 +32,8 @@ import { t as resolveIMessageAccount } from "./accounts-Gr3z2vFt.js";
32
32
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CYxtj6M6.js";
33
33
  import { n as onSessionTranscriptUpdate, t as emitSessionTranscriptUpdate } from "./transcript-events-UAKcGiUQ.js";
34
34
  import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-CP_K-W16.js";
35
- import { C as minimaxUnderstandImage, S as extractTextFromChatContent, _ as formatToolSummary, a as resolveProviderVisionModelFromConfig, b as findCodeRegions, c as extractThinkingFromTaggedStream, d as inferToolMetaFromArgs, f as isAssistantMessage, g as stripThinkingTagsFromText, h as stripMinimaxToolCallXml, i as decodeDataUrl, l as extractThinkingFromTaggedText, m as stripDowngradedToolCallText, n as coerceImageAssistantText, o as extractAssistantText$1, p as promoteThinkingTagsToBlocks, r as coerceImageModelConfig, s as extractAssistantThinking, u as formatReasoningMessage, v as resolveToolDisplay, w as ensureOpenClawModelsJson, x as isInsideCode, y as stripReasoningTagsFromText } from "./image-D99xLnGA.js";
36
- import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-BI-TLd1r.js";
35
+ import { C as minimaxUnderstandImage, S as extractTextFromChatContent, _ as formatToolSummary, a as resolveProviderVisionModelFromConfig, b as findCodeRegions, c as extractThinkingFromTaggedStream, d as inferToolMetaFromArgs, f as isAssistantMessage, g as stripThinkingTagsFromText, h as stripMinimaxToolCallXml, i as decodeDataUrl, l as extractThinkingFromTaggedText, m as stripDowngradedToolCallText, n as coerceImageAssistantText, o as extractAssistantText$1, p as promoteThinkingTagsToBlocks, r as coerceImageModelConfig, s as extractAssistantThinking, u as formatReasoningMessage, v as resolveToolDisplay, w as ensureOpenClawModelsJson, x as isInsideCode, y as stripReasoningTagsFromText } from "./image-YeyG7rr8.js";
36
+ import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-CqUAFMxM.js";
37
37
  import { a as getDefaultMediaLocalRoots, i as getAgentScopedMediaLocalRoots, n as fetchRemoteMedia, r as readResponseWithLimit, t as MediaFetchError } from "./fetch-eWgbLfn0.js";
38
38
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-B_Wivh-n.js";
39
39
  import { n as withStrictGuardedFetchMode, r as withTrustedEnvProxyGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-DuC_-ogd.js";
@@ -71,7 +71,7 @@ import { EdgeTTS } from "node-edge-tts";
71
71
  import * as net$1 from "node:net";
72
72
  import { createServer } from "node:http";
73
73
  import { Agent, EnvHttpProxyAgent, ProxyAgent, fetch as fetch$1, getGlobalDispatcher, setGlobalDispatcher } from "undici";
74
- import WebSocket$1, { WebSocket } from "ws";
74
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
75
75
  import { Buffer as Buffer$1 } from "node:buffer";
76
76
  import { createJiti } from "jiti";
77
77
  import AjvPkg from "ajv";
@@ -8505,7 +8505,7 @@ var GatewayClient = class {
8505
8505
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8506
8506
  });
8507
8507
  }
8508
- this.ws = new WebSocket(url, wsOptions);
8508
+ this.ws = new WebSocket$1(url, wsOptions);
8509
8509
  this.ws.on("open", () => {
8510
8510
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8511
8511
  const tlsError = this.validateTlsFingerprint();
@@ -8701,7 +8701,7 @@ var GatewayClient = class {
8701
8701
  const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
8702
8702
  if (this.connectTimer) clearTimeout(this.connectTimer);
8703
8703
  this.connectTimer = setTimeout(() => {
8704
- if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
8704
+ if (this.connectSent || this.ws?.readyState !== WebSocket$1.OPEN) return;
8705
8705
  this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
8706
8706
  this.ws?.close(1008, "connect challenge timeout");
8707
8707
  }, connectChallengeTimeoutMs);
@@ -8743,7 +8743,7 @@ var GatewayClient = class {
8743
8743
  return null;
8744
8744
  }
8745
8745
  async request(method, params, opts) {
8746
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
8746
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
8747
8747
  const id = randomUUID();
8748
8748
  const frame = {
8749
8749
  type: "req",
@@ -10162,7 +10162,7 @@ function normalizeReplyPayload(payload, opts = {}) {
10162
10162
  //#region src/auto-reply/reply/route-reply.ts
10163
10163
  let deliverRuntimePromise$2 = null;
10164
10164
  function loadDeliverRuntime$2() {
10165
- deliverRuntimePromise$2 ??= import("./deliver-runtime-y426rL_k.js");
10165
+ deliverRuntimePromise$2 ??= import("./deliver-runtime-9qy2zTFN.js");
10166
10166
  return deliverRuntimePromise$2;
10167
10167
  }
10168
10168
  /**
@@ -11451,7 +11451,7 @@ const DEFAULT_SUBAGENT_ANNOUNCE_TIMEOUT_MS = 6e4;
11451
11451
  const MAX_TIMER_SAFE_TIMEOUT_MS = 2147e6;
11452
11452
  let subagentRegistryRuntimePromise = null;
11453
11453
  function loadSubagentRegistryRuntime() {
11454
- subagentRegistryRuntimePromise ??= import("./subagent-registry-runtime-nzkRCNeS.js");
11454
+ subagentRegistryRuntimePromise ??= import("./subagent-registry-runtime-TuyVULIb.js");
11455
11455
  return subagentRegistryRuntimePromise;
11456
11456
  }
11457
11457
  const DIRECT_ANNOUNCE_TRANSIENT_RETRY_DELAYS_MS = FAST_TEST_MODE ? [
@@ -14970,7 +14970,7 @@ async function runWithConcurrency(tasks, limit) {
14970
14970
  //#region src/media-understanding/echo-transcript.ts
14971
14971
  let deliverRuntimePromise$1 = null;
14972
14972
  function loadDeliverRuntime$1() {
14973
- deliverRuntimePromise$1 ??= import("./deliver-runtime-y426rL_k.js");
14973
+ deliverRuntimePromise$1 ??= import("./deliver-runtime-9qy2zTFN.js");
14974
14974
  return deliverRuntimePromise$1;
14975
14975
  }
14976
14976
  const DEFAULT_ECHO_TRANSCRIPT_FORMAT = "📝 \"{transcript}\"";
@@ -53444,7 +53444,7 @@ const warnedContexts = /* @__PURE__ */ new Map();
53444
53444
  const log$10 = createSubsystemLogger("session-maintenance-warning");
53445
53445
  let deliverRuntimePromise = null;
53446
53446
  function loadDeliverRuntime() {
53447
- deliverRuntimePromise ??= import("./deliver-runtime-y426rL_k.js");
53447
+ deliverRuntimePromise ??= import("./deliver-runtime-9qy2zTFN.js");
53448
53448
  return deliverRuntimePromise;
53449
53449
  }
53450
53450
  function shouldSendWarning() {
@@ -58541,7 +58541,7 @@ const VISION_PROVIDERS = [
58541
58541
  ];
58542
58542
  let imageRuntimePromise = null;
58543
58543
  function loadImageRuntime() {
58544
- imageRuntimePromise ??= import("./image-runtime-BHiX93k-.js");
58544
+ imageRuntimePromise ??= import("./image-runtime-DZ9BSPkK.js");
58545
58545
  return imageRuntimePromise;
58546
58546
  }
58547
58547
  /**
@@ -62745,7 +62745,7 @@ async function resolveDiscordPreflightAudioMentionContext(params) {
62745
62745
  hasTypedText
62746
62746
  };
62747
62747
  try {
62748
- const { transcribeFirstAudio } = await import("./audio-preflight-D2ryNxLv.js");
62748
+ const { transcribeFirstAudio } = await import("./audio-preflight-hEJ-K1Ib.js");
62749
62749
  if (params.abortSignal?.aborted) return {
62750
62750
  hasAudioAttachment,
62751
62751
  hasTypedText
@@ -68407,7 +68407,7 @@ let slackSenderRuntimePromise = null;
68407
68407
  let signalSenderRuntimePromise = null;
68408
68408
  let imessageSenderRuntimePromise = null;
68409
68409
  function loadWhatsAppSenderRuntime() {
68410
- whatsappSenderRuntimePromise ??= import("./deps-send-whatsapp.runtime-CUDRJQI6.js");
68410
+ whatsappSenderRuntimePromise ??= import("./deps-send-whatsapp.runtime-CZEk5mx7.js");
68411
68411
  return whatsappSenderRuntimePromise;
68412
68412
  }
68413
68413
  function loadTelegramSenderRuntime() {
@@ -72113,7 +72113,7 @@ function createDiscordGatewayPlugin(params) {
72113
72113
  return super.registerClient(client);
72114
72114
  }
72115
72115
  createWebSocket(url) {
72116
- return new WebSocket$1(url, { agent: wsAgent });
72116
+ return new WebSocket(url, { agent: wsAgent });
72117
72117
  }
72118
72118
  }
72119
72119
  return new ProxyGatewayPlugin();
@@ -81288,7 +81288,7 @@ function loadSlashCommandsRuntime() {
81288
81288
  return slashCommandsRuntimePromise;
81289
81289
  }
81290
81290
  function loadSlashDispatchRuntime() {
81291
- slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-BI4kyhSk.js");
81291
+ slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-CLPlz-lX.js");
81292
81292
  return slashDispatchRuntimePromise;
81293
81293
  }
81294
81294
  function loadSlashSkillCommandsRuntime() {
@@ -84742,7 +84742,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
84742
84742
  const disableAudioPreflight = firstDefined$1(topicConfig?.disableAudioPreflight, groupConfig?.disableAudioPreflight) === true;
84743
84743
  let preflightTranscript;
84744
84744
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0 && !disableAudioPreflight) try {
84745
- const { transcribeFirstAudio } = await import("./audio-preflight-D2ryNxLv.js");
84745
+ const { transcribeFirstAudio } = await import("./audio-preflight-hEJ-K1Ib.js");
84746
84746
  preflightTranscript = await transcribeFirstAudio({
84747
84747
  ctx: {
84748
84748
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -87748,7 +87748,7 @@ function loadWebLoginQr() {
87748
87748
  return webLoginQrPromise;
87749
87749
  }
87750
87750
  function loadWebChannel() {
87751
- webChannelPromise ??= import("./web-72kt7sM1.js");
87751
+ webChannelPromise ??= import("./web-Ci3EFOGu.js");
87752
87752
  return webChannelPromise;
87753
87753
  }
87754
87754
  function loadWhatsAppActions() {
@@ -96543,7 +96543,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96543
96543
  * Throws if the connection is not open.
96544
96544
  */
96545
96545
  send(event) {
96546
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
96546
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
96547
96547
  this.ws.send(JSON.stringify(event));
96548
96548
  }
96549
96549
  /**
@@ -96560,7 +96560,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96560
96560
  * Returns true if the WebSocket is currently open and ready to send.
96561
96561
  */
96562
96562
  isConnected() {
96563
- return this.ws !== null && this.ws.readyState === WebSocket$1.OPEN;
96563
+ return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
96564
96564
  }
96565
96565
  /**
96566
96566
  * Permanently closes the WebSocket connection and disables auto-reconnect.
@@ -96570,7 +96570,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96570
96570
  this._cancelRetryTimer();
96571
96571
  if (this.ws) {
96572
96572
  this.ws.removeAllListeners();
96573
- if (this.ws.readyState === WebSocket$1.OPEN || this.ws.readyState === WebSocket$1.CONNECTING) this.ws.close(1e3, "Client closed");
96573
+ if (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING) this.ws.close(1e3, "Client closed");
96574
96574
  this.ws = null;
96575
96575
  }
96576
96576
  }
@@ -96580,7 +96580,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96580
96580
  reject(/* @__PURE__ */ new Error("OpenAIWebSocketManager: apiKey is required before connecting."));
96581
96581
  return;
96582
96582
  }
96583
- const socket = new WebSocket$1(this.wsUrl, { headers: {
96583
+ const socket = new WebSocket(this.wsUrl, { headers: {
96584
96584
  Authorization: `Bearer ${this.apiKey}`,
96585
96585
  "OpenAI-Beta": "responses-websocket=v1"
96586
96586
  } });
@@ -6,7 +6,7 @@ import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug
6
6
  import { r as normalizeChannelId, x as normalizeChatType } from "./plugins-D-0WTgB3.js";
7
7
  import { t as generateSecureToken } from "./secure-random-D68-1Hhs.js";
8
8
  import { i as getImageMetadata, m as normalizeMessageChannel, n as buildImageResizeSideGrid, p as listDeliverableMessageChannels, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-H7-oxso2.js";
9
- import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-DWoTm_BG.js";
9
+ import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-jdOx2dAl.js";
10
10
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DYPNXcqp.js";
11
11
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CnMi477K.js";
12
12
  import { n as extractErrorCode, r as formatErrorMessage } from "./errors-LUTSBF6A.js";
@@ -1350,7 +1350,7 @@ function isModuleNotFoundError(err) {
1350
1350
  }
1351
1351
  async function loadPwAiModule(mode) {
1352
1352
  try {
1353
- return await import("./pw-ai-Mq6HuD9y.js");
1353
+ return await import("./pw-ai-C99W41P5.js");
1354
1354
  } catch (err) {
1355
1355
  if (mode === "soft") return null;
1356
1356
  if (isModuleNotFoundError(err)) return null;
@@ -3716,7 +3716,7 @@ function createProfileAvailability({ opts, profile, state, getProfileState, setP
3716
3716
  //#region src/browser/server-context.reset.ts
3717
3717
  async function closePlaywrightBrowserConnection() {
3718
3718
  try {
3719
- await (await import("./pw-ai-Mq6HuD9y.js")).closePlaywrightBrowserConnection();
3719
+ await (await import("./pw-ai-C99W41P5.js")).closePlaywrightBrowserConnection();
3720
3720
  } catch {}
3721
3721
  }
3722
3722
  function createProfileResetOps({ profile, getProfileState, stopRunningBrowser, isHttpReachable, resolveOpenClawUserDataDir }) {
@@ -1,5 +1,5 @@
1
- import { ot as normalizeAccountId } from "./run-with-concurrency-BXedUJ_9.js";
2
- import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-Bm4PRMWH.js";
1
+ import { ot as normalizeAccountId } from "./run-with-concurrency-BKOyMmQl.js";
2
+ import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-Cad7hzfy.js";
3
3
 
4
4
  //#region src/signal/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
@@ -1,5 +1,5 @@
1
- import { ot as normalizeAccountId } from "./run-with-concurrency-BXedUJ_9.js";
2
- import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-Bm4PRMWH.js";
1
+ import { ot as normalizeAccountId } from "./run-with-concurrency-BKOyMmQl.js";
2
+ import { v as resolveAccountEntry, y as createAccountListHelpers } from "./accounts-Cad7hzfy.js";
3
3
 
4
4
  //#region src/imessage/accounts.ts
5
5
  const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");