squidclaw 3.3.2 → 3.3.6

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 (222) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/a2ui.bundle.js +1 -1
  3. package/dist/{command-registry-DU59Zys9.js → command-registry-D-1yrjO5.js} +4 -4
  4. package/dist/{completion-cli-B58zTxLB.js → completion-cli-DDG6rQHB.js} +2 -2
  5. package/dist/{completion-cli-BLY0f3DS.js → completion-cli-YquOT8ke.js} +1 -1
  6. package/dist/control-ui/assets/{index-BqxuPQOl.js → index-Bb5MB8jH.js} +358 -358
  7. package/dist/control-ui/assets/index-Bb5MB8jH.js.map +1 -0
  8. package/dist/control-ui/index.html +1 -1
  9. package/dist/daemon-cli.js +6 -6
  10. package/dist/{doctor-completion-DRCOGhwS.js → doctor-completion-B63lREru.js} +1 -1
  11. package/dist/{doctor-completion-kjDYgxZk.js → doctor-completion-CoKUBmAB.js} +1 -1
  12. package/dist/entry.js +2 -2
  13. package/dist/{gateway-cli-DvWNtJxy.js → gateway-cli-BP1USKKw.js} +1 -1
  14. package/dist/{gateway-cli-lvhI_G2p.js → gateway-cli-CIhENRqY.js} +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/{onboard-BP7rTtCO.js → onboard-BYwFqDe-.js} +1 -1
  17. package/dist/{onboard-BwVAkxW0.js → onboard-gmbrf0mc.js} +1 -1
  18. package/dist/{onboarding-LbGi6oDz.js → onboarding-C7eyvBep.js} +1 -1
  19. package/dist/{onboarding-D_ImwR9D.js → onboarding-OrcdwciM.js} +1 -1
  20. package/dist/{onboarding.finalize-ClTc_ghC.js → onboarding.finalize-Bf3EExjS.js} +56 -13
  21. package/dist/{onboarding.finalize-CWcaxeIO.js → onboarding.finalize-DZBXbwYe.js} +55 -12
  22. package/dist/plugin-sdk/accounts-B9RVtSwn.js +35 -0
  23. package/dist/plugin-sdk/{accounts-BhCAa-05.js → accounts-BLOLIF6Q.js} +2 -2
  24. package/dist/plugin-sdk/{accounts-DKXGC2Vu.js → accounts-BvzvDHNx.js} +3 -3
  25. package/dist/plugin-sdk/{accounts-BChIl5as.js → accounts-ByCKM_Y3.js} +2 -2
  26. package/dist/plugin-sdk/accounts-Cnpikxly.js +288 -0
  27. package/dist/plugin-sdk/accounts-ZkT4ovw_.js +46 -0
  28. package/dist/plugin-sdk/{active-listener-TTbK9PGk.js → active-listener-CKD9GljM.js} +2 -2
  29. package/dist/plugin-sdk/active-listener-Ccj2fSCa.js +50 -0
  30. package/dist/plugin-sdk/{api-key-rotation-BqhYVBBK.js → api-key-rotation--boE2y8I.js} +2 -2
  31. package/dist/plugin-sdk/api-key-rotation-0Xm0okk5.js +181 -0
  32. package/dist/plugin-sdk/{audio-preflight-DAf0ptAM.js → audio-preflight-B_pcDw8d.js} +26 -26
  33. package/dist/plugin-sdk/audio-preflight-DQZ2WSG4.js +69 -0
  34. package/dist/plugin-sdk/audio-transcription-runner-C4aP5aYG.js +2176 -0
  35. package/dist/plugin-sdk/{audio-transcription-runner-CBASOlbc.js → audio-transcription-runner-u6tijzUS.js} +11 -11
  36. package/dist/plugin-sdk/{audit-membership-runtime-Xl20kCBe.js → audit-membership-runtime-DHQDvH4u.js} +2 -2
  37. package/dist/plugin-sdk/audit-membership-runtime-DPTwvWpd.js +58 -0
  38. package/dist/plugin-sdk/{channel-activity-95JVLzNY.js → channel-activity-BVUdxSNs.js} +3 -3
  39. package/dist/plugin-sdk/channel-activity-DAX5uVAX.js +94 -0
  40. package/dist/plugin-sdk/{channel-web-DCkC6Ydu.js → channel-web-BX2s-JXF.js} +18 -18
  41. package/dist/plugin-sdk/channel-web-CgS5ek7s.js +2256 -0
  42. package/dist/plugin-sdk/{chrome-BlXpNOQu.js → chrome-6EkqVcyR.js} +6 -6
  43. package/dist/plugin-sdk/chrome-BHzykCQ9.js +2415 -0
  44. package/dist/plugin-sdk/{commands-registry-C9y_w3eW.js → commands-registry-CDHo6SSs.js} +4 -4
  45. package/dist/plugin-sdk/commands-registry-CRVdcP1W.js +1125 -0
  46. package/dist/plugin-sdk/{common-CEwMUbms.js → common-Emz6EPQM.js} +2 -2
  47. package/dist/plugin-sdk/compat.js +50 -50
  48. package/dist/plugin-sdk/{config-sMifxgre.js → config-CMjn_DSB.js} +7 -7
  49. package/dist/plugin-sdk/config-DMdJidZc.js +17912 -0
  50. package/dist/plugin-sdk/{deliver-2zt3NeFA.js → deliver-Cz6GluMN.js} +10 -10
  51. package/dist/plugin-sdk/deliver-DMb_cOF7.js +1694 -0
  52. package/dist/plugin-sdk/deliver-runtime-CjCJkoFM.js +32 -0
  53. package/dist/plugin-sdk/deliver-runtime-D0qfBG05.js +32 -0
  54. package/dist/plugin-sdk/deps-send-discord.runtime-9igTHMx2.js +23 -0
  55. package/dist/plugin-sdk/deps-send-discord.runtime-C4AEwjGl.js +23 -0
  56. package/dist/plugin-sdk/deps-send-imessage.runtime-BFpdfthT.js +22 -0
  57. package/dist/plugin-sdk/deps-send-imessage.runtime-DCdEe-_E.js +22 -0
  58. package/dist/plugin-sdk/deps-send-signal.runtime-BNO6SPmR.js +21 -0
  59. package/dist/plugin-sdk/deps-send-signal.runtime-BqB_Ilh-.js +21 -0
  60. package/dist/plugin-sdk/deps-send-slack.runtime-BChVBURL.js +19 -0
  61. package/dist/plugin-sdk/deps-send-slack.runtime-o7IR7Ynh.js +19 -0
  62. package/dist/plugin-sdk/deps-send-telegram.runtime-7Xdhax8B.js +24 -0
  63. package/dist/plugin-sdk/deps-send-telegram.runtime-DyCorUw2.js +24 -0
  64. package/dist/plugin-sdk/deps-send-whatsapp.runtime-D6gMTFom.js +57 -0
  65. package/dist/plugin-sdk/deps-send-whatsapp.runtime-DoOYrpKa.js +57 -0
  66. package/dist/plugin-sdk/diagnostic-BidLPPBm.js +319 -0
  67. package/dist/plugin-sdk/{diagnostic-CU_mni6m.js → diagnostic-DhO2TqL_.js} +2 -2
  68. package/dist/plugin-sdk/{errors-CgRPdp3o.js → errors-9oVz7reJ.js} +1 -1
  69. package/dist/plugin-sdk/errors-s9jrwzSl.js +54 -0
  70. package/dist/plugin-sdk/fetch-guard-CEd4HUIR.js +156 -0
  71. package/dist/plugin-sdk/{fetch-guard-BxMLJbqt.js → fetch-guard-CGQ35-A_.js} +2 -2
  72. package/dist/plugin-sdk/{fs-safe-5aQcM_qM.js → fs-safe-B26UxJny.js} +3 -3
  73. package/dist/plugin-sdk/fs-safe-CZ2NvCjz.js +352 -0
  74. package/dist/plugin-sdk/image-BKaDODzM.js +2310 -0
  75. package/dist/plugin-sdk/{image-BJXV9IMV.js → image-DPgEp54d.js} +6 -6
  76. package/dist/plugin-sdk/{image-ops-DovJMvdf.js → image-ops-CbKrfi-N.js} +2 -2
  77. package/dist/plugin-sdk/image-ops-D0YKZqPy.js +584 -0
  78. package/dist/plugin-sdk/image-runtime-DN6PHT8G.js +25 -0
  79. package/dist/plugin-sdk/image-runtime-DxJgD-YS.js +25 -0
  80. package/dist/plugin-sdk/{ir-DE2ewdq5.js → ir-4JdLS2Hz.js} +7 -7
  81. package/dist/plugin-sdk/ir-D9fxXkgD.js +1296 -0
  82. package/dist/plugin-sdk/local-roots-HL9eBLUg.js +186 -0
  83. package/dist/plugin-sdk/{local-roots-CIwDgpY2.js → local-roots-T6lXDGzr.js} +4 -4
  84. package/dist/plugin-sdk/{logger-DIb2cGHp.js → logger-Bg4vIUJn.js} +2 -2
  85. package/dist/plugin-sdk/logger-D0ST0Irn.js +1163 -0
  86. package/dist/plugin-sdk/{login-CLIcsAVy.js → login-BNCjks0C.js} +4 -4
  87. package/dist/plugin-sdk/login-CUdm5Ct-.js +57 -0
  88. package/dist/plugin-sdk/login-qr-34QcLRte.js +320 -0
  89. package/dist/plugin-sdk/{login-qr-BlxjA0vQ.js → login-qr-CTjNgxhl.js} +5 -5
  90. package/dist/plugin-sdk/manager-DZ9Hn0Fe.js +3917 -0
  91. package/dist/plugin-sdk/{manager-CpAGPHeX.js → manager-D__CoDGL.js} +8 -8
  92. package/dist/plugin-sdk/manager-runtime-B9aBGLrF.js +15 -0
  93. package/dist/plugin-sdk/manager-runtime-DMEBebYo.js +15 -0
  94. package/dist/plugin-sdk/mattermost.js +3 -3
  95. package/dist/plugin-sdk/{outbound-DDpRevO_.js → outbound-DTQ-9Cjw.js} +5 -5
  96. package/dist/plugin-sdk/outbound-DTndjh8O.js +212 -0
  97. package/dist/plugin-sdk/outbound-attachment-BNMQOIcP.js +19 -0
  98. package/dist/plugin-sdk/{outbound-attachment-CVavq5II.js → outbound-attachment-CdHX9v0q.js} +2 -2
  99. package/dist/plugin-sdk/{path-alias-guards-BfpU4lAT.js → path-alias-guards-DSCFtpsd.js} +1 -1
  100. package/dist/plugin-sdk/path-alias-guards-DUn7Q6iW.js +43 -0
  101. package/dist/plugin-sdk/paths-6WIn8_si.js +166 -0
  102. package/dist/plugin-sdk/{paths-CK3lTJYw.js → paths-BQHqKGA8.js} +1 -1
  103. package/dist/plugin-sdk/{pi-embedded-helpers-Cb_h9zSJ.js → pi-embedded-helpers-B7nmCbf7.js} +16 -16
  104. package/dist/plugin-sdk/pi-embedded-helpers-BMA7JWLb.js +9627 -0
  105. package/dist/plugin-sdk/pi-model-discovery-B6gpdlWb.js +134 -0
  106. package/dist/plugin-sdk/{pi-model-discovery-B3B3R7L9.js → pi-model-discovery-DyDwYiK3.js} +1 -1
  107. package/dist/plugin-sdk/pi-model-discovery-runtime-CN6ZaL0W.js +8 -0
  108. package/dist/plugin-sdk/pi-model-discovery-runtime-Q6toTOMZ.js +8 -0
  109. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CP4hHLJk.js +354 -0
  110. package/dist/plugin-sdk/{pi-tools.before-tool-call.runtime-DivpBAM0.js → pi-tools.before-tool-call.runtime-D_f6TDo7.js} +4 -4
  111. package/dist/plugin-sdk/{plugins-BlTrm4bw.js → plugins-BSPvol4w.js} +4 -4
  112. package/dist/plugin-sdk/plugins-CWIlxjXW.js +864 -0
  113. package/dist/plugin-sdk/{proxy-env-Cdh-OQYk.js → proxy-env-D-iVYTBk.js} +1 -1
  114. package/dist/plugin-sdk/{proxy-fetch-Dt5BedH8.js → proxy-fetch-Cf3IUSDw.js} +1 -1
  115. package/dist/plugin-sdk/proxy-fetch-tPMv_1eB.js +38 -0
  116. package/dist/plugin-sdk/{pw-ai-DEDRpMlY.js → pw-ai-BO445UDA.js} +9 -9
  117. package/dist/plugin-sdk/pw-ai-BSMHQrVM.js +1938 -0
  118. package/dist/plugin-sdk/{qmd-manager-Ct9rtJjd.js → qmd-manager-81ezWnIN.js} +7 -7
  119. package/dist/plugin-sdk/qmd-manager-DnMoZBC7.js +1448 -0
  120. package/dist/plugin-sdk/{query-expansion-OdwWuN1S.js → query-expansion-BCOK4OTO.js} +5 -5
  121. package/dist/plugin-sdk/query-expansion-DxTmIU4K.js +1011 -0
  122. package/dist/plugin-sdk/{redact-9WsNyb7S.js → redact-Bns9Du30.js} +1 -1
  123. package/dist/plugin-sdk/redact-DfACyt0X.js +319 -0
  124. package/dist/plugin-sdk/reply-C-WT0k-v.js +98763 -0
  125. package/dist/plugin-sdk/{reply-wZhosbPd.js → reply-DJ3rbbnv.js} +73 -73
  126. package/dist/plugin-sdk/resolve-outbound-target-C6GLRc_O.js +40 -0
  127. package/dist/plugin-sdk/{resolve-outbound-target-BJmCIkW_.js → resolve-outbound-target-DtQd8TzZ.js} +2 -2
  128. package/dist/plugin-sdk/run-with-concurrency-Baa7LYZD.js +2023 -0
  129. package/dist/plugin-sdk/{run-with-concurrency-EUEKeAa8.js → run-with-concurrency-CYcPpb5E.js} +1 -1
  130. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-CUr_hlGk.js +10 -0
  131. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-ai8hcGi_.js +10 -0
  132. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-ByDLfLF3.js +19 -0
  133. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-BzvoaI1G.js +19 -0
  134. package/dist/plugin-sdk/send-7do64QqA.js +2587 -0
  135. package/dist/plugin-sdk/{send-Drs4JqVD.js → send-B9GVkvTk.js} +5 -5
  136. package/dist/plugin-sdk/{send-BMWyVUhm.js → send-BPEn9L0o.js} +13 -13
  137. package/dist/plugin-sdk/send-Bjh-MMdN.js +503 -0
  138. package/dist/plugin-sdk/send-C9jI56cY.js +3135 -0
  139. package/dist/plugin-sdk/{send-0C4KdD-T.js → send-CGjI0pJn.js} +7 -7
  140. package/dist/plugin-sdk/send-CTsZjmvQ.js +540 -0
  141. package/dist/plugin-sdk/{send-oo6mQbab.js → send-CZ6HDwDu.js} +8 -8
  142. package/dist/plugin-sdk/{send-BGWGV_mz.js → send-D6nUI0S3.js} +6 -6
  143. package/dist/plugin-sdk/send-DiuYhmpi.js +414 -0
  144. package/dist/plugin-sdk/{session-CXVARKFK.js → session-Bwjlseuf.js} +3 -3
  145. package/dist/plugin-sdk/session-CiEv9qvh.js +169 -0
  146. package/dist/plugin-sdk/signal.js +2 -2
  147. package/dist/plugin-sdk/{skill-commands-CoqGFLfM.js → skill-commands-BpB2Oe8e.js} +4 -4
  148. package/dist/plugin-sdk/skill-commands-Cuzs_Puw.js +342 -0
  149. package/dist/plugin-sdk/{skills-di-5uS9y.js → skills-CaQpr1kx.js} +6 -6
  150. package/dist/plugin-sdk/skills-RHzhTtJf.js +1428 -0
  151. package/dist/plugin-sdk/slash-commands.runtime-BH06o3dH.js +13 -0
  152. package/dist/plugin-sdk/slash-commands.runtime-Dqev3QWp.js +13 -0
  153. package/dist/plugin-sdk/slash-dispatch.runtime-BotYesgY.js +52 -0
  154. package/dist/plugin-sdk/slash-dispatch.runtime-C_reWfLU.js +52 -0
  155. package/dist/plugin-sdk/slash-skill-commands.runtime-Cl5Y6y_v.js +16 -0
  156. package/dist/plugin-sdk/slash-skill-commands.runtime-CzPvxiUD.js +16 -0
  157. package/dist/plugin-sdk/ssrf-dGOzgEI_.js +202 -0
  158. package/dist/plugin-sdk/store-DQ2KuNGv.js +81 -0
  159. package/dist/plugin-sdk/{store-Dn_E3uaN.js → store-K6C7eOpg.js} +2 -2
  160. package/dist/plugin-sdk/subagent-registry-runtime-BbcgUYOO.js +52 -0
  161. package/dist/plugin-sdk/subagent-registry-runtime-Dhtf2h8u.js +52 -0
  162. package/dist/plugin-sdk/tables-B3jPS9G8.js +55 -0
  163. package/dist/plugin-sdk/{tables-_e9wMygc.js → tables-CeWt6UjS.js} +1 -1
  164. package/dist/plugin-sdk/target-errors-vzf_mLjC.js +195 -0
  165. package/dist/plugin-sdk/thinking-R15Mehif.js +1206 -0
  166. package/dist/plugin-sdk/{thinking-Cih_nxDY.js → thinking-gpcjIDQZ.js} +7 -7
  167. package/dist/plugin-sdk/{tokens-CLE20fRI.js → tokens-C-B2SvJW.js} +1 -1
  168. package/dist/plugin-sdk/tokens-DAL_5WHL.js +52 -0
  169. package/dist/plugin-sdk/{tool-images-D6a1Ua4p.js → tool-images-9Hn0F1o_.js} +2 -2
  170. package/dist/plugin-sdk/tool-images-l3TE_qXt.js +274 -0
  171. package/dist/plugin-sdk/web-C4irM2fl.js +56 -0
  172. package/dist/plugin-sdk/web-DZ7nBzZy.js +56 -0
  173. package/dist/plugin-sdk/{whatsapp-actions-UAnHjKbE.js → whatsapp-actions-CbzdjX4B.js} +17 -17
  174. package/dist/plugin-sdk/whatsapp-actions-DZHLwaea.js +80 -0
  175. package/dist/plugin-sdk/whatsapp.js +50 -50
  176. package/dist/plugin-sdk/zalo.js +2 -2
  177. package/dist/{program-B5Vn_UD_.js → program-D5HYdN0q.js} +2 -2
  178. package/dist/{program-context-Cc5-MG37.js → program-context-CWU-LWnL.js} +6 -6
  179. package/dist/{prompt-select-styled-DTnRirU4.js → prompt-select-styled-C_C2Ae8a.js} +1 -1
  180. package/dist/{prompt-select-styled-BmJHQFIe.js → prompt-select-styled-CjkK2AWX.js} +1 -1
  181. package/dist/{register.maintenance-Di-_iCcy.js → register.maintenance-BnT8sF7e.js} +4 -4
  182. package/dist/{register.maintenance-dpQRuXYm.js → register.maintenance-CVWvM_w8.js} +5 -5
  183. package/dist/{register.onboard-D8V8BiRf.js → register.onboard-B68iwPcU.js} +2 -2
  184. package/dist/{register.onboard-CI1dr2mE.js → register.onboard-Bx2xxYE0.js} +2 -2
  185. package/dist/{register.setup-Dsl5n4Uf.js → register.setup-BgRFFdoH.js} +2 -2
  186. package/dist/{register.setup-CuD_ucSh.js → register.setup-DkztcYGa.js} +2 -2
  187. package/dist/{register.subclis-C4twva8y.js → register.subclis-Bb6WLUhM.js} +3 -3
  188. package/dist/{run-main-6tdntESl.js → run-main-CApmG6CS.js} +3 -3
  189. package/dist/{update-cli-XGRmAcuW.js → update-cli-DoKsKvCz.js} +4 -4
  190. package/dist/{update-cli-CKvgxhEz.js → update-cli-VQSBFHlu.js} +5 -5
  191. package/extensions/acpx/node_modules/.bin/acpx +2 -2
  192. package/extensions/diffs/node_modules/.bin/playwright-core +2 -2
  193. package/extensions/googlechat/node_modules/.bin/squidclaw +4 -4
  194. package/extensions/matrix/node_modules/.bin/markdown-it +2 -2
  195. package/extensions/memory-core/node_modules/.bin/squidclaw +4 -4
  196. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  197. package/extensions/tlon/node_modules/.bin/tlon +2 -2
  198. package/package.json +1 -1
  199. package/dist/control-ui/assets/index-BqxuPQOl.js.map +0 -1
  200. package/dist/plugin-sdk/deliver-runtime-Dx0Sg-lg.js +0 -32
  201. package/dist/plugin-sdk/deps-send-discord.runtime-bKwjojX0.js +0 -23
  202. package/dist/plugin-sdk/deps-send-imessage.runtime-DcxfdKGE.js +0 -22
  203. package/dist/plugin-sdk/deps-send-signal.runtime-79rGat6V.js +0 -21
  204. package/dist/plugin-sdk/deps-send-slack.runtime-DfMO701H.js +0 -19
  205. package/dist/plugin-sdk/deps-send-telegram.runtime-Bnjwm6SU.js +0 -24
  206. package/dist/plugin-sdk/deps-send-whatsapp.runtime-CS50_Jgh.js +0 -57
  207. package/dist/plugin-sdk/image-runtime-f-WKB3Bx.js +0 -25
  208. package/dist/plugin-sdk/manager-runtime-DAKJEbuY.js +0 -15
  209. package/dist/plugin-sdk/pi-model-discovery-runtime-Bm4bHwpO.js +0 -8
  210. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-D74eZbH7.js +0 -10
  211. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-BidSddX5.js +0 -19
  212. package/dist/plugin-sdk/slash-commands.runtime-CseiMacz.js +0 -13
  213. package/dist/plugin-sdk/slash-dispatch.runtime-88gX6CLk.js +0 -52
  214. package/dist/plugin-sdk/slash-skill-commands.runtime-BNrQNIZ7.js +0 -16
  215. package/dist/plugin-sdk/subagent-registry-runtime-Cv8RHTjT.js +0 -52
  216. package/dist/plugin-sdk/web-C4tTN9Xu.js +0 -56
  217. package/docs/reference/templates/IDENTITY.md +0 -14
  218. package/docs/reference/templates/USER.md +0 -9
  219. package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -21
  220. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -21
  221. package/extensions/nostr/node_modules/.bin/tsc +0 -21
  222. package/extensions/nostr/node_modules/.bin/tsserver +0 -21
@@ -1,4 +1,4 @@
1
- import { q as resolveNodeRequireFromMeta } from "./logger-DIb2cGHp.js";
1
+ import { J as resolveNodeRequireFromMeta } from "./logger-D0ST0Irn.js";
2
2
 
3
3
  //#region src/security/safe-regex.ts
4
4
  const SAFE_REGEX_CACHE_MAX = 256;
@@ -0,0 +1,319 @@
1
+ import { q as resolveNodeRequireFromMeta } from "./logger-Bg4vIUJn.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 };