openclaw-multi-auto 1.7.2 → 1.7.3

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 (181) hide show
  1. package/dist/{accounts-L9ByEpnP.js → accounts-C9HcPI9h.js} +2 -2
  2. package/dist/{accounts-BOzyfwW4.js → accounts-C_lW3Ag9.js} +2 -2
  3. package/dist/{accounts-yfBeCZtS.js → accounts-Tgelvk0C.js} +17 -17
  4. package/dist/{active-listener-D1yqT1cw.js → active-listener-BEdprTkn.js} +2 -2
  5. package/dist/{api-key-rotation-DtsNS2Nb.js → api-key-rotation-BJpKWXy0.js} +2 -2
  6. package/dist/{audio-preflight-DpxQCpsA.js → audio-preflight-BMvgEQ5j.js} +32 -32
  7. package/dist/{audio-transcription-runner-28fcRNNi.js → audio-transcription-runner-gLFfz8fr.js} +12 -12
  8. package/dist/{audit-membership-runtime-DWyHWAHM.js → audit-membership-runtime-Dntemq07.js} +4 -4
  9. package/dist/build-info.json +3 -3
  10. package/dist/bundled/boot-md/handler.js +51 -51
  11. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  12. package/dist/bundled/command-logger/handler.js +2 -2
  13. package/dist/bundled/session-memory/handler.js +51 -51
  14. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  15. package/dist/{channel-activity-xHOMiarp.js → channel-activity-BDnjYF7B.js} +3 -3
  16. package/dist/{chrome-DwizpzOC.js → chrome-DxxEKrY7.js} +18 -18
  17. package/dist/{commands-registry-V1zZ5pPC.js → commands-registry-D5qXbFJn.js} +4 -4
  18. package/dist/{deliver-D4o6VIur.js → deliver-DbdywYJE.js} +21 -21
  19. package/dist/deliver-runtime-BFs7iAZF.js +36 -0
  20. package/dist/deps-send-discord.runtime-DZUccI6Z.js +26 -0
  21. package/dist/deps-send-imessage.runtime-CF3OpoqY.js +25 -0
  22. package/dist/deps-send-signal.runtime-Cw4-ozeO.js +24 -0
  23. package/dist/deps-send-slack.runtime-BDsDhS1P.js +22 -0
  24. package/dist/deps-send-telegram.runtime-D_4xVasO.js +27 -0
  25. package/dist/deps-send-whatsapp.runtime-DK8jqd14.js +60 -0
  26. package/dist/{diagnostic-Bn4PZjMZ.js → diagnostic-Co6Kghr-.js} +2 -2
  27. package/dist/{errors-CCLeFWAg.js → errors-xt401nuk.js} +1 -1
  28. package/dist/{fetch-BlJWzEP6.js → fetch-DuraYswo.js} +5 -5
  29. package/dist/{fetch-guard-ChYBwfiy.js → fetch-guard-DWr0d00H.js} +2 -2
  30. package/dist/{frontmatter-CvaMP376.js → frontmatter-BkTfEZ93.js} +3 -3
  31. package/dist/{fs-safe-0jAo_Whb.js → fs-safe-CTYUrIgQ.js} +4 -4
  32. package/dist/{github-copilot-token-D13V9YBz.js → github-copilot-token-BDioPmd6.js} +7 -7
  33. package/dist/{image-Bbn53mzj.js → image-eT7Y-nP5.js} +6 -6
  34. package/dist/{image-ops-CehkHxmW.js → image-ops-BuUnEOE0.js} +2 -2
  35. package/dist/image-runtime-BcAK3n8a.js +29 -0
  36. package/dist/{ir-DAP-B-Xw.js → ir-B83looB-.js} +8 -8
  37. package/dist/{legacy-names-TyzbVqa_.js → legacy-names-DOC03BkU.js} +1 -1
  38. package/dist/llm-slug-generator.js +51 -51
  39. package/dist/{logger-DMZQQtxK.js → logger-BfjWMCSD.js} +7 -7
  40. package/dist/{login-DiCctRo1.js → login-CrIwcrVI.js} +5 -5
  41. package/dist/{login-qr-MUbXgjtd.js → login-qr-BpPDZdl_.js} +10 -10
  42. package/dist/{manager-BW_NSIMl.js → manager-1bvuGrNR.js} +13 -13
  43. package/dist/manager-runtime-FO1Sx3W8.js +18 -0
  44. package/dist/{model-selection-idoqPmw0.js → model-selection-Dna0Gz1k.js} +43 -43
  45. package/dist/{outbound-C2kanETZ.js → outbound-ChDjtuD6.js} +6 -6
  46. package/dist/{outbound-attachment-DBrYWX8h.js → outbound-attachment-DqHlD21U.js} +2 -2
  47. package/dist/{path-alias-guards-DqXRZmsL.js → path-alias-guards-BzvdLvTI.js} +1 -1
  48. package/dist/{paths-CCxysrzL.js → paths-Bkr-BCxW.js} +4 -4
  49. package/dist/{paths-C6TxBCvO.js → paths-Cvc9EM8Y.js} +5 -5
  50. package/dist/{pi-embedded-BaGj07T0.js → pi-embedded-BQQa91aA.js} +158 -158
  51. package/dist/{pi-embedded-helpers-wy0DZvx1.js → pi-embedded-helpers-CLXm10bV.js} +52 -52
  52. package/dist/{pi-model-discovery-BGgOlX8N.js → pi-model-discovery-Dymwdjt0.js} +7 -7
  53. package/dist/pi-model-discovery-runtime-BeY4EUPp.js +11 -0
  54. package/dist/{pi-tools.before-tool-call.runtime-BuLxSyx9.js → pi-tools.before-tool-call.runtime-Cwab_5W1.js} +9 -9
  55. package/dist/plugin-sdk/accounts-CJWOBzwB.js +35 -0
  56. package/dist/plugin-sdk/accounts-DP1-L-QS.js +288 -0
  57. package/dist/plugin-sdk/accounts-DZhWlEg3.js +46 -0
  58. package/dist/plugin-sdk/active-listener-B_sLJTXM.js +50 -0
  59. package/dist/plugin-sdk/api-key-rotation-BRE4X2tf.js +181 -0
  60. package/dist/plugin-sdk/audio-preflight-DGEUDxxR.js +69 -0
  61. package/dist/plugin-sdk/audio-transcription-runner-DkoPNPYt.js +2176 -0
  62. package/dist/plugin-sdk/audit-membership-runtime-DSBHHw7o.js +58 -0
  63. package/dist/plugin-sdk/channel-activity-F3d0yUwy.js +94 -0
  64. package/dist/plugin-sdk/channel-web-QF7EpjeP.js +2256 -0
  65. package/dist/plugin-sdk/chrome-BXoCyCkY.js +2415 -0
  66. package/dist/plugin-sdk/commands-registry-t7cXBTfN.js +1125 -0
  67. package/dist/plugin-sdk/config-BkEnz2Po.js +17913 -0
  68. package/dist/plugin-sdk/deliver-B6AG_l67.js +1694 -0
  69. package/dist/plugin-sdk/deliver-runtime-D585kJZc.js +32 -0
  70. package/dist/plugin-sdk/deps-send-discord.runtime-a_OKY2js.js +23 -0
  71. package/dist/plugin-sdk/deps-send-imessage.runtime-Baxy9TD4.js +22 -0
  72. package/dist/plugin-sdk/deps-send-signal.runtime-BwXoCrFl.js +21 -0
  73. package/dist/plugin-sdk/deps-send-slack.runtime-CLmKjgso.js +19 -0
  74. package/dist/plugin-sdk/deps-send-telegram.runtime-BKfdBKnZ.js +24 -0
  75. package/dist/plugin-sdk/deps-send-whatsapp.runtime-BOTwkbx_.js +57 -0
  76. package/dist/plugin-sdk/diagnostic-CsP-lEkI.js +319 -0
  77. package/dist/plugin-sdk/errors-DaiAM-yU.js +54 -0
  78. package/dist/plugin-sdk/fetch-guard-DETCcJzQ.js +156 -0
  79. package/dist/plugin-sdk/fs-safe-B8y811FR.js +352 -0
  80. package/dist/plugin-sdk/image-DjTEkYZE.js +2310 -0
  81. package/dist/plugin-sdk/image-ops-BSiMpAw4.js +584 -0
  82. package/dist/plugin-sdk/image-runtime-6xPp8m5a.js +25 -0
  83. package/dist/plugin-sdk/index.js +50 -50
  84. package/dist/plugin-sdk/ir-DQ7_HbvK.js +1296 -0
  85. package/dist/plugin-sdk/local-roots-BUP4YBmR.js +186 -0
  86. package/dist/plugin-sdk/logger-CZY9KIoY.js +1163 -0
  87. package/dist/plugin-sdk/login-BxEKLlCo.js +57 -0
  88. package/dist/plugin-sdk/login-qr-BQIpMPr9.js +320 -0
  89. package/dist/plugin-sdk/manager-I6KbPihW.js +3917 -0
  90. package/dist/plugin-sdk/manager-runtime-CFfYYWIQ.js +15 -0
  91. package/dist/plugin-sdk/mattermost.js +3 -3
  92. package/dist/plugin-sdk/outbound-NS6UHnB6.js +212 -0
  93. package/dist/plugin-sdk/outbound-attachment-Dy6fyf6H.js +19 -0
  94. package/dist/plugin-sdk/path-alias-guards-DBjLbIX_.js +43 -0
  95. package/dist/plugin-sdk/paths-vTM3Lh3X.js +166 -0
  96. package/dist/plugin-sdk/pi-embedded-helpers-1R1gu7eX.js +9627 -0
  97. package/dist/plugin-sdk/pi-model-discovery-runtime-Do9o-dUd.js +8 -0
  98. package/dist/plugin-sdk/pi-model-discovery-v-XPUOOf.js +134 -0
  99. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-D4sFsIks.js +354 -0
  100. package/dist/plugin-sdk/plugins-DeBZB9l_.js +864 -0
  101. package/dist/{proxy-fetch-CCjEYbFm.js → plugin-sdk/proxy-fetch-ChxOhWF4.js} +1 -1
  102. package/dist/plugin-sdk/pw-ai-DEOmCSSC.js +1938 -0
  103. package/dist/plugin-sdk/qmd-manager-HyYKoEch.js +1448 -0
  104. package/dist/plugin-sdk/query-expansion-CeyKUeDW.js +1011 -0
  105. package/dist/{redact-ClbcYG1J.js → plugin-sdk/redact-DjVX-1N3.js} +1 -1
  106. package/dist/plugin-sdk/reply-DAo_Jt8K.js +97916 -0
  107. package/dist/plugin-sdk/resolve-outbound-target-B42qgQS9.js +40 -0
  108. package/dist/plugin-sdk/run-with-concurrency-Bt_ks0Qa.js +1994 -0
  109. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B6W989eF.js +10 -0
  110. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-c_GDFy37.js +19 -0
  111. package/dist/plugin-sdk/send-CQpMudwO.js +2587 -0
  112. package/dist/plugin-sdk/send-DQHLzVyO.js +414 -0
  113. package/dist/plugin-sdk/send-DTB24bEF.js +3135 -0
  114. package/dist/plugin-sdk/send-DfHadjZ_.js +503 -0
  115. package/dist/plugin-sdk/send-XXlW2iny.js +540 -0
  116. package/dist/plugin-sdk/session-6TF6MyaC.js +169 -0
  117. package/dist/plugin-sdk/skill-commands-CkGeFUMl.js +342 -0
  118. package/dist/plugin-sdk/skills-CBkHBYPq.js +1428 -0
  119. package/dist/plugin-sdk/slash-commands.runtime-CxliuGaP.js +13 -0
  120. package/dist/plugin-sdk/slash-dispatch.runtime-DFaeYlJQ.js +52 -0
  121. package/dist/plugin-sdk/slash-skill-commands.runtime-0M0OLCxq.js +16 -0
  122. package/dist/plugin-sdk/ssrf-cFtplYtS.js +202 -0
  123. package/dist/plugin-sdk/store-5nyxY3WU.js +81 -0
  124. package/dist/plugin-sdk/subagent-registry-runtime-DCtmDwna.js +52 -0
  125. package/dist/plugin-sdk/tables-C47P4GTN.js +55 -0
  126. package/dist/{target-errors-CBI2Ga0y.js → plugin-sdk/target-errors-Blia4S69.js} +2 -2
  127. package/dist/plugin-sdk/thinking-Bo2eosVa.js +1206 -0
  128. package/dist/{tokens-DxnY9ui_.js → plugin-sdk/tokens-DgNRBwIg.js} +1 -1
  129. package/dist/plugin-sdk/tool-images-Gk_-0y2N.js +274 -0
  130. package/dist/plugin-sdk/web-CVxZbXyH.js +56 -0
  131. package/dist/plugin-sdk/whatsapp-actions-Bw0H9g-n.js +80 -0
  132. package/dist/{plugins-CWkRQYDj.js → plugins-4Rj4OjLY.js} +11 -11
  133. package/dist/{proxy-env-Cq5gdrbj.js → proxy-env-DlmzDx8x.js} +1 -1
  134. package/dist/proxy-fetch-B2pEfjbR.js +38 -0
  135. package/dist/{pw-ai-Cl1Lc7RC.js → pw-ai-DNMjFMqH.js} +14 -14
  136. package/dist/{qmd-manager-BsYsO9Ii.js → qmd-manager-BtIKUaO9.js} +10 -10
  137. package/dist/{query-expansion-DtLc3wjL.js → query-expansion-CX-1fS52.js} +6 -6
  138. package/dist/redact-COik8ET1.js +319 -0
  139. package/dist/{run-with-concurrency-D_ZpbgEG.js → run-with-concurrency-BgYfgkXT.js} +4 -4
  140. package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +13 -0
  141. package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +22 -0
  142. package/dist/{send-Dx2RkUOZ.js → send-6lz6rNVP.js} +6 -6
  143. package/dist/{send-vmONuVgL.js → send-BHTiZcH3.js} +26 -26
  144. package/dist/{send-Bj776ESJ.js → send-L7gRiwyd.js} +7 -7
  145. package/dist/{send-DcxmcFi_.js → send-PE6cwoTe.js} +8 -8
  146. package/dist/{send-BQERFNyo.js → send-dfu6_rgf.js} +5 -5
  147. package/dist/{session-A4QhBRvH.js → session-D8ImowSs.js} +8 -8
  148. package/dist/{skill-commands-CMzBZKG2.js → skill-commands-DNqJ-kwn.js} +9 -9
  149. package/dist/{skills-CE_iqvM5.js → skills-7ODkHQYp.js} +22 -22
  150. package/dist/slash-commands.runtime-CVw6566g.js +16 -0
  151. package/dist/slash-dispatch.runtime-B9Ygtzi4.js +56 -0
  152. package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +20 -0
  153. package/dist/{store--eR1R_UX.js → store-D89wDcz9.js} +2 -2
  154. package/dist/subagent-registry-runtime-DL1Wv7nA.js +56 -0
  155. package/dist/{subsystem-Di1z8l0Z.js → subsystem-B45WV3qB.js} +14 -14
  156. package/dist/{tables-d739Y1xW.js → tables-mE4cJBN2.js} +1 -1
  157. package/dist/target-errors-mnlwhAjP.js +195 -0
  158. package/dist/{thinking-DXYisHiZ.js → thinking-BeGmb5k6.js} +7 -7
  159. package/dist/tokens-q32vI39c.js +52 -0
  160. package/dist/{tool-images-2cBx1W8h.js → tool-images-RZdHiZcG.js} +2 -2
  161. package/dist/{web-CzWRVmFt.js → web-Btj-e8kN.js} +55 -55
  162. package/dist/{whatsapp-actions-iEArE_Ez.js → whatsapp-actions-BHbJJyqw.js} +21 -21
  163. package/dist/{workspace-CUVC6GX1.js → workspace-U-DyR64O.js} +20 -20
  164. package/package.json +1 -1
  165. package/scripts/create-instance.sh +6 -2
  166. package/dist/deliver-runtime-P-G3bPjW.js +0 -36
  167. package/dist/deps-send-discord.runtime-DnbhTFX9.js +0 -26
  168. package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +0 -25
  169. package/dist/deps-send-signal.runtime-CTcl388M.js +0 -24
  170. package/dist/deps-send-slack.runtime-CCqBz4Kg.js +0 -22
  171. package/dist/deps-send-telegram.runtime-DGSKTCpH.js +0 -27
  172. package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +0 -60
  173. package/dist/image-runtime-CVv2ra9J.js +0 -29
  174. package/dist/manager-runtime-BN6VevdC.js +0 -18
  175. package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +0 -11
  176. package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +0 -13
  177. package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +0 -22
  178. package/dist/slash-commands.runtime-Cpn2tYW4.js +0 -16
  179. package/dist/slash-dispatch.runtime-DoBAQBU5.js +0 -56
  180. package/dist/slash-skill-commands.runtime-DKMvvdDW.js +0 -20
  181. package/dist/subagent-registry-runtime-ppWS3tVu.js +0 -56
@@ -1,4 +1,4 @@
1
- import { u as escapeRegExp } from "./logger-DMZQQtxK.js";
1
+ import { _ as escapeRegExp } from "./logger-CZY9KIoY.js";
2
2
 
3
3
  //#region src/auto-reply/tokens.ts
4
4
  const HEARTBEAT_TOKEN = "HEARTBEAT_OK";
@@ -0,0 +1,274 @@
1
+ import { a as createSubsystemLogger } from "./logger-CZY9KIoY.js";
2
+ import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BSiMpAw4.js";
3
+
4
+ //#region src/media/base64.ts
5
+ function estimateBase64DecodedBytes(base64) {
6
+ let effectiveLen = 0;
7
+ for (let i = 0; i < base64.length; i += 1) {
8
+ if (base64.charCodeAt(i) <= 32) continue;
9
+ effectiveLen += 1;
10
+ }
11
+ if (effectiveLen === 0) return 0;
12
+ let padding = 0;
13
+ let end = base64.length - 1;
14
+ while (end >= 0 && base64.charCodeAt(end) <= 32) end -= 1;
15
+ if (end >= 0 && base64[end] === "=") {
16
+ padding = 1;
17
+ end -= 1;
18
+ while (end >= 0 && base64.charCodeAt(end) <= 32) end -= 1;
19
+ if (end >= 0 && base64[end] === "=") padding = 2;
20
+ }
21
+ const estimated = Math.floor(effectiveLen * 3 / 4) - padding;
22
+ return Math.max(0, estimated);
23
+ }
24
+ const BASE64_CHARS_RE = /^[A-Za-z0-9+/]+={0,2}$/;
25
+ /**
26
+ * Normalize and validate a base64 string.
27
+ * Returns canonical base64 (no whitespace) or undefined when invalid.
28
+ */
29
+ function canonicalizeBase64(base64) {
30
+ const cleaned = base64.replace(/\s+/g, "");
31
+ if (!cleaned || cleaned.length % 4 !== 0 || !BASE64_CHARS_RE.test(cleaned)) return;
32
+ return cleaned;
33
+ }
34
+
35
+ //#endregion
36
+ //#region src/agents/image-sanitization.ts
37
+ const DEFAULT_IMAGE_MAX_DIMENSION_PX = 1200;
38
+ const DEFAULT_IMAGE_MAX_BYTES = 5 * 1024 * 1024;
39
+ function resolveImageSanitizationLimits(cfg) {
40
+ const configured = cfg?.agents?.defaults?.imageMaxDimensionPx;
41
+ if (typeof configured !== "number" || !Number.isFinite(configured)) return {};
42
+ return { maxDimensionPx: Math.max(1, Math.floor(configured)) };
43
+ }
44
+
45
+ //#endregion
46
+ //#region src/agents/tool-images.ts
47
+ const MAX_IMAGE_DIMENSION_PX = DEFAULT_IMAGE_MAX_DIMENSION_PX;
48
+ const MAX_IMAGE_BYTES = DEFAULT_IMAGE_MAX_BYTES;
49
+ const log = createSubsystemLogger("agents/tool-images");
50
+ function isImageBlock(block) {
51
+ if (!block || typeof block !== "object") return false;
52
+ const rec = block;
53
+ return rec.type === "image" && typeof rec.data === "string" && typeof rec.mimeType === "string";
54
+ }
55
+ function isTextBlock(block) {
56
+ if (!block || typeof block !== "object") return false;
57
+ const rec = block;
58
+ return rec.type === "text" && typeof rec.text === "string";
59
+ }
60
+ function inferMimeTypeFromBase64(base64) {
61
+ const trimmed = base64.trim();
62
+ if (!trimmed) return;
63
+ if (trimmed.startsWith("/9j/")) return "image/jpeg";
64
+ if (trimmed.startsWith("iVBOR")) return "image/png";
65
+ if (trimmed.startsWith("R0lGOD")) return "image/gif";
66
+ }
67
+ function formatBytesShort(bytes) {
68
+ if (!Number.isFinite(bytes) || bytes < 1024) return `${Math.max(0, Math.round(bytes))}B`;
69
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
70
+ return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
71
+ }
72
+ function parseMediaPathFromText(text) {
73
+ for (const line of text.split(/\r?\n/u)) {
74
+ const trimmed = line.trim();
75
+ if (!trimmed.startsWith("MEDIA:")) continue;
76
+ const raw = trimmed.slice(6).trim();
77
+ if (!raw) continue;
78
+ return (raw.match(/^`([^`]+)`$/u)?.[1] ?? raw).trim();
79
+ }
80
+ }
81
+ function fileNameFromPathLike(pathLike) {
82
+ const value = pathLike.trim();
83
+ if (!value) return;
84
+ try {
85
+ const candidate = new URL(value).pathname.split("/").filter(Boolean).at(-1);
86
+ return candidate && candidate.length > 0 ? candidate : void 0;
87
+ } catch {}
88
+ const candidate = value.replaceAll("\\", "/").split("/").filter(Boolean).at(-1);
89
+ return candidate && candidate.length > 0 ? candidate : void 0;
90
+ }
91
+ function inferImageFileName(params) {
92
+ const rec = params.block;
93
+ for (const key of [
94
+ "fileName",
95
+ "filename",
96
+ "path",
97
+ "url"
98
+ ]) {
99
+ const raw = rec[key];
100
+ if (typeof raw !== "string" || raw.trim().length === 0) continue;
101
+ const candidate = fileNameFromPathLike(raw);
102
+ if (candidate) return candidate;
103
+ }
104
+ if (typeof rec.name === "string" && rec.name.trim().length > 0) return rec.name.trim();
105
+ if (params.mediaPathHint) {
106
+ const candidate = fileNameFromPathLike(params.mediaPathHint);
107
+ if (candidate) return candidate;
108
+ }
109
+ if (typeof params.label === "string" && params.label.startsWith("read:")) {
110
+ const candidate = fileNameFromPathLike(params.label.slice(5));
111
+ if (candidate) return candidate;
112
+ }
113
+ }
114
+ async function resizeImageBase64IfNeeded(params) {
115
+ const buf = Buffer.from(params.base64, "base64");
116
+ const meta = await getImageMetadata(buf);
117
+ const width = meta?.width;
118
+ const height = meta?.height;
119
+ const overBytes = buf.byteLength > params.maxBytes;
120
+ const hasDimensions = typeof width === "number" && typeof height === "number";
121
+ const overDimensions = hasDimensions && (width > params.maxDimensionPx || height > params.maxDimensionPx);
122
+ if (hasDimensions && !overBytes && width <= params.maxDimensionPx && height <= params.maxDimensionPx) return {
123
+ base64: params.base64,
124
+ mimeType: params.mimeType,
125
+ resized: false,
126
+ width,
127
+ height
128
+ };
129
+ const maxDim = hasDimensions ? Math.max(width ?? 0, height ?? 0) : params.maxDimensionPx;
130
+ const sideStart = maxDim > 0 ? Math.min(params.maxDimensionPx, maxDim) : params.maxDimensionPx;
131
+ const sideGrid = buildImageResizeSideGrid(params.maxDimensionPx, sideStart);
132
+ let smallest = null;
133
+ for (const side of sideGrid) for (const quality of IMAGE_REDUCE_QUALITY_STEPS) {
134
+ const out = await resizeToJpeg({
135
+ buffer: buf,
136
+ maxSide: side,
137
+ quality,
138
+ withoutEnlargement: true
139
+ });
140
+ if (!smallest || out.byteLength < smallest.size) smallest = {
141
+ buffer: out,
142
+ size: out.byteLength
143
+ };
144
+ if (out.byteLength <= params.maxBytes) {
145
+ const sourcePixels = typeof width === "number" && typeof height === "number" ? `${width}x${height}px` : "unknown";
146
+ const sourceWithFile = params.fileName ? `${params.fileName} ${sourcePixels}` : sourcePixels;
147
+ const byteReductionPct = buf.byteLength > 0 ? Number(((buf.byteLength - out.byteLength) / buf.byteLength * 100).toFixed(1)) : 0;
148
+ log.info(`Image resized to fit limits: ${sourceWithFile} ${formatBytesShort(buf.byteLength)} -> ${formatBytesShort(out.byteLength)} (-${byteReductionPct}%)`, {
149
+ label: params.label,
150
+ fileName: params.fileName,
151
+ sourceMimeType: params.mimeType,
152
+ sourceWidth: width,
153
+ sourceHeight: height,
154
+ sourceBytes: buf.byteLength,
155
+ maxBytes: params.maxBytes,
156
+ maxDimensionPx: params.maxDimensionPx,
157
+ triggerOverBytes: overBytes,
158
+ triggerOverDimensions: overDimensions,
159
+ outputMimeType: "image/jpeg",
160
+ outputBytes: out.byteLength,
161
+ outputQuality: quality,
162
+ outputMaxSide: side,
163
+ byteReductionPct
164
+ });
165
+ return {
166
+ base64: out.toString("base64"),
167
+ mimeType: "image/jpeg",
168
+ resized: true,
169
+ width,
170
+ height
171
+ };
172
+ }
173
+ }
174
+ const best = smallest?.buffer ?? buf;
175
+ const maxMb = (params.maxBytes / (1024 * 1024)).toFixed(0);
176
+ const gotMb = (best.byteLength / (1024 * 1024)).toFixed(2);
177
+ const sourcePixels = typeof width === "number" && typeof height === "number" ? `${width}x${height}px` : "unknown";
178
+ const sourceWithFile = params.fileName ? `${params.fileName} ${sourcePixels}` : sourcePixels;
179
+ log.warn(`Image resize failed to fit limits: ${sourceWithFile} best=${formatBytesShort(best.byteLength)} limit=${formatBytesShort(params.maxBytes)}`, {
180
+ label: params.label,
181
+ fileName: params.fileName,
182
+ sourceMimeType: params.mimeType,
183
+ sourceWidth: width,
184
+ sourceHeight: height,
185
+ sourceBytes: buf.byteLength,
186
+ maxDimensionPx: params.maxDimensionPx,
187
+ maxBytes: params.maxBytes,
188
+ smallestCandidateBytes: best.byteLength,
189
+ triggerOverBytes: overBytes,
190
+ triggerOverDimensions: overDimensions
191
+ });
192
+ throw new Error(`Image could not be reduced below ${maxMb}MB (got ${gotMb}MB)`);
193
+ }
194
+ async function sanitizeContentBlocksImages(blocks, label, opts = {}) {
195
+ const maxDimensionPx = Math.max(opts.maxDimensionPx ?? MAX_IMAGE_DIMENSION_PX, 1);
196
+ const maxBytes = Math.max(opts.maxBytes ?? MAX_IMAGE_BYTES, 1);
197
+ const out = [];
198
+ let mediaPathHint;
199
+ for (const block of blocks) {
200
+ if (isTextBlock(block)) {
201
+ const mediaPath = parseMediaPathFromText(block.text);
202
+ if (mediaPath) mediaPathHint = mediaPath;
203
+ }
204
+ if (!isImageBlock(block)) {
205
+ out.push(block);
206
+ continue;
207
+ }
208
+ const data = block.data.trim();
209
+ if (!data) {
210
+ out.push({
211
+ type: "text",
212
+ text: `[${label}] omitted empty image payload`
213
+ });
214
+ continue;
215
+ }
216
+ const canonicalData = canonicalizeBase64(data);
217
+ if (!canonicalData) {
218
+ out.push({
219
+ type: "text",
220
+ text: `[${label}] omitted image payload: invalid base64`
221
+ });
222
+ continue;
223
+ }
224
+ try {
225
+ const mimeType = inferMimeTypeFromBase64(canonicalData) ?? block.mimeType;
226
+ const resized = await resizeImageBase64IfNeeded({
227
+ base64: canonicalData,
228
+ mimeType,
229
+ maxDimensionPx,
230
+ maxBytes,
231
+ label,
232
+ fileName: inferImageFileName({
233
+ block,
234
+ label,
235
+ mediaPathHint
236
+ })
237
+ });
238
+ out.push({
239
+ ...block,
240
+ data: resized.base64,
241
+ mimeType: resized.resized ? resized.mimeType : mimeType
242
+ });
243
+ } catch (err) {
244
+ out.push({
245
+ type: "text",
246
+ text: `[${label}] omitted image payload: ${String(err)}`
247
+ });
248
+ }
249
+ }
250
+ return out;
251
+ }
252
+ async function sanitizeImageBlocks(images, label, opts = {}) {
253
+ if (images.length === 0) return {
254
+ images,
255
+ dropped: 0
256
+ };
257
+ const next = (await sanitizeContentBlocksImages(images, label, opts)).filter(isImageBlock);
258
+ return {
259
+ images: next,
260
+ dropped: Math.max(0, images.length - next.length)
261
+ };
262
+ }
263
+ async function sanitizeToolResultImages(result, label, opts = {}) {
264
+ const content = Array.isArray(result.content) ? result.content : [];
265
+ if (!content.some((b) => isImageBlock(b) || isTextBlock(b))) return result;
266
+ const next = await sanitizeContentBlocksImages(content, label, opts);
267
+ return {
268
+ ...result,
269
+ content: next
270
+ };
271
+ }
272
+
273
+ //#endregion
274
+ export { canonicalizeBase64 as a, resolveImageSanitizationLimits as i, sanitizeImageBlocks as n, estimateBase64DecodedBytes as o, sanitizeToolResultImages as r, sanitizeContentBlocksImages as t };
@@ -0,0 +1,56 @@
1
+ import "./run-with-concurrency-Bt_ks0Qa.js";
2
+ import { _ as webAuthExists, c as logWebSelfId, d as pickWebChannel, o as WA_WEB_AUTH_DIR } from "./accounts-DP1-L-QS.js";
3
+ import "./reply-DAo_Jt8K.js";
4
+ import "./paths-MKyEVmEb.js";
5
+ import "./github-copilot-token-D5fdS6xD.js";
6
+ import "./config-BkEnz2Po.js";
7
+ import "./logger-CZY9KIoY.js";
8
+ import "./thinking-Bo2eosVa.js";
9
+ import "./image-ops-BSiMpAw4.js";
10
+ import "./pi-embedded-helpers-1R1gu7eX.js";
11
+ import "./plugins-DeBZB9l_.js";
12
+ import "./accounts-CJWOBzwB.js";
13
+ import "./accounts-DZhWlEg3.js";
14
+ import "./send-DTB24bEF.js";
15
+ import "./paths-vTM3Lh3X.js";
16
+ import "./fetch-Bv4TQOMH.js";
17
+ import "./redact-DjVX-1N3.js";
18
+ import "./errors-DaiAM-yU.js";
19
+ import "./channel-activity-F3d0yUwy.js";
20
+ import "./path-alias-guards-DBjLbIX_.js";
21
+ import "./fs-safe-B8y811FR.js";
22
+ import "./ssrf-cFtplYtS.js";
23
+ import "./fetch-guard-DETCcJzQ.js";
24
+ import "./local-roots-BUP4YBmR.js";
25
+ import "./ir-DQ7_HbvK.js";
26
+ import "./render-HmipMDlP.js";
27
+ import "./tables-C47P4GTN.js";
28
+ import "./send-DfHadjZ_.js";
29
+ import "./send-CQpMudwO.js";
30
+ import "./tool-images-Gk_-0y2N.js";
31
+ import "./target-errors-Blia4S69.js";
32
+ import "./send-DQHLzVyO.js";
33
+ import "./audio-transcription-runner-DkoPNPYt.js";
34
+ import "./tokens-DgNRBwIg.js";
35
+ import "./skill-commands-CkGeFUMl.js";
36
+ import "./skills-CBkHBYPq.js";
37
+ import "./chrome-BXoCyCkY.js";
38
+ import "./deliver-B6AG_l67.js";
39
+ import "./diagnostic-CsP-lEkI.js";
40
+ import "./store-5nyxY3WU.js";
41
+ import "./commands-registry-t7cXBTfN.js";
42
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-QF7EpjeP.js";
43
+ import "./image-DjTEkYZE.js";
44
+ import "./api-key-rotation-BRE4X2tf.js";
45
+ import "./proxy-fetch-ChxOhWF4.js";
46
+ import "./pi-model-discovery-v-XPUOOf.js";
47
+ import "./send-XXlW2iny.js";
48
+ import "./outbound-attachment-Dy6fyf6H.js";
49
+ import "./proxy-BKdNrmWL.js";
50
+ import "./manager-I6KbPihW.js";
51
+ import "./query-expansion-CeyKUeDW.js";
52
+ import { t as sendMessageWhatsApp } from "./outbound-NS6UHnB6.js";
53
+ import { i as waitForWaConnection, t as createWaSocket } from "./session-6TF6MyaC.js";
54
+ import { t as loginWeb } from "./login-BxEKLlCo.js";
55
+
56
+ export { WA_WEB_AUTH_DIR, createWaSocket, logWebSelfId, loginWeb, monitorWebChannel, monitorWebInbox, pickWebChannel, sendMessageWhatsApp, waitForWaConnection, webAuthExists };
@@ -0,0 +1,80 @@
1
+ import "./run-with-concurrency-Bt_ks0Qa.js";
2
+ import { i as resolveWhatsAppAccount } from "./accounts-DP1-L-QS.js";
3
+ import "./paths-MKyEVmEb.js";
4
+ import "./github-copilot-token-D5fdS6xD.js";
5
+ import "./config-BkEnz2Po.js";
6
+ import "./logger-CZY9KIoY.js";
7
+ import "./image-ops-BSiMpAw4.js";
8
+ import "./plugins-DeBZB9l_.js";
9
+ import "./path-alias-guards-DBjLbIX_.js";
10
+ import "./fs-safe-B8y811FR.js";
11
+ import "./ssrf-cFtplYtS.js";
12
+ import "./fetch-guard-DETCcJzQ.js";
13
+ import "./local-roots-BUP4YBmR.js";
14
+ import "./ir-DQ7_HbvK.js";
15
+ import "./render-HmipMDlP.js";
16
+ import "./tables-C47P4GTN.js";
17
+ import "./tool-images-Gk_-0y2N.js";
18
+ import { f as readReactionParams, h as readStringParam, i as ToolAuthorizationError, l as jsonResult, o as createActionGate } from "./target-errors-Blia4S69.js";
19
+ import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-B42qgQS9.js";
20
+ import { r as sendReactionWhatsApp } from "./outbound-NS6UHnB6.js";
21
+
22
+ //#region src/agents/tools/whatsapp-target-auth.ts
23
+ function resolveAuthorizedWhatsAppOutboundTarget(params) {
24
+ const account = resolveWhatsAppAccount({
25
+ cfg: params.cfg,
26
+ accountId: params.accountId
27
+ });
28
+ const resolution = resolveWhatsAppOutboundTarget({
29
+ to: params.chatJid,
30
+ allowFrom: account.allowFrom ?? [],
31
+ mode: "implicit"
32
+ });
33
+ if (!resolution.ok) throw new ToolAuthorizationError(`WhatsApp ${params.actionLabel} blocked: chatJid "${params.chatJid}" is not in the configured allowFrom list for account "${account.accountId}".`);
34
+ return {
35
+ to: resolution.to,
36
+ accountId: account.accountId
37
+ };
38
+ }
39
+
40
+ //#endregion
41
+ //#region src/agents/tools/whatsapp-actions.ts
42
+ async function handleWhatsAppAction(params, cfg) {
43
+ const action = readStringParam(params, "action", { required: true });
44
+ const isActionEnabled = createActionGate(cfg.channels?.whatsapp?.actions);
45
+ if (action === "react") {
46
+ if (!isActionEnabled("reactions")) throw new Error("WhatsApp reactions are disabled.");
47
+ const chatJid = readStringParam(params, "chatJid", { required: true });
48
+ const messageId = readStringParam(params, "messageId", { required: true });
49
+ const { emoji, remove, isEmpty } = readReactionParams(params, { removeErrorMessage: "Emoji is required to remove a WhatsApp reaction." });
50
+ const participant = readStringParam(params, "participant");
51
+ const accountId = readStringParam(params, "accountId");
52
+ const fromMeRaw = params.fromMe;
53
+ const fromMe = typeof fromMeRaw === "boolean" ? fromMeRaw : void 0;
54
+ const resolved = resolveAuthorizedWhatsAppOutboundTarget({
55
+ cfg,
56
+ chatJid,
57
+ accountId,
58
+ actionLabel: "reaction"
59
+ });
60
+ const resolvedEmoji = remove ? "" : emoji;
61
+ await sendReactionWhatsApp(resolved.to, messageId, resolvedEmoji, {
62
+ verbose: false,
63
+ fromMe,
64
+ participant: participant ?? void 0,
65
+ accountId: resolved.accountId
66
+ });
67
+ if (!remove && !isEmpty) return jsonResult({
68
+ ok: true,
69
+ added: emoji
70
+ });
71
+ return jsonResult({
72
+ ok: true,
73
+ removed: true
74
+ });
75
+ }
76
+ throw new Error(`Unsupported WhatsApp action: ${action}`);
77
+ }
78
+
79
+ //#endregion
80
+ export { handleWhatsAppAction };
@@ -1,10 +1,10 @@
1
- import { l as resolveDefaultAgentId } from "./run-with-concurrency-D_ZpbgEG.js";
2
- import { t as createSubsystemLogger } from "./subsystem-Di1z8l0Z.js";
3
- import { G as normalizeAccountId, K as normalizeOptionalAccountId, R as normalizeAgentId, W as DEFAULT_ACCOUNT_ID } from "./workspace-CUVC6GX1.js";
4
- import { h as normalizeE164 } from "./logger-DMZQQtxK.js";
5
- import { Gt as normalizeAnyChannelId, Ht as CHAT_CHANNEL_ORDER, Xt as getActivePluginRegistryVersion, Zn as isTruthyEnvValue, Zt as requireActivePluginRegistry, gr as normalizeResolvedSecretInputString, qt as normalizeChatChannelId } from "./model-selection-idoqPmw0.js";
6
- import { g as createAccountListHelpers, h as resolveAccountEntry } from "./accounts-yfBeCZtS.js";
7
- import syncFs from "node:fs";
1
+ import { l as resolveDefaultAgentId } from "./run-with-concurrency-BgYfgkXT.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-B45WV3qB.js";
3
+ import { G as normalizeAccountId, K as normalizeOptionalAccountId, R as normalizeAgentId, W as DEFAULT_ACCOUNT_ID } from "./workspace-U-DyR64O.js";
4
+ import { h as normalizeE164 } from "./logger-BfjWMCSD.js";
5
+ import { Gt as normalizeAnyChannelId, Ht as CHAT_CHANNEL_ORDER, Xt as getActivePluginRegistryVersion, Zn as isTruthyEnvValue, Zt as requireActivePluginRegistry, gr as normalizeResolvedSecretInputString, qt as normalizeChatChannelId } from "./model-selection-Dna0Gz1k.js";
6
+ import { g as createAccountListHelpers, h as resolveAccountEntry } from "./accounts-Tgelvk0C.js";
7
+ import fs from "node:fs";
8
8
  import util from "node:util";
9
9
 
10
10
  //#region src/channels/plugins/account-action-gate.ts
@@ -317,7 +317,7 @@ function resolveTelegramToken(cfg, opts = {}) {
317
317
  const accountCfg = resolveAccountCfg(accountId !== DEFAULT_ACCOUNT_ID ? accountId : DEFAULT_ACCOUNT_ID);
318
318
  const accountTokenFile = accountCfg?.tokenFile?.trim();
319
319
  if (accountTokenFile) {
320
- if (!syncFs.existsSync(accountTokenFile)) {
320
+ if (!fs.existsSync(accountTokenFile)) {
321
321
  opts.logMissingFile?.(`channels.telegram.accounts.${accountId}.tokenFile not found: ${accountTokenFile}`);
322
322
  return {
323
323
  token: "",
@@ -325,7 +325,7 @@ function resolveTelegramToken(cfg, opts = {}) {
325
325
  };
326
326
  }
327
327
  try {
328
- const token = syncFs.readFileSync(accountTokenFile, "utf-8").trim();
328
+ const token = fs.readFileSync(accountTokenFile, "utf-8").trim();
329
329
  if (token) return {
330
330
  token,
331
331
  source: "tokenFile"
@@ -353,7 +353,7 @@ function resolveTelegramToken(cfg, opts = {}) {
353
353
  const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
354
354
  const tokenFile = telegramCfg?.tokenFile?.trim();
355
355
  if (tokenFile) {
356
- if (!syncFs.existsSync(tokenFile)) {
356
+ if (!fs.existsSync(tokenFile)) {
357
357
  opts.logMissingFile?.(`channels.telegram.tokenFile not found: ${tokenFile}`);
358
358
  return {
359
359
  token: "",
@@ -361,7 +361,7 @@ function resolveTelegramToken(cfg, opts = {}) {
361
361
  };
362
362
  }
363
363
  try {
364
- const token = syncFs.readFileSync(tokenFile, "utf-8").trim();
364
+ const token = fs.readFileSync(tokenFile, "utf-8").trim();
365
365
  if (token) return {
366
366
  token,
367
367
  source: "tokenFile"
@@ -1,4 +1,4 @@
1
- import { Et as parseLooseIpAddress, Tt as parseCanonicalIpAddress, _t as isBlockedSpecialUseIpv4Address, bt as isIpv4Address, gt as extractEmbeddedIpv4FromIpv6, vt as isBlockedSpecialUseIpv6Address, xt as isLegacyIpv4Literal, yt as isCanonicalDottedDecimalIPv4 } from "./model-selection-idoqPmw0.js";
1
+ import { Et as parseLooseIpAddress, Tt as parseCanonicalIpAddress, _t as isBlockedSpecialUseIpv4Address, bt as isIpv4Address, gt as extractEmbeddedIpv4FromIpv6, vt as isBlockedSpecialUseIpv6Address, xt as isLegacyIpv4Literal, yt as isCanonicalDottedDecimalIPv4 } from "./model-selection-Dna0Gz1k.js";
2
2
  import { lookup } from "node:dns";
3
3
  import { lookup as lookup$1 } from "node:dns/promises";
4
4
  import { Agent } from "undici";
@@ -0,0 +1,38 @@
1
+ import { i as logWarn } from "./logger-BfjWMCSD.js";
2
+ import { EnvHttpProxyAgent, ProxyAgent, fetch } from "undici";
3
+
4
+ //#region src/infra/net/proxy-fetch.ts
5
+ /**
6
+ * Create a fetch function that routes requests through the given HTTP proxy.
7
+ * Uses undici's ProxyAgent under the hood.
8
+ */
9
+ function makeProxyFetch(proxyUrl) {
10
+ const agent = new ProxyAgent(proxyUrl);
11
+ return ((input, init) => fetch(input, {
12
+ ...init,
13
+ dispatcher: agent
14
+ }));
15
+ }
16
+ /**
17
+ * Resolve a proxy-aware fetch from standard environment variables
18
+ * (HTTPS_PROXY, HTTP_PROXY, https_proxy, http_proxy).
19
+ * Respects NO_PROXY / no_proxy exclusions via undici's EnvHttpProxyAgent.
20
+ * Returns undefined when no proxy is configured.
21
+ * Gracefully returns undefined if the proxy URL is malformed.
22
+ */
23
+ function resolveProxyFetchFromEnv() {
24
+ if (!(process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.https_proxy || process.env.http_proxy)?.trim()) return;
25
+ try {
26
+ const agent = new EnvHttpProxyAgent();
27
+ return ((input, init) => fetch(input, {
28
+ ...init,
29
+ dispatcher: agent
30
+ }));
31
+ } catch (err) {
32
+ logWarn(`Proxy env var set but agent creation failed — falling back to direct fetch: ${err instanceof Error ? err.message : String(err)}`);
33
+ return;
34
+ }
35
+ }
36
+
37
+ //#endregion
38
+ export { resolveProxyFetchFromEnv as n, makeProxyFetch as t };
@@ -1,17 +1,17 @@
1
- import "./run-with-concurrency-D_ZpbgEG.js";
2
- import "./paths-C6TxBCvO.js";
3
- import { w as resolvePreferredOpenClawTmpDir } from "./subsystem-Di1z8l0Z.js";
4
- import "./workspace-CUVC6GX1.js";
5
- import "./logger-DMZQQtxK.js";
6
- import { lr as formatCliCommand } from "./model-selection-idoqPmw0.js";
7
- import "./github-copilot-token-D13V9YBz.js";
8
- import "./legacy-names-TyzbVqa_.js";
9
- import { F as resolveStrictExistingPathsWithinRoot, L as DEFAULT_FILL_FIELD_TYPE, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, S as withCdpSocket, _ as withBrowserNavigationPolicy, d as formatAriaSnapshot, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, k as withNoProxyForCdpUrl, t as getChromeWebSocketUrl, v as appendCdpPath, x as getHeadersWithAuth, y as fetchJson } from "./chrome-DwizpzOC.js";
10
- import "./path-alias-guards-DqXRZmsL.js";
11
- import "./redact-ClbcYG1J.js";
12
- import { r as formatErrorMessage } from "./errors-CCLeFWAg.js";
13
- import { s as writeFileFromPathWithinRoot } from "./fs-safe-0jAo_Whb.js";
14
- import "./proxy-env-Cq5gdrbj.js";
1
+ import "./run-with-concurrency-BgYfgkXT.js";
2
+ import "./paths-Cvc9EM8Y.js";
3
+ import { w as resolvePreferredOpenClawTmpDir } from "./subsystem-B45WV3qB.js";
4
+ import "./workspace-U-DyR64O.js";
5
+ import "./logger-BfjWMCSD.js";
6
+ import { lr as formatCliCommand } from "./model-selection-Dna0Gz1k.js";
7
+ import "./github-copilot-token-BDioPmd6.js";
8
+ import "./legacy-names-DOC03BkU.js";
9
+ import { F as resolveStrictExistingPathsWithinRoot, L as DEFAULT_FILL_FIELD_TYPE, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, S as withCdpSocket, _ as withBrowserNavigationPolicy, d as formatAriaSnapshot, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, k as withNoProxyForCdpUrl, t as getChromeWebSocketUrl, v as appendCdpPath, x as getHeadersWithAuth, y as fetchJson } from "./chrome-DxxEKrY7.js";
10
+ import "./path-alias-guards-BzvdLvTI.js";
11
+ import "./redact-COik8ET1.js";
12
+ import { r as formatErrorMessage } from "./errors-xt401nuk.js";
13
+ import { s as writeFileFromPathWithinRoot } from "./fs-safe-CTYUrIgQ.js";
14
+ import "./proxy-env-DlmzDx8x.js";
15
15
  import fs from "node:fs/promises";
16
16
  import path from "node:path";
17
17
  import crypto from "node:crypto";
@@ -1,14 +1,14 @@
1
- import { c as resolveAgentWorkspaceDir } from "./run-with-concurrency-D_ZpbgEG.js";
2
- import { c as resolveStateDir } from "./paths-C6TxBCvO.js";
3
- import { t as createSubsystemLogger } from "./subsystem-Di1z8l0Z.js";
4
- import { $ as parseAgentSessionKey } from "./workspace-CUVC6GX1.js";
5
- import "./logger-DMZQQtxK.js";
6
- import "./path-alias-guards-DqXRZmsL.js";
7
- import "./redact-ClbcYG1J.js";
8
- import { c as writeFileWithinRoot } from "./fs-safe-0jAo_Whb.js";
1
+ import { c as resolveAgentWorkspaceDir } from "./run-with-concurrency-BgYfgkXT.js";
2
+ import { c as resolveStateDir } from "./paths-Cvc9EM8Y.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-B45WV3qB.js";
4
+ import { $ as parseAgentSessionKey } from "./workspace-U-DyR64O.js";
5
+ import "./logger-BfjWMCSD.js";
6
+ import "./path-alias-guards-BzvdLvTI.js";
7
+ import "./redact-COik8ET1.js";
8
+ import { c as writeFileWithinRoot } from "./fs-safe-CTYUrIgQ.js";
9
9
  import { n as resolveWindowsSpawnProgram, t as materializeWindowsSpawnProgram } from "./windows-spawn-B89VigUN.js";
10
- import "./paths-CCxysrzL.js";
11
- import { _ as isFileMissingError, i as listSessionFilesForAgent, n as requireNodeSqlite, r as buildSessionEntry, t as extractKeywords, v as statRegularFile } from "./query-expansion-DtLc3wjL.js";
10
+ import "./paths-Bkr-BCxW.js";
11
+ import { _ as isFileMissingError, i as listSessionFilesForAgent, n as requireNodeSqlite, r as buildSessionEntry, t as extractKeywords, v as statRegularFile } from "./query-expansion-CX-1fS52.js";
12
12
  import fs from "node:fs/promises";
13
13
  import os from "node:os";
14
14
  import path from "node:path";
@@ -1,11 +1,11 @@
1
- import { t as runTasksWithConcurrency } from "./run-with-concurrency-D_ZpbgEG.js";
2
- import { t as createSubsystemLogger } from "./subsystem-Di1z8l0Z.js";
3
- import { t as redactSensitiveText } from "./redact-ClbcYG1J.js";
4
- import { o as resolveSessionTranscriptsDirForAgent } from "./paths-CCxysrzL.js";
1
+ import { t as runTasksWithConcurrency } from "./run-with-concurrency-BgYfgkXT.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-B45WV3qB.js";
3
+ import { t as redactSensitiveText } from "./redact-COik8ET1.js";
4
+ import { o as resolveSessionTranscriptsDirForAgent } from "./paths-Bkr-BCxW.js";
5
5
  import { createRequire } from "node:module";
6
6
  import fs from "node:fs/promises";
7
7
  import path from "node:path";
8
- import syncFs from "node:fs";
8
+ import fs$1 from "node:fs";
9
9
  import crypto from "node:crypto";
10
10
 
11
11
  //#region src/memory/fs-utils.ts
@@ -31,7 +31,7 @@ async function statRegularFile(absPath) {
31
31
  //#region src/memory/internal.ts
32
32
  function ensureDir(dir) {
33
33
  try {
34
- syncFs.mkdirSync(dir, { recursive: true });
34
+ fs$1.mkdirSync(dir, { recursive: true });
35
35
  } catch {}
36
36
  return dir;
37
37
  }