@lawpath-tech/openclaw 2026.2.21-27 → 2026.2.21-28

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 (148) hide show
  1. package/dist/{accounts-DQo5uGA3.js → accounts-C8m4ADkw.js} +14 -14
  2. package/dist/{accounts-CJEDkyd7.js → accounts-CQT5u65w.js} +1 -1
  3. package/dist/{accounts-CaJg9v7D.js → accounts-DFrH9IVU.js} +1 -1
  4. package/dist/{active-listener-Bhmh-BBe.js → active-listener-BKTctYlH.js} +1 -1
  5. package/dist/{agent-scope-DiO1KimT.js → agent-scope-DSUeV7-g.js} +3 -3
  6. package/dist/{audio-preflight-PCEdzoV0.js → audio-preflight-CLqoZYgI.js} +29 -29
  7. package/dist/{audio-preflight-CODznzqu.js → audio-preflight-Da7vejCH.js} +4 -4
  8. package/dist/{bindings-CEJk9Gww.js → bindings-BKEEBdsb.js} +2 -2
  9. package/dist/build-info.json +3 -3
  10. package/dist/bundled/boot-md/handler.js +53 -53
  11. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  12. package/dist/bundled/command-logger/handler.js +1 -1
  13. package/dist/bundled/session-memory/handler.js +53 -53
  14. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  15. package/dist/{channel-activity-pOw1s-fe.js → channel-activity-BgsTqLau.js} +1 -1
  16. package/dist/{chrome-DcmLXeT1.js → chrome-Bqbv_ZSj.js} +20 -20
  17. package/dist/{chrome-lRUqqgSD.js → chrome-CZuniMYN.js} +7 -7
  18. package/dist/{chunk-BkGjWi6P.js → chunk-fZrBDWYg.js} +1 -1
  19. package/dist/{command-format-CM0AxuCk.js → command-format-BOHIfoCX.js} +1 -1
  20. package/dist/{commands-registry-C0QzohKU.js → commands-registry-BzlB3qtZ.js} +4 -4
  21. package/dist/{config-7ClJ9IDt.js → config-Du_-inxH.js} +12 -12
  22. package/dist/{deliver-B2d2N8OJ.js → deliver-0ThKlzQo.js} +1 -1
  23. package/dist/{deliver-RhV3c93M.js → deliver-CKH_FhS0.js} +20 -20
  24. package/dist/{diagnostic-DTfVTKJM.js → diagnostic-DriDPU6M.js} +1 -1
  25. package/dist/extensionAPI.js +6 -6
  26. package/dist/{frontmatter-Dab6NVCF.js → frontmatter-CdkBcBAo.js} +2 -2
  27. package/dist/{gemini-auth-CnEqRhSo.js → gemini-auth-A2JaRMHH.js} +1 -1
  28. package/dist/{github-copilot-token-DAycnoAs.js → github-copilot-token-Dgb9dAHW.js} +7 -7
  29. package/dist/{image--DDZnw-F.js → image-88q3KE-C.js} +1 -1
  30. package/dist/{image-COCyG_gz.js → image-CxPjVob-.js} +4 -4
  31. package/dist/{image-ops-D-bh1BTN.js → image-ops-BGmpOcey.js} +1 -1
  32. package/dist/{ir-j1Xb0PNv.js → ir-DJPm0a4k.js} +4 -4
  33. package/dist/llm-slug-generator.js +53 -53
  34. package/dist/{local-roots-Dx32AY60.js → local-roots-JqlMsAYY.js} +5 -5
  35. package/dist/{login-CLQskGt7.js → login-DXtAIVXy.js} +7 -7
  36. package/dist/{login-qr-CxZVehrh.js → login-qr-D0A3WDBN.js} +12 -12
  37. package/dist/{manager-C6KdjXEH.js → manager-D7SRrHxT.js} +13 -13
  38. package/dist/{manifest-registry-D31TP66o.js → manifest-registry-Dhk4A5vb.js} +19 -19
  39. package/dist/{markdown-tables-BOmw5zkp.js → markdown-tables-DpVJE0eA.js} +1 -1
  40. package/dist/{plugin-sdk/message-channel-DY9wVB2A.js → message-channel-CHYSjmbr.js} +1 -1
  41. package/dist/{model-auth-C-Vzzybi.js → model-auth-vtNH8C4P.js} +9 -9
  42. package/dist/{outbound-Bk0PGZ1q.js → outbound-BWgFha97.js} +7 -7
  43. package/dist/{outbound-attachment-CHLSsIj_.js → outbound-attachment-B8WHzsCX.js} +2 -2
  44. package/dist/{paths-Cv2Q0cX2.js → paths-BEAbheM8.js} +1 -1
  45. package/dist/{paths-CkkDESQ2.js → paths-CyR9Pa1R.js} +5 -5
  46. package/dist/{pi-auth-json-DzcwV2uo.js → pi-auth-json-BiwfFswL.js} +8 -8
  47. package/dist/{pi-embedded-13CLN75T.js → pi-embedded-Dz24QZz9.js} +162 -162
  48. package/dist/{pi-embedded-C_B8_quB.js → pi-embedded-ZvazjIyF.js} +16 -16
  49. package/dist/{pi-embedded-helpers-Cd0S0WfR.js → pi-embedded-helpers-B0Kht0I2.js} +4 -4
  50. package/dist/{pi-embedded-helpers-HpusHn6J.js → pi-embedded-helpers-CSE0v99A.js} +52 -52
  51. package/dist/plugin-sdk/{accounts-fnLsjAOi.js → accounts-Ciwy7Yxd.js} +3 -3
  52. package/dist/plugin-sdk/{accounts-BcQo4OUu.js → accounts-DUBJHEgi.js} +1 -1
  53. package/dist/plugin-sdk/{accounts-DEsAwvaZ.js → accounts-wSu5JyDM.js} +1 -1
  54. package/dist/plugin-sdk/{active-listener-CeaKSm29.js → active-listener-Bnau4oiu.js} +1 -1
  55. package/dist/plugin-sdk/{agent-scope-D5PlT0Z0.js → agent-scope-cT7IxdHY.js} +2 -2
  56. package/dist/plugin-sdk/{api-key-rotation-B3O1qn0m.js → api-key-rotation-ElOMCP9r.js} +1 -1
  57. package/dist/plugin-sdk/{audio-preflight-CYSy3uuZ.js → audio-preflight-DtozH3sJ.js} +24 -24
  58. package/dist/plugin-sdk/{bindings-C0XEX0yK.js → bindings-CKqdifyU.js} +2 -2
  59. package/dist/plugin-sdk/{channel-activity-WgE8Z4Bb.js → channel-activity-CCnr-9bS.js} +1 -1
  60. package/dist/plugin-sdk/{channel-web-Nw-bUgtV.js → channel-web-BHNS_E7F.js} +22 -22
  61. package/dist/plugin-sdk/{chrome-C1xnOQsc.js → chrome-BO7SUTgY.js} +3 -3
  62. package/dist/plugin-sdk/{chunk-CQk9vawA.js → chunk-DyzO7IVo.js} +1 -1
  63. package/dist/plugin-sdk/{command-format-DHXa0Clc.js → command-format-DcBXOX9Z.js} +1 -1
  64. package/dist/plugin-sdk/{commands-registry-yTZdwtLj.js → commands-registry-BsSKPwgj.js} +4 -4
  65. package/dist/plugin-sdk/{config--kW4R0el.js → config-9OZuRn0C.js} +9 -9
  66. package/dist/plugin-sdk/{deliver-C2gjA_UH.js → deliver-BO_wt0wd.js} +10 -10
  67. package/dist/plugin-sdk/{diagnostic-Up1aMyxZ.js → diagnostic-DKyVS3IK.js} +1 -1
  68. package/dist/plugin-sdk/{image-Bcc99tVA.js → image-C31B_R8P.js} +4 -4
  69. package/dist/plugin-sdk/{image-ops-C6RLbtSJ.js → image-ops-B8aJIly2.js} +1 -1
  70. package/dist/plugin-sdk/index.js +53 -53
  71. package/dist/plugin-sdk/{ir-Cwi1KVG5.js → ir-CD5VqKGg.js} +4 -4
  72. package/dist/plugin-sdk/{local-roots-6BSl8AoA.js → local-roots-D4PCK2jj.js} +3 -3
  73. package/dist/plugin-sdk/{login-Cau5eVVj.js → login-CW17h3xU.js} +7 -7
  74. package/dist/plugin-sdk/{login-qr-CLWtfA9m.js → login-qr-CMdk06CS.js} +9 -9
  75. package/dist/plugin-sdk/{manager-C3Eb_8Hz.js → manager-CZPPxI6R.js} +8 -8
  76. package/dist/plugin-sdk/{manifest-registry-DvEm2HHf.js → manifest-registry-sgHvjA6E.js} +1 -1
  77. package/dist/plugin-sdk/{markdown-tables-cJqvQe9j.js → markdown-tables-Bo-r4msS.js} +1 -1
  78. package/dist/{message-channel-BckS8bQ9.js → plugin-sdk/message-channel-DmB4bGFh.js} +1 -1
  79. package/dist/plugin-sdk/{model-selection-BjVTBZiY.js → model-selection-CXooYLb2.js} +4 -4
  80. package/dist/plugin-sdk/{outbound-attachment-CsmRyZPI.js → outbound-attachment-CCxMtk8m.js} +2 -2
  81. package/dist/plugin-sdk/{outbound-Co1QSkdS.js → outbound-dAcQHyyr.js} +7 -7
  82. package/dist/plugin-sdk/{pi-auth-json-DfEOhoTK.js → pi-auth-json-C-euHc3x.js} +5 -5
  83. package/dist/plugin-sdk/{pi-embedded-helpers-D3EACnFn.js → pi-embedded-helpers-DU0nLxRU.js} +17 -17
  84. package/dist/plugin-sdk/{plugins-Dyz98ZJX.js → plugins-DIzw7Ncy.js} +4 -4
  85. package/dist/plugin-sdk/{pw-ai-smoXiGqZ.js → pw-ai-CYmDAwXD.js} +8 -8
  86. package/dist/plugin-sdk/{qmd-manager-CUhJ7WG2.js → qmd-manager-DQiT4WTr.js} +4 -4
  87. package/dist/plugin-sdk/{registry-DL-33c9X.js → registry-O1yza0Vh.js} +2 -2
  88. package/dist/{replies-DuQ9MtQM.js → plugin-sdk/replies-Bnu7HnvW.js} +3 -3
  89. package/dist/plugin-sdk/{reply-Cb54ddUA.js → reply-DEepmBkT.js} +78 -78
  90. package/dist/plugin-sdk/{reply-prefix-5vdbga0R.js → reply-prefix-BF0omhZE.js} +1 -1
  91. package/dist/plugin-sdk/{resolve-outbound-target-CP7QDN14.js → resolve-outbound-target-DzZIT1V1.js} +2 -2
  92. package/dist/plugin-sdk/{resolve-route-eopifBrM.js → resolve-route-B63ztF-V.js} +3 -3
  93. package/dist/plugin-sdk/{retry-5P3d0rYw.js → retry-JFNwfUew.js} +1 -1
  94. package/dist/plugin-sdk/{runner-DqwPn56n.js → runner-DztRiWhh.js} +9 -9
  95. package/dist/plugin-sdk/{send-DnFB-v5n.js → send-CK3DCPv-.js} +6 -6
  96. package/dist/plugin-sdk/{send-D_X6p9H0.js → send-D-spKwjf.js} +10 -10
  97. package/dist/plugin-sdk/{send-PPtjKj-0.js → send-D1C2sJG1.js} +7 -7
  98. package/dist/plugin-sdk/{send-C2NQjVF9.js → send-DEV4iiFj.js} +10 -10
  99. package/dist/plugin-sdk/{send-_uj_NuFI.js → send-DrYvH25B.js} +6 -6
  100. package/dist/plugin-sdk/{session-CZngPTYk.js → session-DRJl5tKC.js} +4 -4
  101. package/dist/plugin-sdk/{skill-commands-Cr54qPdy.js → skill-commands-Dv5AeOZQ.js} +5 -5
  102. package/dist/plugin-sdk/{skills-Dcu4o-9l.js → skills-5hEda4_Y.js} +7 -7
  103. package/dist/plugin-sdk/{sqlite-ulpcowfN.js → sqlite-DUu0dwic.js} +1 -1
  104. package/dist/plugin-sdk/{store-EUYCRBvs.js → store-DoRXD0QB.js} +2 -2
  105. package/dist/plugin-sdk/{subsystem-C9WnrKN8.js → subsystem-C4Rh0kdL.js} +1 -1
  106. package/dist/plugin-sdk/{tables-CMdQECje.js → tables-C_81Ve2l.js} +1 -1
  107. package/dist/{target-errors-DD2466Y6.js → plugin-sdk/target-errors-C638yp2-.js} +2 -2
  108. package/dist/plugin-sdk/{thinking-C7zYA2s9.js → thinking-DexKPSsI.js} +5 -5
  109. package/dist/{tokens-GCiqN5mi.js → plugin-sdk/tokens-K9ITCatc.js} +1 -1
  110. package/dist/{tool-images-D0sBSASn.js → plugin-sdk/tool-images-BvjD_HnR.js} +2 -2
  111. package/dist/plugin-sdk/{tool-loop-detection-D0ADW0h2.js → tool-loop-detection-BBRtoox8.js} +2 -2
  112. package/dist/plugin-sdk/web-DBo-6RyH.js +65 -0
  113. package/dist/plugin-sdk/{whatsapp-actions-DC4RRNqv.js → whatsapp-actions-D8i2vCxS.js} +21 -21
  114. package/dist/{plugins-Bf_qBfZ7.js → plugins-DIrNa311.js} +9 -9
  115. package/dist/{pw-ai-B4NkhpRH.js → pw-ai-D-_aGzdQ.js} +11 -11
  116. package/dist/{pw-ai-C-kqYO4L.js → pw-ai-S3cpSYOy.js} +1 -1
  117. package/dist/{qmd-manager-DVrv2Huu.js → qmd-manager-DePh-PT0.js} +7 -7
  118. package/dist/{registry-wimgwqAA.js → registry-DpeZG5fo.js} +18 -18
  119. package/dist/{plugin-sdk/replies-Bkaifx0j.js → replies-CSVWkVda.js} +3 -3
  120. package/dist/{reply-prefix-B_1VtLm5.js → reply-prefix-DZrS3Kf7.js} +1 -1
  121. package/dist/{resolve-route-CSE9DZsB.js → resolve-route-1ar2IrQt.js} +4 -4
  122. package/dist/{retry-DwLEH9x4.js → retry-Bdu4_ZcT.js} +1 -1
  123. package/dist/{runner-BjLlUYe1.js → runner-D1eXJZ8T.js} +9 -9
  124. package/dist/{runner-Dq-qfrq7.js → runner-a43IsYad.js} +1 -1
  125. package/dist/{send-DrfA4RxA.js → send-BEFzSOoD.js} +10 -10
  126. package/dist/{send-CEP4RX_l.js → send-BeWYOs1x.js} +7 -7
  127. package/dist/{send-CMeyW_Bu.js → send-Byt_wJDK.js} +6 -6
  128. package/dist/{send-CdIaqNP6.js → send-CWtaJF1G.js} +18 -18
  129. package/dist/{send-BCt1G0xY.js → send-DPVf5tQ4.js} +6 -6
  130. package/dist/{session-CQ9JJgSo.js → session-Bnp7PC7f.js} +8 -8
  131. package/dist/{skill-commands-CwFNOYqC.js → skill-commands-CqyVDpti.js} +9 -9
  132. package/dist/{skills-C8xf0p1B.js → skills-DSZuhFx9.js} +21 -21
  133. package/dist/{sqlite-B6SD9PTM.js → sqlite-C3XxSzBN.js} +4 -4
  134. package/dist/{store-VFVAfYgh.js → store-BrNiRjgB.js} +2 -2
  135. package/dist/{subsystem-BEdh_1O5.js → subsystem-BF9jT_Nw.js} +1 -1
  136. package/dist/{tables-QNO5uMcm.js → tables-C3clT_iA.js} +1 -1
  137. package/dist/{plugin-sdk/target-errors-CrR2lAF7.js → target-errors-ChHV8dPI.js} +2 -2
  138. package/dist/{thinking-BZFf1juV.js → thinking-Dg8vKjw_.js} +5 -5
  139. package/dist/{plugin-sdk/tokens-2475WU2Z.js → tokens-B-c56SkM.js} +1 -1
  140. package/dist/{plugin-sdk/tool-images-DCvC8yL7.js → tool-images-C1rdDr34.js} +2 -2
  141. package/dist/{tool-loop-detection-BPAeTbUj.js → tool-loop-detection-Bu3OGskw.js} +3 -3
  142. package/dist/{web-DiYh3u92.js → web-CVSol55V.js} +6 -6
  143. package/dist/{web-5rulK8WV.js → web-Y49Dumye.js} +57 -57
  144. package/dist/{whatsapp-actions-kX73ghOz.js → whatsapp-actions-DFZYzkBp.js} +23 -23
  145. package/dist/{workspace-CH9k4Qgz.js → workspace-DYx5Dxtw.js} +6 -6
  146. package/extensions/voice-call/src/providers/realtime-session.ts +1 -1
  147. package/package.json +1 -1
  148. package/dist/plugin-sdk/web-BVkjyY4A.js +0 -65
@@ -1,16 +1,16 @@
1
- import { S as CONFIG_DIR } from "./registry-wimgwqAA.js";
2
- import { t as createSubsystemLogger } from "./subsystem-BEdh_1O5.js";
3
- import { n as loadConfig } from "./config-7ClJ9IDt.js";
1
+ import { S as CONFIG_DIR } from "./registry-DpeZG5fo.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
3
+ import { n as loadConfig } from "./config-Du_-inxH.js";
4
4
  import { i as isErrno } from "./errors-BoQgnc8X.js";
5
5
  import { a as resolvePinnedHostnameWithPolicy } from "./ssrf-BTMDZjHT.js";
6
6
  import fs from "node:fs/promises";
7
7
  import os from "node:os";
8
8
  import path from "node:path";
9
- import fsSync from "node:fs";
9
+ 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
  });
@@ -1007,7 +1007,7 @@ const CHROMIUM_EXE_NAMES = new Set([
1007
1007
  ]);
1008
1008
  function exists$1(filePath) {
1009
1009
  try {
1010
- return fsSync.existsSync(filePath);
1010
+ return fs$1.existsSync(filePath);
1011
1011
  } catch {
1012
1012
  return false;
1013
1013
  }
@@ -1150,7 +1150,7 @@ function findDesktopFilePath(desktopId) {
1150
1150
  }
1151
1151
  function readDesktopExecLine(desktopPath) {
1152
1152
  try {
1153
- const lines = fsSync.readFileSync(desktopPath, "utf8").split(/\r?\n/);
1153
+ const lines = fs$1.readFileSync(desktopPath, "utf8").split(/\r?\n/);
1154
1154
  for (const line of lines) if (line.startsWith("Exec=")) return line.slice(5).trim();
1155
1155
  } catch {}
1156
1156
  return null;
@@ -1437,8 +1437,8 @@ function decoratedMarkerPath(userDataDir) {
1437
1437
  }
1438
1438
  function safeReadJson(filePath) {
1439
1439
  try {
1440
- if (!fsSync.existsSync(filePath)) return null;
1441
- const raw = fsSync.readFileSync(filePath, "utf-8");
1440
+ if (!fs$1.existsSync(filePath)) return null;
1441
+ const raw = fs$1.readFileSync(filePath, "utf-8");
1442
1442
  const parsed = JSON.parse(raw);
1443
1443
  if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return null;
1444
1444
  return parsed;
@@ -1447,8 +1447,8 @@ function safeReadJson(filePath) {
1447
1447
  }
1448
1448
  }
1449
1449
  function safeWriteJson(filePath, data) {
1450
- fsSync.mkdirSync(path.dirname(filePath), { recursive: true });
1451
- fsSync.writeFileSync(filePath, JSON.stringify(data, null, 2));
1450
+ fs$1.mkdirSync(path.dirname(filePath), { recursive: true });
1451
+ fs$1.writeFileSync(filePath, JSON.stringify(data, null, 2));
1452
1452
  }
1453
1453
  function setDeep(obj, keys, value) {
1454
1454
  let node = obj;
@@ -1575,7 +1575,7 @@ function decorateOpenClawProfile(userDataDir, opts) {
1575
1575
  }
1576
1576
  safeWriteJson(preferencesPath, prefs);
1577
1577
  try {
1578
- fsSync.writeFileSync(decoratedMarkerPath(userDataDir), `${Date.now()}\n`, "utf-8");
1578
+ fs$1.writeFileSync(decoratedMarkerPath(userDataDir), `${Date.now()}\n`, "utf-8");
1579
1579
  } catch {}
1580
1580
  }
1581
1581
  function ensureProfileCleanExit(userDataDir) {
@@ -1591,7 +1591,7 @@ function ensureProfileCleanExit(userDataDir) {
1591
1591
  const log = createSubsystemLogger("browser").child("chrome");
1592
1592
  function exists(filePath) {
1593
1593
  try {
1594
- return fsSync.existsSync(filePath);
1594
+ return fs$1.existsSync(filePath);
1595
1595
  } catch {
1596
1596
  return false;
1597
1597
  }
@@ -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
  });
@@ -1671,7 +1671,7 @@ async function launchOpenClawChrome(resolved, profile) {
1671
1671
  const exe = resolveBrowserExecutable(resolved);
1672
1672
  if (!exe) throw new Error("No supported browser found (Chrome/Brave/Edge/Chromium on macOS, Linux, or Windows).");
1673
1673
  const userDataDir = resolveOpenClawUserDataDir(profile.name);
1674
- fsSync.mkdirSync(userDataDir, { recursive: true });
1674
+ fs$1.mkdirSync(userDataDir, { recursive: true });
1675
1675
  const needsDecorate = !isProfileDecorated(userDataDir, profile.name, (profile.color ?? DEFAULT_OPENCLAW_BROWSER_COLOR).toUpperCase());
1676
1676
  const spawnOnce = () => {
1677
1677
  const args = [
@@ -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, { WebSocketServer } from "ws";
13
+ import WebSocket$1, { 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.OPEN) throw new Error("Chrome extension not connected");
181
+ if (!ws || ws.readyState !== WebSocket$1.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.OPEN) continue;
198
+ if (ws.readyState !== WebSocket$1.OPEN) continue;
199
199
  ws.send(msg);
200
200
  }
201
201
  };
202
202
  const sendResponseToCdp = (ws, res) => {
203
- if (ws.readyState !== WebSocket.OPEN) return;
203
+ if (ws.readyState !== WebSocket$1.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.OPEN) return;
428
+ if (ws.readyState !== WebSocket$1.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(wsUrl, {
746
+ const ws = new WebSocket$1(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(wsUrl, {
1640
+ const ws = new WebSocket$1(wsUrl, {
1641
1641
  handshakeTimeout: timeoutMs,
1642
1642
  ...Object.keys(headers).length ? { headers } : {}
1643
1643
  });
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
3
- import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-BckS8bQ9.js";
3
+ import { t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-CHYSjmbr.js";
4
4
 
5
5
  //#region src/markdown/fences.ts
6
6
  function parseFenceSpans(buffer) {
@@ -1,4 +1,4 @@
1
- import { t as createSubsystemLogger } from "./subsystem-BEdh_1O5.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
2
2
  import { t as parseBooleanValue } from "./boolean-B8-BqKGQ.js";
3
3
  import path from "node:path";
4
4
 
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { D as escapeRegExp, W as isPlainObject, c as getActivePluginRegistry } from "./registry-wimgwqAA.js";
3
- import { r as normalizeChannelId } from "./plugins-Bf_qBfZ7.js";
4
- import { G as DEFAULT_MODEL, K as DEFAULT_PROVIDER, M as resolveConfiguredModelRef } from "./model-auth-C-Vzzybi.js";
5
- import { f as listChannelDocks, r as listThinkingLevels } from "./thinking-BZFf1juV.js";
2
+ import { D as escapeRegExp, W as isPlainObject, c as getActivePluginRegistry } from "./registry-DpeZG5fo.js";
3
+ import { r as normalizeChannelId } from "./plugins-DIrNa311.js";
4
+ import { G as DEFAULT_MODEL, K as DEFAULT_PROVIDER, M as resolveConfiguredModelRef } from "./model-auth-vtNH8C4P.js";
5
+ import { f as listChannelDocks, r as listThinkingLevels } from "./thinking-Dg8vKjw_.js";
6
6
 
7
7
  //#region src/config/commands.ts
8
8
  function resolveAutoDefault(providerId) {
@@ -1,13 +1,13 @@
1
- import { n as resolveConfigPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-CkkDESQ2.js";
1
+ import { n as resolveConfigPath, r as resolveDefaultConfigCandidates, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-CyR9Pa1R.js";
2
2
  import { s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
3
- import { I as resolveUserPath, P as resolveConfigDir, W as isPlainObject$1, k as isRecord, s as normalizeChatChannelId, t as CHANNEL_IDS } from "./registry-wimgwqAA.js";
4
- import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-DiO1KimT.js";
5
- import { $ as shouldEnableShellEnvFallback, Q as shouldDeferShellEnvFallback, W as DEFAULT_CONTEXT_TOKENS, X as loadShellEnvFallback, Z as resolveShellEnvFallbackTimeoutMs, j as parseModelRef } from "./model-auth-C-Vzzybi.js";
6
- import { c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, f as normalizeEnvVarKey, l as isPathInside, o as normalizePluginsConfig, s as resolveEnableState, t as loadPluginManifestRegistry } from "./manifest-registry-D31TP66o.js";
3
+ import { I as resolveUserPath, P as resolveConfigDir, W as isPlainObject$1, k as isRecord, s as normalizeChatChannelId, t as CHANNEL_IDS } from "./registry-DpeZG5fo.js";
4
+ import { c as resolveDefaultAgentId, s as resolveAgentWorkspaceDir } from "./agent-scope-DSUeV7-g.js";
5
+ import { $ as shouldEnableShellEnvFallback, Q as shouldDeferShellEnvFallback, W as DEFAULT_CONTEXT_TOKENS, X as loadShellEnvFallback, Z as resolveShellEnvFallbackTimeoutMs, j as parseModelRef } from "./model-auth-vtNH8C4P.js";
6
+ import { c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, f as normalizeEnvVarKey, l as isPathInside, o as normalizePluginsConfig, s as resolveEnableState, t as loadPluginManifestRegistry } from "./manifest-registry-Dhk4A5vb.js";
7
7
  import { createRequire } from "node:module";
8
8
  import os from "node:os";
9
9
  import path from "node:path";
10
- import fsSync from "node:fs";
10
+ import fs from "node:fs";
11
11
  import JSON5 from "json5";
12
12
  import { isDeepStrictEqual } from "node:util";
13
13
  import crypto from "node:crypto";
@@ -20,7 +20,7 @@ function loadDotEnv(opts) {
20
20
  const quiet = opts?.quiet ?? true;
21
21
  dotenv.config({ quiet });
22
22
  const globalEnvPath = path.join(resolveConfigDir(process.env), ".env");
23
- if (!fsSync.existsSync(globalEnvPath)) return;
23
+ if (!fs.existsSync(globalEnvPath)) return;
24
24
  dotenv.config({
25
25
  quiet,
26
26
  path: globalEnvPath,
@@ -156,7 +156,7 @@ function resolveAgentMaxConcurrent(cfg) {
156
156
  //#endregion
157
157
  //#region src/config/talk.ts
158
158
  function readTalkApiKeyFromProfile(deps = {}) {
159
- const fsImpl = deps.fs ?? fsSync;
159
+ const fsImpl = deps.fs ?? fs;
160
160
  const osImpl = deps.os ?? os;
161
161
  const pathImpl = deps.path ?? path;
162
162
  const home = osImpl.homedir();
@@ -849,7 +849,7 @@ var IncludeProcessor = class IncludeProcessor {
849
849
  const normalized = path.normalize(resolved);
850
850
  if (!isPathInside(this.rootDir, normalized)) throw new ConfigIncludeError(`Include path escapes config directory: ${includePath} (root: ${this.rootDir})`, includePath);
851
851
  try {
852
- const real = fsSync.realpathSync(normalized);
852
+ const real = fs.realpathSync(normalized);
853
853
  if (!isPathInside(this.rootRealDir, real)) throw new ConfigIncludeError(`Include path resolves outside config directory (symlink): ${includePath} (root: ${this.rootDir})`, includePath);
854
854
  } catch (err) {
855
855
  if (err instanceof ConfigIncludeError) throw err;
@@ -885,13 +885,13 @@ var IncludeProcessor = class IncludeProcessor {
885
885
  };
886
886
  function safeRealpath(target) {
887
887
  try {
888
- return fsSync.realpathSync(target);
888
+ return fs.realpathSync(target);
889
889
  } catch {
890
890
  return target;
891
891
  }
892
892
  }
893
893
  const defaultResolver = {
894
- readFile: (p) => fsSync.readFileSync(p, "utf-8"),
894
+ readFile: (p) => fs.readFileSync(p, "utf-8"),
895
895
  parseJson: (raw) => JSON5.parse(raw)
896
896
  };
897
897
  /**
@@ -5545,7 +5545,7 @@ function resolveConfigPathForDeps(deps) {
5545
5545
  }
5546
5546
  function normalizeDeps(overrides = {}) {
5547
5547
  return {
5548
- fs: overrides.fs ?? fsSync,
5548
+ fs: overrides.fs ?? fs,
5549
5549
  json5: overrides.json5 ?? JSON5,
5550
5550
  env: overrides.env ?? process.env,
5551
5551
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
@@ -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-Cd0S0WfR.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-B0Kht0I2.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";
@@ -1,18 +1,18 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as resolveStateDir } from "./paths-CkkDESQ2.js";
2
+ import { s as resolveStateDir } from "./paths-CyR9Pa1R.js";
3
3
  import { m as normalizeOptionalAccountId, p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
4
- import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-wimgwqAA.js";
5
- import { t as createSubsystemLogger } from "./subsystem-BEdh_1O5.js";
6
- import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-GCiqN5mi.js";
7
- import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-Bf_qBfZ7.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-HpusHn6J.js";
9
- import { d as getChannelDock } from "./thinking-BZFf1juV.js";
10
- import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BkGjWi6P.js";
11
- import { n as resolveMarkdownTableMode } from "./markdown-tables-BOmw5zkp.js";
12
- import { t as getAgentScopedMediaLocalRoots } from "./local-roots-Dx32AY60.js";
13
- import { l as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-BCt1G0xY.js";
4
+ import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-DpeZG5fo.js";
5
+ import { t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
6
+ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-B-c56SkM.js";
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-CSE0v99A.js";
9
+ import { d as getChannelDock } from "./thinking-Dg8vKjw_.js";
10
+ import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-fZrBDWYg.js";
11
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-DpVJE0eA.js";
12
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-JqlMsAYY.js";
13
+ import { l as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-DPVf5tQ4.js";
14
14
  import path from "node:path";
15
- import fsSync from "node:fs";
15
+ import fs from "node:fs";
16
16
  import crypto from "node:crypto";
17
17
 
18
18
  //#region src/plugins/hooks.ts
@@ -726,11 +726,11 @@ function resolveFailedDir(stateDir) {
726
726
  /** Ensure the queue directory (and failed/ subdirectory) exist. */
727
727
  async function ensureQueueDir(stateDir) {
728
728
  const queueDir = resolveQueueDir(stateDir);
729
- await fsSync.promises.mkdir(queueDir, {
729
+ await fs.promises.mkdir(queueDir, {
730
730
  recursive: true,
731
731
  mode: 448
732
732
  });
733
- await fsSync.promises.mkdir(resolveFailedDir(stateDir), {
733
+ await fs.promises.mkdir(resolveFailedDir(stateDir), {
734
734
  recursive: true,
735
735
  mode: 448
736
736
  });
@@ -757,18 +757,18 @@ async function enqueueDelivery(params, stateDir) {
757
757
  const filePath = path.join(queueDir, `${id}.json`);
758
758
  const tmp = `${filePath}.${process.pid}.tmp`;
759
759
  const json = JSON.stringify(entry, null, 2);
760
- await fsSync.promises.writeFile(tmp, json, {
760
+ await fs.promises.writeFile(tmp, json, {
761
761
  encoding: "utf-8",
762
762
  mode: 384
763
763
  });
764
- await fsSync.promises.rename(tmp, filePath);
764
+ await fs.promises.rename(tmp, filePath);
765
765
  return id;
766
766
  }
767
767
  /** Remove a successfully delivered entry from the queue. */
768
768
  async function ackDelivery(id, stateDir) {
769
769
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
770
770
  try {
771
- await fsSync.promises.unlink(filePath);
771
+ await fs.promises.unlink(filePath);
772
772
  } catch (err) {
773
773
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
774
774
  }
@@ -776,16 +776,16 @@ async function ackDelivery(id, stateDir) {
776
776
  /** Update a queue entry after a failed delivery attempt. */
777
777
  async function failDelivery(id, error, stateDir) {
778
778
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
779
- const raw = await fsSync.promises.readFile(filePath, "utf-8");
779
+ const raw = await fs.promises.readFile(filePath, "utf-8");
780
780
  const entry = JSON.parse(raw);
781
781
  entry.retryCount += 1;
782
782
  entry.lastError = error;
783
783
  const tmp = `${filePath}.${process.pid}.tmp`;
784
- await fsSync.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
784
+ await fs.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
785
785
  encoding: "utf-8",
786
786
  mode: 384
787
787
  });
788
- await fsSync.promises.rename(tmp, filePath);
788
+ await fs.promises.rename(tmp, filePath);
789
789
  }
790
790
 
791
791
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { t as createSubsystemLogger } from "./subsystem-BEdh_1O5.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
3
3
  import { i as pruneDiagnosticSessionStates, r as getDiagnosticSessionState, t as diagnosticSessionStates } from "./diagnostic-session-state-Bxo4UHOL.js";
4
4
 
5
5
  //#region src/infra/diagnostic-events.ts
@@ -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-C_B8_quB.js";
10
+ import { D as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-ZvazjIyF.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-B2d2N8OJ.js";
16
+ import "./deliver-0ThKlzQo.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-Cd0S0WfR.js";
24
+ import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-B0Kht0I2.js";
25
25
  import "./config-KL7847B1.js";
26
26
  import "./manifest-registry-sze5OW-s.js";
27
- import "./chrome-lRUqqgSD.js";
27
+ import "./chrome-CZuniMYN.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--DDZnw-F.js";
37
+ import "./image-88q3KE-C.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-Dq-qfrq7.js";
50
+ import "./runner-a43IsYad.js";
51
51
  import "./fetch-BMa0enEg.js";
52
52
  import "./channel-activity-7fb2OxTV.js";
53
53
  import "./tables-Ds9lRo34.js";
@@ -1,7 +1,7 @@
1
1
  import { t as parseBooleanValue } from "./boolean-B8-BqKGQ.js";
2
2
  import { n as MANIFEST_KEY, t as LEGACY_MANIFEST_KEYS } from "./legacy-names-Bn-k7U5-.js";
3
3
  import path from "node:path";
4
- import fsSync from "node:fs";
4
+ import fs from "node:fs";
5
5
  import JSON5 from "json5";
6
6
  import YAML from "yaml";
7
7
 
@@ -79,7 +79,7 @@ function hasBinary(bin) {
79
79
  for (const part of parts) for (const ext of extensions) {
80
80
  const candidate = path.join(part, bin + ext);
81
81
  try {
82
- fsSync.accessSync(candidate, fsSync.constants.X_OK);
82
+ fs.accessSync(candidate, fs.constants.X_OK);
83
83
  hasBinaryCache.set(bin, true);
84
84
  return true;
85
85
  } catch {}
@@ -1,4 +1,4 @@
1
- import { A as normalizeProviderId } from "./model-auth-C-Vzzybi.js";
1
+ import { A as normalizeProviderId } from "./model-auth-vtNH8C4P.js";
2
2
  import { n as formatErrorMessage } from "./errors-BoQgnc8X.js";
3
3
 
4
4
  //#region src/agents/live-auth-keys.ts
@@ -1,13 +1,13 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as resolveStateDir } from "./paths-CkkDESQ2.js";
2
+ import { s as resolveStateDir } from "./paths-CyR9Pa1R.js";
3
3
  import path from "node:path";
4
- import fsSync from "node:fs";
4
+ import fs from "node:fs";
5
5
 
6
6
  //#region src/infra/json-file.ts
7
7
  function loadJsonFile(pathname) {
8
8
  try {
9
- if (!fsSync.existsSync(pathname)) return;
10
- const raw = fsSync.readFileSync(pathname, "utf8");
9
+ if (!fs.existsSync(pathname)) return;
10
+ const raw = fs.readFileSync(pathname, "utf8");
11
11
  return JSON.parse(raw);
12
12
  } catch {
13
13
  return;
@@ -15,12 +15,12 @@ function loadJsonFile(pathname) {
15
15
  }
16
16
  function saveJsonFile(pathname, data) {
17
17
  const dir = path.dirname(pathname);
18
- if (!fsSync.existsSync(dir)) fsSync.mkdirSync(dir, {
18
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, {
19
19
  recursive: true,
20
20
  mode: 448
21
21
  });
22
- fsSync.writeFileSync(pathname, `${JSON.stringify(data, null, 2)}\n`, "utf8");
23
- fsSync.chmodSync(pathname, 384);
22
+ fs.writeFileSync(pathname, `${JSON.stringify(data, null, 2)}\n`, "utf8");
23
+ fs.chmodSync(pathname, 384);
24
24
  }
25
25
 
26
26
  //#endregion
@@ -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-Cd0S0WfR.js";
5
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-B0Kht0I2.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";
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { R as shortenHomeInString, k as isRecord } from "./registry-wimgwqAA.js";
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-C-Vzzybi.js";
2
+ import { R as shortenHomeInString, k as isRecord } from "./registry-DpeZG5fo.js";
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-HpusHn6J.js";
6
- import { n as loadConfig } from "./config-7ClJ9IDt.js";
5
+ import { N as sanitizeUserFacingText } from "./pi-embedded-helpers-CSE0v99A.js";
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";
9
9
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { _ as runExec } from "./workspace-CH9k4Qgz.js";
1
+ import { _ as runExec } from "./workspace-DYx5Dxtw.js";
2
2
  import fs from "node:fs/promises";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
@@ -1,7 +1,7 @@
1
- import { I as resolveUserPath, J as logVerbose, Z as shouldLogVerbose } from "./registry-wimgwqAA.js";
2
- import { a as hasAlphaChannel, b as maxBytesForKind, c as SafeOpenError, d as detectMime, f as extensionForMime, o as optimizeImageToPng, r as convertHeicToJpeg, s as resizeToJpeg, u as readLocalFileSafely, x as mediaKindFromMime } from "./image-ops-D-bh1BTN.js";
3
- import { a as chunkText } from "./chunk-BkGjWi6P.js";
4
- import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots } from "./local-roots-Dx32AY60.js";
1
+ import { I as resolveUserPath, J as logVerbose, Z as shouldLogVerbose } from "./registry-DpeZG5fo.js";
2
+ import { a as hasAlphaChannel, b as maxBytesForKind, c as SafeOpenError, d as detectMime, f as extensionForMime, o as optimizeImageToPng, r as convertHeicToJpeg, s as resizeToJpeg, u as readLocalFileSafely, x as mediaKindFromMime } from "./image-ops-BGmpOcey.js";
3
+ import { a as chunkText } from "./chunk-fZrBDWYg.js";
4
+ import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots } from "./local-roots-JqlMsAYY.js";
5
5
  import fs from "node:fs/promises";
6
6
  import path from "node:path";
7
7
  import { fileURLToPath } from "node:url";