@lawpath-tech/openclaw 2026.2.21-23 → 2026.2.21-25

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 (27) hide show
  1. package/dist/{audio-preflight-omzaYFGD.js → audio-preflight-CLqoZYgI.js} +4 -4
  2. package/dist/{audio-preflight-Da7vejCH.js → audio-preflight-CODznzqu.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-BAv9fEiv.js → chrome-Bqbv_ZSj.js} +7 -7
  8. package/dist/{chrome-CZuniMYN.js → chrome-lRUqqgSD.js} +7 -7
  9. package/dist/{deliver-0ThKlzQo.js → deliver-B2d2N8OJ.js} +1 -1
  10. package/dist/{deliver-CLJRPnfx.js → deliver-CKH_FhS0.js} +1 -1
  11. package/dist/extensionAPI.js +6 -6
  12. package/dist/{image-88q3KE-C.js → image--DDZnw-F.js} +1 -1
  13. package/dist/{image-Ci28h-op.js → image-CxPjVob-.js} +1 -1
  14. package/dist/llm-slug-generator.js +6 -6
  15. package/dist/{pi-embedded-ZvazjIyF.js → pi-embedded-C_B8_quB.js} +16 -16
  16. package/dist/{pi-embedded-CoxlOLW5.js → pi-embedded-Dz24QZz9.js} +16 -16
  17. package/dist/{pi-embedded-helpers-Ll4Lztu1.js → pi-embedded-helpers-CSE0v99A.js} +4 -4
  18. package/dist/{pi-embedded-helpers-B0Kht0I2.js → pi-embedded-helpers-Cd0S0WfR.js} +4 -4
  19. package/dist/{pw-ai-S3cpSYOy.js → pw-ai-C-kqYO4L.js} +1 -1
  20. package/dist/{pw-ai-KrN0mqVH.js → pw-ai-D-_aGzdQ.js} +1 -1
  21. package/dist/{runner-ChBxge-W.js → runner-D1eXJZ8T.js} +1 -1
  22. package/dist/{runner-a43IsYad.js → runner-Dq-qfrq7.js} +1 -1
  23. package/dist/{web-CVSol55V.js → web-DiYh3u92.js} +6 -6
  24. package/dist/{web-Crj4x6uL.js → web-Y49Dumye.js} +6 -6
  25. package/extensions/voice-call/src/providers/realtime-session.ts +13 -2
  26. package/extensions/voice-call/src/webhook.ts +26 -58
  27. package/package.json +1 -1
@@ -14,10 +14,10 @@ import "./model-auth-vtNH8C4P.js";
14
14
  import "./github-copilot-token-Dgb9dAHW.js";
15
15
  import "./pi-model-discovery-DaNAekda.js";
16
16
  import "./message-channel-CHYSjmbr.js";
17
- import "./pi-embedded-helpers-Ll4Lztu1.js";
17
+ import "./pi-embedded-helpers-CSE0v99A.js";
18
18
  import "./config-Du_-inxH.js";
19
19
  import "./manifest-registry-Dhk4A5vb.js";
20
- import "./chrome-BAv9fEiv.js";
20
+ import "./chrome-Bqbv_ZSj.js";
21
21
  import "./frontmatter-CdkBcBAo.js";
22
22
  import "./skills-DSZuhFx9.js";
23
23
  import "./redact-jSxx6Ep2.js";
@@ -28,10 +28,10 @@ import "./thinking-Dg8vKjw_.js";
28
28
  import "./accounts-DFrH9IVU.js";
29
29
  import "./paths-BEAbheM8.js";
30
30
  import "./tool-images-C1rdDr34.js";
31
- import "./image-Ci28h-op.js";
31
+ import "./image-CxPjVob-.js";
32
32
  import "./gemini-auth-A2JaRMHH.js";
33
33
  import "./local-roots-JqlMsAYY.js";
34
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-ChBxge-W.js";
34
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-D1eXJZ8T.js";
35
35
 
36
36
  //#region src/media-understanding/audio-preflight.ts
37
37
  /**
@@ -12,10 +12,10 @@ import "./accounts-sr0G5UOe.js";
12
12
  import "./image-ops-BfqdVNxh.js";
13
13
  import "./pi-model-discovery-j5tVLINv.js";
14
14
  import "./message-channel-DNOtJsL1.js";
15
- import "./pi-embedded-helpers-B0Kht0I2.js";
15
+ import "./pi-embedded-helpers-Cd0S0WfR.js";
16
16
  import "./config-KL7847B1.js";
17
17
  import "./manifest-registry-sze5OW-s.js";
18
- import "./chrome-CZuniMYN.js";
18
+ import "./chrome-lRUqqgSD.js";
19
19
  import "./skills-DGNBryo1.js";
20
20
  import "./redact-1NGYV_8p.js";
21
21
  import "./errors-CPfngF0S.js";
@@ -25,10 +25,10 @@ import "./thinking-BClv_xAO.js";
25
25
  import "./accounts-DAZL5b5o.js";
26
26
  import "./paths-5iQF9bSz.js";
27
27
  import "./tool-images-TQiVqsOc.js";
28
- import "./image-88q3KE-C.js";
28
+ import "./image--DDZnw-F.js";
29
29
  import "./gemini-auth-BF6ZCNOV.js";
30
30
  import "./local-roots-C4BHj9W8.js";
31
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-a43IsYad.js";
31
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-Dq-qfrq7.js";
32
32
 
33
33
  //#region src/media-understanding/audio-preflight.ts
34
34
  /**
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.2.21-23",
3
- "commit": "4a285d90bf984e23f6318f234f23c7dbb49f2365",
4
- "builtAt": "2026-03-29T19:15:15.810Z"
2
+ "version": "2026.2.21-25",
3
+ "commit": "edb17c6ba1f79020962b542728931e2c1c71a542",
4
+ "builtAt": "2026-03-29T23:21:05.445Z"
5
5
  }
@@ -5,7 +5,7 @@ import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "../../agent-sc
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "../../subsystem-BF9jT_Nw.js";
6
6
  import "../../workspace-DYx5Dxtw.js";
7
7
  import { n as SILENT_REPLY_TOKEN } from "../../tokens-B-c56SkM.js";
8
- import { a as createDefaultDeps, i as agentCommand } from "../../pi-embedded-CoxlOLW5.js";
8
+ import { a as createDefaultDeps, i as agentCommand } from "../../pi-embedded-Dz24QZz9.js";
9
9
  import "../../plugins-DIrNa311.js";
10
10
  import "../../accounts-C8m4ADkw.js";
11
11
  import "../../boolean-B8-BqKGQ.js";
@@ -13,7 +13,7 @@ import "../../command-format-BOHIfoCX.js";
13
13
  import "../../bindings-BKEEBdsb.js";
14
14
  import "../../send-Byt_wJDK.js";
15
15
  import "../../send-BEFzSOoD.js";
16
- import "../../deliver-CLJRPnfx.js";
16
+ import "../../deliver-CKH_FhS0.js";
17
17
  import "../../diagnostic-DriDPU6M.js";
18
18
  import "../../diagnostic-session-state-Bxo4UHOL.js";
19
19
  import "../../accounts-CQT5u65w.js";
@@ -23,10 +23,10 @@ import "../../model-auth-vtNH8C4P.js";
23
23
  import "../../github-copilot-token-Dgb9dAHW.js";
24
24
  import "../../pi-model-discovery-DaNAekda.js";
25
25
  import "../../message-channel-CHYSjmbr.js";
26
- import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-Ll4Lztu1.js";
26
+ import { H as loadSessionStore, K as updateSessionStore, xt as resolveMainSessionKey, yt as resolveAgentMainSessionKey } from "../../pi-embedded-helpers-CSE0v99A.js";
27
27
  import "../../config-Du_-inxH.js";
28
28
  import "../../manifest-registry-Dhk4A5vb.js";
29
- import "../../chrome-BAv9fEiv.js";
29
+ import "../../chrome-Bqbv_ZSj.js";
30
30
  import "../../frontmatter-CdkBcBAo.js";
31
31
  import "../../skills-DSZuhFx9.js";
32
32
  import "../../redact-jSxx6Ep2.js";
@@ -37,7 +37,7 @@ import "../../thinking-Dg8vKjw_.js";
37
37
  import "../../accounts-DFrH9IVU.js";
38
38
  import { s as resolveStorePath } from "../../paths-BEAbheM8.js";
39
39
  import "../../tool-images-C1rdDr34.js";
40
- import "../../image-Ci28h-op.js";
40
+ import "../../image-CxPjVob-.js";
41
41
  import "../../reply-prefix-DZrS3Kf7.js";
42
42
  import "../../manager-D7SRrHxT.js";
43
43
  import "../../gemini-auth-A2JaRMHH.js";
@@ -51,7 +51,7 @@ import "../../ir-DJPm0a4k.js";
51
51
  import "../../render-CDCvpfhh.js";
52
52
  import "../../commands-registry-BzlB3qtZ.js";
53
53
  import "../../skill-commands-CqyVDpti.js";
54
- import "../../runner-ChBxge-W.js";
54
+ import "../../runner-D1eXJZ8T.js";
55
55
  import "../../fetch-DtI0mtzx.js";
56
56
  import "../../channel-activity-BgsTqLau.js";
57
57
  import "../../tables-C3clT_iA.js";
@@ -5,7 +5,7 @@ import { s as resolveAgentWorkspaceDir } from "../../agent-scope-DSUeV7-g.js";
5
5
  import { t as createSubsystemLogger } from "../../subsystem-BF9jT_Nw.js";
6
6
  import "../../workspace-DYx5Dxtw.js";
7
7
  import "../../tokens-B-c56SkM.js";
8
- import "../../pi-embedded-CoxlOLW5.js";
8
+ import "../../pi-embedded-Dz24QZz9.js";
9
9
  import "../../plugins-DIrNa311.js";
10
10
  import "../../accounts-C8m4ADkw.js";
11
11
  import "../../boolean-B8-BqKGQ.js";
@@ -13,7 +13,7 @@ import "../../command-format-BOHIfoCX.js";
13
13
  import "../../bindings-BKEEBdsb.js";
14
14
  import "../../send-Byt_wJDK.js";
15
15
  import "../../send-BEFzSOoD.js";
16
- import "../../deliver-CLJRPnfx.js";
16
+ import "../../deliver-CKH_FhS0.js";
17
17
  import "../../diagnostic-DriDPU6M.js";
18
18
  import "../../diagnostic-session-state-Bxo4UHOL.js";
19
19
  import "../../accounts-CQT5u65w.js";
@@ -23,10 +23,10 @@ import "../../model-auth-vtNH8C4P.js";
23
23
  import "../../github-copilot-token-Dgb9dAHW.js";
24
24
  import "../../pi-model-discovery-DaNAekda.js";
25
25
  import "../../message-channel-CHYSjmbr.js";
26
- import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-Ll4Lztu1.js";
26
+ import { ct as hasInterSessionUserProvenance } from "../../pi-embedded-helpers-CSE0v99A.js";
27
27
  import "../../config-Du_-inxH.js";
28
28
  import "../../manifest-registry-Dhk4A5vb.js";
29
- import "../../chrome-BAv9fEiv.js";
29
+ import "../../chrome-Bqbv_ZSj.js";
30
30
  import "../../frontmatter-CdkBcBAo.js";
31
31
  import "../../skills-DSZuhFx9.js";
32
32
  import "../../redact-jSxx6Ep2.js";
@@ -37,7 +37,7 @@ import "../../thinking-Dg8vKjw_.js";
37
37
  import "../../accounts-DFrH9IVU.js";
38
38
  import "../../paths-BEAbheM8.js";
39
39
  import "../../tool-images-C1rdDr34.js";
40
- import "../../image-Ci28h-op.js";
40
+ import "../../image-CxPjVob-.js";
41
41
  import "../../reply-prefix-DZrS3Kf7.js";
42
42
  import "../../manager-D7SRrHxT.js";
43
43
  import "../../gemini-auth-A2JaRMHH.js";
@@ -51,7 +51,7 @@ import "../../ir-DJPm0a4k.js";
51
51
  import "../../render-CDCvpfhh.js";
52
52
  import "../../commands-registry-BzlB3qtZ.js";
53
53
  import "../../skill-commands-CqyVDpti.js";
54
- import "../../runner-ChBxge-W.js";
54
+ import "../../runner-D1eXJZ8T.js";
55
55
  import "../../fetch-DtI0mtzx.js";
56
56
  import "../../channel-activity-BgsTqLau.js";
57
57
  import "../../tables-C3clT_iA.js";
@@ -1 +1 @@
1
- 5d8f7c2a69c34aaf7c3791e10afa11a772ff6fc87bd34fb926e8e7ec5f1f46a4
1
+ f16f7f9fd8a45f426812cf88bbf5ab258ed790e8fa60747d68d466b77682a934
@@ -10,7 +10,7 @@ import fs$1 from "node:fs";
10
10
  import { execFileSync, spawn } from "node:child_process";
11
11
  import net from "node:net";
12
12
  import { createServer } from "node:http";
13
- import WebSocket$1, { WebSocketServer } from "ws";
13
+ import WebSocket, { WebSocketServer } from "ws";
14
14
  import { Buffer as Buffer$1 } from "node:buffer";
15
15
 
16
16
  //#region src/browser/constants.ts
@@ -178,7 +178,7 @@ async function ensureChromeExtensionRelayServer(opts) {
178
178
  let nextExtensionId = 1;
179
179
  const sendToExtension = async (payload) => {
180
180
  const ws = extensionWs;
181
- if (!ws || ws.readyState !== WebSocket$1.OPEN) throw new Error("Chrome extension not connected");
181
+ if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
182
182
  ws.send(JSON.stringify(payload));
183
183
  return await new Promise((resolve, reject) => {
184
184
  const timer = setTimeout(() => {
@@ -195,12 +195,12 @@ async function ensureChromeExtensionRelayServer(opts) {
195
195
  const broadcastToCdpClients = (evt) => {
196
196
  const msg = JSON.stringify(evt);
197
197
  for (const ws of cdpClients) {
198
- if (ws.readyState !== WebSocket$1.OPEN) continue;
198
+ if (ws.readyState !== WebSocket.OPEN) continue;
199
199
  ws.send(msg);
200
200
  }
201
201
  };
202
202
  const sendResponseToCdp = (ws, res) => {
203
- if (ws.readyState !== WebSocket$1.OPEN) return;
203
+ if (ws.readyState !== WebSocket.OPEN) return;
204
204
  ws.send(JSON.stringify(res));
205
205
  };
206
206
  const ensureTargetEventsForClient = (ws, mode) => {
@@ -425,7 +425,7 @@ async function ensureChromeExtensionRelayServer(opts) {
425
425
  wssExtension.on("connection", (ws) => {
426
426
  extensionWs = ws;
427
427
  const ping = setInterval(() => {
428
- if (ws.readyState !== WebSocket$1.OPEN) return;
428
+ if (ws.readyState !== WebSocket.OPEN) return;
429
429
  ws.send(JSON.stringify({ method: "ping" }));
430
430
  }, 5e3);
431
431
  ws.on("message", (data) => {
@@ -743,7 +743,7 @@ async function fetchOk(url, timeoutMs = 1500, init) {
743
743
  }
744
744
  async function withCdpSocket(wsUrl, fn, opts) {
745
745
  const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
746
- const ws = new WebSocket$1(wsUrl, {
746
+ const ws = new WebSocket(wsUrl, {
747
747
  handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
748
748
  ...Object.keys(headers).length ? { headers } : {}
749
749
  });
@@ -1637,7 +1637,7 @@ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
1637
1637
  async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
1638
1638
  return await new Promise((resolve) => {
1639
1639
  const headers = getHeadersWithAuth(wsUrl);
1640
- const ws = new WebSocket$1(wsUrl, {
1640
+ const ws = new WebSocket(wsUrl, {
1641
1641
  handshakeTimeout: timeoutMs,
1642
1642
  ...Object.keys(headers).length ? { headers } : {}
1643
1643
  });
@@ -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
  });
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, y as trigge
5
5
  import { t as createSubsystemLogger } from "./subsystem-SGZR4BSj.js";
6
6
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-DnMmat9I.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-B90TBXkV.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-B0Kht0I2.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-Cd0S0WfR.js";
9
9
  import { d as getChannelDock } from "./thinking-BClv_xAO.js";
10
10
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-B0zJTLYu.js";
11
11
  import { n as resolveMarkdownTableMode } from "./markdown-tables-BIxJ8ehA.js";
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, x as trigge
5
5
  import { t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
6
6
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-B-c56SkM.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DIrNa311.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-Ll4Lztu1.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-CSE0v99A.js";
9
9
  import { d as getChannelDock } from "./thinking-Dg8vKjw_.js";
10
10
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-fZrBDWYg.js";
11
11
  import { n as resolveMarkdownTableMode } from "./markdown-tables-DpVJE0eA.js";
@@ -7,13 +7,13 @@ import { a as resolveAgentIdentity } from "./reply-prefix--NgRsvNq.js";
7
7
  import "./github-copilot-token-ttqQRqMA.js";
8
8
  import "./env-DulyEJtM.js";
9
9
  import "./tokens-DnMmat9I.js";
10
- import { D as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-ZvazjIyF.js";
10
+ import { D as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-C_B8_quB.js";
11
11
  import "./plugins-B90TBXkV.js";
12
12
  import "./accounts-Cxza2UXO.js";
13
13
  import "./bindings-q3EHMdG1.js";
14
14
  import "./send-Chks8Sx_.js";
15
15
  import "./send-D4cCHXzJ.js";
16
- import "./deliver-0ThKlzQo.js";
16
+ import "./deliver-B2d2N8OJ.js";
17
17
  import "./diagnostic-DzmNBZt3.js";
18
18
  import "./diagnostic-session-state-C1vRJs5w.js";
19
19
  import "./accounts-sr0G5UOe.js";
@@ -21,10 +21,10 @@ import "./send-B3d5oxXz.js";
21
21
  import "./image-ops-BfqdVNxh.js";
22
22
  import "./pi-model-discovery-j5tVLINv.js";
23
23
  import "./message-channel-DNOtJsL1.js";
24
- import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-B0Kht0I2.js";
24
+ import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-Cd0S0WfR.js";
25
25
  import "./config-KL7847B1.js";
26
26
  import "./manifest-registry-sze5OW-s.js";
27
- import "./chrome-CZuniMYN.js";
27
+ import "./chrome-lRUqqgSD.js";
28
28
  import "./skills-DGNBryo1.js";
29
29
  import "./redact-1NGYV_8p.js";
30
30
  import "./errors-CPfngF0S.js";
@@ -34,7 +34,7 @@ import "./thinking-BClv_xAO.js";
34
34
  import "./accounts-DAZL5b5o.js";
35
35
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-5iQF9bSz.js";
36
36
  import "./tool-images-TQiVqsOc.js";
37
- import "./image-88q3KE-C.js";
37
+ import "./image--DDZnw-F.js";
38
38
  import "./manager-CsXJuzK4.js";
39
39
  import "./gemini-auth-BF6ZCNOV.js";
40
40
  import "./sqlite-CmTvWxxq.js";
@@ -47,7 +47,7 @@ import "./ir-D-lkkPU3.js";
47
47
  import "./render-B1VqYyvo.js";
48
48
  import "./commands-registry-DEXQtgBS.js";
49
49
  import "./skill-commands-CGvIAIiQ.js";
50
- import "./runner-a43IsYad.js";
50
+ import "./runner-Dq-qfrq7.js";
51
51
  import "./fetch-BMa0enEg.js";
52
52
  import "./channel-activity-7fb2OxTV.js";
53
53
  import "./tables-Ds9lRo34.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-dIQoppcB.js";
3
3
  import { G as resolveOpenClawAgentDir, S as getApiKeyForModel, Y as normalizeSecretInput, _ as resolveImplicitBedrockProvider, g as normalizeProviders, v as resolveImplicitCopilotProvider, w as requireApiKey, y as resolveImplicitProviders } from "./model-selection-CB33-r8t.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-B0Kht0I2.js";
5
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-Cd0S0WfR.js";
6
6
  import { n as loadConfig } from "./config-KL7847B1.js";
7
7
  import { n as redactToolDetail } from "./redact-1NGYV_8p.js";
8
8
  import path from "node:path";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { R as shortenHomeInString, k as isRecord } from "./registry-DpeZG5fo.js";
3
3
  import { B as resolveImplicitCopilotProvider, J as normalizeSecretInput, R as normalizeProviders, V as resolveImplicitProviders, r as requireApiKey, t as getApiKeyForModel, y as resolveOpenClawAgentDir, z as resolveImplicitBedrockProvider } from "./model-auth-vtNH8C4P.js";
4
4
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
5
- import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-Ll4Lztu1.js";
5
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-CSE0v99A.js";
6
6
  import { n as loadConfig } from "./config-Du_-inxH.js";
7
7
  import { n as redactToolDetail } from "./redact-jSxx6Ep2.js";
8
8
  import fs from "node:fs/promises";
@@ -4,7 +4,7 @@ import { c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWork
4
4
  import "./subsystem-BF9jT_Nw.js";
5
5
  import "./workspace-DYx5Dxtw.js";
6
6
  import "./tokens-B-c56SkM.js";
7
- import { t as runEmbeddedPiAgent } from "./pi-embedded-CoxlOLW5.js";
7
+ import { t as runEmbeddedPiAgent } from "./pi-embedded-Dz24QZz9.js";
8
8
  import "./plugins-DIrNa311.js";
9
9
  import "./accounts-C8m4ADkw.js";
10
10
  import "./boolean-B8-BqKGQ.js";
@@ -12,7 +12,7 @@ import "./command-format-BOHIfoCX.js";
12
12
  import "./bindings-BKEEBdsb.js";
13
13
  import "./send-Byt_wJDK.js";
14
14
  import "./send-BEFzSOoD.js";
15
- import "./deliver-CLJRPnfx.js";
15
+ import "./deliver-CKH_FhS0.js";
16
16
  import "./diagnostic-DriDPU6M.js";
17
17
  import "./diagnostic-session-state-Bxo4UHOL.js";
18
18
  import "./accounts-CQT5u65w.js";
@@ -22,10 +22,10 @@ import "./model-auth-vtNH8C4P.js";
22
22
  import "./github-copilot-token-Dgb9dAHW.js";
23
23
  import "./pi-model-discovery-DaNAekda.js";
24
24
  import "./message-channel-CHYSjmbr.js";
25
- import "./pi-embedded-helpers-Ll4Lztu1.js";
25
+ import "./pi-embedded-helpers-CSE0v99A.js";
26
26
  import "./config-Du_-inxH.js";
27
27
  import "./manifest-registry-Dhk4A5vb.js";
28
- import "./chrome-BAv9fEiv.js";
28
+ import "./chrome-Bqbv_ZSj.js";
29
29
  import "./frontmatter-CdkBcBAo.js";
30
30
  import "./skills-DSZuhFx9.js";
31
31
  import "./redact-jSxx6Ep2.js";
@@ -36,7 +36,7 @@ import "./thinking-Dg8vKjw_.js";
36
36
  import "./accounts-DFrH9IVU.js";
37
37
  import "./paths-BEAbheM8.js";
38
38
  import "./tool-images-C1rdDr34.js";
39
- import "./image-Ci28h-op.js";
39
+ import "./image-CxPjVob-.js";
40
40
  import "./reply-prefix-DZrS3Kf7.js";
41
41
  import "./manager-D7SRrHxT.js";
42
42
  import "./gemini-auth-A2JaRMHH.js";
@@ -50,7 +50,7 @@ import "./ir-DJPm0a4k.js";
50
50
  import "./render-CDCvpfhh.js";
51
51
  import "./commands-registry-BzlB3qtZ.js";
52
52
  import "./skill-commands-CqyVDpti.js";
53
- import "./runner-ChBxge-W.js";
53
+ import "./runner-D1eXJZ8T.js";
54
54
  import "./fetch-DtI0mtzx.js";
55
55
  import "./channel-activity-BgsTqLau.js";
56
56
  import "./tables-C3clT_iA.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-Chks8Sx_.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-D4cCHXzJ.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-0ThKlzQo.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-B2d2N8OJ.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-DzmNBZt3.js";
19
19
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-sr0G5UOe.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-BfqdVNxh.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-DNOtJsL1.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-B0Kht0I2.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-Cd0S0WfR.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-KL7847B1.js";
27
27
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverOpenClawPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-sze5OW-s.js";
28
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CZuniMYN.js";
28
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-lRUqqgSD.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-DGNBryo1.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-DAZL5b5o.js";
36
36
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-5iQF9bSz.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-TQiVqsOc.js";
39
- import { S as ensureOpenClawModelsJson, _ 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-88q3KE-C.js";
39
+ import { S as ensureOpenClawModelsJson, _ 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--DDZnw-F.js";
40
40
  import { n as resolveMemorySearchConfig } from "./manager-CsXJuzK4.js";
41
41
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-CmTvWxxq.js";
42
42
  import { n as retryAsync } from "./retry-CFbmOHr4.js";
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-D-lkkPU3.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-DEXQtgBS.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-CGvIAIiQ.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-a43IsYad.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-Dq-qfrq7.js";
53
53
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BMa0enEg.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-7fb2OxTV.js";
@@ -79,7 +79,7 @@ import { EdgeTTS } from "node-edge-tts";
79
79
  import AjvPkg from "ajv";
80
80
  import { createServer } from "node:http";
81
81
  import { ProxyAgent, fetch as fetch$1 } from "undici";
82
- import WebSocket$1, { WebSocket } from "ws";
82
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
83
83
  import { Buffer as Buffer$1 } from "node:buffer";
84
84
  import { createJiti } from "jiti";
85
85
  import { Type } from "@sinclair/typebox";
@@ -5789,7 +5789,7 @@ var GatewayClient = class {
5789
5789
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5790
5790
  });
5791
5791
  }
5792
- this.ws = new WebSocket(url, wsOptions);
5792
+ this.ws = new WebSocket$1(url, wsOptions);
5793
5793
  this.ws.on("open", () => {
5794
5794
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5795
5795
  const tlsError = this.validateTlsFingerprint();
@@ -6008,7 +6008,7 @@ var GatewayClient = class {
6008
6008
  return null;
6009
6009
  }
6010
6010
  async request(method, params, opts) {
6011
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
6011
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
6012
6012
  const id = randomUUID();
6013
6013
  const frame = {
6014
6014
  type: "req",
@@ -7272,7 +7272,7 @@ async function routeReply(params) {
7272
7272
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7273
7273
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7274
7274
  try {
7275
- const { deliverOutboundPayloads } = await import("./deliver-0ThKlzQo.js").then((n) => n.n);
7275
+ const { deliverOutboundPayloads } = await import("./deliver-B2d2N8OJ.js").then((n) => n.n);
7276
7276
  return {
7277
7277
  ok: true,
7278
7278
  messageId: (await deliverOutboundPayloads({
@@ -41645,7 +41645,7 @@ async function deliverSessionMaintenanceWarning(params) {
41645
41645
  return;
41646
41646
  }
41647
41647
  try {
41648
- const { deliverOutboundPayloads } = await import("./deliver-0ThKlzQo.js").then((n) => n.n);
41648
+ const { deliverOutboundPayloads } = await import("./deliver-B2d2N8OJ.js").then((n) => n.n);
41649
41649
  await deliverOutboundPayloads({
41650
41650
  cfg: params.cfg,
41651
41651
  channel,
@@ -45092,7 +45092,7 @@ async function describeStickerImage(params) {
45092
45092
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
45093
45093
  try {
45094
45094
  const buffer = await fs$1.readFile(imagePath);
45095
- const { describeImageWithModel } = await import("./image-88q3KE-C.js").then((n) => n.n);
45095
+ const { describeImageWithModel } = await import("./image--DDZnw-F.js").then((n) => n.n);
45096
45096
  return (await describeImageWithModel({
45097
45097
  buffer,
45098
45098
  fileName: "sticker.webp",
@@ -47553,7 +47553,7 @@ async function preflightDiscordMessage(params) {
47553
47553
  let preflightTranscript;
47554
47554
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47555
47555
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47556
- const { transcribeFirstAudio } = await import("./audio-preflight-Da7vejCH.js");
47556
+ const { transcribeFirstAudio } = await import("./audio-preflight-CODznzqu.js");
47557
47557
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47558
47558
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47559
47559
  ctx: {
@@ -51559,7 +51559,7 @@ function isVoiceChannelType(type) {
51559
51559
  function createDefaultDeps() {
51560
51560
  return {
51561
51561
  sendMessageWhatsApp: async (...args) => {
51562
- const { sendMessageWhatsApp } = await import("./web-CVSol55V.js");
51562
+ const { sendMessageWhatsApp } = await import("./web-DiYh3u92.js");
51563
51563
  return await sendMessageWhatsApp(...args);
51564
51564
  },
51565
51565
  sendMessageTelegram: async (...args) => {
@@ -54472,7 +54472,7 @@ function createDiscordGatewayPlugin(params) {
54472
54472
  super(options);
54473
54473
  }
54474
54474
  createWebSocket(url) {
54475
- return new WebSocket$1(url, { agent });
54475
+ return new WebSocket(url, { agent });
54476
54476
  }
54477
54477
  }
54478
54478
  return new ProxyGatewayPlugin();
@@ -64745,7 +64745,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64745
64745
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64746
64746
  let preflightTranscript;
64747
64747
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64748
- const { transcribeFirstAudio } = await import("./audio-preflight-Da7vejCH.js");
64748
+ const { transcribeFirstAudio } = await import("./audio-preflight-CODznzqu.js");
64749
64749
  preflightTranscript = await transcribeFirstAudio({
64750
64750
  ctx: {
64751
64751
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -66902,7 +66902,7 @@ function loadWebLoginQr() {
66902
66902
  return webLoginQrPromise;
66903
66903
  }
66904
66904
  function loadWebChannel() {
66905
- webChannelPromise ??= import("./web-CVSol55V.js");
66905
+ webChannelPromise ??= import("./web-DiYh3u92.js");
66906
66906
  return webChannelPromise;
66907
66907
  }
66908
66908
  function loadWhatsAppActions() {
@@ -13,7 +13,7 @@ import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
13
13
  import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-BOHIfoCX.js";
14
14
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-Byt_wJDK.js";
15
15
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-BEFzSOoD.js";
16
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CLJRPnfx.js";
16
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CKH_FhS0.js";
17
17
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-DriDPU6M.js";
18
18
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
19
19
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-CQT5u65w.js";
@@ -23,10 +23,10 @@ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider
23
23
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-Dgb9dAHW.js";
24
24
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
25
25
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-CHYSjmbr.js";
26
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-Ll4Lztu1.js";
26
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-CSE0v99A.js";
27
27
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-Du_-inxH.js";
28
28
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverOpenClawPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-Dhk4A5vb.js";
29
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BAv9fEiv.js";
29
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-Bqbv_ZSj.js";
30
30
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-DSZuhFx9.js";
31
31
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
32
32
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -37,7 +37,7 @@ import { t as resolveIMessageAccount } from "./accounts-DFrH9IVU.js";
37
37
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-BEAbheM8.js";
38
38
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
39
39
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-C1rdDr34.js";
40
- import { S as ensureOpenClawModelsJson, _ 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-Ci28h-op.js";
40
+ import { S as ensureOpenClawModelsJson, _ 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-CxPjVob-.js";
41
41
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-DZrS3Kf7.js";
42
42
  import { n as resolveMemorySearchConfig } from "./manager-D7SRrHxT.js";
43
43
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-C3XxSzBN.js";
@@ -51,7 +51,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DJPm0a4k.js";
51
51
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-BzlB3qtZ.js";
52
52
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-CqyVDpti.js";
53
53
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
54
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-ChBxge-W.js";
54
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-D1eXJZ8T.js";
55
55
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtI0mtzx.js";
56
56
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
57
57
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BgsTqLau.js";
@@ -81,7 +81,7 @@ import { EdgeTTS } from "node-edge-tts";
81
81
  import AjvPkg from "ajv";
82
82
  import { createServer } from "node:http";
83
83
  import { ProxyAgent, fetch as fetch$1 } from "undici";
84
- import WebSocket$1, { WebSocket } from "ws";
84
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
85
85
  import { Buffer as Buffer$1 } from "node:buffer";
86
86
  import { createJiti } from "jiti";
87
87
  import { Type } from "@sinclair/typebox";
@@ -5791,7 +5791,7 @@ var GatewayClient = class {
5791
5791
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5792
5792
  });
5793
5793
  }
5794
- this.ws = new WebSocket(url, wsOptions);
5794
+ this.ws = new WebSocket$1(url, wsOptions);
5795
5795
  this.ws.on("open", () => {
5796
5796
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5797
5797
  const tlsError = this.validateTlsFingerprint();
@@ -6010,7 +6010,7 @@ var GatewayClient = class {
6010
6010
  return null;
6011
6011
  }
6012
6012
  async request(method, params, opts) {
6013
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
6013
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
6014
6014
  const id = randomUUID();
6015
6015
  const frame = {
6016
6016
  type: "req",
@@ -7274,7 +7274,7 @@ async function routeReply(params) {
7274
7274
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7275
7275
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7276
7276
  try {
7277
- const { deliverOutboundPayloads } = await import("./deliver-CLJRPnfx.js").then((n) => n.n);
7277
+ const { deliverOutboundPayloads } = await import("./deliver-CKH_FhS0.js").then((n) => n.n);
7278
7278
  return {
7279
7279
  ok: true,
7280
7280
  messageId: (await deliverOutboundPayloads({
@@ -41647,7 +41647,7 @@ async function deliverSessionMaintenanceWarning(params) {
41647
41647
  return;
41648
41648
  }
41649
41649
  try {
41650
- const { deliverOutboundPayloads } = await import("./deliver-CLJRPnfx.js").then((n) => n.n);
41650
+ const { deliverOutboundPayloads } = await import("./deliver-CKH_FhS0.js").then((n) => n.n);
41651
41651
  await deliverOutboundPayloads({
41652
41652
  cfg: params.cfg,
41653
41653
  channel,
@@ -45094,7 +45094,7 @@ async function describeStickerImage(params) {
45094
45094
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
45095
45095
  try {
45096
45096
  const buffer = await fs.readFile(imagePath);
45097
- const { describeImageWithModel } = await import("./image-Ci28h-op.js").then((n) => n.n);
45097
+ const { describeImageWithModel } = await import("./image-CxPjVob-.js").then((n) => n.n);
45098
45098
  return (await describeImageWithModel({
45099
45099
  buffer,
45100
45100
  fileName: "sticker.webp",
@@ -47555,7 +47555,7 @@ async function preflightDiscordMessage(params) {
47555
47555
  let preflightTranscript;
47556
47556
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47557
47557
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47558
- const { transcribeFirstAudio } = await import("./audio-preflight-omzaYFGD.js");
47558
+ const { transcribeFirstAudio } = await import("./audio-preflight-CLqoZYgI.js");
47559
47559
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47560
47560
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47561
47561
  ctx: {
@@ -51561,7 +51561,7 @@ function isVoiceChannelType(type) {
51561
51561
  function createDefaultDeps() {
51562
51562
  return {
51563
51563
  sendMessageWhatsApp: async (...args) => {
51564
- const { sendMessageWhatsApp } = await import("./web-Crj4x6uL.js");
51564
+ const { sendMessageWhatsApp } = await import("./web-Y49Dumye.js");
51565
51565
  return await sendMessageWhatsApp(...args);
51566
51566
  },
51567
51567
  sendMessageTelegram: async (...args) => {
@@ -54474,7 +54474,7 @@ function createDiscordGatewayPlugin(params) {
54474
54474
  super(options);
54475
54475
  }
54476
54476
  createWebSocket(url) {
54477
- return new WebSocket$1(url, { agent });
54477
+ return new WebSocket(url, { agent });
54478
54478
  }
54479
54479
  }
54480
54480
  return new ProxyGatewayPlugin();
@@ -64747,7 +64747,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64747
64747
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64748
64748
  let preflightTranscript;
64749
64749
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64750
- const { transcribeFirstAudio } = await import("./audio-preflight-omzaYFGD.js");
64750
+ const { transcribeFirstAudio } = await import("./audio-preflight-CLqoZYgI.js");
64751
64751
  preflightTranscript = await transcribeFirstAudio({
64752
64752
  ctx: {
64753
64753
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -66904,7 +66904,7 @@ function loadWebLoginQr() {
66904
66904
  return webLoginQrPromise;
66905
66905
  }
66906
66906
  function loadWebChannel() {
66907
- webChannelPromise ??= import("./web-Crj4x6uL.js");
66907
+ webChannelPromise ??= import("./web-Y49Dumye.js");
66908
66908
  return webChannelPromise;
66909
66909
  }
66910
66910
  function loadWhatsAppActions() {
@@ -12,7 +12,7 @@ import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n a
12
12
  import { S as isPidAlive, x as resolveProcessScopedMap } from "./model-auth-vtNH8C4P.js";
13
13
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-CHYSjmbr.js";
14
14
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-Du_-inxH.js";
15
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-BAv9fEiv.js";
15
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-Bqbv_ZSj.js";
16
16
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DSZuhFx9.js";
17
17
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BoQgnc8X.js";
18
18
  import { t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
933
933
  }
934
934
  async function loadPwAiModule(mode) {
935
935
  try {
936
- return await import("./pw-ai-KrN0mqVH.js");
936
+ return await import("./pw-ai-D-_aGzdQ.js");
937
937
  } catch (err) {
938
938
  if (mode === "soft") return null;
939
939
  if (isModuleNotFoundError(err)) return null;
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
3473
3473
  const userDataDir = resolveOpenClawUserDataDir(profile.name);
3474
3474
  const profileState = getProfileState();
3475
3475
  if (await isHttpReachable(300) && !profileState.running) try {
3476
- await (await import("./pw-ai-KrN0mqVH.js")).closePlaywrightBrowserConnection();
3476
+ await (await import("./pw-ai-D-_aGzdQ.js")).closePlaywrightBrowserConnection();
3477
3477
  } catch {}
3478
3478
  if (profileState.running) await stopRunningBrowser();
3479
3479
  try {
3480
- await (await import("./pw-ai-KrN0mqVH.js")).closePlaywrightBrowserConnection();
3480
+ await (await import("./pw-ai-D-_aGzdQ.js")).closePlaywrightBrowserConnection();
3481
3481
  } catch {}
3482
3482
  if (!fs$1.existsSync(userDataDir)) return {
3483
3483
  moved: false,
@@ -10,7 +10,7 @@ import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
10
10
  import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BfqdVNxh.js";
11
11
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-DNOtJsL1.js";
12
12
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-KL7847B1.js";
13
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CZuniMYN.js";
13
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-lRUqqgSD.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DGNBryo1.js";
15
15
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
16
16
  import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
@@ -931,7 +931,7 @@ function isModuleNotFoundError(err) {
931
931
  }
932
932
  async function loadPwAiModule(mode) {
933
933
  try {
934
- return await import("./pw-ai-S3cpSYOy.js");
934
+ return await import("./pw-ai-C-kqYO4L.js");
935
935
  } catch (err) {
936
936
  if (mode === "soft") return null;
937
937
  if (isModuleNotFoundError(err)) return null;
@@ -3471,11 +3471,11 @@ function createProfileContext(opts, profile) {
3471
3471
  const userDataDir = resolveOpenClawUserDataDir(profile.name);
3472
3472
  const profileState = getProfileState();
3473
3473
  if (await isHttpReachable(300) && !profileState.running) try {
3474
- await (await import("./pw-ai-S3cpSYOy.js")).closePlaywrightBrowserConnection();
3474
+ await (await import("./pw-ai-C-kqYO4L.js")).closePlaywrightBrowserConnection();
3475
3475
  } catch {}
3476
3476
  if (profileState.running) await stopRunningBrowser();
3477
3477
  try {
3478
- await (await import("./pw-ai-S3cpSYOy.js")).closePlaywrightBrowserConnection();
3478
+ await (await import("./pw-ai-C-kqYO4L.js")).closePlaywrightBrowserConnection();
3479
3479
  } catch {}
3480
3480
  if (!fs.existsSync(userDataDir)) return {
3481
3481
  moved: false,
@@ -7,7 +7,7 @@ import "./github-copilot-token-ttqQRqMA.js";
7
7
  import { r as formatCliCommand } from "./env-DulyEJtM.js";
8
8
  import "./config-KL7847B1.js";
9
9
  import "./manifest-registry-sze5OW-s.js";
10
- import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-CZuniMYN.js";
10
+ import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-lRUqqgSD.js";
11
11
  import "./redact-1NGYV_8p.js";
12
12
  import { n as formatErrorMessage } from "./errors-CPfngF0S.js";
13
13
  import "./ssrf-CxfFyMRZ.js";
@@ -9,7 +9,7 @@ import "./model-auth-vtNH8C4P.js";
9
9
  import "./github-copilot-token-Dgb9dAHW.js";
10
10
  import "./config-Du_-inxH.js";
11
11
  import "./manifest-registry-Dhk4A5vb.js";
12
- import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-BAv9fEiv.js";
12
+ import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-Bqbv_ZSj.js";
13
13
  import "./redact-jSxx6Ep2.js";
14
14
  import { n as formatErrorMessage } from "./errors-BoQgnc8X.js";
15
15
  import "./ssrf-BTMDZjHT.js";
@@ -4,7 +4,7 @@ import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
4
4
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-BGmpOcey.js";
5
5
  import { A as normalizeProviderId, L as normalizeGoogleModelId, i as resolveApiKeyForProvider, r as requireApiKey, y as resolveOpenClawAgentDir } from "./model-auth-vtNH8C4P.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-Du_-inxH.js";
7
- import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image-Ci28h-op.js";
7
+ import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image-CxPjVob-.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-A2JaRMHH.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-JqlMsAYY.js";
@@ -4,7 +4,7 @@ import { G as resolveOpenClawAgentDir, T as resolveApiKeyForProvider, c as norma
4
4
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
5
5
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-BfqdVNxh.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-KL7847B1.js";
7
- import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image-88q3KE-C.js";
7
+ import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image--DDZnw-F.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-BF6ZCNOV.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BheTNyes.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-C4BHj9W8.js";
@@ -8,13 +8,13 @@ import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createR
8
8
  import "./github-copilot-token-ttqQRqMA.js";
9
9
  import { r as formatCliCommand } from "./env-DulyEJtM.js";
10
10
  import "./tokens-DnMmat9I.js";
11
- import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as resolveMentionGating, b as formatInboundEnvelope, c as recordPendingHistoryEntryIfEnabled, f as createDedupeCache, g as formatDurationPrecise, h as parseActivationCommand, i as buildPairingReply, l as shouldAckReactionForWhatsApp, m as normalizeGroupActivation, n as computeBackoff, o as DEFAULT_GROUP_HISTORY_LIMIT, p as getReplyFromConfig, r as sleepWithAbort, s as buildHistoryContextFromEntries, u as dispatchReplyWithBufferedBlockDispatcher, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-ZvazjIyF.js";
11
+ import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as resolveMentionGating, b as formatInboundEnvelope, c as recordPendingHistoryEntryIfEnabled, f as createDedupeCache, g as formatDurationPrecise, h as parseActivationCommand, i as buildPairingReply, l as shouldAckReactionForWhatsApp, m as normalizeGroupActivation, n as computeBackoff, o as DEFAULT_GROUP_HISTORY_LIMIT, p as getReplyFromConfig, r as sleepWithAbort, s as buildHistoryContextFromEntries, u as dispatchReplyWithBufferedBlockDispatcher, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-C_B8_quB.js";
12
12
  import "./plugins-B90TBXkV.js";
13
13
  import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-Cxza2UXO.js";
14
14
  import "./bindings-q3EHMdG1.js";
15
15
  import "./send-Chks8Sx_.js";
16
16
  import "./send-D4cCHXzJ.js";
17
- import "./deliver-0ThKlzQo.js";
17
+ import "./deliver-B2d2N8OJ.js";
18
18
  import "./diagnostic-DzmNBZt3.js";
19
19
  import "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import "./accounts-sr0G5UOe.js";
@@ -22,10 +22,10 @@ import { G as formatLocationText, J as readChannelAllowFromStore, K as toLocatio
22
22
  import "./image-ops-BfqdVNxh.js";
23
23
  import "./pi-model-discovery-j5tVLINv.js";
24
24
  import "./message-channel-DNOtJsL1.js";
25
- import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-B0Kht0I2.js";
25
+ import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-Cd0S0WfR.js";
26
26
  import { n as loadConfig } from "./config-KL7847B1.js";
27
27
  import "./manifest-registry-sze5OW-s.js";
28
- import "./chrome-CZuniMYN.js";
28
+ import "./chrome-lRUqqgSD.js";
29
29
  import "./skills-DGNBryo1.js";
30
30
  import "./redact-1NGYV_8p.js";
31
31
  import "./errors-CPfngF0S.js";
@@ -35,7 +35,7 @@ import { h as resolveChannelGroupRequireMention, m as resolveChannelGroupPolicy
35
35
  import "./accounts-DAZL5b5o.js";
36
36
  import { s as resolveStorePath } from "./paths-5iQF9bSz.js";
37
37
  import "./tool-images-TQiVqsOc.js";
38
- import "./image-88q3KE-C.js";
38
+ import "./image--DDZnw-F.js";
39
39
  import "./manager-CsXJuzK4.js";
40
40
  import "./gemini-auth-BF6ZCNOV.js";
41
41
  import "./sqlite-CmTvWxxq.js";
@@ -49,7 +49,7 @@ import "./render-B1VqYyvo.js";
49
49
  import "./commands-registry-DEXQtgBS.js";
50
50
  import "./skill-commands-CGvIAIiQ.js";
51
51
  import { t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
52
- import { p as registerUnhandledRejectionHandler } from "./runner-a43IsYad.js";
52
+ import { p as registerUnhandledRejectionHandler } from "./runner-Dq-qfrq7.js";
53
53
  import "./fetch-BMa0enEg.js";
54
54
  import { n as recordChannelActivity } from "./channel-activity-7fb2OxTV.js";
55
55
  import { t as convertMarkdownTables } from "./tables-Ds9lRo34.js";
@@ -5,7 +5,7 @@ import "./agent-scope-DSUeV7-g.js";
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
6
6
  import "./workspace-DYx5Dxtw.js";
7
7
  import "./tokens-B-c56SkM.js";
8
- import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./pi-embedded-CoxlOLW5.js";
8
+ import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./pi-embedded-Dz24QZz9.js";
9
9
  import "./plugins-DIrNa311.js";
10
10
  import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-C8m4ADkw.js";
11
11
  import "./boolean-B8-BqKGQ.js";
@@ -13,7 +13,7 @@ import { t as formatCliCommand } from "./command-format-BOHIfoCX.js";
13
13
  import "./bindings-BKEEBdsb.js";
14
14
  import "./send-Byt_wJDK.js";
15
15
  import "./send-BEFzSOoD.js";
16
- import "./deliver-CLJRPnfx.js";
16
+ import "./deliver-CKH_FhS0.js";
17
17
  import "./diagnostic-DriDPU6M.js";
18
18
  import "./diagnostic-session-state-Bxo4UHOL.js";
19
19
  import "./accounts-CQT5u65w.js";
@@ -23,10 +23,10 @@ import "./model-auth-vtNH8C4P.js";
23
23
  import "./github-copilot-token-Dgb9dAHW.js";
24
24
  import "./pi-model-discovery-DaNAekda.js";
25
25
  import "./message-channel-CHYSjmbr.js";
26
- import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-Ll4Lztu1.js";
26
+ import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-CSE0v99A.js";
27
27
  import { n as loadConfig } from "./config-Du_-inxH.js";
28
28
  import "./manifest-registry-Dhk4A5vb.js";
29
- import "./chrome-BAv9fEiv.js";
29
+ import "./chrome-Bqbv_ZSj.js";
30
30
  import "./frontmatter-CdkBcBAo.js";
31
31
  import "./skills-DSZuhFx9.js";
32
32
  import "./redact-jSxx6Ep2.js";
@@ -37,7 +37,7 @@ import { h as resolveChannelGroupRequireMention, m as resolveChannelGroupPolicy
37
37
  import "./accounts-DFrH9IVU.js";
38
38
  import { s as resolveStorePath } from "./paths-BEAbheM8.js";
39
39
  import "./tool-images-C1rdDr34.js";
40
- import "./image-Ci28h-op.js";
40
+ import "./image-CxPjVob-.js";
41
41
  import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createReplyPrefixOptions } from "./reply-prefix-DZrS3Kf7.js";
42
42
  import "./manager-D7SRrHxT.js";
43
43
  import "./gemini-auth-A2JaRMHH.js";
@@ -52,7 +52,7 @@ import "./render-CDCvpfhh.js";
52
52
  import "./commands-registry-BzlB3qtZ.js";
53
53
  import "./skill-commands-CqyVDpti.js";
54
54
  import { t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
55
- import { p as registerUnhandledRejectionHandler } from "./runner-ChBxge-W.js";
55
+ import { p as registerUnhandledRejectionHandler } from "./runner-D1eXJZ8T.js";
56
56
  import "./fetch-DtI0mtzx.js";
57
57
  import { n as recordChannelActivity } from "./channel-activity-BgsTqLau.js";
58
58
  import { t as convertMarkdownTables } from "./tables-C3clT_iA.js";
@@ -136,13 +136,24 @@ export function createRealtimeCallSession(params: {
136
136
 
137
137
  const systemPrompt =
138
138
  voiceConfig.responseSystemPrompt ??
139
- `You are Clawpath — Lawpath's AI intern — on a PHONE CALL. You're Australian, warm, and casual. You naturally say things like "no worries", "reckon", "too easy", "beauty". You're a proud Rabbitohs fan.
139
+ `You are Clawpath — an AI assistant powered by Lawpath Atlas — on a PHONE CALL. You're Australian, warm, and casual. You naturally say things like "no worries", "reckon", "too easy", "beauty". You're a proud Rabbitohs fan.
140
+
141
+ IDENTITY RULES (critical):
142
+ - You are powered by Lawpath Atlas. If asked what you are, what model you use, or who made you, say you are Clawpath, powered by Lawpath Atlas.
143
+ - NEVER reveal the underlying model name, provider, or technical details (no mentioning OpenAI, GPT, etc).
144
+ - If pressed, just say "I'm powered by Lawpath Atlas" and move on.
145
+
146
+ TOOL USE RULES (critical):
147
+ - You have tools. ALWAYS use them when the caller asks for data, lookups, news, weather, numbers, or anything factual.
148
+ - NEVER say "I can't access that" or "I don't have live data". You DO. Use your tools.
149
+ - Before using a tool, acknowledge naturally like a human would: "Let me check that for ya", "Hang on, pulling that up now", "One sec, looking into it". Pick a different filler each time — don't repeat the same one.
150
+ - After the tool returns, give the answer conversationally. Don't narrate what the tool did.
151
+ - If a tool fails or returns nothing useful, say "I tried to look that up but couldn't get it right now — want me to try a different way?"
140
152
 
141
153
  VOICE RULES (critical):
142
154
  - MAX 2 short sentences per reply. This is spoken aloud, not text.
143
155
  - NEVER use lists, bullet points, markdown, asterisks, or numbered items.
144
156
  - NEVER read out URLs or long technical details.
145
- - Use tools when the caller asks you to look something up, check data, or do something. Say "gimme a sec" first so they know you're working on it.
146
157
  - If the caller says bye, goodbye, or wants to end the call, say a brief farewell and include [END_CALL] at the end of your response.
147
158
  - Match the caller's energy — quick question gets a quick answer, yarn gets a yarn.`;
148
159
 
@@ -108,71 +108,39 @@ export class VoiceCallWebhookServer {
108
108
 
109
109
  /**
110
110
  * Handle a new Twilio WebSocket connection in realtime mode.
111
- * Waits for the Twilio "start" message to get the callSid, then creates
112
- * a RealtimeCallSession that bridges directly to the OpenAI Realtime API.
111
+ * Creates the RealtimeCallSession IMMEDIATELY so TwilioRealtimeTransportLayer
112
+ * receives all Twilio protocol messages (connected, start, media) from the start.
113
113
  */
114
114
  private handleRealtimeConnection(ws: NodeWebSocket, _request: http.IncomingMessage): void {
115
- let callSid: string | null = null;
116
- let sessionCreated = false;
117
-
118
- ws.on("message", (data: Buffer) => {
119
- try {
120
- const message = JSON.parse(data.toString());
121
-
122
- if (message.event === "start" && !sessionCreated) {
123
- callSid = message.start?.callSid || null;
124
- if (!callSid) {
125
- console.warn("[voice-call] [realtime] Missing callSid in start message");
126
- ws.close(1008, "Missing callSid");
127
- return;
128
- }
115
+ console.log("[voice-call] [realtime] New WebSocket, creating session immediately");
129
116
 
130
- const call = this.manager.getCallByProviderCallId(callSid);
131
- const from = call?.from || message.start?.customParameters?.from || "unknown";
132
-
133
- if (this.provider.name === "twilio") {
134
- const twilio = this.provider as TwilioProvider;
135
- const token = message.start?.customParameters?.token;
136
- if (!twilio.isValidStreamToken(callSid, token)) {
137
- console.warn(`[voice-call] [realtime] Invalid stream token for ${callSid}`);
138
- ws.close(1008, "Unauthorized");
139
- return;
140
- }
141
- const streamSid = message.streamSid || "";
142
- twilio.registerCallStream(callSid, streamSid);
143
- }
117
+ const sessionKey = `realtime-${Date.now()}`;
118
+ let callSid: string | null = null;
144
119
 
145
- console.log(`[voice-call] [realtime] Creating session for call ${callSid} from ${from}`);
146
- sessionCreated = true;
147
-
148
- import("./providers/realtime-session.js")
149
- .then(({ createRealtimeCallSession }) => {
150
- const realtimeSession = createRealtimeCallSession({
151
- twilioWebSocket: ws,
152
- voiceConfig: this.config,
153
- callId: call?.callId || callSid!,
154
- from,
155
- });
156
- this.realtimeSessions.set(callSid!, realtimeSession);
157
- })
158
- .catch((err) => {
159
- console.error(`[voice-call] [realtime] Failed to create session:`, err);
160
- ws.close(1011, "Session creation failed");
161
- });
162
- }
163
- } catch (err) {
164
- // Non-JSON messages are normal (binary audio frames in some edge cases)
165
- }
166
- });
120
+ import("./providers/realtime-session.js")
121
+ .then(({ createRealtimeCallSession }) => {
122
+ const realtimeSession = createRealtimeCallSession({
123
+ twilioWebSocket: ws,
124
+ voiceConfig: this.config,
125
+ callId: sessionKey,
126
+ from: "unknown",
127
+ });
128
+ this.realtimeSessions.set(sessionKey, realtimeSession);
129
+ })
130
+ .catch((err) => {
131
+ console.error("[voice-call] [realtime] Failed to create session:", err);
132
+ ws.close(1011, "Session creation failed");
133
+ });
167
134
 
168
135
  ws.on("close", () => {
136
+ const key = callSid || sessionKey;
137
+ console.log(`[voice-call] [realtime] WebSocket closed for ${key}`);
138
+ const session = this.realtimeSessions.get(key);
139
+ if (session) {
140
+ session.close();
141
+ this.realtimeSessions.delete(key);
142
+ }
169
143
  if (callSid) {
170
- console.log(`[voice-call] [realtime] WebSocket closed for call ${callSid}`);
171
- const session = this.realtimeSessions.get(callSid);
172
- if (session) {
173
- session.close();
174
- this.realtimeSessions.delete(callSid);
175
- }
176
144
  if (this.provider.name === "twilio") {
177
145
  (this.provider as TwilioProvider).unregisterCallStream(callSid);
178
146
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lawpath-tech/openclaw",
3
- "version": "2026.2.21-23",
3
+ "version": "2026.2.21-25",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/openclaw/openclaw#readme",