openclaw-multi-auto 1.3.5 → 1.3.7

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 (186) hide show
  1. package/dist/{accounts-C_lW3Ag9.js → accounts-BOzyfwW4.js} +2 -2
  2. package/dist/{accounts-C9HcPI9h.js → accounts-L9ByEpnP.js} +2 -2
  3. package/dist/{accounts-Tgelvk0C.js → accounts-yfBeCZtS.js} +17 -17
  4. package/dist/{active-listener-BEdprTkn.js → active-listener-D1yqT1cw.js} +2 -2
  5. package/dist/{api-key-rotation-BJpKWXy0.js → api-key-rotation-DtsNS2Nb.js} +2 -2
  6. package/dist/{audio-preflight-BMvgEQ5j.js → audio-preflight-DpxQCpsA.js} +32 -32
  7. package/dist/{audio-transcription-runner-gLFfz8fr.js → audio-transcription-runner-28fcRNNi.js} +12 -12
  8. package/dist/{audit-membership-runtime-Dntemq07.js → audit-membership-runtime-DWyHWAHM.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-BDnjYF7B.js → channel-activity-xHOMiarp.js} +3 -3
  16. package/dist/{chrome-DxxEKrY7.js → chrome-DwizpzOC.js} +18 -18
  17. package/dist/{commands-registry-D5qXbFJn.js → commands-registry-V1zZ5pPC.js} +4 -4
  18. package/dist/{deliver-DbdywYJE.js → deliver-D4o6VIur.js} +21 -21
  19. package/dist/deliver-runtime-P-G3bPjW.js +36 -0
  20. package/dist/deps-send-discord.runtime-DnbhTFX9.js +26 -0
  21. package/dist/deps-send-imessage.runtime-BOiQ6mDx.js +25 -0
  22. package/dist/deps-send-signal.runtime-CTcl388M.js +24 -0
  23. package/dist/deps-send-slack.runtime-CCqBz4Kg.js +22 -0
  24. package/dist/deps-send-telegram.runtime-DGSKTCpH.js +27 -0
  25. package/dist/deps-send-whatsapp.runtime-CJkTHkah.js +60 -0
  26. package/dist/{diagnostic-Co6Kghr-.js → diagnostic-Bn4PZjMZ.js} +2 -2
  27. package/dist/{errors-xt401nuk.js → errors-CCLeFWAg.js} +1 -1
  28. package/dist/{fetch-DuraYswo.js → fetch-BlJWzEP6.js} +5 -5
  29. package/dist/{fetch-guard-DWr0d00H.js → fetch-guard-ChYBwfiy.js} +2 -2
  30. package/dist/{frontmatter-BkTfEZ93.js → frontmatter-CvaMP376.js} +3 -3
  31. package/dist/{fs-safe-CTYUrIgQ.js → fs-safe-0jAo_Whb.js} +4 -4
  32. package/dist/{github-copilot-token-BDioPmd6.js → github-copilot-token-D13V9YBz.js} +7 -7
  33. package/dist/{image-eT7Y-nP5.js → image-Bbn53mzj.js} +6 -6
  34. package/dist/{image-ops-BuUnEOE0.js → image-ops-CehkHxmW.js} +2 -2
  35. package/dist/image-runtime-CVv2ra9J.js +29 -0
  36. package/dist/{ir-B83looB-.js → ir-DAP-B-Xw.js} +8 -8
  37. package/dist/{legacy-names-DOC03BkU.js → legacy-names-TyzbVqa_.js} +1 -1
  38. package/dist/llm-slug-generator.js +51 -51
  39. package/dist/{logger-BfjWMCSD.js → logger-DMZQQtxK.js} +7 -7
  40. package/dist/{login-CrIwcrVI.js → login-DiCctRo1.js} +5 -5
  41. package/dist/{login-qr-BpPDZdl_.js → login-qr-MUbXgjtd.js} +10 -10
  42. package/dist/{manager-1bvuGrNR.js → manager-BW_NSIMl.js} +13 -13
  43. package/dist/manager-runtime-BN6VevdC.js +18 -0
  44. package/dist/{model-selection-Dna0Gz1k.js → model-selection-idoqPmw0.js} +43 -43
  45. package/dist/{outbound-ChDjtuD6.js → outbound-C2kanETZ.js} +6 -6
  46. package/dist/{outbound-attachment-DqHlD21U.js → outbound-attachment-DBrYWX8h.js} +2 -2
  47. package/dist/{path-alias-guards-BzvdLvTI.js → path-alias-guards-DqXRZmsL.js} +1 -1
  48. package/dist/{paths-Cvc9EM8Y.js → paths-C6TxBCvO.js} +5 -5
  49. package/dist/{paths-Bkr-BCxW.js → paths-CCxysrzL.js} +4 -4
  50. package/dist/{pi-embedded-BQQa91aA.js → pi-embedded-BaGj07T0.js} +158 -158
  51. package/dist/{pi-embedded-helpers-CLXm10bV.js → pi-embedded-helpers-wy0DZvx1.js} +52 -52
  52. package/dist/pi-model-discovery-BGgOlX8N.js +134 -0
  53. package/dist/pi-model-discovery-runtime-Bwmi4Ev8.js +11 -0
  54. package/dist/{pi-tools.before-tool-call.runtime-Cwab_5W1.js → pi-tools.before-tool-call.runtime-BuLxSyx9.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/discord.js +6 -6
  78. package/dist/plugin-sdk/errors-DaiAM-yU.js +54 -0
  79. package/dist/plugin-sdk/fetch-guard-DETCcJzQ.js +156 -0
  80. package/dist/plugin-sdk/fs-safe-B8y811FR.js +352 -0
  81. package/dist/plugin-sdk/image-DjTEkYZE.js +2310 -0
  82. package/dist/plugin-sdk/image-ops-BSiMpAw4.js +584 -0
  83. package/dist/plugin-sdk/image-runtime-6xPp8m5a.js +25 -0
  84. package/dist/plugin-sdk/index.js +50 -50
  85. package/dist/plugin-sdk/ir-DQ7_HbvK.js +1296 -0
  86. package/dist/plugin-sdk/local-roots-BUP4YBmR.js +186 -0
  87. package/dist/plugin-sdk/logger-CZY9KIoY.js +1163 -0
  88. package/dist/plugin-sdk/login-BxEKLlCo.js +57 -0
  89. package/dist/plugin-sdk/login-qr-BQIpMPr9.js +320 -0
  90. package/dist/plugin-sdk/manager-I6KbPihW.js +3917 -0
  91. package/dist/plugin-sdk/manager-runtime-CFfYYWIQ.js +15 -0
  92. package/dist/plugin-sdk/mattermost.js +3 -3
  93. package/dist/plugin-sdk/outbound-NS6UHnB6.js +212 -0
  94. package/dist/plugin-sdk/outbound-attachment-Dy6fyf6H.js +19 -0
  95. package/dist/plugin-sdk/path-alias-guards-DBjLbIX_.js +43 -0
  96. package/dist/plugin-sdk/paths-vTM3Lh3X.js +166 -0
  97. package/dist/plugin-sdk/pi-embedded-helpers-1R1gu7eX.js +9627 -0
  98. package/dist/plugin-sdk/pi-model-discovery-runtime-Do9o-dUd.js +8 -0
  99. package/dist/{pi-model-discovery-Dymwdjt0.js → plugin-sdk/pi-model-discovery-v-XPUOOf.js} +2 -2
  100. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-D4sFsIks.js +354 -0
  101. package/dist/plugin-sdk/plugins-DeBZB9l_.js +864 -0
  102. package/dist/{proxy-fetch-B2pEfjbR.js → plugin-sdk/proxy-fetch-ChxOhWF4.js} +1 -1
  103. package/dist/plugin-sdk/pw-ai-DEOmCSSC.js +1938 -0
  104. package/dist/plugin-sdk/qmd-manager-HyYKoEch.js +1448 -0
  105. package/dist/plugin-sdk/query-expansion-CeyKUeDW.js +1011 -0
  106. package/dist/{redact-COik8ET1.js → plugin-sdk/redact-DjVX-1N3.js} +1 -1
  107. package/dist/plugin-sdk/reply-DAo_Jt8K.js +97916 -0
  108. package/dist/plugin-sdk/resolve-outbound-target-B42qgQS9.js +40 -0
  109. package/dist/plugin-sdk/run-with-concurrency-Bt_ks0Qa.js +1994 -0
  110. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B6W989eF.js +10 -0
  111. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-c_GDFy37.js +19 -0
  112. package/dist/plugin-sdk/send-CQpMudwO.js +2587 -0
  113. package/dist/plugin-sdk/send-DQHLzVyO.js +414 -0
  114. package/dist/plugin-sdk/send-DTB24bEF.js +3135 -0
  115. package/dist/plugin-sdk/send-DfHadjZ_.js +503 -0
  116. package/dist/plugin-sdk/send-XXlW2iny.js +540 -0
  117. package/dist/plugin-sdk/session-6TF6MyaC.js +169 -0
  118. package/dist/plugin-sdk/signal.js +2 -2
  119. package/dist/plugin-sdk/skill-commands-CkGeFUMl.js +342 -0
  120. package/dist/plugin-sdk/skills-CBkHBYPq.js +1428 -0
  121. package/dist/plugin-sdk/slash-commands.runtime-CxliuGaP.js +13 -0
  122. package/dist/plugin-sdk/slash-dispatch.runtime-DFaeYlJQ.js +52 -0
  123. package/dist/plugin-sdk/slash-skill-commands.runtime-0M0OLCxq.js +16 -0
  124. package/dist/plugin-sdk/ssrf-cFtplYtS.js +202 -0
  125. package/dist/plugin-sdk/store-5nyxY3WU.js +81 -0
  126. package/dist/plugin-sdk/subagent-registry-runtime-DCtmDwna.js +52 -0
  127. package/dist/plugin-sdk/tables-C47P4GTN.js +55 -0
  128. package/dist/{target-errors-mnlwhAjP.js → plugin-sdk/target-errors-Blia4S69.js} +2 -2
  129. package/dist/plugin-sdk/thinking-Bo2eosVa.js +1206 -0
  130. package/dist/{tokens-q32vI39c.js → plugin-sdk/tokens-DgNRBwIg.js} +1 -1
  131. package/dist/plugin-sdk/tool-images-Gk_-0y2N.js +274 -0
  132. package/dist/plugin-sdk/web-CVxZbXyH.js +56 -0
  133. package/dist/plugin-sdk/whatsapp-actions-Bw0H9g-n.js +80 -0
  134. package/dist/plugin-sdk/zalo.js +2 -2
  135. package/dist/{plugins-4Rj4OjLY.js → plugins-CWkRQYDj.js} +11 -11
  136. package/dist/{proxy-env-DlmzDx8x.js → proxy-env-Cq5gdrbj.js} +1 -1
  137. package/dist/proxy-fetch-CCjEYbFm.js +38 -0
  138. package/dist/{pw-ai-DNMjFMqH.js → pw-ai-Cl1Lc7RC.js} +14 -14
  139. package/dist/{qmd-manager-BtIKUaO9.js → qmd-manager-BsYsO9Ii.js} +10 -10
  140. package/dist/{query-expansion-CX-1fS52.js → query-expansion-DtLc3wjL.js} +6 -6
  141. package/dist/redact-ClbcYG1J.js +319 -0
  142. package/dist/{run-with-concurrency-BgYfgkXT.js → run-with-concurrency-D_ZpbgEG.js} +4 -4
  143. package/dist/runtime-whatsapp-login.runtime-IeylZEl4.js +13 -0
  144. package/dist/runtime-whatsapp-outbound.runtime-ClBRuLsq.js +22 -0
  145. package/dist/{send-dfu6_rgf.js → send-BQERFNyo.js} +5 -5
  146. package/dist/{send-L7gRiwyd.js → send-Bj776ESJ.js} +7 -7
  147. package/dist/{send-PE6cwoTe.js → send-DcxmcFi_.js} +8 -8
  148. package/dist/{send-6lz6rNVP.js → send-Dx2RkUOZ.js} +6 -6
  149. package/dist/{send-BHTiZcH3.js → send-vmONuVgL.js} +26 -26
  150. package/dist/{session-D8ImowSs.js → session-A4QhBRvH.js} +8 -8
  151. package/dist/{skill-commands-DNqJ-kwn.js → skill-commands-CMzBZKG2.js} +9 -9
  152. package/dist/{skills-7ODkHQYp.js → skills-CE_iqvM5.js} +22 -22
  153. package/dist/slash-commands.runtime-Cpn2tYW4.js +16 -0
  154. package/dist/slash-dispatch.runtime-DoBAQBU5.js +56 -0
  155. package/dist/slash-skill-commands.runtime-DKMvvdDW.js +20 -0
  156. package/dist/{store-D89wDcz9.js → store--eR1R_UX.js} +2 -2
  157. package/dist/subagent-registry-runtime-ppWS3tVu.js +56 -0
  158. package/dist/{subsystem-B45WV3qB.js → subsystem-Di1z8l0Z.js} +14 -14
  159. package/dist/{tables-mE4cJBN2.js → tables-d739Y1xW.js} +1 -1
  160. package/dist/target-errors-CBI2Ga0y.js +195 -0
  161. package/dist/{thinking-BeGmb5k6.js → thinking-DXYisHiZ.js} +7 -7
  162. package/dist/tokens-DxnY9ui_.js +52 -0
  163. package/dist/{tool-images-RZdHiZcG.js → tool-images-2cBx1W8h.js} +2 -2
  164. package/dist/{web-Btj-e8kN.js → web-CzWRVmFt.js} +55 -55
  165. package/dist/{whatsapp-actions-BHbJJyqw.js → whatsapp-actions-iEArE_Ez.js} +21 -21
  166. package/dist/{workspace-U-DyR64O.js → workspace-CUVC6GX1.js} +20 -20
  167. package/package.json +8 -2
  168. package/scripts/create-instance.sh +26 -4
  169. package/scripts/install-maca.sh +40 -29
  170. package/scripts/npm_publish.sh +14 -11
  171. package/dist/deliver-runtime-BFs7iAZF.js +0 -36
  172. package/dist/deps-send-discord.runtime-DZUccI6Z.js +0 -26
  173. package/dist/deps-send-imessage.runtime-CF3OpoqY.js +0 -25
  174. package/dist/deps-send-signal.runtime-Cw4-ozeO.js +0 -24
  175. package/dist/deps-send-slack.runtime-BDsDhS1P.js +0 -22
  176. package/dist/deps-send-telegram.runtime-D_4xVasO.js +0 -27
  177. package/dist/deps-send-whatsapp.runtime-DK8jqd14.js +0 -60
  178. package/dist/image-runtime-BcAK3n8a.js +0 -29
  179. package/dist/manager-runtime-FO1Sx3W8.js +0 -18
  180. package/dist/pi-model-discovery-runtime-BeY4EUPp.js +0 -11
  181. package/dist/runtime-whatsapp-login.runtime-DUb55byQ.js +0 -13
  182. package/dist/runtime-whatsapp-outbound.runtime-Bii_xSfI.js +0 -22
  183. package/dist/slash-commands.runtime-CVw6566g.js +0 -16
  184. package/dist/slash-dispatch.runtime-B9Ygtzi4.js +0 -56
  185. package/dist/slash-skill-commands.runtime-DxZ4z5h6.js +0 -20
  186. package/dist/subagent-registry-runtime-DL1Wv7nA.js +0 -56
@@ -0,0 +1,319 @@
1
+ import { S as resolveNodeRequireFromMeta } from "./subsystem-Di1z8l0Z.js";
2
+
3
+ //#region src/security/safe-regex.ts
4
+ const SAFE_REGEX_CACHE_MAX = 256;
5
+ const SAFE_REGEX_TEST_WINDOW = 2048;
6
+ const safeRegexCache = /* @__PURE__ */ new Map();
7
+ function createParseFrame() {
8
+ return {
9
+ lastToken: null,
10
+ containsRepetition: false,
11
+ hasAlternation: false,
12
+ branchMinLength: 0,
13
+ branchMaxLength: 0,
14
+ altMinLength: null,
15
+ altMaxLength: null
16
+ };
17
+ }
18
+ function addLength(left, right) {
19
+ if (!Number.isFinite(left) || !Number.isFinite(right)) return Number.POSITIVE_INFINITY;
20
+ return left + right;
21
+ }
22
+ function multiplyLength(length, factor) {
23
+ if (!Number.isFinite(length)) return factor === 0 ? 0 : Number.POSITIVE_INFINITY;
24
+ return length * factor;
25
+ }
26
+ function recordAlternative(frame) {
27
+ if (frame.altMinLength === null || frame.altMaxLength === null) {
28
+ frame.altMinLength = frame.branchMinLength;
29
+ frame.altMaxLength = frame.branchMaxLength;
30
+ return;
31
+ }
32
+ frame.altMinLength = Math.min(frame.altMinLength, frame.branchMinLength);
33
+ frame.altMaxLength = Math.max(frame.altMaxLength, frame.branchMaxLength);
34
+ }
35
+ function readQuantifier(source, index) {
36
+ const ch = source[index];
37
+ const consumed = source[index + 1] === "?" ? 2 : 1;
38
+ if (ch === "*") return {
39
+ consumed,
40
+ minRepeat: 0,
41
+ maxRepeat: null
42
+ };
43
+ if (ch === "+") return {
44
+ consumed,
45
+ minRepeat: 1,
46
+ maxRepeat: null
47
+ };
48
+ if (ch === "?") return {
49
+ consumed,
50
+ minRepeat: 0,
51
+ maxRepeat: 1
52
+ };
53
+ if (ch !== "{") return null;
54
+ let i = index + 1;
55
+ while (i < source.length && /\d/.test(source[i])) i += 1;
56
+ if (i === index + 1) return null;
57
+ const minRepeat = Number.parseInt(source.slice(index + 1, i), 10);
58
+ let maxRepeat = minRepeat;
59
+ if (source[i] === ",") {
60
+ i += 1;
61
+ const maxStart = i;
62
+ while (i < source.length && /\d/.test(source[i])) i += 1;
63
+ maxRepeat = i === maxStart ? null : Number.parseInt(source.slice(maxStart, i), 10);
64
+ }
65
+ if (source[i] !== "}") return null;
66
+ i += 1;
67
+ if (source[i] === "?") i += 1;
68
+ if (maxRepeat !== null && maxRepeat < minRepeat) return null;
69
+ return {
70
+ consumed: i - index,
71
+ minRepeat,
72
+ maxRepeat
73
+ };
74
+ }
75
+ function tokenizePattern(source) {
76
+ const tokens = [];
77
+ let inCharClass = false;
78
+ for (let i = 0; i < source.length; i += 1) {
79
+ const ch = source[i];
80
+ if (ch === "\\") {
81
+ i += 1;
82
+ tokens.push({ kind: "simple-token" });
83
+ continue;
84
+ }
85
+ if (inCharClass) {
86
+ if (ch === "]") inCharClass = false;
87
+ continue;
88
+ }
89
+ if (ch === "[") {
90
+ inCharClass = true;
91
+ tokens.push({ kind: "simple-token" });
92
+ continue;
93
+ }
94
+ if (ch === "(") {
95
+ tokens.push({ kind: "group-open" });
96
+ continue;
97
+ }
98
+ if (ch === ")") {
99
+ tokens.push({ kind: "group-close" });
100
+ continue;
101
+ }
102
+ if (ch === "|") {
103
+ tokens.push({ kind: "alternation" });
104
+ continue;
105
+ }
106
+ const quantifier = readQuantifier(source, i);
107
+ if (quantifier) {
108
+ tokens.push({
109
+ kind: "quantifier",
110
+ quantifier
111
+ });
112
+ i += quantifier.consumed - 1;
113
+ continue;
114
+ }
115
+ tokens.push({ kind: "simple-token" });
116
+ }
117
+ return tokens;
118
+ }
119
+ function analyzeTokensForNestedRepetition(tokens) {
120
+ const frames = [createParseFrame()];
121
+ const emitToken = (token) => {
122
+ const frame = frames[frames.length - 1];
123
+ frame.lastToken = token;
124
+ if (token.containsRepetition) frame.containsRepetition = true;
125
+ frame.branchMinLength = addLength(frame.branchMinLength, token.minLength);
126
+ frame.branchMaxLength = addLength(frame.branchMaxLength, token.maxLength);
127
+ };
128
+ const emitSimpleToken = () => {
129
+ emitToken({
130
+ containsRepetition: false,
131
+ hasAmbiguousAlternation: false,
132
+ minLength: 1,
133
+ maxLength: 1
134
+ });
135
+ };
136
+ for (const token of tokens) {
137
+ if (token.kind === "simple-token") {
138
+ emitSimpleToken();
139
+ continue;
140
+ }
141
+ if (token.kind === "group-open") {
142
+ frames.push(createParseFrame());
143
+ continue;
144
+ }
145
+ if (token.kind === "group-close") {
146
+ if (frames.length > 1) {
147
+ const frame = frames.pop();
148
+ if (frame.hasAlternation) recordAlternative(frame);
149
+ const groupMinLength = frame.hasAlternation ? frame.altMinLength ?? 0 : frame.branchMinLength;
150
+ const groupMaxLength = frame.hasAlternation ? frame.altMaxLength ?? 0 : frame.branchMaxLength;
151
+ emitToken({
152
+ containsRepetition: frame.containsRepetition,
153
+ hasAmbiguousAlternation: frame.hasAlternation && frame.altMinLength !== null && frame.altMaxLength !== null && frame.altMinLength !== frame.altMaxLength,
154
+ minLength: groupMinLength,
155
+ maxLength: groupMaxLength
156
+ });
157
+ }
158
+ continue;
159
+ }
160
+ if (token.kind === "alternation") {
161
+ const frame = frames[frames.length - 1];
162
+ frame.hasAlternation = true;
163
+ recordAlternative(frame);
164
+ frame.branchMinLength = 0;
165
+ frame.branchMaxLength = 0;
166
+ frame.lastToken = null;
167
+ continue;
168
+ }
169
+ const frame = frames[frames.length - 1];
170
+ const previousToken = frame.lastToken;
171
+ if (!previousToken) continue;
172
+ if (previousToken.containsRepetition) return true;
173
+ if (previousToken.hasAmbiguousAlternation && token.quantifier.maxRepeat === null) return true;
174
+ const previousMinLength = previousToken.minLength;
175
+ const previousMaxLength = previousToken.maxLength;
176
+ previousToken.minLength = multiplyLength(previousToken.minLength, token.quantifier.minRepeat);
177
+ previousToken.maxLength = token.quantifier.maxRepeat === null ? Number.POSITIVE_INFINITY : multiplyLength(previousToken.maxLength, token.quantifier.maxRepeat);
178
+ previousToken.containsRepetition = true;
179
+ frame.containsRepetition = true;
180
+ frame.branchMinLength = frame.branchMinLength - previousMinLength + previousToken.minLength;
181
+ frame.branchMaxLength = addLength(Number.isFinite(frame.branchMaxLength) && Number.isFinite(previousMaxLength) ? frame.branchMaxLength - previousMaxLength : Number.POSITIVE_INFINITY, previousToken.maxLength);
182
+ }
183
+ return false;
184
+ }
185
+ function testRegexFromStart(regex, value) {
186
+ regex.lastIndex = 0;
187
+ return regex.test(value);
188
+ }
189
+ function testRegexWithBoundedInput(regex, input, maxWindow = SAFE_REGEX_TEST_WINDOW) {
190
+ if (maxWindow <= 0) return false;
191
+ if (input.length <= maxWindow) return testRegexFromStart(regex, input);
192
+ if (testRegexFromStart(regex, input.slice(0, maxWindow))) return true;
193
+ return testRegexFromStart(regex, input.slice(-maxWindow));
194
+ }
195
+ function hasNestedRepetition(source) {
196
+ return analyzeTokensForNestedRepetition(tokenizePattern(source));
197
+ }
198
+ function compileSafeRegex(source, flags = "") {
199
+ const trimmed = source.trim();
200
+ if (!trimmed) return null;
201
+ const cacheKey = `${flags}::${trimmed}`;
202
+ if (safeRegexCache.has(cacheKey)) return safeRegexCache.get(cacheKey) ?? null;
203
+ let compiled = null;
204
+ if (!hasNestedRepetition(trimmed)) try {
205
+ compiled = new RegExp(trimmed, flags);
206
+ } catch {
207
+ compiled = null;
208
+ }
209
+ safeRegexCache.set(cacheKey, compiled);
210
+ if (safeRegexCache.size > SAFE_REGEX_CACHE_MAX) {
211
+ const oldestKey = safeRegexCache.keys().next().value;
212
+ if (oldestKey) safeRegexCache.delete(oldestKey);
213
+ }
214
+ return compiled;
215
+ }
216
+
217
+ //#endregion
218
+ //#region src/logging/redact-bounded.ts
219
+ const REDACT_REGEX_CHUNK_THRESHOLD = 32768;
220
+ const REDACT_REGEX_CHUNK_SIZE = 16384;
221
+ function replacePatternBounded(text, pattern, replacer, options) {
222
+ const chunkThreshold = options?.chunkThreshold ?? REDACT_REGEX_CHUNK_THRESHOLD;
223
+ const chunkSize = options?.chunkSize ?? REDACT_REGEX_CHUNK_SIZE;
224
+ if (chunkThreshold <= 0 || chunkSize <= 0 || text.length <= chunkThreshold) return text.replace(pattern, replacer);
225
+ let output = "";
226
+ for (let index = 0; index < text.length; index += chunkSize) output += text.slice(index, index + chunkSize).replace(pattern, replacer);
227
+ return output;
228
+ }
229
+
230
+ //#endregion
231
+ //#region src/logging/redact.ts
232
+ const requireConfig = resolveNodeRequireFromMeta(import.meta.url);
233
+ const DEFAULT_REDACT_MODE = "tools";
234
+ const DEFAULT_REDACT_MIN_LENGTH = 18;
235
+ const DEFAULT_REDACT_KEEP_START = 6;
236
+ const DEFAULT_REDACT_KEEP_END = 4;
237
+ const DEFAULT_REDACT_PATTERNS = [
238
+ String.raw`\b[A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD)\b\s*[=:]\s*(["']?)([^\s"'\\]+)\1`,
239
+ String.raw`"(?:apiKey|token|secret|password|passwd|accessToken|refreshToken)"\s*:\s*"([^"]+)"`,
240
+ String.raw`--(?:api[-_]?key|token|secret|password|passwd)\s+(["']?)([^\s"']+)\1`,
241
+ String.raw`Authorization\s*[:=]\s*Bearer\s+([A-Za-z0-9._\-+=]+)`,
242
+ String.raw`\bBearer\s+([A-Za-z0-9._\-+=]{18,})\b`,
243
+ String.raw`-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]+?-----END [A-Z ]*PRIVATE KEY-----`,
244
+ String.raw`\b(sk-[A-Za-z0-9_-]{8,})\b`,
245
+ String.raw`\b(ghp_[A-Za-z0-9]{20,})\b`,
246
+ String.raw`\b(github_pat_[A-Za-z0-9_]{20,})\b`,
247
+ String.raw`\b(xox[baprs]-[A-Za-z0-9-]{10,})\b`,
248
+ String.raw`\b(xapp-[A-Za-z0-9-]{10,})\b`,
249
+ String.raw`\b(gsk_[A-Za-z0-9_-]{10,})\b`,
250
+ String.raw`\b(AIza[0-9A-Za-z\-_]{20,})\b`,
251
+ String.raw`\b(pplx-[A-Za-z0-9_-]{10,})\b`,
252
+ String.raw`\b(npm_[A-Za-z0-9]{10,})\b`,
253
+ String.raw`\bbot(\d{6,}:[A-Za-z0-9_-]{20,})\b`,
254
+ String.raw`\b(\d{6,}:[A-Za-z0-9_-]{20,})\b`
255
+ ];
256
+ function normalizeMode(value) {
257
+ return value === "off" ? "off" : DEFAULT_REDACT_MODE;
258
+ }
259
+ function parsePattern(raw) {
260
+ if (!raw.trim()) return null;
261
+ const match = raw.match(/^\/(.+)\/([gimsuy]*)$/);
262
+ if (match) {
263
+ const flags = match[2].includes("g") ? match[2] : `${match[2]}g`;
264
+ return compileSafeRegex(match[1], flags);
265
+ }
266
+ return compileSafeRegex(raw, "gi");
267
+ }
268
+ function resolvePatterns(value) {
269
+ return (value?.length ? value : DEFAULT_REDACT_PATTERNS).map(parsePattern).filter((re) => Boolean(re));
270
+ }
271
+ function maskToken(token) {
272
+ if (token.length < DEFAULT_REDACT_MIN_LENGTH) return "***";
273
+ return `${token.slice(0, DEFAULT_REDACT_KEEP_START)}…${token.slice(-DEFAULT_REDACT_KEEP_END)}`;
274
+ }
275
+ function redactPemBlock(block) {
276
+ const lines = block.split(/\r?\n/).filter(Boolean);
277
+ if (lines.length < 2) return "***";
278
+ return `${lines[0]}\n…redacted…\n${lines[lines.length - 1]}`;
279
+ }
280
+ function redactMatch(match, groups) {
281
+ if (match.includes("PRIVATE KEY-----")) return redactPemBlock(match);
282
+ const token = groups.filter((value) => typeof value === "string" && value.length > 0).at(-1) ?? match;
283
+ const masked = maskToken(token);
284
+ if (token === match) return masked;
285
+ return match.replace(token, masked);
286
+ }
287
+ function redactText(text, patterns) {
288
+ let next = text;
289
+ for (const pattern of patterns) next = replacePatternBounded(next, pattern, (...args) => redactMatch(args[0], args.slice(1, args.length - 2)));
290
+ return next;
291
+ }
292
+ function resolveConfigRedaction() {
293
+ let cfg;
294
+ try {
295
+ cfg = (requireConfig?.("../config/config.js"))?.loadConfig?.().logging;
296
+ } catch {
297
+ cfg = void 0;
298
+ }
299
+ return {
300
+ mode: normalizeMode(cfg?.redactSensitive),
301
+ patterns: cfg?.redactPatterns
302
+ };
303
+ }
304
+ function redactSensitiveText(text, options) {
305
+ if (!text) return text;
306
+ const resolved = options ?? resolveConfigRedaction();
307
+ if (normalizeMode(resolved.mode) === "off") return text;
308
+ const patterns = resolvePatterns(resolved.patterns);
309
+ if (!patterns.length) return text;
310
+ return redactText(text, patterns);
311
+ }
312
+ function redactToolDetail(detail) {
313
+ const resolved = resolveConfigRedaction();
314
+ if (normalizeMode(resolved.mode) !== "tools") return detail;
315
+ return redactSensitiveText(detail, resolved);
316
+ }
317
+
318
+ //#endregion
319
+ export { testRegexWithBoundedInput as i, redactToolDetail as n, compileSafeRegex as r, redactSensitiveText as t };
@@ -1,7 +1,7 @@
1
- import { c as resolveStateDir } from "./paths-Cvc9EM8Y.js";
2
- import { t as createSubsystemLogger } from "./subsystem-B45WV3qB.js";
3
- import { $ as parseAgentSessionKey, B as resolveAgentIdFromSessionKey, R as normalizeAgentId, j as DEFAULT_AGENT_ID, p as resolveDefaultAgentWorkspaceDir } from "./workspace-U-DyR64O.js";
4
- import { y as resolveUserPath } from "./logger-BfjWMCSD.js";
1
+ import { c as resolveStateDir } from "./paths-C6TxBCvO.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-Di1z8l0Z.js";
3
+ import { $ as parseAgentSessionKey, B as resolveAgentIdFromSessionKey, R as normalizeAgentId, j as DEFAULT_AGENT_ID, p as resolveDefaultAgentWorkspaceDir } from "./workspace-CUVC6GX1.js";
4
+ import { y as resolveUserPath } from "./logger-DMZQQtxK.js";
5
5
  import path from "node:path";
6
6
 
7
7
  //#region src/config/model-input.ts
@@ -0,0 +1,13 @@
1
+ import "./run-with-concurrency-D_ZpbgEG.js";
2
+ import "./paths-C6TxBCvO.js";
3
+ import "./subsystem-Di1z8l0Z.js";
4
+ import "./workspace-CUVC6GX1.js";
5
+ import "./logger-DMZQQtxK.js";
6
+ import "./model-selection-idoqPmw0.js";
7
+ import "./github-copilot-token-D13V9YBz.js";
8
+ import "./legacy-names-TyzbVqa_.js";
9
+ import "./accounts-yfBeCZtS.js";
10
+ import "./session-A4QhBRvH.js";
11
+ import { t as loginWeb } from "./login-DiCctRo1.js";
12
+
13
+ export { loginWeb };
@@ -0,0 +1,22 @@
1
+ import "./run-with-concurrency-D_ZpbgEG.js";
2
+ import "./paths-C6TxBCvO.js";
3
+ import "./subsystem-Di1z8l0Z.js";
4
+ import "./workspace-CUVC6GX1.js";
5
+ import "./logger-DMZQQtxK.js";
6
+ import "./model-selection-idoqPmw0.js";
7
+ import "./github-copilot-token-D13V9YBz.js";
8
+ import "./legacy-names-TyzbVqa_.js";
9
+ import "./plugins-CWkRQYDj.js";
10
+ import "./accounts-yfBeCZtS.js";
11
+ import "./image-ops-CehkHxmW.js";
12
+ import "./path-alias-guards-DqXRZmsL.js";
13
+ import "./fs-safe-0jAo_Whb.js";
14
+ import "./proxy-env-Cq5gdrbj.js";
15
+ import "./fetch-BlJWzEP6.js";
16
+ import "./fetch-guard-ChYBwfiy.js";
17
+ import "./ir-DAP-B-Xw.js";
18
+ import "./render-DW7AcFdD.js";
19
+ import "./tables-d739Y1xW.js";
20
+ import { n as sendPollWhatsApp, t as sendMessageWhatsApp } from "./outbound-C2kanETZ.js";
21
+
22
+ export { sendMessageWhatsApp, sendPollWhatsApp };
@@ -1,11 +1,11 @@
1
- import { X as loadConfig } from "./model-selection-Dna0Gz1k.js";
1
+ import { X as loadConfig } from "./model-selection-idoqPmw0.js";
2
2
  import { n as generateSecureUuid } from "./secure-random-CXrBi7Jq.js";
3
- import { n as resolveSignalAccount } from "./accounts-C9HcPI9h.js";
4
- import { E as kindFromMime } from "./image-ops-BuUnEOE0.js";
3
+ import { n as resolveSignalAccount } from "./accounts-L9ByEpnP.js";
4
+ import { E as kindFromMime } from "./image-ops-CehkHxmW.js";
5
5
  import { n as fetchWithTimeout } from "./fetch-timeout-Wgx3OXYj.js";
6
- import { n as markdownToIR, s as resolveMarkdownTableMode, t as chunkMarkdownIR } from "./ir-B83looB-.js";
6
+ import { n as markdownToIR, s as resolveMarkdownTableMode, t as chunkMarkdownIR } from "./ir-DAP-B-Xw.js";
7
7
  import { t as resolveFetch } from "./fetch-BfuG8uZ8.js";
8
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DqHlD21U.js";
8
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DBrYWX8h.js";
9
9
 
10
10
  //#region src/signal/format.ts
11
11
  function normalizeUrlForComparison(url) {
@@ -1,10 +1,10 @@
1
- import { h as normalizeE164, y as resolveUserPath } from "./logger-BfjWMCSD.js";
2
- import { X as loadConfig } from "./model-selection-Dna0Gz1k.js";
3
- import { E as kindFromMime } from "./image-ops-BuUnEOE0.js";
4
- import { t as resolveIMessageAccount } from "./accounts-C_lW3Ag9.js";
5
- import { s as resolveMarkdownTableMode } from "./ir-B83looB-.js";
6
- import { t as convertMarkdownTables } from "./tables-mE4cJBN2.js";
7
- import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DqHlD21U.js";
1
+ import { h as normalizeE164, y as resolveUserPath } from "./logger-DMZQQtxK.js";
2
+ import { X as loadConfig } from "./model-selection-idoqPmw0.js";
3
+ import { E as kindFromMime } from "./image-ops-CehkHxmW.js";
4
+ import { t as resolveIMessageAccount } from "./accounts-BOzyfwW4.js";
5
+ import { s as resolveMarkdownTableMode } from "./ir-DAP-B-Xw.js";
6
+ import { t as convertMarkdownTables } from "./tables-d739Y1xW.js";
7
+ import { t as resolveOutboundAttachmentFromUrl } from "./outbound-attachment-DBrYWX8h.js";
8
8
  import { spawn } from "node:child_process";
9
9
  import { createInterface } from "node:readline";
10
10
 
@@ -1,15 +1,15 @@
1
- import { w as resolvePreferredOpenClawTmpDir } from "./subsystem-B45WV3qB.js";
2
- import { G as normalizeAccountId, W as DEFAULT_ACCOUNT_ID } from "./workspace-U-DyR64O.js";
3
- import { S as retryAsync, X as loadConfig, x as resolveRetryConfig } from "./model-selection-Dna0Gz1k.js";
4
- import { b as resolveDiscordAccount, x as normalizeDiscordToken } from "./plugins-4Rj4OjLY.js";
1
+ import { w as resolvePreferredOpenClawTmpDir } from "./subsystem-Di1z8l0Z.js";
2
+ import { G as normalizeAccountId, W as DEFAULT_ACCOUNT_ID } from "./workspace-CUVC6GX1.js";
3
+ import { S as retryAsync, X as loadConfig, x as resolveRetryConfig } from "./model-selection-idoqPmw0.js";
4
+ import { b as resolveDiscordAccount, x as normalizeDiscordToken } from "./plugins-CWkRQYDj.js";
5
5
  import { i as requireTargetKind, r as parseMentionPrefixOrAtUserTarget, t as buildMessagingTarget } from "./targets-Bhj5bO-0.js";
6
- import { k as maxBytesForKind, x as extensionForMime } from "./image-ops-BuUnEOE0.js";
7
- import { a as loadWebMedia, d as chunkMarkdownTextWithMode, m as resolveChunkMode, o as loadWebMediaRaw, s as resolveMarkdownTableMode } from "./ir-B83looB-.js";
6
+ import { k as maxBytesForKind, x as extensionForMime } from "./image-ops-CehkHxmW.js";
7
+ import { a as loadWebMedia, d as chunkMarkdownTextWithMode, m as resolveChunkMode, o as loadWebMediaRaw, s as resolveMarkdownTableMode } from "./ir-DAP-B-Xw.js";
8
8
  import { t as resolveFetch } from "./fetch-BfuG8uZ8.js";
9
- import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-BDnjYF7B.js";
9
+ import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-xHOMiarp.js";
10
10
  import { t as buildOutboundMediaLoadOptions } from "./load-options-BFUunM8u.js";
11
11
  import { n as normalizePollInput, t as normalizePollDurationHours } from "./polls-CYTwXmA1.js";
12
- import { t as convertMarkdownTables } from "./tables-mE4cJBN2.js";
12
+ import { t as convertMarkdownTables } from "./tables-d739Y1xW.js";
13
13
  import fs from "node:fs/promises";
14
14
  import path from "node:path";
15
15
  import { promisify } from "node:util";
@@ -1,10 +1,10 @@
1
- import { u as logVerbose } from "./subsystem-B45WV3qB.js";
2
- import { X as loadConfig } from "./model-selection-Dna0Gz1k.js";
3
- import { i as isSilentReplyText } from "./tokens-q32vI39c.js";
4
- import { g as resolveSlackBotToken, p as resolveSlackAccount } from "./plugins-4Rj4OjLY.js";
1
+ import { u as logVerbose } from "./subsystem-Di1z8l0Z.js";
2
+ import { X as loadConfig } from "./model-selection-idoqPmw0.js";
3
+ import { i as isSilentReplyText } from "./tokens-DxnY9ui_.js";
4
+ import { g as resolveSlackBotToken, p as resolveSlackAccount } from "./plugins-CWkRQYDj.js";
5
5
  import { i as requireTargetKind, n as ensureTargetId, r as parseMentionPrefixOrAtUserTarget, t as buildMessagingTarget } from "./targets-Bhj5bO-0.js";
6
- import { r as withTrustedEnvProxyGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-DWr0d00H.js";
7
- import { a as loadWebMedia, d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, m as resolveChunkMode, n as markdownToIR, s as resolveMarkdownTableMode, t as chunkMarkdownIR } from "./ir-B83looB-.js";
6
+ import { r as withTrustedEnvProxyGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-ChYBwfiy.js";
7
+ import { a as loadWebMedia, d as chunkMarkdownTextWithMode, h as resolveTextChunkLimit, m as resolveChunkMode, n as markdownToIR, s as resolveMarkdownTableMode, t as chunkMarkdownIR } from "./ir-DAP-B-Xw.js";
8
8
  import { t as renderMarkdownWithMarkers } from "./render-DW7AcFdD.js";
9
9
  import { WebClient } from "@slack/web-api";
10
10
 
@@ -1,26 +1,26 @@
1
- import { c as resolveStateDir, d as resolveRequiredHomeDir, l as expandHomePrefix, o as resolveOAuthDir } from "./paths-Cvc9EM8Y.js";
2
- import { c as danger, t as createSubsystemLogger, u as logVerbose } from "./subsystem-B45WV3qB.js";
3
- import { G as normalizeAccountId, W as DEFAULT_ACCOUNT_ID } from "./workspace-U-DyR64O.js";
4
- import { a as CONFIG_DIR, b as safeParseJson } from "./logger-BfjWMCSD.js";
5
- import { Hn as resolveTelegramPreviewStreamMode, Q as readConfigFileSnapshotForWrite, X as loadConfig, Zn as isTruthyEnvValue, ar as withFileLock$1, et as writeConfigFile } from "./model-selection-Dna0Gz1k.js";
6
- import { l as resolveTelegramAccount, n as listChannelPlugins, t as getChannelPlugin } from "./plugins-4Rj4OjLY.js";
1
+ import { c as resolveStateDir, d as resolveRequiredHomeDir, l as expandHomePrefix, o as resolveOAuthDir } from "./paths-C6TxBCvO.js";
2
+ import { c as danger, t as createSubsystemLogger, u as logVerbose } from "./subsystem-Di1z8l0Z.js";
3
+ import { G as normalizeAccountId, W as DEFAULT_ACCOUNT_ID } from "./workspace-CUVC6GX1.js";
4
+ import { a as CONFIG_DIR, b as safeParseJson } from "./logger-DMZQQtxK.js";
5
+ import { Hn as resolveTelegramPreviewStreamMode, Q as readConfigFileSnapshotForWrite, X as loadConfig, Zn as isTruthyEnvValue, ar as withFileLock$1, et as writeConfigFile } from "./model-selection-idoqPmw0.js";
6
+ import { l as resolveTelegramAccount, n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CWkRQYDj.js";
7
7
  import { n as normalizeTelegramLookupTarget, r as parseTelegramTarget, t as normalizeTelegramChatId } from "./targets-BiE9e9-P.js";
8
- import { D as normalizeMimeType, E as kindFromMime, S as getFileExtension, T as isGifMedia } from "./image-ops-BuUnEOE0.js";
9
- import { t as redactSensitiveText } from "./redact-COik8ET1.js";
10
- import { i as formatUncaughtError, n as extractErrorCode, o as readErrorName, r as formatErrorMessage, t as collectErrorGraphCandidates } from "./errors-xt401nuk.js";
11
- import { t as hasProxyEnvConfigured } from "./proxy-env-DlmzDx8x.js";
8
+ import { D as normalizeMimeType, E as kindFromMime, S as getFileExtension, T as isGifMedia } from "./image-ops-CehkHxmW.js";
9
+ import { t as redactSensitiveText } from "./redact-ClbcYG1J.js";
10
+ import { i as formatUncaughtError, n as extractErrorCode, o as readErrorName, r as formatErrorMessage, t as collectErrorGraphCandidates } from "./errors-CCLeFWAg.js";
11
+ import { t as hasProxyEnvConfigured } from "./proxy-env-Cq5gdrbj.js";
12
12
  import { r as writeJsonAtomic } from "./json-files-D7-rxoSr.js";
13
- import { t as makeProxyFetch } from "./proxy-fetch-B2pEfjbR.js";
14
- import { a as loadWebMedia, n as markdownToIR, s as resolveMarkdownTableMode, t as chunkMarkdownIR } from "./ir-B83looB-.js";
13
+ import { t as makeProxyFetch } from "./proxy-fetch-CCjEYbFm.js";
14
+ import { a as loadWebMedia, n as markdownToIR, s as resolveMarkdownTableMode, t as chunkMarkdownIR } from "./ir-DAP-B-Xw.js";
15
15
  import { t as renderMarkdownWithMarkers } from "./render-DW7AcFdD.js";
16
16
  import { t as resolveFetch } from "./fetch-BfuG8uZ8.js";
17
- import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-BDnjYF7B.js";
17
+ import { i as createTelegramRetryRunner, n as recordChannelActivity } from "./channel-activity-xHOMiarp.js";
18
18
  import { t as buildOutboundMediaLoadOptions } from "./load-options-BFUunM8u.js";
19
19
  import { n as normalizePollInput } from "./polls-CYTwXmA1.js";
20
20
  import fs from "node:fs/promises";
21
21
  import os from "node:os";
22
22
  import path from "node:path";
23
- import fs$1, { readFileSync } from "node:fs";
23
+ import syncFs, { readFileSync } from "node:fs";
24
24
  import JSON5 from "json5";
25
25
  import process$1 from "node:process";
26
26
  import crypto, { randomBytes } from "node:crypto";
@@ -81,7 +81,7 @@ function getPairingAdapter(channelId) {
81
81
  //#region src/plugin-sdk/json-store.ts
82
82
  async function readJsonFileWithFallback(filePath, fallback) {
83
83
  try {
84
- const parsed = safeParseJson(await fs$1.promises.readFile(filePath, "utf-8"));
84
+ const parsed = safeParseJson(await syncFs.promises.readFile(filePath, "utf-8"));
85
85
  if (parsed == null) return {
86
86
  value: fallback,
87
87
  exists: true
@@ -168,7 +168,7 @@ async function readPairingRequests(filePath) {
168
168
  }
169
169
  async function ensureJsonFile(filePath, fallback) {
170
170
  try {
171
- await fs$1.promises.access(filePath);
171
+ await syncFs.promises.access(filePath);
172
172
  } catch {
173
173
  await writeJsonFile(filePath, fallback);
174
174
  }
@@ -324,7 +324,7 @@ function resolveAllowFromReadCacheOrMissing(filePath, stat) {
324
324
  async function readAllowFromStateForPathWithExists(channel, filePath) {
325
325
  let stat = null;
326
326
  try {
327
- stat = await fs$1.promises.stat(filePath);
327
+ stat = await syncFs.promises.stat(filePath);
328
328
  } catch (err) {
329
329
  if (err.code !== "ENOENT") throw err;
330
330
  }
@@ -367,7 +367,7 @@ async function writeAllowFromState(filePath, allowFrom) {
367
367
  });
368
368
  let stat = null;
369
369
  try {
370
- stat = await fs$1.promises.stat(filePath);
370
+ stat = await syncFs.promises.stat(filePath);
371
371
  } catch {}
372
372
  setAllowFromReadCache(filePath, {
373
373
  exists: true,
@@ -974,7 +974,7 @@ function resolveCronStorePath(storePath) {
974
974
  }
975
975
  async function loadCronStore(storePath) {
976
976
  try {
977
- const raw = await fs$1.promises.readFile(storePath, "utf-8");
977
+ const raw = await syncFs.promises.readFile(storePath, "utf-8");
978
978
  let parsed;
979
979
  try {
980
980
  parsed = JSON5.parse(raw);
@@ -1000,13 +1000,13 @@ async function loadCronStore(storePath) {
1000
1000
  }
1001
1001
  }
1002
1002
  async function saveCronStore(storePath, store) {
1003
- await fs$1.promises.mkdir(path.dirname(storePath), { recursive: true });
1003
+ await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
1004
1004
  const json = JSON.stringify(store, null, 2);
1005
1005
  const cached = serializedStoreCache.get(storePath);
1006
1006
  if (cached === json) return;
1007
1007
  let previous = cached ?? null;
1008
1008
  if (previous === null) try {
1009
- previous = await fs$1.promises.readFile(storePath, "utf-8");
1009
+ previous = await syncFs.promises.readFile(storePath, "utf-8");
1010
1010
  } catch (err) {
1011
1011
  if (err.code !== "ENOENT") throw err;
1012
1012
  }
@@ -1015,9 +1015,9 @@ async function saveCronStore(storePath, store) {
1015
1015
  return;
1016
1016
  }
1017
1017
  const tmp = `${storePath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
1018
- await fs$1.promises.writeFile(tmp, json, "utf-8");
1018
+ await syncFs.promises.writeFile(tmp, json, "utf-8");
1019
1019
  if (previous !== null) try {
1020
- await fs$1.promises.copyFile(storePath, `${storePath}.bak`);
1020
+ await syncFs.promises.copyFile(storePath, `${storePath}.bak`);
1021
1021
  } catch {}
1022
1022
  await renameWithRetry(tmp, storePath);
1023
1023
  serializedStoreCache.set(storePath, json);
@@ -1026,7 +1026,7 @@ const RENAME_MAX_RETRIES = 3;
1026
1026
  const RENAME_BASE_DELAY_MS = 50;
1027
1027
  async function renameWithRetry(src, dest) {
1028
1028
  for (let attempt = 0; attempt <= RENAME_MAX_RETRIES; attempt++) try {
1029
- await fs$1.promises.rename(src, dest);
1029
+ await syncFs.promises.rename(src, dest);
1030
1030
  return;
1031
1031
  } catch (err) {
1032
1032
  const code = err.code;
@@ -1035,8 +1035,8 @@ async function renameWithRetry(src, dest) {
1035
1035
  continue;
1036
1036
  }
1037
1037
  if (code === "EPERM" || code === "EEXIST") {
1038
- await fs$1.promises.copyFile(src, dest);
1039
- await fs$1.promises.unlink(src).catch(() => {});
1038
+ await syncFs.promises.copyFile(src, dest);
1039
+ await syncFs.promises.unlink(src).catch(() => {});
1040
1040
  return;
1041
1041
  }
1042
1042
  throw err;
@@ -1,8 +1,8 @@
1
- import { c as danger, m as success, x as toPinoLikeLogger, y as getChildLogger } from "./subsystem-B45WV3qB.js";
2
- import { l as ensureDir, y as resolveUserPath } from "./logger-BfjWMCSD.js";
3
- import { lr as formatCliCommand, qn as VERSION } from "./model-selection-Dna0Gz1k.js";
4
- import { d as resolveDefaultWebAuthDir, f as resolveWebCredsBackupPath, l as readCredsJsonRaw, p as resolveWebCredsPath, s as maybeRestoreCredsFromBackup } from "./accounts-Tgelvk0C.js";
5
- import fs from "node:fs";
1
+ import { c as danger, m as success, x as toPinoLikeLogger, y as getChildLogger } from "./subsystem-Di1z8l0Z.js";
2
+ import { l as ensureDir, y as resolveUserPath } from "./logger-DMZQQtxK.js";
3
+ import { lr as formatCliCommand, qn as VERSION } from "./model-selection-idoqPmw0.js";
4
+ import { d as resolveDefaultWebAuthDir, f as resolveWebCredsBackupPath, l as readCredsJsonRaw, p as resolveWebCredsPath, s as maybeRestoreCredsFromBackup } from "./accounts-yfBeCZtS.js";
5
+ import syncFs from "node:fs";
6
6
  import { randomUUID } from "node:crypto";
7
7
  import { DisconnectReason, fetchLatestBaileysVersion, makeCacheableSignalKeyStore, makeWASocket, useMultiFileAuthState } from "@whiskeysockets/baileys";
8
8
  import qrcode from "qrcode-terminal";
@@ -21,16 +21,16 @@ async function safeSaveCreds(authDir, saveCreds, logger) {
21
21
  const raw = readCredsJsonRaw(credsPath);
22
22
  if (raw) try {
23
23
  JSON.parse(raw);
24
- fs.copyFileSync(credsPath, backupPath);
24
+ syncFs.copyFileSync(credsPath, backupPath);
25
25
  try {
26
- fs.chmodSync(backupPath, 384);
26
+ syncFs.chmodSync(backupPath, 384);
27
27
  } catch {}
28
28
  } catch {}
29
29
  } catch {}
30
30
  try {
31
31
  await Promise.resolve(saveCreds());
32
32
  try {
33
- fs.chmodSync(resolveWebCredsPath(authDir), 384);
33
+ syncFs.chmodSync(resolveWebCredsPath(authDir), 384);
34
34
  } catch {}
35
35
  } catch (err) {
36
36
  logger.warn({ error: String(err) }, "failed saving WhatsApp creds");
@@ -1,13 +1,13 @@
1
- import { c as resolveAgentWorkspaceDir, r as listAgentIds, s as resolveAgentSkillsFilter } from "./run-with-concurrency-BgYfgkXT.js";
2
- import { c as resolveStateDir } from "./paths-Cvc9EM8Y.js";
3
- import { t as createSubsystemLogger, u as logVerbose } from "./subsystem-B45WV3qB.js";
4
- import { a as CONFIG_DIR, y as resolveUserPath } from "./logger-BfjWMCSD.js";
5
- import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-7ODkHQYp.js";
1
+ import { c as resolveAgentWorkspaceDir, r as listAgentIds, s as resolveAgentSkillsFilter } from "./run-with-concurrency-D_ZpbgEG.js";
2
+ import { c as resolveStateDir } from "./paths-C6TxBCvO.js";
3
+ import { t as createSubsystemLogger, u as logVerbose } from "./subsystem-Di1z8l0Z.js";
4
+ import { a as CONFIG_DIR, y as resolveUserPath } from "./logger-DMZQQtxK.js";
5
+ import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-CE_iqvM5.js";
6
6
  import { t as createAsyncLock } from "./json-files-D7-rxoSr.js";
7
- import { i as listChatCommands } from "./commands-registry-D5qXbFJn.js";
7
+ import { i as listChatCommands } from "./commands-registry-V1zZ5pPC.js";
8
8
  import os from "node:os";
9
9
  import path from "node:path";
10
- import fs from "node:fs";
10
+ import syncFs from "node:fs";
11
11
  import { randomUUID } from "node:crypto";
12
12
  import chokidar from "chokidar";
13
13
 
@@ -241,13 +241,13 @@ function listSkillCommandsForAgents(params) {
241
241
  const workspaceFilters = /* @__PURE__ */ new Map();
242
242
  for (const agentId of agentIds) {
243
243
  const workspaceDir = resolveAgentWorkspaceDir(params.cfg, agentId);
244
- if (!fs.existsSync(workspaceDir)) {
244
+ if (!syncFs.existsSync(workspaceDir)) {
245
245
  logVerbose(`Skipping agent "${agentId}": workspace does not exist: ${workspaceDir}`);
246
246
  continue;
247
247
  }
248
248
  let canonicalDir;
249
249
  try {
250
- canonicalDir = fs.realpathSync(workspaceDir);
250
+ canonicalDir = syncFs.realpathSync(workspaceDir);
251
251
  } catch {
252
252
  logVerbose(`Skipping agent "${agentId}": cannot resolve workspace: ${workspaceDir}`);
253
253
  continue;