@spacebar_ai/moldclaw-core 2026.3.43 → 2026.3.44

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 (1131) hide show
  1. package/dist/accounts-5qY-dKca.d.ts +103 -0
  2. package/dist/accounts-SqdHz2ZP.js +114 -0
  3. package/dist/acp-cli-E6bcNqiE.js +2093 -0
  4. package/dist/actions.runtime-BU_XMuLk.js +119 -0
  5. package/dist/actions.runtime-CY5h8lqH.js +133 -0
  6. package/dist/agent-scope-lZlwP1At.js +208 -0
  7. package/dist/agents-C4SkadR1.js +853 -0
  8. package/dist/agents-RfwqGCzE.js +222 -0
  9. package/dist/agents.config-CX9CPNfP.js +17 -0
  10. package/dist/agents.config-DF9Zwn9n.js +121 -0
  11. package/dist/allow-list-3WSjz1zl.js +81 -0
  12. package/dist/allowlist-DNbDjFjw.js +142 -0
  13. package/dist/api-BEOpJ7dR.js +117 -0
  14. package/dist/audit-CpJz_eu6.js +787 -0
  15. package/dist/audit-CpfSjvyo.js +54 -0
  16. package/dist/audit-channel.collect.runtime-BeGotloZ.js +605 -0
  17. package/dist/audit-channel.runtime-BJDZ7ETt.js +121 -0
  18. package/dist/audit-extra.async-C2G0mqmk.js +813 -0
  19. package/dist/audit-membership-runtime-B1FqJsPV.js +162 -0
  20. package/dist/audit.deep.runtime-DyL9O_sU.js +25 -0
  21. package/dist/audit.nondeep.runtime-C6jFgJfH.js +832 -0
  22. package/dist/audit.runtime-Dnlsn23e.js +118 -0
  23. package/dist/auth-Ch3Rchm4.js +101 -0
  24. package/dist/auth-choice-CEFSlnLT.js +122 -0
  25. package/dist/auth-choice-CVCef-eU.js +268 -0
  26. package/dist/auth-choice-Cez-pXrg.js +507 -0
  27. package/dist/auth-choice-options-DO78mvPe.js +123 -0
  28. package/dist/auth-choice-prompt-CUkC7Mmb.js +36 -0
  29. package/dist/auth-choice-prompt-DCuQRiVl.js +115 -0
  30. package/dist/auth-choice.apply-helpers-BhbNIV8X.js +66 -0
  31. package/dist/auth-choice.plugin-providers.runtime-4BhqvEw_.js +119 -0
  32. package/dist/auth-profiles-smABVXzp.js +128040 -0
  33. package/dist/auth-profiles.runtime-Cr-ojtTc.js +116 -0
  34. package/dist/banner-CojBHPWr.js +342 -0
  35. package/dist/bluebubbles-BnLsj2Fy.d.ts +6 -0
  36. package/dist/bluebubbles-CVk7M3Bl.js +64 -0
  37. package/dist/bot-DdyrB2z9.d.ts +478 -0
  38. package/dist/brave-w4Fo8WZ3.js +24 -0
  39. package/dist/browser-cli-DWFs3P_i.js +1494 -0
  40. package/dist/build-info.json +3 -3
  41. package/dist/bundled/boot-md/handler.d.ts +1 -1
  42. package/dist/bundled/boot-md/handler.js +35 -35
  43. package/dist/bundled/bootstrap-extra-files/handler.d.ts +1 -1
  44. package/dist/bundled/bootstrap-extra-files/handler.js +1 -1
  45. package/dist/bundled/command-logger/handler.d.ts +1 -1
  46. package/dist/bundled/session-memory/handler.d.ts +1 -1
  47. package/dist/bundled/session-memory/handler.js +36 -36
  48. package/dist/call-Do7wTSr7.js +39 -0
  49. package/dist/call-gdDAt07d.js +640 -0
  50. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  51. package/dist/channel-B26pkce0.js +214 -0
  52. package/dist/channel-BJHp0AQC.js +352 -0
  53. package/dist/channel-BKFOv51P.js +4681 -0
  54. package/dist/channel-BNgpOY8v.js +538 -0
  55. package/dist/channel-BcQAAo2P.js +226 -0
  56. package/dist/channel-BvNdnhbx.js +1598 -0
  57. package/dist/channel-C1Rda3Jd.js +306 -0
  58. package/dist/channel-C87DG-F7.js +803 -0
  59. package/dist/channel-CIip0kvZ.js +619 -0
  60. package/dist/channel-CTPxoT_E2.js +316 -0
  61. package/dist/channel-CklaCzUG.js +562 -0
  62. package/dist/channel-CoJnAdLs.js +920 -0
  63. package/dist/channel-D3tafL1_.js +949 -0
  64. package/dist/channel-DFMrP2uu.js +542 -0
  65. package/dist/channel-DMd5cJQe.js +397 -0
  66. package/dist/channel-Dm34kxAJ.js +207 -0
  67. package/dist/channel-DmwF9udn.js +1321 -0
  68. package/dist/channel-account-context-Bjur9nlh.js +103 -0
  69. package/dist/channel-bGnST659.js +943 -0
  70. package/dist/channel-hIgbkTZf.js +575 -0
  71. package/dist/channel-m_TGrDKo.js +497 -0
  72. package/dist/channel-options-DoUPBMa8.js +50 -0
  73. package/dist/channel-plugin-ids-TZIY4hFs.js +26 -0
  74. package/dist/channel-summary-qD54bOBO.js +111 -0
  75. package/dist/channel.runtime-B0H04Dkk.js +199 -0
  76. package/dist/channel.runtime-BU1f3NkV.js +418 -0
  77. package/dist/channel.runtime-Bj1sfLep.js +4011 -0
  78. package/dist/channel.runtime-BtPAAJc3.js +870 -0
  79. package/dist/channel.runtime-Bx-10m_j.js +171 -0
  80. package/dist/channel.runtime-CI_TBywQ.js +179 -0
  81. package/dist/channel.runtime-CSLj14-Z.js +182 -0
  82. package/dist/channel.runtime-D-lTSYAd.js +404 -0
  83. package/dist/channel.runtime-DJqIOSji.js +127 -0
  84. package/dist/channel.runtime-Ec8aQ9V2.js +241 -0
  85. package/dist/channel.runtime-ax5a1jBm.js +218 -0
  86. package/dist/channel.setup-B-ncdYLT.js +9 -0
  87. package/dist/channel.setup-BY4bh5dm.js +9 -0
  88. package/dist/channel.setup-BovsdMnL.js +57 -0
  89. package/dist/channel.setup-CXzXA25h.js +6 -0
  90. package/dist/channel.setup-DcZUEufN.js +8 -0
  91. package/dist/channel.setup-E6zceRsE.js +8 -0
  92. package/dist/channel.setup-Pc7nGbdX.js +11 -0
  93. package/dist/channels/plugins/actions/discord.d.ts +2 -2
  94. package/dist/channels/plugins/actions/discord.js +35 -35
  95. package/dist/channels/plugins/actions/signal.d.ts +1 -1
  96. package/dist/channels/plugins/actions/signal.js +35 -35
  97. package/dist/channels/plugins/actions/telegram.d.ts +2 -2
  98. package/dist/channels/plugins/actions/telegram.js +35 -35
  99. package/dist/channels/plugins/agent-tools/whatsapp-login.d.ts +3 -3
  100. package/dist/channels/plugins/agent-tools/whatsapp-login.js +35 -35
  101. package/dist/channels-CPtE5ND6.js +404 -0
  102. package/dist/channels-Cj8ZolHI.js +1118 -0
  103. package/dist/channels-cli-D2sKrntt.js +291 -0
  104. package/dist/channels-status-issues-CzIHODg2.js +16 -0
  105. package/dist/clawbot-cli-BcwEDmUn.js +118 -0
  106. package/dist/cleanup-utils-D0L17RsX.js +96 -0
  107. package/dist/cli/daemon-cli.js +1 -1
  108. package/dist/cli-BvGVPKnD.js +154 -0
  109. package/dist/command-registry-CADQzTAg.js +14 -0
  110. package/dist/command-registry-ktiJNAJd.js +242 -0
  111. package/dist/command-secret-gateway-CXp10RTM.js +111 -0
  112. package/dist/compact.runtime-DyKL-Iar.js +116 -0
  113. package/dist/completion-cli-Bz4STrpt.js +17 -0
  114. package/dist/completion-cli-pVda2OFb.js +445 -0
  115. package/dist/config-BbvDRSYp.js +31 -0
  116. package/dist/config-CwBv71QC.js +44 -0
  117. package/dist/config-cli-Y0uXHbOw.js +678 -0
  118. package/dist/config-guard-BpW5g7JE.js +118 -0
  119. package/dist/config-validation-B-vLIsbo.js +262 -0
  120. package/dist/config-value-DT3-5958.js +132 -0
  121. package/dist/configure-B9U-jCqP.js +1100 -0
  122. package/dist/configure-BJ3Wrs5b.js +243 -0
  123. package/dist/control-ui-assets-C1YDYi82.js +232 -0
  124. package/dist/control-ui-shared-Dm5Dh0Lo.js +29 -0
  125. package/dist/core-BwKq3krw.js +150 -0
  126. package/dist/core-hjBwfDsW.d.ts +87 -0
  127. package/dist/cron-cli-DTDgfoMh.js +639 -0
  128. package/dist/daemon-cli-C-dkAXR1.js +339 -0
  129. package/dist/daemon-install-Oy0Q5pMF.js +180 -0
  130. package/dist/deliver-DNGnDqF9.js +111 -0
  131. package/dist/deliver-runtime-CCNZIhET.js +111 -0
  132. package/dist/device-id-cli-XvwZbIyC.js +52 -0
  133. package/dist/device-identity-IG5DngWM.js +365 -0
  134. package/dist/devices-cli-DIsxj4xp.js +342 -0
  135. package/dist/diagnostic-DTPopFvh.js +310 -0
  136. package/dist/directory-cli-DTSY3Ktr.js +311 -0
  137. package/dist/directory-config-helpers-DpFcAbmo.d.ts +38 -0
  138. package/dist/directory.static-CBRAUwUW.js +44 -0
  139. package/dist/discord-CrgxhEWw.js +114 -0
  140. package/dist/discovery-DrG7wmAR.js +48 -0
  141. package/dist/dm-policy-shared-DKoGdUpY.d.ts +95 -0
  142. package/dist/dns-cli-BJiz6CLK.js +217 -0
  143. package/dist/docs-cli-Dq2Yi5qO.js +174 -0
  144. package/dist/doctor-completion-D3GeVcFP.js +90 -0
  145. package/dist/doctor-config-flow-B1cMjr8h.js +112 -0
  146. package/dist/doctor-config-flow-BUe7JpV3.js +2437 -0
  147. package/dist/enable-Bc8bCuVe.js +24 -0
  148. package/dist/entry.js +4 -4
  149. package/dist/exec-approvals-cli-kLAev6bP.js +421 -0
  150. package/dist/extensions/acpx/index.d.ts +1 -1
  151. package/dist/extensions/amazon-bedrock/index.d.ts +1 -1
  152. package/dist/extensions/amazon-bedrock/index.js +4 -4
  153. package/dist/extensions/anthropic/index.d.ts +1 -1
  154. package/dist/extensions/anthropic/index.js +35 -35
  155. package/dist/extensions/bluebubbles/index.d.ts +1 -1
  156. package/dist/extensions/bluebubbles/index.js +39 -39
  157. package/dist/extensions/bluebubbles/setup-entry.d.ts +2 -2
  158. package/dist/extensions/bluebubbles/setup-entry.js +39 -39
  159. package/dist/extensions/brave/index.d.ts +1 -1
  160. package/dist/extensions/brave/index.js +5 -5
  161. package/dist/extensions/byteplus/index.d.ts +1 -1
  162. package/dist/extensions/byteplus/index.js +35 -35
  163. package/dist/extensions/cloudflare-ai-gateway/index.d.ts +1 -1
  164. package/dist/extensions/cloudflare-ai-gateway/index.js +36 -36
  165. package/dist/extensions/copilot-proxy/index.d.ts +1 -1
  166. package/dist/extensions/copilot-proxy/index.js +4 -4
  167. package/dist/extensions/device-pair/index.d.ts +1 -1
  168. package/dist/extensions/device-pair/index.js +4 -4
  169. package/dist/extensions/diagnostics-otel/index.d.ts +1 -1
  170. package/dist/extensions/diagnostics-otel/index.js +4 -4
  171. package/dist/extensions/diffs/index.d.ts +1 -1
  172. package/dist/extensions/discord/index.d.ts +1 -1
  173. package/dist/extensions/discord/index.js +40 -40
  174. package/dist/extensions/discord/setup-entry.d.ts +1 -1
  175. package/dist/extensions/discord/setup-entry.js +38 -38
  176. package/dist/extensions/elevenlabs/index.d.ts +1 -1
  177. package/dist/extensions/elevenlabs/index.js +35 -35
  178. package/dist/extensions/feishu/index.d.ts +2 -2
  179. package/dist/extensions/feishu/index.js +40 -40
  180. package/dist/extensions/feishu/setup-entry.d.ts +2 -2
  181. package/dist/extensions/feishu/setup-entry.js +37 -37
  182. package/dist/extensions/firecrawl/index.d.ts +1 -1
  183. package/dist/extensions/firecrawl/index.js +35 -35
  184. package/dist/extensions/github-copilot/index.d.ts +1 -1
  185. package/dist/extensions/github-copilot/index.js +35 -35
  186. package/dist/extensions/google/index.d.ts +1 -1
  187. package/dist/extensions/google/index.js +35 -35
  188. package/dist/extensions/googlechat/index.d.ts +1 -1
  189. package/dist/extensions/googlechat/index.js +38 -38
  190. package/dist/extensions/googlechat/setup-entry.d.ts +1 -1
  191. package/dist/extensions/googlechat/setup-entry.js +38 -38
  192. package/dist/extensions/huggingface/index.d.ts +1 -1
  193. package/dist/extensions/huggingface/index.js +35 -35
  194. package/dist/extensions/imessage/index.d.ts +1 -1
  195. package/dist/extensions/imessage/index.js +39 -39
  196. package/dist/extensions/imessage/setup-entry.d.ts +1 -1
  197. package/dist/extensions/imessage/setup-entry.js +39 -39
  198. package/dist/extensions/irc/index.d.ts +1 -1
  199. package/dist/extensions/irc/index.js +38 -38
  200. package/dist/extensions/irc/setup-entry.d.ts +2 -2
  201. package/dist/extensions/irc/setup-entry.js +38 -38
  202. package/dist/extensions/kakao-talkchannel/index.d.ts +1 -1
  203. package/dist/extensions/kakao-talkchannel/index.js +4 -4
  204. package/dist/extensions/kilocode/index.d.ts +1 -1
  205. package/dist/extensions/kilocode/index.js +35 -35
  206. package/dist/extensions/kimi-coding/index.d.ts +1 -1
  207. package/dist/extensions/kimi-coding/index.js +35 -35
  208. package/dist/extensions/line/index.d.ts +1 -1
  209. package/dist/extensions/line/index.js +37 -37
  210. package/dist/extensions/line/setup-entry.d.ts +1 -1
  211. package/dist/extensions/line/setup-entry.js +37 -37
  212. package/dist/extensions/llm-task/index.d.ts +1 -1
  213. package/dist/extensions/llm-task/index.js +35 -35
  214. package/dist/extensions/lobster/index.d.ts +1 -1
  215. package/dist/extensions/lobster/index.js +4 -4
  216. package/dist/extensions/matrix/index.d.ts +1 -1
  217. package/dist/extensions/matrix/index.js +40 -40
  218. package/dist/extensions/matrix/setup-entry.d.ts +2 -2
  219. package/dist/extensions/matrix/setup-entry.js +40 -40
  220. package/dist/extensions/mattermost/index.d.ts +1 -1
  221. package/dist/extensions/mattermost/index.js +37 -37
  222. package/dist/extensions/mattermost/setup-entry.d.ts +2 -2
  223. package/dist/extensions/mattermost/setup-entry.js +37 -37
  224. package/dist/extensions/memory-core/index.d.ts +1 -1
  225. package/dist/extensions/memory-core/index.js +4 -4
  226. package/dist/extensions/memory-lancedb/index.d.ts +1 -1
  227. package/dist/extensions/memory-lancedb/index.js +4 -4
  228. package/dist/extensions/microsoft/index.d.ts +1 -1
  229. package/dist/extensions/microsoft/index.js +35 -35
  230. package/dist/extensions/minimax/index.d.ts +1 -1
  231. package/dist/extensions/minimax/index.js +35 -35
  232. package/dist/extensions/mistral/index.d.ts +1 -1
  233. package/dist/extensions/mistral/index.js +35 -35
  234. package/dist/extensions/modelstudio/index.d.ts +1 -1
  235. package/dist/extensions/modelstudio/index.js +35 -35
  236. package/dist/extensions/moonshot/index.d.ts +1 -1
  237. package/dist/extensions/moonshot/index.js +35 -35
  238. package/dist/extensions/msteams/index.d.ts +1 -1
  239. package/dist/extensions/msteams/index.js +40 -40
  240. package/dist/extensions/msteams/setup-entry.d.ts +1 -1
  241. package/dist/extensions/msteams/setup-entry.js +40 -40
  242. package/dist/extensions/nextcloud-talk/index.d.ts +1 -1
  243. package/dist/extensions/nextcloud-talk/index.js +37 -37
  244. package/dist/extensions/nextcloud-talk/setup-entry.d.ts +2 -2
  245. package/dist/extensions/nextcloud-talk/setup-entry.js +37 -37
  246. package/dist/extensions/nostr/index.d.ts +1 -1
  247. package/dist/extensions/nostr/index.js +37 -37
  248. package/dist/extensions/nostr/setup-entry.d.ts +1 -1
  249. package/dist/extensions/nostr/setup-entry.js +37 -37
  250. package/dist/extensions/nvidia/index.d.ts +1 -1
  251. package/dist/extensions/nvidia/index.js +4 -4
  252. package/dist/extensions/ollama/index.d.ts +1 -1
  253. package/dist/extensions/ollama/index.js +7 -7
  254. package/dist/extensions/open-prose/index.d.ts +1 -1
  255. package/dist/extensions/open-prose/index.js +4 -4
  256. package/dist/extensions/openai/index.d.ts +1 -1
  257. package/dist/extensions/openai/index.js +35 -35
  258. package/dist/extensions/opencode/index.d.ts +1 -1
  259. package/dist/extensions/opencode/index.js +35 -35
  260. package/dist/extensions/opencode-go/index.d.ts +1 -1
  261. package/dist/extensions/opencode-go/index.js +35 -35
  262. package/dist/extensions/openrouter/index.d.ts +1 -1
  263. package/dist/extensions/openrouter/index.js +35 -35
  264. package/dist/extensions/openshell/index.d.ts +1 -1
  265. package/dist/extensions/openshell/index.js +35 -35
  266. package/dist/extensions/perplexity/index.d.ts +1 -1
  267. package/dist/extensions/perplexity/index.js +5 -5
  268. package/dist/extensions/phone-control/index.d.ts +1 -1
  269. package/dist/extensions/phone-control/index.js +4 -4
  270. package/dist/extensions/qianfan/index.d.ts +1 -1
  271. package/dist/extensions/qianfan/index.js +35 -35
  272. package/dist/extensions/qwen-portal-auth/index.d.ts +1 -1
  273. package/dist/extensions/qwen-portal-auth/index.js +35 -35
  274. package/dist/extensions/sglang/index.d.ts +1 -1
  275. package/dist/extensions/sglang/index.js +35 -35
  276. package/dist/extensions/signal/index.d.ts +1 -1
  277. package/dist/extensions/signal/index.js +38 -38
  278. package/dist/extensions/signal/setup-entry.d.ts +1 -1
  279. package/dist/extensions/signal/setup-entry.js +38 -38
  280. package/dist/extensions/slack/index.d.ts +1 -1
  281. package/dist/extensions/slack/index.js +39 -39
  282. package/dist/extensions/slack/setup-entry.d.ts +1 -1
  283. package/dist/extensions/slack/setup-entry.js +38 -38
  284. package/dist/extensions/synology-chat/index.d.ts +1 -1
  285. package/dist/extensions/synology-chat/index.js +37 -37
  286. package/dist/extensions/synology-chat/setup-entry.d.ts +1 -1
  287. package/dist/extensions/synology-chat/setup-entry.js +37 -37
  288. package/dist/extensions/synthetic/index.d.ts +1 -1
  289. package/dist/extensions/synthetic/index.js +35 -35
  290. package/dist/extensions/talk-voice/index.d.ts +1 -1
  291. package/dist/extensions/talk-voice/index.js +35 -35
  292. package/dist/extensions/telegram/index.d.ts +1 -1
  293. package/dist/extensions/telegram/index.js +38 -38
  294. package/dist/extensions/telegram/setup-entry.d.ts +1 -1
  295. package/dist/extensions/telegram/setup-entry.js +37 -37
  296. package/dist/extensions/thread-ownership/index.d.ts +1 -1
  297. package/dist/extensions/thread-ownership/index.js +4 -4
  298. package/dist/extensions/tlon/index.d.ts +1 -1
  299. package/dist/extensions/tlon/index.js +37 -37
  300. package/dist/extensions/tlon/setup-entry.d.ts +1 -1
  301. package/dist/extensions/tlon/setup-entry.js +37 -37
  302. package/dist/extensions/together/index.d.ts +1 -1
  303. package/dist/extensions/together/index.js +35 -35
  304. package/dist/extensions/twitch/index.d.ts +2 -2
  305. package/dist/extensions/twitch/index.js +37 -37
  306. package/dist/extensions/venice/index.d.ts +1 -1
  307. package/dist/extensions/venice/index.js +35 -35
  308. package/dist/extensions/vercel-ai-gateway/index.d.ts +1 -1
  309. package/dist/extensions/vercel-ai-gateway/index.js +36 -36
  310. package/dist/extensions/vllm/index.d.ts +1 -1
  311. package/dist/extensions/vllm/index.js +35 -35
  312. package/dist/extensions/voice-call/index.d.ts +1 -1
  313. package/dist/extensions/voice-call/index.js +35 -35
  314. package/dist/extensions/volcengine/index.d.ts +1 -1
  315. package/dist/extensions/volcengine/index.js +35 -35
  316. package/dist/extensions/whatsapp/index.d.ts +1 -1
  317. package/dist/extensions/whatsapp/index.js +38 -38
  318. package/dist/extensions/whatsapp/setup-entry.d.ts +1 -1
  319. package/dist/extensions/whatsapp/setup-entry.js +38 -38
  320. package/dist/extensions/xai/index.d.ts +1 -1
  321. package/dist/extensions/xai/index.js +35 -35
  322. package/dist/extensions/xiaomi/index.d.ts +1 -1
  323. package/dist/extensions/xiaomi/index.js +35 -35
  324. package/dist/extensions/zai/index.d.ts +1 -1
  325. package/dist/extensions/zai/index.js +35 -35
  326. package/dist/extensions/zalo/index.d.ts +1 -1
  327. package/dist/extensions/zalo/index.js +39 -39
  328. package/dist/extensions/zalo/setup-entry.d.ts +1 -1
  329. package/dist/extensions/zalo/setup-entry.js +39 -39
  330. package/dist/extensions/zalouser/index.d.ts +1 -1
  331. package/dist/extensions/zalouser/index.js +40 -40
  332. package/dist/extensions/zalouser/setup-entry.d.ts +1 -1
  333. package/dist/extensions/zalouser/setup-entry.js +40 -40
  334. package/dist/feishu-fIcnHDTd.d.ts +36 -0
  335. package/dist/gateway-cli-0c-8h93_.js +26437 -0
  336. package/dist/gateway-install-token-1PwJvrBY.js +163 -0
  337. package/dist/gateway-rpc-C0Vk51W7.js +26 -0
  338. package/dist/gateway-runtime-CBm3CCoA.js +69 -0
  339. package/dist/git-commit-BTWXFY41.js +177 -0
  340. package/dist/git-commit-D6GTN5Yt.js +2 -0
  341. package/dist/googlechat-BQr4xgoZ.js +307 -0
  342. package/dist/googlechat-BvwsCVKl.d.ts +12 -0
  343. package/dist/group-access-DpiQnd-G.d.ts +61 -0
  344. package/dist/health-6yZQGADY.js +113 -0
  345. package/dist/health-C9DYGyRe.js +570 -0
  346. package/dist/heartbeat-summary-Dct2lqJj.js +57 -0
  347. package/dist/help-CtwSApfq.js +81 -0
  348. package/dist/hooks-9gokOxZ5.d.ts +6 -0
  349. package/dist/hooks-cli-BegKzHZT.js +1000 -0
  350. package/dist/hooks-status-Bm_pGORf.js +78 -0
  351. package/dist/http-registry-D-S6a1Na.d.ts +20 -0
  352. package/dist/identity-file-Diub2a0t.js +60 -0
  353. package/dist/image-generation-CbIVzmAR.d.ts +9 -0
  354. package/dist/imessage-Bgok9kfl.js +31 -0
  355. package/dist/imessage-VIHePprL.js +115 -0
  356. package/dist/inbound-reply-dispatch-B53GAGWq.js +71 -0
  357. package/dist/inbound-reply-dispatch-n7U3qg15.d.ts +72 -0
  358. package/dist/index.js +2 -2
  359. package/dist/install-target-oz1pjfHH.js +574 -0
  360. package/dist/installs-CUFm5V8a.js +532 -0
  361. package/dist/io-BaBxjB1v.js +9739 -0
  362. package/dist/io-CgHb1Jld.js +29 -0
  363. package/dist/irc-CaRKzGvW.js +672 -0
  364. package/dist/library-C5SNBCMb.js +112 -0
  365. package/dist/lifecycle-core-Dn8PK6nk.js +382 -0
  366. package/dist/line/accounts.d.ts +2 -2
  367. package/dist/line/send.d.ts +1 -1
  368. package/dist/line/send.js +7 -7
  369. package/dist/line/template-messages.d.ts +1 -1
  370. package/dist/line-B5QFpgN_.d.ts +75 -0
  371. package/dist/line-fePrrQOD.js +530 -0
  372. package/dist/llm-slug-generator-hKae3XDA.js +67 -0
  373. package/dist/llm-slug-generator.d.ts +1 -1
  374. package/dist/llm-slug-generator.js +36 -36
  375. package/dist/logging-CdisccbY.js +13 -0
  376. package/dist/logging-LKQSgX1d.js +30 -0
  377. package/dist/login-qr-C1YWh4nE.js +233 -0
  378. package/dist/login-qr-WFluMDMb.js +112 -0
  379. package/dist/logs-cli-CNzOvZ2d.js +256 -0
  380. package/dist/manager-runtime-DgMhLTkR.js +111 -0
  381. package/dist/manager.runtime-hUWgpPt2.js +715 -0
  382. package/dist/manifest-registry-CS_p1OBQ.js +1329 -0
  383. package/dist/matrix-43_RGLZN.d.ts +68 -0
  384. package/dist/matrix-CCFxHfxa.js +1269 -0
  385. package/dist/matrix-DWs_qIkJ.js +1495 -0
  386. package/dist/mcp-cli-Ci2jvv3s.js +87 -0
  387. package/dist/media-understanding.runtime-Cdr6iTW6.js +116 -0
  388. package/dist/memory-cli-LZbyF0Iu.js +111 -0
  389. package/dist/memory-search-BHhETk6u.js +17 -0
  390. package/dist/memory-search-tTD5o_rU.js +204 -0
  391. package/dist/method-scopes-B2ZKSsxQ.js +2452 -0
  392. package/dist/model-auth-markers-LqZ4qhrZ.d.ts +20 -0
  393. package/dist/model-picker-CTR5mo4v.js +112 -0
  394. package/dist/model-picker-DG4z_dBs.js +390 -0
  395. package/dist/model-picker.runtime-DMQ9Pj9_.js +125 -0
  396. package/dist/model-selection-bBBxfXdb.js +653 -0
  397. package/dist/model-suppression.runtime-BVG75tZ7.js +116 -0
  398. package/dist/models-BjkVLfgw.js +2514 -0
  399. package/dist/models-ZO01Q4cx.js +118 -0
  400. package/dist/models-cli-DemdF-bm.js +309 -0
  401. package/dist/models-config-B2Jja8ua.js +111 -0
  402. package/dist/models-config.providers.discovery-puxTsH39.d.ts +18 -0
  403. package/dist/moldclaw-root-Cb6HRlUO.js +92 -0
  404. package/dist/monitor-BP4idxJD.js +782 -0
  405. package/dist/monitor-B_eP8Eim.js +772 -0
  406. package/dist/monitor-CRHYNl5J.js +3468 -0
  407. package/dist/monitor-Ci1Xg4g3.js +113 -0
  408. package/dist/monitor-DEodDl3z.js +6823 -0
  409. package/dist/monitor-DJlNKuMz.js +115 -0
  410. package/dist/monitor-DvFwDS9w.js +3076 -0
  411. package/dist/monitor-shared--cEjSf8s.js +444 -0
  412. package/dist/msteams-CV2a8uE8.js +852 -0
  413. package/dist/node-cli-Of2g7DSd.js +2503 -0
  414. package/dist/node-resolve-BYC2FbO2.js +835 -0
  415. package/dist/nodes-cli-CPHM6Upj.js +1380 -0
  416. package/dist/nostr-BFKRoOlz.d.ts +7 -0
  417. package/dist/nostr-lHpcBzz4.js +8744 -0
  418. package/dist/npm-resolution-kqHN85wB.js +60 -0
  419. package/dist/oauth-env-CLG8KOrz.js +10 -0
  420. package/dist/onboard-BON0C360.js +48 -0
  421. package/dist/onboard-CRkIBgOI.js +589 -0
  422. package/dist/onboard-DsKI17iq.js +25 -0
  423. package/dist/onboard-channels-BY3IbBBf.js +1241 -0
  424. package/dist/onboard-channels-CLKdRxvW.js +205 -0
  425. package/dist/onboard-custom-BjPrMo_R.js +571 -0
  426. package/dist/onboard-custom-DqcPiZBN.js +114 -0
  427. package/dist/onboard-helpers-BkrOY5OE.js +113 -0
  428. package/dist/onboard-helpers-DiSRTpZC.js +335 -0
  429. package/dist/onboard-hooks-pzEPZAvl.js +72 -0
  430. package/dist/onboard-remote-ChyLC6Dk.js +181 -0
  431. package/dist/onboard-remote-DHmK9ntl.js +117 -0
  432. package/dist/onboard-search-BgA3jEMW.js +302 -0
  433. package/dist/onboard-skills-BMo_NvnW.js +133 -0
  434. package/dist/onboard-skills-Bba-Z2p8.js +117 -0
  435. package/dist/outbound-media-BHD4aJEX.d.ts +11 -0
  436. package/dist/outbound-media-DSno0N82.js +11 -0
  437. package/dist/pairing-access-CzHpaM0R.d.ts +21 -0
  438. package/dist/pairing-cli-CmklqK0q.js +217 -0
  439. package/dist/perplexity-CXwMDD3u.js +24 -0
  440. package/dist/persistent-dedupe-B9vrAf8t.d.ts +26 -0
  441. package/dist/pi-model-discovery-runtime-BrK7tcaO.js +111 -0
  442. package/dist/pi-tools.before-tool-call.runtime-C5yLUogH.js +381 -0
  443. package/dist/plugin-install-C4AWJIFP.js +117 -0
  444. package/dist/plugin-install-CB3J1hfV.js +184 -0
  445. package/dist/plugin-install-plan-7itZiegi.js +49 -0
  446. package/dist/plugin-registry-DX_GFoiz.js +113 -0
  447. package/dist/plugin-registry-e3cxTtvb.js +49 -0
  448. package/dist/plugin-sdk/account-resolution.js +35 -35
  449. package/dist/plugin-sdk/acp-runtime.js +35 -35
  450. package/dist/plugin-sdk/agent-runtime.js +35 -35
  451. package/dist/plugin-sdk/bluebubbles.js +37 -37
  452. package/dist/plugin-sdk/channel-config-helpers.js +35 -35
  453. package/dist/plugin-sdk/channel-policy.js +35 -35
  454. package/dist/plugin-sdk/channel-runtime.js +35 -35
  455. package/dist/plugin-sdk/compat.js +36 -36
  456. package/dist/plugin-sdk/config-runtime.js +35 -35
  457. package/dist/plugin-sdk/conversation-runtime.js +35 -35
  458. package/dist/plugin-sdk/copilot-proxy.js +4 -4
  459. package/dist/plugin-sdk/core.js +4 -4
  460. package/dist/plugin-sdk/device-pair.js +4 -4
  461. package/dist/plugin-sdk/discord.js +35 -35
  462. package/dist/plugin-sdk/feishu.js +35 -35
  463. package/dist/plugin-sdk/gateway-runtime.js +10 -10
  464. package/dist/plugin-sdk/googlechat.js +37 -37
  465. package/dist/plugin-sdk/image-generation-runtime.js +35 -35
  466. package/dist/plugin-sdk/image-generation.js +35 -35
  467. package/dist/plugin-sdk/imessage.js +36 -36
  468. package/dist/plugin-sdk/index.js +35 -35
  469. package/dist/plugin-sdk/infra-runtime.js +35 -35
  470. package/dist/plugin-sdk/irc.js +37 -37
  471. package/dist/plugin-sdk/line.js +36 -36
  472. package/dist/plugin-sdk/llm-task.js +35 -35
  473. package/dist/plugin-sdk/lobster.js +4 -4
  474. package/dist/plugin-sdk/matrix.js +37 -37
  475. package/dist/plugin-sdk/mattermost.js +36 -36
  476. package/dist/plugin-sdk/media-runtime.js +35 -35
  477. package/dist/plugin-sdk/media-understanding-runtime.js +35 -35
  478. package/dist/plugin-sdk/media-understanding.js +35 -35
  479. package/dist/plugin-sdk/memory-lancedb.js +4 -4
  480. package/dist/plugin-sdk/minimax-portal-auth.js +4 -4
  481. package/dist/plugin-sdk/msteams.js +38 -38
  482. package/dist/plugin-sdk/nextcloud-talk.js +36 -36
  483. package/dist/plugin-sdk/nostr.js +36 -36
  484. package/dist/plugin-sdk/ollama-setup.js +9 -9
  485. package/dist/plugin-sdk/open-prose.js +4 -4
  486. package/dist/plugin-sdk/phone-control.js +4 -4
  487. package/dist/plugin-sdk/plugin-runtime.js +35 -35
  488. package/dist/plugin-sdk/provider-auth.js +35 -35
  489. package/dist/plugin-sdk/provider-models.js +5 -5
  490. package/dist/plugin-sdk/provider-onboard.js +4 -4
  491. package/dist/plugin-sdk/provider-setup.js +39 -39
  492. package/dist/plugin-sdk/provider-stream.js +4 -4
  493. package/dist/plugin-sdk/provider-usage.js +4 -4
  494. package/dist/plugin-sdk/qwen-portal-auth.js +35 -35
  495. package/dist/plugin-sdk/reply-history.js +35 -35
  496. package/dist/plugin-sdk/reply-runtime.js +35 -35
  497. package/dist/plugin-sdk/routing.js +3 -3
  498. package/dist/plugin-sdk/sandbox.js +35 -35
  499. package/dist/plugin-sdk/security-runtime.js +35 -35
  500. package/dist/plugin-sdk/self-hosted-provider-setup.js +37 -37
  501. package/dist/plugin-sdk/setup.js +35 -35
  502. package/dist/plugin-sdk/signal.js +35 -35
  503. package/dist/plugin-sdk/slack.js +35 -35
  504. package/dist/plugin-sdk/speech-runtime.js +35 -35
  505. package/dist/plugin-sdk/speech.js +35 -35
  506. package/dist/plugin-sdk/src/secrets/secure-file-store.d.ts +26 -0
  507. package/dist/plugin-sdk/src/subscription/provider.d.ts +5 -3
  508. package/dist/plugin-sdk/synology-chat.js +36 -36
  509. package/dist/plugin-sdk/talk-voice.js +4 -4
  510. package/dist/plugin-sdk/telegram.js +35 -35
  511. package/dist/plugin-sdk/text-runtime.js +7 -7
  512. package/dist/plugin-sdk/thread-ownership.js +4 -4
  513. package/dist/plugin-sdk/tlon.js +36 -36
  514. package/dist/plugin-sdk/twitch.js +35 -35
  515. package/dist/plugin-sdk/voice-call.js +35 -35
  516. package/dist/plugin-sdk/whatsapp.js +35 -35
  517. package/dist/plugin-sdk/zalo.js +38 -38
  518. package/dist/plugin-sdk/zalouser.js +38 -38
  519. package/dist/plugins/runtime/index.d.ts +1 -1
  520. package/dist/plugins/runtime/index.js +35 -35
  521. package/dist/plugins-DF5FaTO0.js +111 -0
  522. package/dist/plugins-cli-CvTJemqC.js +917 -0
  523. package/dist/policy-CNXISK_a.js +143 -0
  524. package/dist/preflight-audio.runtime-RP000oxo.js +116 -0
  525. package/dist/probe-BkM5pykD.js +21 -0
  526. package/dist/probe-DKbRTJv5.js +1793 -0
  527. package/dist/probe-DkrfRsjU.js +47 -0
  528. package/dist/probe-DpcJ0WeP.js +129 -0
  529. package/dist/probe-auth-BcNjX8hy.js +40 -0
  530. package/dist/probe-auth-DhuAb8ls.js +48 -0
  531. package/dist/probe-wciBj-aL.js +6329 -0
  532. package/dist/program-C8-p0mW5.js +253 -0
  533. package/dist/prompt-select-styled-DH0pVoc0.js +2673 -0
  534. package/dist/provider-api-key-auth.runtime-CAFeIQ1u.js +121 -0
  535. package/dist/provider-auth-choice-CB_HzdTl.js +126 -0
  536. package/dist/provider-auth-choice-helpers-hzDkh3f1.js +48 -0
  537. package/dist/provider-auth-choice-preference-BHCXvNSE.js +189 -0
  538. package/dist/provider-auth-choice.runtime-Dx4ms2C5.js +123 -0
  539. package/dist/provider-auth-choices-0KaDNPBQ.js +57 -0
  540. package/dist/provider-auth-guidance-BaAUiNr_.js +34 -0
  541. package/dist/provider-auth-result-Bto1bYtS.d.ts +18 -0
  542. package/dist/provider-models-DxOmeToO.d.ts +867 -0
  543. package/dist/provider-models-xnyxy6mO.js +2113 -0
  544. package/dist/provider-ollama-setup-DBYK__ov.d.ts +32 -0
  545. package/dist/provider-ollama-setup-QzgCxj44.js +314 -0
  546. package/dist/provider-onboard-B9ionepI.js +139 -0
  547. package/dist/provider-onboard-CURxJ_UX.d.ts +40 -0
  548. package/dist/provider-runtime.runtime-4xwmsl5L.js +111 -0
  549. package/dist/provider-self-hosted-setup-BHd24EDG.js +182 -0
  550. package/dist/provider-self-hosted-setup-qeY8BYSy.d.ts +61 -0
  551. package/dist/provider-stream-Chz_EFw3.js +512 -0
  552. package/dist/provider-usage-C11Q7UwS.js +111 -0
  553. package/dist/provider-usage-kxemdMp2.js +633 -0
  554. package/dist/provider-wizard-CanJoxNC.js +152 -0
  555. package/dist/push-apns-Dsajnm8C.js +1038 -0
  556. package/dist/pw-ai-DUe4BbH2.js +1867 -0
  557. package/dist/qmd-manager-CAAFp7qK.js +1570 -0
  558. package/dist/qr-cli-Bu2jqTPY.js +113 -0
  559. package/dist/qr-cli-Bu9Z-X48.js +369 -0
  560. package/dist/reactions-Cpfum4iU.js +281 -0
  561. package/dist/read-only-account-inspect.discord.runtime-BK0LaMgC.js +116 -0
  562. package/dist/read-only-account-inspect.slack.runtime-DgKiC5wT.js +116 -0
  563. package/dist/read-only-account-inspect.telegram.runtime-mxfgFVOU.js +116 -0
  564. package/dist/redact-snapshot-DD8A4tdd.js +2663 -0
  565. package/dist/register.agent-DU4FtrU2.js +439 -0
  566. package/dist/register.backup-8nOYtJqg.js +625 -0
  567. package/dist/register.configure-DmtecqIH.js +252 -0
  568. package/dist/register.maintenance-Dir3ulKP.js +574 -0
  569. package/dist/register.message-Cfl-f3Ju.js +709 -0
  570. package/dist/register.onboard-Bv7WVzEi.js +192 -0
  571. package/dist/register.setup-BIyeI8RY.js +212 -0
  572. package/dist/register.status-health-sessions-C69WQcF4.js +498 -0
  573. package/dist/register.subclis-B_4KCgTd.js +315 -0
  574. package/dist/register.subclis-BeXsmgBL.js +13 -0
  575. package/dist/replies-DdcFUmki.js +110 -0
  576. package/dist/resolve-channels-DRZqPV5o.js +226 -0
  577. package/dist/resolve-channels-DxW1kqxA.js +262 -0
  578. package/dist/resolve-route-DdX-HBVt.js +538 -0
  579. package/dist/resolve-users-rgCQvkLs.js +143 -0
  580. package/dist/root-help-QAkoA7GD.js +32 -0
  581. package/dist/routes-CcJNnwTF.js +7097 -0
  582. package/dist/rpc-DDUAlBbH.js +67 -0
  583. package/dist/run-main-D9ci5pn7.js +424 -0
  584. package/dist/runtime-Bitmi8Er.d.ts +26 -0
  585. package/dist/runtime-discord-ops.runtime-T4sf7aRB.js +9078 -0
  586. package/dist/runtime-slack-ops.runtime-BQpP48mC.js +4556 -0
  587. package/dist/runtime-telegram-ops.runtime-cVO5dqOp.js +133 -0
  588. package/dist/runtime-whatsapp-login.runtime-DtNx0dSY.js +114 -0
  589. package/dist/runtime-whatsapp-outbound.runtime-Bw47QbFK.js +117 -0
  590. package/dist/sandbox-cli-DsFwjbjC.js +535 -0
  591. package/dist/search-manager-BRAK8fEe.js +16 -0
  592. package/dist/search-manager-BS5Db0A6.js +386 -0
  593. package/dist/secrets-cli-D3J46TJp.js +2070 -0
  594. package/dist/security-cli-B866M9cB.js +575 -0
  595. package/dist/send-B1pX9_Oc.js +283 -0
  596. package/dist/send-B2RrLg83.js +100 -0
  597. package/dist/send-DFnV__Aq.js +1025 -0
  598. package/dist/send-DZIH6CJt.js +629 -0
  599. package/dist/send-sl9WnKbW.js +631 -0
  600. package/dist/server-node-events-BT6egg20.js +506 -0
  601. package/dist/server-zI_K-D05.js +107 -0
  602. package/dist/sessions-C8kiAcoJ.js +112 -0
  603. package/dist/sessions-DLBpp52_.js +218 -0
  604. package/dist/setup-C7eOzMiC.js +387 -0
  605. package/dist/setup-CFIMq-Pz.d.ts +37 -0
  606. package/dist/setup-binary-CcAv8NXz.js +406 -0
  607. package/dist/setup-browser-C4eRV3h6.js +70 -0
  608. package/dist/setup-core-BnR486P-.js +143 -0
  609. package/dist/setup-core-CIswIiu5.js +166 -0
  610. package/dist/setup-core-CcbcrXXg.js +47 -0
  611. package/dist/setup-core-nZSw5BSv.js +205 -0
  612. package/dist/setup-surface-C5iSpT4M.js +490 -0
  613. package/dist/setup-wizard-helpers-r0J6l8ST.d.ts +203 -0
  614. package/dist/setup.finalize-adiRfo0U.js +522 -0
  615. package/dist/setup.gateway-config-BwFWKDfT.js +343 -0
  616. package/dist/shared-12TimyeF.js +182 -0
  617. package/dist/shared-9EWO34-k.js +298 -0
  618. package/dist/shared-B4vUbaRR.js +75 -0
  619. package/dist/shared-bNWpW3Dd.js +96 -0
  620. package/dist/shared-lU1y5dvS.js +102 -0
  621. package/dist/signal-DBlETRu9.js +114 -0
  622. package/dist/skills-Bio8GwTE.js +20 -0
  623. package/dist/skills-DE_MXFSN.js +853 -0
  624. package/dist/skills-cli-BGuW-tKw.js +292 -0
  625. package/dist/skills-install--rnorIoJ.js +763 -0
  626. package/dist/skills-status-B08PtBc_.js +21 -0
  627. package/dist/skills-status-CzM008aB.js +169 -0
  628. package/dist/slack-C4T53Nc-.js +114 -0
  629. package/dist/slash-commands.runtime-B7fsD8Be.js +128 -0
  630. package/dist/slash-dispatch.runtime-t0PAX4vQ.js +141 -0
  631. package/dist/slash-skill-commands.runtime-DIhPnEfR.js +116 -0
  632. package/dist/src-DrDirlvw.js +1701 -0
  633. package/dist/status-Bld14WSA.js +131 -0
  634. package/dist/status-CgeO4RuH.js +43 -0
  635. package/dist/status-HlvixAOq.js +606 -0
  636. package/dist/status-Rom_Lf3c.js +1599 -0
  637. package/dist/status-TwbMH6Am.js +126 -0
  638. package/dist/status-json-DMW7cmuK.js +288 -0
  639. package/dist/status.link-channel-V4LkB6Gq.js +143 -0
  640. package/dist/status.scan.deps.runtime-BE3X-dcP.js +126 -0
  641. package/dist/status.scan.runtime-BxVY4mty.js +119 -0
  642. package/dist/status.summary-CzLM0vVr.js +592 -0
  643. package/dist/status.summary.runtime-BSBnHZ1Q.js +118 -0
  644. package/dist/status.update-BxblMS7P.js +77 -0
  645. package/dist/subagent-orphan-recovery-BpRPryEj.js +307 -0
  646. package/dist/subagent-registry-runtime-DYYU5p3X.js +111 -0
  647. package/dist/subscription-CpFdxuFS.js +33 -0
  648. package/dist/subscription-DaA1urx-.js +102 -0
  649. package/dist/subscription-cli-Bvto9EmO.js +134 -0
  650. package/dist/synology-chat-3nwk-Nj0.js +297 -0
  651. package/dist/system-cli-BvNps8sl.js +94 -0
  652. package/dist/telegram/audit.d.ts +1 -1
  653. package/dist/telegram/audit.js +1 -1
  654. package/dist/telegram/token.d.ts +1 -1
  655. package/dist/telegram/token.js +35 -35
  656. package/dist/telegram-RtKXoEsF.js +114 -0
  657. package/dist/text-chunking-BD5mQe2R.js +84 -0
  658. package/dist/text-chunking-DDUU_vAF.d.ts +79 -0
  659. package/dist/tlon-z-kYmJE-.js +433 -0
  660. package/dist/tui-cli-CzSK08Rh.js +137 -0
  661. package/dist/tui-wV7R1Tlc.js +3834 -0
  662. package/dist/types-2H_e7eWT.d.ts +45 -0
  663. package/dist/types-ZKnGUchG.d.ts +22692 -0
  664. package/dist/types.base-BFiQZ4J9.d.ts +188 -0
  665. package/dist/ui-BWVHreeR.js +31 -0
  666. package/dist/update-D1Wgh1Tj.js +1036 -0
  667. package/dist/update-cli-CZh99uyY.js +1503 -0
  668. package/dist/update-offset-store-D5xTdUr0.js +112 -0
  669. package/dist/update-runner-GbKfoCHs.js +1496 -0
  670. package/dist/upsert-with-lock-BZU7Le8n.js +33 -0
  671. package/dist/usage-Czgwvg0h.js +115 -0
  672. package/dist/web-CMczmL90.js +112 -0
  673. package/dist/web-shared-B5Q0mIJq.d.ts +45 -0
  674. package/dist/webhook-request-guards-CsKDhZJr.d.ts +76 -0
  675. package/dist/webhook-targets-BSmFtesN.js +181 -0
  676. package/dist/webhook-targets-CjxuEE9C.d.ts +106 -0
  677. package/dist/webhooks-cli-Wl9y6AWW.js +350 -0
  678. package/dist/whatsapp-VzRW8MdR.js +114 -0
  679. package/dist/whatsapp-actions-Cg1Wxv8W.js +167 -0
  680. package/dist/workspace-DJ_S272u.js +484 -0
  681. package/dist/workspace-DbZSqjw0.js +289 -0
  682. package/dist/workspace-cli-D93DLmAh.js +154 -0
  683. package/dist/workspace-dirs-CGeIPpGN.js +2003 -0
  684. package/dist/zalo-CK2dlGmu.d.ts +9 -0
  685. package/dist/zalo-Db7s2boL.js +415 -0
  686. package/dist/zalouser-Jh5YTJX3.js +30911 -0
  687. package/extensions/discord/src/monitor/allow-list.ts +8 -1
  688. package/extensions/discord/src/monitor/message-handler.preflight.ts +4 -1
  689. package/package.json +1 -1
  690. package/dist/accounts-CS8U4v8C.js +0 -114
  691. package/dist/accounts-gLr-Udmt.d.ts +0 -103
  692. package/dist/acp-cli-BGT0jXcC.js +0 -2093
  693. package/dist/actions.runtime-BfckTw6c.js +0 -119
  694. package/dist/actions.runtime-Cl9mBfqH.js +0 -133
  695. package/dist/agent-scope-C-YmLnnb.js +0 -208
  696. package/dist/agents-CydD54p8.js +0 -222
  697. package/dist/agents-DpQsZO6O.js +0 -853
  698. package/dist/agents.config-XU7IsYE-.js +0 -121
  699. package/dist/agents.config-ssoQXuvF.js +0 -17
  700. package/dist/allow-list-Cfn6lmMK.js +0 -81
  701. package/dist/allowlist-CCYXVpM9.js +0 -142
  702. package/dist/api-BoXoFKxy.js +0 -117
  703. package/dist/audit-Bv05N5o9.js +0 -787
  704. package/dist/audit-CIWW1Aqm.js +0 -54
  705. package/dist/audit-channel.collect.runtime-Bi7yrdcO.js +0 -605
  706. package/dist/audit-channel.runtime-C_NDweiW.js +0 -121
  707. package/dist/audit-extra.async-Dp7OKSXg.js +0 -813
  708. package/dist/audit-membership-runtime-B8FQ6VtN.js +0 -162
  709. package/dist/audit.deep.runtime-CXhobL6b.js +0 -25
  710. package/dist/audit.nondeep.runtime-CrEm3T16.js +0 -832
  711. package/dist/audit.runtime-CJPKj1Zg.js +0 -118
  712. package/dist/auth-Byfp0flq.js +0 -101
  713. package/dist/auth-choice-BgOjdeXN.js +0 -507
  714. package/dist/auth-choice-CD1Heq0M.js +0 -122
  715. package/dist/auth-choice-ePNfg0iQ.js +0 -268
  716. package/dist/auth-choice-options-BlewQWI0.js +0 -123
  717. package/dist/auth-choice-prompt-BP2b6aXz.js +0 -36
  718. package/dist/auth-choice-prompt-Cmwl4n97.js +0 -115
  719. package/dist/auth-choice.apply-helpers-Dq-nxuuX.js +0 -66
  720. package/dist/auth-choice.plugin-providers.runtime-B23kOUzQ.js +0 -119
  721. package/dist/auth-profiles-1kPLbBwI.js +0 -127823
  722. package/dist/auth-profiles.runtime-DAfSjku1.js +0 -116
  723. package/dist/banner-DeOsobLO.js +0 -342
  724. package/dist/bluebubbles-BsLGedBM.js +0 -64
  725. package/dist/bluebubbles-U2sAfO4_.d.ts +0 -6
  726. package/dist/bot-DW12K3bO.d.ts +0 -478
  727. package/dist/brave-BoWimrLe.js +0 -24
  728. package/dist/browser-cli-D_S3wEYE.js +0 -1494
  729. package/dist/call-ByEzDJ1_.js +0 -640
  730. package/dist/call-CHCWVg-O.js +0 -39
  731. package/dist/channel-3VC0oOMu.js +0 -214
  732. package/dist/channel-B9fCBPiS.js +0 -207
  733. package/dist/channel-B9q775cM.js +0 -562
  734. package/dist/channel-BG3UK54j.js +0 -803
  735. package/dist/channel-BRQAdMML.js +0 -352
  736. package/dist/channel-BmlLp933.js +0 -1321
  737. package/dist/channel-By6KvdTG.js +0 -920
  738. package/dist/channel-C8rRsdf6.js +0 -226
  739. package/dist/channel-CLEDBbXE.js +0 -943
  740. package/dist/channel-CMvBAG7o.js +0 -306
  741. package/dist/channel-CmlxxjHY.js +0 -1598
  742. package/dist/channel-CqG6_xN0.js +0 -949
  743. package/dist/channel-DNueHKs92.js +0 -316
  744. package/dist/channel-DUtyN7BX.js +0 -4681
  745. package/dist/channel-DWD6GrfZ.js +0 -538
  746. package/dist/channel-DaRYMYzj.js +0 -619
  747. package/dist/channel-Dj6BgLp8.js +0 -575
  748. package/dist/channel-account-context-Ba3u5D21.js +0 -103
  749. package/dist/channel-crabk6Em.js +0 -542
  750. package/dist/channel-i8uqQaK2.js +0 -497
  751. package/dist/channel-options-xljvwHS2.js +0 -50
  752. package/dist/channel-plugin-ids-DAgknSG4.js +0 -26
  753. package/dist/channel-summary-dHTMCG75.js +0 -111
  754. package/dist/channel-xVWQ96Ni.js +0 -397
  755. package/dist/channel.runtime-B6PoZ4BV.js +0 -182
  756. package/dist/channel.runtime-BPZmo57e.js +0 -404
  757. package/dist/channel.runtime-B_1uGR-U.js +0 -199
  758. package/dist/channel.runtime-BiXnPU0d.js +0 -218
  759. package/dist/channel.runtime-BpvDc9sv.js +0 -870
  760. package/dist/channel.runtime-CUua3W80.js +0 -418
  761. package/dist/channel.runtime-CaCBTd0A.js +0 -179
  762. package/dist/channel.runtime-D0FfYvUj.js +0 -4011
  763. package/dist/channel.runtime-DhoJtpvJ.js +0 -241
  764. package/dist/channel.runtime-Kj9EXNE0.js +0 -127
  765. package/dist/channel.runtime-r4tPuPyh.js +0 -171
  766. package/dist/channel.setup-B7d_grfe.js +0 -6
  767. package/dist/channel.setup-C0vu1fhi.js +0 -9
  768. package/dist/channel.setup-CAI0FNHj.js +0 -11
  769. package/dist/channel.setup-CkDVwv5R.js +0 -57
  770. package/dist/channel.setup-Cpd00YqQ.js +0 -8
  771. package/dist/channel.setup-DbBz1-WT.js +0 -9
  772. package/dist/channel.setup-GZnAvD9g.js +0 -8
  773. package/dist/channels-5H484RSw.js +0 -1118
  774. package/dist/channels-BnPudfyx.js +0 -404
  775. package/dist/channels-cli-WIC-QeH_.js +0 -291
  776. package/dist/channels-status-issues-RDmzovJU.js +0 -16
  777. package/dist/clawbot-cli-BgutNwf8.js +0 -118
  778. package/dist/cleanup-utils-DBl1Aij1.js +0 -96
  779. package/dist/cli-1P7u6zqu.js +0 -154
  780. package/dist/command-registry-B8jovrws.js +0 -232
  781. package/dist/command-registry-DtDl1FVm.js +0 -14
  782. package/dist/command-secret-gateway-BgUo3FxJ.js +0 -111
  783. package/dist/compact.runtime-CXbXM0AU.js +0 -116
  784. package/dist/completion-cli-Cik_owAE.js +0 -17
  785. package/dist/completion-cli-RU3P2RSl.js +0 -445
  786. package/dist/config-5HUpB1L1.js +0 -31
  787. package/dist/config-cli-QHaUHoZI.js +0 -433
  788. package/dist/config-guard-C9Sn3pE-.js +0 -118
  789. package/dist/config-sW57gztj.js +0 -44
  790. package/dist/config-validation-5LkjIKNt.js +0 -262
  791. package/dist/config-value-CtTWALxG.js +0 -132
  792. package/dist/configure-BmR2TPLf.js +0 -243
  793. package/dist/configure-DaLN-5xM.js +0 -1100
  794. package/dist/control-ui-assets-CH3MYmAo.js +0 -232
  795. package/dist/control-ui-shared-CA77PTml.js +0 -29
  796. package/dist/core-CvDzLs7B.js +0 -150
  797. package/dist/core-dPA4nFkn.d.ts +0 -87
  798. package/dist/cron-cli-tguLpzyq.js +0 -639
  799. package/dist/daemon-cli-ptosOkL8.js +0 -339
  800. package/dist/daemon-install-DzU4EnVa.js +0 -180
  801. package/dist/deliver-DwxFoHM3.js +0 -111
  802. package/dist/deliver-runtime-DOdDyaPI.js +0 -111
  803. package/dist/device-id-cli-GopvlxxZ.js +0 -52
  804. package/dist/device-identity-CRfhC3_s.js +0 -365
  805. package/dist/devices-cli-ain7ESqU.js +0 -342
  806. package/dist/diagnostic-D96Xaqrj.js +0 -310
  807. package/dist/directory-cli-fh1UxGgY.js +0 -311
  808. package/dist/directory-config-helpers-CpU1oflo.d.ts +0 -38
  809. package/dist/directory.static-CKjJUNGl.js +0 -44
  810. package/dist/discord-CflhwDEM.js +0 -114
  811. package/dist/discovery-x0ZqY4AB.js +0 -48
  812. package/dist/dm-policy-shared-73A52W6E.d.ts +0 -95
  813. package/dist/dns-cli-DCHyKjGf.js +0 -217
  814. package/dist/docs-cli-D3OoqYSP.js +0 -174
  815. package/dist/doctor-completion-Bq2eP87s.js +0 -90
  816. package/dist/doctor-config-flow-D8XRG9Ku.js +0 -2437
  817. package/dist/doctor-config-flow-DGiF1HGc.js +0 -112
  818. package/dist/enable-0QSF4YGH.js +0 -24
  819. package/dist/exec-approvals-cli-Bncym0Gd.js +0 -421
  820. package/dist/feishu-B5JDcyF9.d.ts +0 -36
  821. package/dist/gateway-cli-DYscsmA-.js +0 -26437
  822. package/dist/gateway-install-token-CNv17ac9.js +0 -163
  823. package/dist/gateway-rpc-BGC1Rxvg.js +0 -26
  824. package/dist/gateway-runtime-D89mSQPB.js +0 -69
  825. package/dist/git-commit-CeLH5Ozm.js +0 -2
  826. package/dist/git-commit-DUKRiCP-.js +0 -177
  827. package/dist/googlechat-BgXeXjd1.js +0 -307
  828. package/dist/googlechat-De-T7C31.d.ts +0 -12
  829. package/dist/group-access-Deh1tVNr.d.ts +0 -61
  830. package/dist/health-BEjzWwaB.js +0 -570
  831. package/dist/health-FjqrWQL6.js +0 -113
  832. package/dist/heartbeat-summary-CfdSA9M1.js +0 -57
  833. package/dist/help-BZeVprq1.js +0 -81
  834. package/dist/hooks-B5pYs_d7.d.ts +0 -6
  835. package/dist/hooks-cli-B7uGJs2O.js +0 -1000
  836. package/dist/hooks-status-CfceaUSg.js +0 -78
  837. package/dist/http-registry-C-KXqwnj.d.ts +0 -20
  838. package/dist/identity-file-sshkKKIr.js +0 -60
  839. package/dist/image-generation-CafM5hZh.d.ts +0 -9
  840. package/dist/imessage-BcV3WGx_.js +0 -31
  841. package/dist/imessage-Dhje7Ty-.js +0 -115
  842. package/dist/inbound-reply-dispatch-C73_7SOl.js +0 -71
  843. package/dist/inbound-reply-dispatch-DmL0KWLe.d.ts +0 -72
  844. package/dist/install-target-D7NRhfzc.js +0 -574
  845. package/dist/installs-Bj6jblqc.js +0 -532
  846. package/dist/io-CMfWWPXQ.js +0 -9738
  847. package/dist/io-CV844hAM.js +0 -29
  848. package/dist/irc-DKi1fDYI.js +0 -672
  849. package/dist/library-rygTG3oA.js +0 -112
  850. package/dist/lifecycle-core-BPlvShWY.js +0 -382
  851. package/dist/line-CGsemKWJ.js +0 -530
  852. package/dist/line-CKU3ER-n.d.ts +0 -75
  853. package/dist/llm-slug-generator-DlhVyMqT.js +0 -67
  854. package/dist/logging-5wu9k6w4.js +0 -30
  855. package/dist/logging-CxP9suT8.js +0 -13
  856. package/dist/login-qr-BcDsiwHs.js +0 -233
  857. package/dist/login-qr-Y8pJ5yV4.js +0 -112
  858. package/dist/logs-cli-XI9oVXpH.js +0 -256
  859. package/dist/manager-runtime-DkIlXBhD.js +0 -111
  860. package/dist/manager.runtime-Q0q2rJCC.js +0 -715
  861. package/dist/manifest-registry-DAd0SRAP.js +0 -1329
  862. package/dist/matrix-BI0DBBrG.js +0 -1495
  863. package/dist/matrix-DiABGjJR.js +0 -1269
  864. package/dist/matrix-fC6NrFM5.d.ts +0 -68
  865. package/dist/mcp-cli-BOyn_DLL.js +0 -87
  866. package/dist/media-understanding.runtime-DjUa7Dka.js +0 -116
  867. package/dist/memory-cli-CJd_vl-Y.js +0 -111
  868. package/dist/memory-search-CEEItIFR.js +0 -17
  869. package/dist/memory-search-Cv1SBrn7.js +0 -204
  870. package/dist/method-scopes-CQE7-bZ-.js +0 -2452
  871. package/dist/model-auth-markers-B1bbs9Qd.d.ts +0 -20
  872. package/dist/model-picker-D6_89XHg.js +0 -112
  873. package/dist/model-picker-Svaw-APs.js +0 -390
  874. package/dist/model-picker.runtime-Chi9nV7A.js +0 -125
  875. package/dist/model-selection-hL8i1Jbs.js +0 -653
  876. package/dist/model-suppression.runtime-DjWJZ0X-.js +0 -116
  877. package/dist/models-7qj1dG_W.js +0 -118
  878. package/dist/models-BPOB_xJF.js +0 -2514
  879. package/dist/models-cli-DdlOVUjS.js +0 -309
  880. package/dist/models-config-CBqUS-jX.js +0 -111
  881. package/dist/models-config.providers.discovery-BKB5JH9M.d.ts +0 -18
  882. package/dist/moldclaw-root-D6PbhbZk.js +0 -88
  883. package/dist/monitor-BPYhkEqF.js +0 -782
  884. package/dist/monitor-BuTcQ24j.js +0 -3468
  885. package/dist/monitor-CuXvNhFh.js +0 -113
  886. package/dist/monitor-D-TqSIHF.js +0 -6823
  887. package/dist/monitor-DRSgo9u2.js +0 -3076
  888. package/dist/monitor-DcHch39z.js +0 -772
  889. package/dist/monitor-DsHBMrXp.js +0 -115
  890. package/dist/monitor-shared-CL8T4gt1.js +0 -444
  891. package/dist/msteams-7FMwTvQG.js +0 -852
  892. package/dist/node-cli-BCjaSCZM.js +0 -2503
  893. package/dist/node-resolve-D5Hvcgyx.js +0 -835
  894. package/dist/nodes-cli-Dd_SNbkt.js +0 -1380
  895. package/dist/nostr-D8scBiYq.d.ts +0 -7
  896. package/dist/nostr-DBTFTxKs.js +0 -8744
  897. package/dist/npm-resolution-CYfb3MHG.js +0 -60
  898. package/dist/oauth-env-zPt5RywA.js +0 -10
  899. package/dist/onboard-BEFQQeig.js +0 -25
  900. package/dist/onboard-CJHNyxJh.js +0 -48
  901. package/dist/onboard-D_3UeLEN.js +0 -589
  902. package/dist/onboard-channels-B_JL0Djc.js +0 -1241
  903. package/dist/onboard-channels-CqZzHt2C.js +0 -205
  904. package/dist/onboard-custom-CER3Ggbq.js +0 -571
  905. package/dist/onboard-custom-bNRdGECb.js +0 -114
  906. package/dist/onboard-helpers-BK0Hsb7Y.js +0 -335
  907. package/dist/onboard-helpers-CXZ5RPoR.js +0 -113
  908. package/dist/onboard-hooks-1NsxEDjH.js +0 -72
  909. package/dist/onboard-remote-DuKhC_7W.js +0 -117
  910. package/dist/onboard-remote-OwRcDuB3.js +0 -181
  911. package/dist/onboard-search-Cy8dOq2W.js +0 -302
  912. package/dist/onboard-skills-D5phRa6r.js +0 -117
  913. package/dist/onboard-skills-c9qWCNe9.js +0 -133
  914. package/dist/outbound-media-CgNYEQWb.d.ts +0 -11
  915. package/dist/outbound-media-DYRO2vTD.js +0 -11
  916. package/dist/pairing-access-Dsiu5Mvl.d.ts +0 -21
  917. package/dist/pairing-cli-BOnv0TYn.js +0 -217
  918. package/dist/perplexity-EZwC3y2b.js +0 -24
  919. package/dist/persistent-dedupe-DMLOqJ23.d.ts +0 -26
  920. package/dist/pi-model-discovery-runtime-BToY3A6K.js +0 -111
  921. package/dist/pi-tools.before-tool-call.runtime-D_acPtld.js +0 -381
  922. package/dist/plugin-install-CgJpSjYd.js +0 -184
  923. package/dist/plugin-install-Cl1A4EF6.js +0 -117
  924. package/dist/plugin-install-plan-Dc2Z4DeU.js +0 -49
  925. package/dist/plugin-registry-B1UaWrQD.js +0 -49
  926. package/dist/plugin-registry-Cy8biwnn.js +0 -113
  927. package/dist/plugins-CXwvg50F.js +0 -111
  928. package/dist/plugins-cli-Uvzp2aYV.js +0 -917
  929. package/dist/policy-DsMBbEe7.js +0 -143
  930. package/dist/preflight-audio.runtime-hWsZIYvc.js +0 -116
  931. package/dist/probe-CNsSf1Uf.js +0 -6329
  932. package/dist/probe-CqOIrPhb.js +0 -47
  933. package/dist/probe-DH6gDw-h.js +0 -129
  934. package/dist/probe-DM16PLf4.js +0 -21
  935. package/dist/probe-DvAEEWYr.js +0 -1793
  936. package/dist/probe-auth-COfgCble.js +0 -48
  937. package/dist/probe-auth-I_5TX1Eh.js +0 -40
  938. package/dist/program-Dz80sgTU.js +0 -253
  939. package/dist/prompt-select-styled-wQehwFxK.js +0 -2673
  940. package/dist/provider-api-key-auth.runtime-BR9GU4ya.js +0 -121
  941. package/dist/provider-auth-choice-CdhA84kr.js +0 -126
  942. package/dist/provider-auth-choice-helpers-kabp_0zA.js +0 -48
  943. package/dist/provider-auth-choice-preference-se3zAM_2.js +0 -189
  944. package/dist/provider-auth-choice.runtime-BMc8-xNQ.js +0 -123
  945. package/dist/provider-auth-choices-CYsCViGi.js +0 -57
  946. package/dist/provider-auth-guidance-CMjUWlNf.js +0 -34
  947. package/dist/provider-auth-result-Cw6qIhO-.d.ts +0 -18
  948. package/dist/provider-models-BCId_Lfu.js +0 -2113
  949. package/dist/provider-models-Ok-DrSiY.d.ts +0 -867
  950. package/dist/provider-ollama-setup-B6XJZ0So.js +0 -314
  951. package/dist/provider-ollama-setup-lGDdTl0b.d.ts +0 -32
  952. package/dist/provider-onboard-CSPi7jOK.d.ts +0 -40
  953. package/dist/provider-onboard-Ca0TaNud.js +0 -139
  954. package/dist/provider-runtime.runtime-DwwkHw_7.js +0 -111
  955. package/dist/provider-self-hosted-setup-BEKLVGpj.js +0 -182
  956. package/dist/provider-self-hosted-setup-Df91By-J.d.ts +0 -61
  957. package/dist/provider-stream-DrUD69ai.js +0 -512
  958. package/dist/provider-usage-BgKHCnjr.js +0 -111
  959. package/dist/provider-usage-D8EZpFz9.js +0 -633
  960. package/dist/provider-wizard-DMdb-zj_.js +0 -152
  961. package/dist/push-apns-BPH6d4VV.js +0 -1038
  962. package/dist/pw-ai-DttfldtL.js +0 -1867
  963. package/dist/qmd-manager-CybcDUfk.js +0 -1570
  964. package/dist/qr-cli-8NcmJ8Ft.js +0 -369
  965. package/dist/qr-cli-DWe0Our3.js +0 -113
  966. package/dist/reactions-D6N0LR16.js +0 -281
  967. package/dist/read-only-account-inspect.discord.runtime-CqUWTRfl.js +0 -116
  968. package/dist/read-only-account-inspect.slack.runtime-9-jpln3q.js +0 -116
  969. package/dist/read-only-account-inspect.telegram.runtime-EKPI1D7n.js +0 -116
  970. package/dist/redact-snapshot-DwJEIVk9.js +0 -2663
  971. package/dist/register.agent-D3YdDirP.js +0 -439
  972. package/dist/register.backup-dR27qCuo.js +0 -625
  973. package/dist/register.configure-BjFhkkka.js +0 -252
  974. package/dist/register.maintenance-DiMQJIOa.js +0 -574
  975. package/dist/register.message-CdZsKYH1.js +0 -709
  976. package/dist/register.onboard-B0rV1eaO.js +0 -192
  977. package/dist/register.setup-wKMvohzo.js +0 -212
  978. package/dist/register.status-health-sessions-BJ68m6pt.js +0 -498
  979. package/dist/register.subclis-CnnrWt2a.js +0 -315
  980. package/dist/register.subclis-lSvTkC6z.js +0 -13
  981. package/dist/replies-BABt9b48.js +0 -110
  982. package/dist/resolve-channels-BqZFl2Ux.js +0 -262
  983. package/dist/resolve-channels-DjQLXb7B.js +0 -226
  984. package/dist/resolve-route-CSHDsa_m.js +0 -538
  985. package/dist/resolve-users-BG6HaSR5.js +0 -143
  986. package/dist/root-help-ohmaCyC_.js +0 -32
  987. package/dist/routes-4k2kpvoT.js +0 -7097
  988. package/dist/rpc-Cnwn4Q6L.js +0 -67
  989. package/dist/run-main-VYlacKA0.js +0 -424
  990. package/dist/runtime-D61jzMiI.d.ts +0 -26
  991. package/dist/runtime-discord-ops.runtime-DafrU-rI.js +0 -9078
  992. package/dist/runtime-slack-ops.runtime-CdXBKXwd.js +0 -4556
  993. package/dist/runtime-telegram-ops.runtime-B12sF7gE.js +0 -133
  994. package/dist/runtime-whatsapp-login.runtime-CqEudH37.js +0 -114
  995. package/dist/runtime-whatsapp-outbound.runtime-D5m2qyn-.js +0 -117
  996. package/dist/sandbox-cli-CHJiEWXB.js +0 -535
  997. package/dist/search-manager-BtNC3-i_.js +0 -16
  998. package/dist/search-manager-C7J7B3_a.js +0 -386
  999. package/dist/secrets-cli-C6yIWBbN.js +0 -2070
  1000. package/dist/security-cli-BVu9BkjD.js +0 -575
  1001. package/dist/send-BSreC7rr.js +0 -631
  1002. package/dist/send-BsLHQG_B.js +0 -1025
  1003. package/dist/send-BuNhp8PH.js +0 -283
  1004. package/dist/send-DOCswVar.js +0 -100
  1005. package/dist/send-Dl0LLErk.js +0 -629
  1006. package/dist/server-node-events-Bq2067EG.js +0 -506
  1007. package/dist/server-y38L7N5H.js +0 -107
  1008. package/dist/sessions-BV8gXURR.js +0 -112
  1009. package/dist/sessions-dl1Kc-Ci.js +0 -218
  1010. package/dist/setup-BSPXdMuK.d.ts +0 -37
  1011. package/dist/setup-DGszQH0_.js +0 -387
  1012. package/dist/setup-binary-C17YnmA8.js +0 -406
  1013. package/dist/setup-browser-CPx-nEsr.js +0 -70
  1014. package/dist/setup-core-BByHN1ME.js +0 -143
  1015. package/dist/setup-core-C0KPlBmL.js +0 -47
  1016. package/dist/setup-core-Cq37G6of.js +0 -166
  1017. package/dist/setup-core-uO84_Y75.js +0 -205
  1018. package/dist/setup-surface-BEMi7Rmb.js +0 -490
  1019. package/dist/setup-wizard-helpers-Ck9wDR0b.d.ts +0 -203
  1020. package/dist/setup.finalize-BzPBa8zW.js +0 -522
  1021. package/dist/setup.gateway-config-DdwkF-8e.js +0 -343
  1022. package/dist/shared-BCw4SKjB.js +0 -96
  1023. package/dist/shared-CjNzsULP.js +0 -75
  1024. package/dist/shared-Cu1BE7ZE.js +0 -298
  1025. package/dist/shared-DSClmyUn.js +0 -182
  1026. package/dist/shared-DyJdGH6y.js +0 -102
  1027. package/dist/signal-Dyv4NZsB.js +0 -114
  1028. package/dist/skills-CbB5b27M.js +0 -853
  1029. package/dist/skills-CnfI7Szw.js +0 -20
  1030. package/dist/skills-cli-CavB1f_3.js +0 -292
  1031. package/dist/skills-install-B1OBdgd0.js +0 -763
  1032. package/dist/skills-status-B3gAmIbW.js +0 -169
  1033. package/dist/skills-status-DrHhFgU9.js +0 -21
  1034. package/dist/slack-BRzqnoAz.js +0 -114
  1035. package/dist/slash-commands.runtime-BK88kgds.js +0 -128
  1036. package/dist/slash-dispatch.runtime-COGywwJE.js +0 -141
  1037. package/dist/slash-skill-commands.runtime-Ti4brxgh.js +0 -116
  1038. package/dist/src-DUR6OQxI.js +0 -1701
  1039. package/dist/status-C6dgQY9a.js +0 -131
  1040. package/dist/status-CNK0Q7QH.js +0 -606
  1041. package/dist/status-DBcX0DSC.js +0 -43
  1042. package/dist/status-DKgFgbwv.js +0 -1599
  1043. package/dist/status-Wn5lhNAc.js +0 -126
  1044. package/dist/status-json-D2EkWqAl.js +0 -288
  1045. package/dist/status.link-channel-D3ULIdEa.js +0 -143
  1046. package/dist/status.scan.deps.runtime-BsjWTAm4.js +0 -126
  1047. package/dist/status.scan.runtime-D4HbzROD.js +0 -119
  1048. package/dist/status.summary-C3YxPrDK.js +0 -592
  1049. package/dist/status.summary.runtime-DAkXPSaK.js +0 -118
  1050. package/dist/status.update-B4NnN9P1.js +0 -77
  1051. package/dist/subagent-orphan-recovery-QiQEBv36.js +0 -307
  1052. package/dist/subagent-registry-runtime-BJatPQFK.js +0 -111
  1053. package/dist/subscription-BhZORXN9.js +0 -100
  1054. package/dist/subscription-QEUjQRMv.js +0 -33
  1055. package/dist/subscription-cli-HrULlAgc.js +0 -134
  1056. package/dist/synology-chat-DB76GWMN.js +0 -297
  1057. package/dist/system-cli-D8jDwWuL.js +0 -94
  1058. package/dist/telegram-BHiiqKkQ.js +0 -114
  1059. package/dist/text-chunking-Baonm9Lu.js +0 -84
  1060. package/dist/text-chunking-DzB11ONk.d.ts +0 -79
  1061. package/dist/tlon-DLESxNgD.js +0 -433
  1062. package/dist/tui-C75zi2Cl.js +0 -3834
  1063. package/dist/tui-cli-DFwx5e6i.js +0 -137
  1064. package/dist/types-BKldC9YN.d.ts +0 -22692
  1065. package/dist/types-MeyueBE0.d.ts +0 -45
  1066. package/dist/types.base-Cw0-zIvE.d.ts +0 -188
  1067. package/dist/ui-B55NOIB6.js +0 -31
  1068. package/dist/update--ojavYQ4.js +0 -1036
  1069. package/dist/update-cli-Cvj5aWYM.js +0 -1503
  1070. package/dist/update-offset-store-upatuWwX.js +0 -112
  1071. package/dist/update-runner-DHkY_-76.js +0 -1496
  1072. package/dist/upsert-with-lock-C171GLaR.js +0 -33
  1073. package/dist/usage-N3bxnbmt.js +0 -115
  1074. package/dist/web-RdvT7gKa.js +0 -112
  1075. package/dist/web-shared-C2qHVxw1.d.ts +0 -45
  1076. package/dist/webhook-request-guards-CosLyl01.d.ts +0 -76
  1077. package/dist/webhook-targets-Bfnag-du.js +0 -181
  1078. package/dist/webhook-targets-DP_EkQa4.d.ts +0 -106
  1079. package/dist/webhooks-cli-ZpnXrq7G.js +0 -350
  1080. package/dist/whatsapp-DNTAyZHt.js +0 -114
  1081. package/dist/whatsapp-actions-o1zKQzKZ.js +0 -167
  1082. package/dist/workspace-CpWi5wPr.js +0 -479
  1083. package/dist/workspace-Ii7aRS7c.js +0 -289
  1084. package/dist/workspace-dirs-x10McA9t.js +0 -2003
  1085. package/dist/zalo-C9OQRYRw.d.ts +0 -9
  1086. package/dist/zalo-zm_bYCKg.js +0 -415
  1087. package/dist/zalouser-CvVEUvc5.js +0 -30911
  1088. /package/dist/{account-id-B3YSn4hl.d.ts → account-id-B8ce6G_4.d.ts} +0 -0
  1089. /package/dist/{acpx-CnNv70m2.d.ts → acpx-Ci50I9T2.d.ts} +0 -0
  1090. /package/dist/{agent-media-payload-DE2pEcsz.d.ts → agent-media-payload-en-gS5p6.d.ts} +0 -0
  1091. /package/dist/{allow-from-DPpHnT2A.d.ts → allow-from-cMeQ47Ot.d.ts} +0 -0
  1092. /package/dist/{allowlist-resolution-CLFiZ6nE.d.ts → allowlist-resolution-DoAWbfXV.d.ts} +0 -0
  1093. /package/dist/{bluebubbles-Duhu-Jer.d.ts → bluebubbles-C6yYmUl0.d.ts} +0 -0
  1094. /package/dist/{boolean-param-BhFjB3gp.d.ts → boolean-param-CdO2TFTk.d.ts} +0 -0
  1095. /package/dist/{channel-config-schema-DnnVMdjR.d.ts → channel-config-schema-Chp38wel.d.ts} +0 -0
  1096. /package/dist/{channel-policy-Baq-Z06b.d.ts → channel-policy-g2h6AbYQ.d.ts} +0 -0
  1097. /package/dist/{chat-type-DpiBgwuG.d.ts → chat-type-BLt59pPT.d.ts} +0 -0
  1098. /package/dist/{command-format-vi4xq8e8.d.ts → command-format-BDJC05Jp.d.ts} +0 -0
  1099. /package/dist/{diffs-DK7fVSDo.d.ts → diffs-D_iNKCyn.d.ts} +0 -0
  1100. /package/dist/{directory-runtime-BTLPaysA.d.ts → directory-runtime-DhMex6HY.d.ts} +0 -0
  1101. /package/dist/{exec-C01wtBHu.d.ts → exec-pjfUY4KM.d.ts} +0 -0
  1102. /package/dist/{gaxios-fetch-compat-wZ38b3w3.js → gaxios-fetch-compat-B_vtINdV.js} +0 -0
  1103. /package/dist/{history-CwXuP2TW.d.ts → history-aqSS5VGQ.d.ts} +0 -0
  1104. /package/dist/{inbound-envelope-SggrBs9m.d.ts → inbound-envelope-C5hWuZod.d.ts} +0 -0
  1105. /package/dist/{index-apAZHsDo.d.ts → index-DXVQFYGX.d.ts} +0 -0
  1106. /package/dist/{json-store-r75IZGk9.d.ts → json-store-UnqQ5aV3.d.ts} +0 -0
  1107. /package/dist/{keyed-async-queue-DHIr7yNe.d.ts → keyed-async-queue-guucpLw3.d.ts} +0 -0
  1108. /package/dist/{links-HeQ3r_L0.d.ts → links-Bar0meEK.d.ts} +0 -0
  1109. /package/dist/{markdown-to-line-CDb4Jy3V.d.ts → markdown-to-line-D8uH_KOj.d.ts} +0 -0
  1110. /package/dist/{mattermost-DtCsxpgg.d.ts → mattermost-xl7jAFJL.d.ts} +0 -0
  1111. /package/dist/{net-BATPDwdQ.d.ts → net-rGOKGds6.d.ts} +0 -0
  1112. /package/dist/{nextcloud-talk-Bb2wHOwp.d.ts → nextcloud-talk-De2CZ9dV.d.ts} +0 -0
  1113. /package/dist/{oauth-utils-u567CLT0.d.ts → oauth-utils-DzN1AlEH.d.ts} +0 -0
  1114. /package/dist/{parse-finite-number-l3tNlrZh.d.ts → parse-finite-number-odgyqhi0.d.ts} +0 -0
  1115. /package/dist/{provider-usage.types-C6061OVN.d.ts → provider-usage.types-EDE9o-H_.d.ts} +0 -0
  1116. /package/dist/{reply-history-BDsFnZFl.d.ts → reply-history-CVuU31xe.d.ts} +0 -0
  1117. /package/dist/{reply-payload-CCvM4W9u.d.ts → reply-payload-CHkpBYwL.d.ts} +0 -0
  1118. /package/dist/{request-url-C54l4-xC.d.ts → request-url-DHisbiHY.d.ts} +0 -0
  1119. /package/dist/{run-command-D3RqWcHu.d.ts → run-command-y0Cndsb1.d.ts} +0 -0
  1120. /package/dist/{secret-input-schema-BLBt-NAP.d.ts → secret-input-schema-b1vpYDQN.d.ts} +0 -0
  1121. /package/dist/{session-key-BQ2-bR-9.d.ts → session-key-DTHQl57f.d.ts} +0 -0
  1122. /package/dist/{ssh-config-C4mcH9Ly.js → ssh-config-hEHBfU2_.js} +0 -0
  1123. /package/dist/{testing-DLkhGsoz.d.ts → testing-DszuZXgK.d.ts} +0 -0
  1124. /package/dist/{thinking-DRkjX18p.d.ts → thinking-IwXTGSeT.d.ts} +0 -0
  1125. /package/dist/{tool-send-CMMD1uDu.d.ts → tool-send-DWHRmKpz.d.ts} +0 -0
  1126. /package/dist/{vllm-defaults-CcGuf4hL.d.ts → vllm-defaults-CrxZgE6-.d.ts} +0 -0
  1127. /package/dist/{wait-Daog8bxM.d.ts → wait-wDWw_MTI.d.ts} +0 -0
  1128. /package/dist/{webhook-memory-guards-C5MrExwT.d.ts → webhook-memory-guards-DreORuJy.d.ts} +0 -0
  1129. /package/dist/{windows-spawn-j2l-dqu8.d.ts → windows-spawn-BIzH92x2.d.ts} +0 -0
  1130. /package/dist/{zod-schema.agent-runtime-krMrBnIn.d.ts → zod-schema.agent-runtime-CP2rmis3.d.ts} +0 -0
  1131. /package/dist/{zod-schema.core-BNDieZDZ.d.ts → zod-schema.core-Foi1tYwi.d.ts} +0 -0
@@ -1,1867 +0,0 @@
1
- import "./redact-fatrROh9.js";
2
- import { r as formatErrorMessage } from "./errors-DOJWZqNo.js";
3
- import "./logger-BFfIIIKH.js";
4
- import "./paths-D6AgsMTU.js";
5
- import { r as resolvePreferredmoldClawTmpDir } from "./tmp-moldclaw-dir-DWF-d8qD.js";
6
- import "./theme-BSXzMzAA.js";
7
- import "./globals-DESrFYmC.js";
8
- import "./runtime-_tQz41uA.js";
9
- import "./ansi-BPhP6LBZ.js";
10
- import "./subsystem-CPmDTJ2P.js";
11
- import "./boolean-B6zcAynR.js";
12
- import "./env-D42cffog.js";
13
- import "./utils-C7ykRPCQ.js";
14
- import "./model-selection-hL8i1Jbs.js";
15
- import "./agent-scope-C-YmLnnb.js";
16
- import "./boundary-file-read-tPYh_8fH.js";
17
- import "./logger-BGzLUitz.js";
18
- import "./exec-CvEtXqTZ.js";
19
- import "./workspace-CpWi5wPr.js";
20
- import "./io-CMfWWPXQ.js";
21
- import "./host-env-security-DQ2i_W12.js";
22
- import "./safe-text-Cnulee_z.js";
23
- import "./version-T8nMYUnU.js";
24
- import "./env-substitution-68cyvF5h.js";
25
- import "./config-state-h5jUoHya.js";
26
- import "./network-mode-BtWXzwYn.js";
27
- import "./registry-C1pRrsQl.js";
28
- import "./manifest-registry-DAd0SRAP.js";
29
- import "./ip-C4YAIpr4.js";
30
- import "./zod-schema.core-DvwgNmpd.js";
31
- import "./config-sW57gztj.js";
32
- import "./audit-fs-CMb-YUHX.js";
33
- import "./resolve-PSlwZjg3.js";
34
- import "./config-BwkGZjD5.js";
35
- import { t as formatCliCommand } from "./command-format-C_z0Ru-7.js";
36
- import "./tailnet-fFTz5Twr.js";
37
- import "./net-K181nxTH.js";
38
- import "./credentials-D-5Pb-aZ.js";
39
- import { B as resolveStrictExistingPathsWithinRoot, D as withNoProxyForCdpUrl, E as markPwAiLoaded, J as assertBrowserNavigationRedirectChainAllowed, K as BrowserTabNotFoundError, L as DEFAULT_TRACE_DIR, R as DEFAULT_UPLOAD_DIR, S as getChromeWebSocketUrl, V as matchBrowserUrlPattern, X as withBrowserNavigationPolicy, Y as assertBrowserNavigationResultAllowed, a as parseRoleRef, c as appendCdpPath, d as normalizeCdpHttpBaseForJsonEndpoints, i as getRoleSnapshotStats, l as fetchJson, n as buildRoleSnapshotFromAiSnapshot, o as formatAriaSnapshot, p as withCdpSocket, q as assertBrowserNavigationAllowed, r as buildRoleSnapshotFromAriaSnapshot, s as normalizeCdpWsUrl, u as getHeadersWithAuth } from "./routes-4k2kpvoT.js";
40
- import "./path-alias-guards-BtSO7sk7.js";
41
- import "./ports-Ca74cFb2.js";
42
- import "./ports-lsof-CoiADo0p.js";
43
- import "./image-ops-Ck_D_vpe.js";
44
- import { d as writeFileFromPathWithinRoot } from "./fs-safe-CRXFoBmh.js";
45
- import "./mime-DGFQe4XX.js";
46
- import path from "node:path";
47
- import fs from "node:fs/promises";
48
- import crypto from "node:crypto";
49
- import { chromium, devices } from "playwright-core";
50
- //#region src/browser/pw-session.page-cdp.ts
51
- async function withPlaywrightPageCdpSession(page, fn) {
52
- const session = await page.context().newCDPSession(page);
53
- try {
54
- return await fn(session);
55
- } finally {
56
- await session.detach().catch(() => {});
57
- }
58
- }
59
- async function withPageScopedCdpClient(opts) {
60
- return await withPlaywrightPageCdpSession(opts.page, async (session) => {
61
- return await opts.fn((method, params) => session.send(method, params));
62
- });
63
- }
64
- //#endregion
65
- //#region src/browser/pw-session.ts
66
- const pageStates = /* @__PURE__ */ new WeakMap();
67
- const contextStates = /* @__PURE__ */ new WeakMap();
68
- const observedContexts = /* @__PURE__ */ new WeakSet();
69
- const observedPages = /* @__PURE__ */ new WeakSet();
70
- const roleRefsByTarget = /* @__PURE__ */ new Map();
71
- const MAX_ROLE_REFS_CACHE = 50;
72
- const MAX_CONSOLE_MESSAGES = 500;
73
- const MAX_PAGE_ERRORS = 200;
74
- const MAX_NETWORK_REQUESTS = 500;
75
- const cachedByCdpUrl = /* @__PURE__ */ new Map();
76
- const connectingByCdpUrl = /* @__PURE__ */ new Map();
77
- function normalizeCdpUrl(raw) {
78
- return raw.replace(/\/$/, "");
79
- }
80
- function findNetworkRequestById(state, id) {
81
- for (let i = state.requests.length - 1; i >= 0; i -= 1) {
82
- const candidate = state.requests[i];
83
- if (candidate && candidate.id === id) return candidate;
84
- }
85
- }
86
- function roleRefsKey(cdpUrl, targetId) {
87
- return `${normalizeCdpUrl(cdpUrl)}::${targetId}`;
88
- }
89
- function rememberRoleRefsForTarget(opts) {
90
- const targetId = opts.targetId.trim();
91
- if (!targetId) return;
92
- roleRefsByTarget.set(roleRefsKey(opts.cdpUrl, targetId), {
93
- refs: opts.refs,
94
- ...opts.frameSelector ? { frameSelector: opts.frameSelector } : {},
95
- ...opts.mode ? { mode: opts.mode } : {}
96
- });
97
- while (roleRefsByTarget.size > MAX_ROLE_REFS_CACHE) {
98
- const first = roleRefsByTarget.keys().next();
99
- if (first.done) break;
100
- roleRefsByTarget.delete(first.value);
101
- }
102
- }
103
- function storeRoleRefsForTarget(opts) {
104
- const state = ensurePageState(opts.page);
105
- state.roleRefs = opts.refs;
106
- state.roleRefsFrameSelector = opts.frameSelector;
107
- state.roleRefsMode = opts.mode;
108
- if (!opts.targetId?.trim()) return;
109
- rememberRoleRefsForTarget({
110
- cdpUrl: opts.cdpUrl,
111
- targetId: opts.targetId,
112
- refs: opts.refs,
113
- frameSelector: opts.frameSelector,
114
- mode: opts.mode
115
- });
116
- }
117
- function restoreRoleRefsForTarget(opts) {
118
- const targetId = opts.targetId?.trim() || "";
119
- if (!targetId) return;
120
- const cached = roleRefsByTarget.get(roleRefsKey(opts.cdpUrl, targetId));
121
- if (!cached) return;
122
- const state = ensurePageState(opts.page);
123
- if (state.roleRefs) return;
124
- state.roleRefs = cached.refs;
125
- state.roleRefsFrameSelector = cached.frameSelector;
126
- state.roleRefsMode = cached.mode;
127
- }
128
- function ensurePageState(page) {
129
- const existing = pageStates.get(page);
130
- if (existing) return existing;
131
- const state = {
132
- console: [],
133
- errors: [],
134
- requests: [],
135
- requestIds: /* @__PURE__ */ new WeakMap(),
136
- nextRequestId: 0,
137
- armIdUpload: 0,
138
- armIdDialog: 0,
139
- armIdDownload: 0
140
- };
141
- pageStates.set(page, state);
142
- if (!observedPages.has(page)) {
143
- observedPages.add(page);
144
- page.on("console", (msg) => {
145
- const entry = {
146
- type: msg.type(),
147
- text: msg.text(),
148
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
149
- location: msg.location()
150
- };
151
- state.console.push(entry);
152
- if (state.console.length > MAX_CONSOLE_MESSAGES) state.console.shift();
153
- });
154
- page.on("pageerror", (err) => {
155
- state.errors.push({
156
- message: err?.message ? String(err.message) : String(err),
157
- name: err?.name ? String(err.name) : void 0,
158
- stack: err?.stack ? String(err.stack) : void 0,
159
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
160
- });
161
- if (state.errors.length > MAX_PAGE_ERRORS) state.errors.shift();
162
- });
163
- page.on("request", (req) => {
164
- state.nextRequestId += 1;
165
- const id = `r${state.nextRequestId}`;
166
- state.requestIds.set(req, id);
167
- state.requests.push({
168
- id,
169
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
170
- method: req.method(),
171
- url: req.url(),
172
- resourceType: req.resourceType()
173
- });
174
- if (state.requests.length > MAX_NETWORK_REQUESTS) state.requests.shift();
175
- });
176
- page.on("response", (resp) => {
177
- const req = resp.request();
178
- const id = state.requestIds.get(req);
179
- if (!id) return;
180
- const rec = findNetworkRequestById(state, id);
181
- if (!rec) return;
182
- rec.status = resp.status();
183
- rec.ok = resp.ok();
184
- });
185
- page.on("requestfailed", (req) => {
186
- const id = state.requestIds.get(req);
187
- if (!id) return;
188
- const rec = findNetworkRequestById(state, id);
189
- if (!rec) return;
190
- rec.failureText = req.failure()?.errorText;
191
- rec.ok = false;
192
- });
193
- page.on("close", () => {
194
- pageStates.delete(page);
195
- observedPages.delete(page);
196
- });
197
- }
198
- return state;
199
- }
200
- function observeContext(context) {
201
- if (observedContexts.has(context)) return;
202
- observedContexts.add(context);
203
- ensureContextState(context);
204
- for (const page of context.pages()) ensurePageState(page);
205
- context.on("page", (page) => ensurePageState(page));
206
- }
207
- function ensureContextState(context) {
208
- const existing = contextStates.get(context);
209
- if (existing) return existing;
210
- const state = { traceActive: false };
211
- contextStates.set(context, state);
212
- return state;
213
- }
214
- function observeBrowser(browser) {
215
- for (const context of browser.contexts()) observeContext(context);
216
- }
217
- async function connectBrowser(cdpUrl) {
218
- const normalized = normalizeCdpUrl(cdpUrl);
219
- const cached = cachedByCdpUrl.get(normalized);
220
- if (cached) return cached;
221
- const connecting = connectingByCdpUrl.get(normalized);
222
- if (connecting) return await connecting;
223
- const connectWithRetry = async () => {
224
- let lastErr;
225
- for (let attempt = 0; attempt < 3; attempt += 1) try {
226
- const timeout = 5e3 + attempt * 2e3;
227
- const endpoint = await getChromeWebSocketUrl(normalized, timeout).catch(() => null) ?? normalized;
228
- const headers = getHeadersWithAuth(endpoint);
229
- const browser = await withNoProxyForCdpUrl(endpoint, () => chromium.connectOverCDP(endpoint, {
230
- timeout,
231
- headers
232
- }));
233
- const onDisconnected = () => {
234
- if (cachedByCdpUrl.get(normalized)?.browser === browser) cachedByCdpUrl.delete(normalized);
235
- };
236
- const connected = {
237
- browser,
238
- cdpUrl: normalized,
239
- onDisconnected
240
- };
241
- cachedByCdpUrl.set(normalized, connected);
242
- browser.on("disconnected", onDisconnected);
243
- observeBrowser(browser);
244
- return connected;
245
- } catch (err) {
246
- lastErr = err;
247
- if ((err instanceof Error ? err.message : String(err)).includes("rate limit")) break;
248
- const delay = 250 + attempt * 250;
249
- await new Promise((r) => setTimeout(r, delay));
250
- }
251
- if (lastErr instanceof Error) throw lastErr;
252
- const message = lastErr ? formatErrorMessage(lastErr) : "CDP connect failed";
253
- throw new Error(message);
254
- };
255
- const pending = connectWithRetry().finally(() => {
256
- connectingByCdpUrl.delete(normalized);
257
- });
258
- connectingByCdpUrl.set(normalized, pending);
259
- return await pending;
260
- }
261
- async function getAllPages(browser) {
262
- return browser.contexts().flatMap((c) => c.pages());
263
- }
264
- async function pageTargetId(page) {
265
- const session = await page.context().newCDPSession(page);
266
- try {
267
- const info = await session.send("Target.getTargetInfo");
268
- return String(info?.targetInfo?.targetId ?? "").trim() || null;
269
- } finally {
270
- await session.detach().catch(() => {});
271
- }
272
- }
273
- function matchPageByTargetList(pages, targets, targetId) {
274
- const target = targets.find((entry) => entry.id === targetId);
275
- if (!target) return null;
276
- const urlMatch = pages.filter((page) => page.url() === target.url);
277
- if (urlMatch.length === 1) return urlMatch[0] ?? null;
278
- if (urlMatch.length > 1) {
279
- const sameUrlTargets = targets.filter((entry) => entry.url === target.url);
280
- if (sameUrlTargets.length === urlMatch.length) {
281
- const idx = sameUrlTargets.findIndex((entry) => entry.id === targetId);
282
- if (idx >= 0 && idx < urlMatch.length) return urlMatch[idx] ?? null;
283
- }
284
- }
285
- return null;
286
- }
287
- async function findPageByTargetIdViaTargetList(pages, targetId, cdpUrl) {
288
- return matchPageByTargetList(pages, await fetchJson(appendCdpPath(normalizeCdpHttpBaseForJsonEndpoints(cdpUrl), "/json/list"), 2e3), targetId);
289
- }
290
- async function findPageByTargetId(browser, targetId, cdpUrl) {
291
- const pages = await getAllPages(browser);
292
- let resolvedViaCdp = false;
293
- for (const page of pages) {
294
- let tid = null;
295
- try {
296
- tid = await pageTargetId(page);
297
- resolvedViaCdp = true;
298
- } catch {
299
- tid = null;
300
- }
301
- if (tid && tid === targetId) return page;
302
- }
303
- if (cdpUrl) try {
304
- return await findPageByTargetIdViaTargetList(pages, targetId, cdpUrl);
305
- } catch {}
306
- if (!resolvedViaCdp && pages.length === 1) return pages[0] ?? null;
307
- return null;
308
- }
309
- async function resolvePageByTargetIdOrThrow(opts) {
310
- const { browser } = await connectBrowser(opts.cdpUrl);
311
- const page = await findPageByTargetId(browser, opts.targetId, opts.cdpUrl);
312
- if (!page) throw new BrowserTabNotFoundError();
313
- return page;
314
- }
315
- async function getPageForTargetId(opts) {
316
- const { browser } = await connectBrowser(opts.cdpUrl);
317
- const pages = await getAllPages(browser);
318
- if (!pages.length) throw new Error("No pages available in the connected browser.");
319
- const first = pages[0];
320
- if (!opts.targetId) return first;
321
- const found = await findPageByTargetId(browser, opts.targetId, opts.cdpUrl);
322
- if (!found) {
323
- if (pages.length === 1) return first;
324
- throw new BrowserTabNotFoundError();
325
- }
326
- return found;
327
- }
328
- function refLocator(page, ref) {
329
- const normalized = ref.startsWith("@") ? ref.slice(1) : ref.startsWith("ref=") ? ref.slice(4) : ref;
330
- if (/^e\d+$/.test(normalized)) {
331
- const state = pageStates.get(page);
332
- if (state?.roleRefsMode === "aria") return (state.roleRefsFrameSelector ? page.frameLocator(state.roleRefsFrameSelector) : page).locator(`aria-ref=${normalized}`);
333
- const info = state?.roleRefs?.[normalized];
334
- if (!info) throw new Error(`Unknown ref "${normalized}". Run a new snapshot and use a ref from that snapshot.`);
335
- const locAny = state?.roleRefsFrameSelector ? page.frameLocator(state.roleRefsFrameSelector) : page;
336
- const locator = info.name ? locAny.getByRole(info.role, {
337
- name: info.name,
338
- exact: true
339
- }) : locAny.getByRole(info.role);
340
- return info.nth !== void 0 ? locator.nth(info.nth) : locator;
341
- }
342
- return page.locator(`aria-ref=${normalized}`);
343
- }
344
- async function closePlaywrightBrowserConnection(opts) {
345
- const normalized = opts?.cdpUrl ? normalizeCdpUrl(opts.cdpUrl) : null;
346
- if (normalized) {
347
- const cur = cachedByCdpUrl.get(normalized);
348
- cachedByCdpUrl.delete(normalized);
349
- connectingByCdpUrl.delete(normalized);
350
- if (!cur) return;
351
- if (cur.onDisconnected && typeof cur.browser.off === "function") cur.browser.off("disconnected", cur.onDisconnected);
352
- await cur.browser.close().catch(() => {});
353
- return;
354
- }
355
- const connections = Array.from(cachedByCdpUrl.values());
356
- cachedByCdpUrl.clear();
357
- connectingByCdpUrl.clear();
358
- for (const cur of connections) {
359
- if (cur.onDisconnected && typeof cur.browser.off === "function") cur.browser.off("disconnected", cur.onDisconnected);
360
- await cur.browser.close().catch(() => {});
361
- }
362
- }
363
- function cdpSocketNeedsAttach(wsUrl) {
364
- try {
365
- const pathname = new URL(wsUrl).pathname;
366
- return pathname === "/cdp" || pathname.endsWith("/cdp") || pathname.includes("/devtools/browser/");
367
- } catch {
368
- return false;
369
- }
370
- }
371
- async function tryTerminateExecutionViaCdp(opts) {
372
- const cdpHttpBase = normalizeCdpHttpBaseForJsonEndpoints(opts.cdpUrl);
373
- const pages = await fetchJson(appendCdpPath(cdpHttpBase, "/json/list"), 2e3).catch(() => null);
374
- if (!pages || pages.length === 0) return;
375
- const target = pages.find((p) => String(p.id ?? "").trim() === opts.targetId);
376
- const wsUrlRaw = String(target?.webSocketDebuggerUrl ?? "").trim();
377
- if (!wsUrlRaw) return;
378
- const wsUrl = normalizeCdpWsUrl(wsUrlRaw, cdpHttpBase);
379
- const needsAttach = cdpSocketNeedsAttach(wsUrl);
380
- const runWithTimeout = async (work, ms) => {
381
- let timer;
382
- const timeoutPromise = new Promise((_, reject) => {
383
- timer = setTimeout(() => reject(/* @__PURE__ */ new Error("CDP command timed out")), ms);
384
- });
385
- try {
386
- return await Promise.race([work, timeoutPromise]);
387
- } finally {
388
- if (timer) clearTimeout(timer);
389
- }
390
- };
391
- await withCdpSocket(wsUrl, async (send) => {
392
- let sessionId;
393
- try {
394
- if (needsAttach) {
395
- const attached = await runWithTimeout(send("Target.attachToTarget", {
396
- targetId: opts.targetId,
397
- flatten: true
398
- }), 1500);
399
- if (typeof attached?.sessionId === "string" && attached.sessionId.trim()) sessionId = attached.sessionId;
400
- }
401
- await runWithTimeout(send("Runtime.terminateExecution", void 0, sessionId), 1500);
402
- if (sessionId) send("Target.detachFromTarget", { sessionId }).catch(() => {});
403
- } catch {}
404
- }, { handshakeTimeoutMs: 2e3 }).catch(() => {});
405
- }
406
- /**
407
- * Best-effort cancellation for stuck page operations.
408
- *
409
- * Playwright serializes CDP commands per page; a long-running or stuck operation (notably evaluate)
410
- * can block all subsequent commands. We cannot safely "cancel" an individual command, and we do
411
- * not want to close the actual Chromium tab. Instead, we disconnect Playwright's CDP connection
412
- * so in-flight commands fail fast and the next request reconnects transparently.
413
- *
414
- * IMPORTANT: We CANNOT call Connection.close() because Playwright shares a single Connection
415
- * across all objects (BrowserType, Browser, etc.). Closing it corrupts the entire Playwright
416
- * instance, preventing reconnection.
417
- *
418
- * Instead we:
419
- * 1. Null out `cached` so the next call triggers a fresh connectOverCDP
420
- * 2. Fire-and-forget browser.close() — it may hang but won't block us
421
- * 3. The next connectBrowser() creates a completely new CDP WebSocket connection
422
- *
423
- * The old browser.close() eventually resolves when the in-browser evaluate timeout fires,
424
- * or the old connection gets GC'd. Either way, it doesn't affect the fresh connection.
425
- */
426
- async function forceDisconnectPlaywrightForTarget(opts) {
427
- const normalized = normalizeCdpUrl(opts.cdpUrl);
428
- const cur = cachedByCdpUrl.get(normalized);
429
- if (!cur) return;
430
- cachedByCdpUrl.delete(normalized);
431
- connectingByCdpUrl.delete(normalized);
432
- if (cur.onDisconnected && typeof cur.browser.off === "function") cur.browser.off("disconnected", cur.onDisconnected);
433
- const targetId = opts.targetId?.trim() || "";
434
- if (targetId) await tryTerminateExecutionViaCdp({
435
- cdpUrl: normalized,
436
- targetId
437
- }).catch(() => {});
438
- cur.browser.close().catch(() => {});
439
- }
440
- /**
441
- * List all pages/tabs from the persistent Playwright connection.
442
- * Used for remote profiles where HTTP-based /json/list is ephemeral.
443
- */
444
- async function listPagesViaPlaywright(opts) {
445
- const { browser } = await connectBrowser(opts.cdpUrl);
446
- const pages = await getAllPages(browser);
447
- const results = [];
448
- for (const page of pages) {
449
- const tid = await pageTargetId(page).catch(() => null);
450
- if (tid) results.push({
451
- targetId: tid,
452
- title: await page.title().catch(() => ""),
453
- url: page.url(),
454
- type: "page"
455
- });
456
- }
457
- return results;
458
- }
459
- /**
460
- * Create a new page/tab using the persistent Playwright connection.
461
- * Used for remote profiles where HTTP-based /json/new is ephemeral.
462
- * Returns the new page's targetId and metadata.
463
- */
464
- async function createPageViaPlaywright(opts) {
465
- const { browser } = await connectBrowser(opts.cdpUrl);
466
- const context = browser.contexts()[0] ?? await browser.newContext();
467
- ensureContextState(context);
468
- const page = await context.newPage();
469
- ensurePageState(page);
470
- const targetUrl = opts.url.trim() || "about:blank";
471
- if (targetUrl !== "about:blank") {
472
- const navigationPolicy = withBrowserNavigationPolicy(opts.ssrfPolicy);
473
- await assertBrowserNavigationAllowed({
474
- url: targetUrl,
475
- ...navigationPolicy
476
- });
477
- await assertBrowserNavigationRedirectChainAllowed({
478
- request: (await page.goto(targetUrl, { timeout: 3e4 }).catch(() => {
479
- return null;
480
- }))?.request(),
481
- ...navigationPolicy
482
- });
483
- await assertBrowserNavigationResultAllowed({
484
- url: page.url(),
485
- ...navigationPolicy
486
- });
487
- }
488
- const tid = await pageTargetId(page).catch(() => null);
489
- if (!tid) throw new Error("Failed to get targetId for new page");
490
- return {
491
- targetId: tid,
492
- title: await page.title().catch(() => ""),
493
- url: page.url(),
494
- type: "page"
495
- };
496
- }
497
- /**
498
- * Close a page/tab by targetId using the persistent Playwright connection.
499
- * Used for remote profiles where HTTP-based /json/close is ephemeral.
500
- */
501
- async function closePageByTargetIdViaPlaywright(opts) {
502
- await (await resolvePageByTargetIdOrThrow(opts)).close();
503
- }
504
- /**
505
- * Focus a page/tab by targetId using the persistent Playwright connection.
506
- * Used for remote profiles where HTTP-based /json/activate can be ephemeral.
507
- */
508
- async function focusPageByTargetIdViaPlaywright(opts) {
509
- const page = await resolvePageByTargetIdOrThrow(opts);
510
- try {
511
- await page.bringToFront();
512
- } catch (err) {
513
- try {
514
- await withPageScopedCdpClient({
515
- cdpUrl: opts.cdpUrl,
516
- page,
517
- targetId: opts.targetId,
518
- fn: async (send) => {
519
- await send("Page.bringToFront");
520
- }
521
- });
522
- return;
523
- } catch {
524
- throw err;
525
- }
526
- }
527
- }
528
- //#endregion
529
- //#region src/browser/pw-tools-core.activity.ts
530
- async function getPageErrorsViaPlaywright(opts) {
531
- const state = ensurePageState(await getPageForTargetId(opts));
532
- const errors = [...state.errors];
533
- if (opts.clear) state.errors = [];
534
- return { errors };
535
- }
536
- async function getNetworkRequestsViaPlaywright(opts) {
537
- const state = ensurePageState(await getPageForTargetId(opts));
538
- const raw = [...state.requests];
539
- const filter = typeof opts.filter === "string" ? opts.filter.trim() : "";
540
- const requests = filter ? raw.filter((r) => r.url.includes(filter)) : raw;
541
- if (opts.clear) {
542
- state.requests = [];
543
- state.requestIds = /* @__PURE__ */ new WeakMap();
544
- }
545
- return { requests };
546
- }
547
- function consolePriority(level) {
548
- switch (level) {
549
- case "error": return 3;
550
- case "warning": return 2;
551
- case "info":
552
- case "log": return 1;
553
- case "debug": return 0;
554
- default: return 1;
555
- }
556
- }
557
- async function getConsoleMessagesViaPlaywright(opts) {
558
- const state = ensurePageState(await getPageForTargetId(opts));
559
- if (!opts.level) return [...state.console];
560
- const min = consolePriority(opts.level);
561
- return state.console.filter((msg) => consolePriority(msg.type) >= min);
562
- }
563
- //#endregion
564
- //#region src/browser/safe-filename.ts
565
- function sanitizeUntrustedFileName(fileName, fallbackName) {
566
- const trimmed = String(fileName ?? "").trim();
567
- if (!trimmed) return fallbackName;
568
- let base = path.posix.basename(trimmed);
569
- base = path.win32.basename(base);
570
- let cleaned = "";
571
- for (let i = 0; i < base.length; i++) {
572
- const code = base.charCodeAt(i);
573
- if (code < 32 || code === 127) continue;
574
- cleaned += base[i];
575
- }
576
- base = cleaned.trim();
577
- if (!base || base === "." || base === "..") return fallbackName;
578
- if (base.length > 200) base = base.slice(0, 200);
579
- return base;
580
- }
581
- //#endregion
582
- //#region src/browser/output-atomic.ts
583
- function buildSiblingTempPath(targetPath) {
584
- const id = crypto.randomUUID();
585
- const safeTail = sanitizeUntrustedFileName(path.basename(targetPath), "output.bin");
586
- return path.join(path.dirname(targetPath), `.moldclaw-output-${id}-${safeTail}.part`);
587
- }
588
- async function writeViaSiblingTempPath(params) {
589
- const rootDir = await fs.realpath(path.resolve(params.rootDir)).catch(() => path.resolve(params.rootDir));
590
- const requestedTargetPath = path.resolve(params.targetPath);
591
- const targetPath = await fs.realpath(path.dirname(requestedTargetPath)).then((realDir) => path.join(realDir, path.basename(requestedTargetPath))).catch(() => requestedTargetPath);
592
- const relativeTargetPath = path.relative(rootDir, targetPath);
593
- if (!relativeTargetPath || relativeTargetPath === ".." || relativeTargetPath.startsWith(`..${path.sep}`) || path.isAbsolute(relativeTargetPath)) throw new Error("Target path is outside the allowed root");
594
- const tempPath = buildSiblingTempPath(targetPath);
595
- let renameSucceeded = false;
596
- try {
597
- await params.writeTemp(tempPath);
598
- await writeFileFromPathWithinRoot({
599
- rootDir,
600
- relativePath: relativeTargetPath,
601
- sourcePath: tempPath,
602
- mkdir: false
603
- });
604
- renameSucceeded = true;
605
- } finally {
606
- if (!renameSucceeded) await fs.rm(tempPath, { force: true }).catch(() => {});
607
- }
608
- }
609
- //#endregion
610
- //#region src/browser/pw-tools-core.shared.ts
611
- let nextUploadArmId = 0;
612
- let nextDialogArmId = 0;
613
- let nextDownloadArmId = 0;
614
- function bumpUploadArmId() {
615
- nextUploadArmId += 1;
616
- return nextUploadArmId;
617
- }
618
- function bumpDialogArmId() {
619
- nextDialogArmId += 1;
620
- return nextDialogArmId;
621
- }
622
- function bumpDownloadArmId() {
623
- nextDownloadArmId += 1;
624
- return nextDownloadArmId;
625
- }
626
- function requireRef(value) {
627
- const raw = typeof value === "string" ? value.trim() : "";
628
- const ref = (raw ? parseRoleRef(raw) : null) ?? (raw.startsWith("@") ? raw.slice(1) : raw);
629
- if (!ref) throw new Error("ref is required");
630
- return ref;
631
- }
632
- function requireRefOrSelector(ref, selector) {
633
- const trimmedRef = typeof ref === "string" ? ref.trim() : "";
634
- const trimmedSelector = typeof selector === "string" ? selector.trim() : "";
635
- if (!trimmedRef && !trimmedSelector) throw new Error("ref or selector is required");
636
- return {
637
- ref: trimmedRef || void 0,
638
- selector: trimmedSelector || void 0
639
- };
640
- }
641
- function normalizeTimeoutMs(timeoutMs, fallback) {
642
- return Math.max(500, Math.min(12e4, timeoutMs ?? fallback));
643
- }
644
- function toAIFriendlyError(error, selector) {
645
- const message = error instanceof Error ? error.message : String(error);
646
- if (message.includes("strict mode violation")) {
647
- const countMatch = message.match(/resolved to (\d+) elements/);
648
- const count = countMatch ? countMatch[1] : "multiple";
649
- return /* @__PURE__ */ new Error(`Selector "${selector}" matched ${count} elements. Run a new snapshot to get updated refs, or use a different ref.`);
650
- }
651
- if ((message.includes("Timeout") || message.includes("waiting for")) && (message.includes("to be visible") || message.includes("not visible"))) return /* @__PURE__ */ new Error(`Element "${selector}" not found or not visible. Run a new snapshot to see current page elements.`);
652
- if (message.includes("intercepts pointer events") || message.includes("not visible") || message.includes("not receive pointer events")) return /* @__PURE__ */ new Error(`Element "${selector}" is not interactable (hidden or covered). Try scrolling it into view, closing overlays, or re-snapshotting.`);
653
- return error instanceof Error ? error : new Error(message);
654
- }
655
- //#endregion
656
- //#region src/browser/pw-tools-core.downloads.ts
657
- function buildTempDownloadPath(fileName) {
658
- const id = crypto.randomUUID();
659
- const safeName = sanitizeUntrustedFileName(fileName, "download.bin");
660
- return path.join(resolvePreferredmoldClawTmpDir(), "downloads", `${id}-${safeName}`);
661
- }
662
- function createPageDownloadWaiter(page, timeoutMs) {
663
- let done = false;
664
- let timer;
665
- let handler;
666
- const cleanup = () => {
667
- if (timer) clearTimeout(timer);
668
- timer = void 0;
669
- if (handler) {
670
- page.off("download", handler);
671
- handler = void 0;
672
- }
673
- };
674
- return {
675
- promise: new Promise((resolve, reject) => {
676
- handler = (download) => {
677
- if (done) return;
678
- done = true;
679
- cleanup();
680
- resolve(download);
681
- };
682
- page.on("download", handler);
683
- timer = setTimeout(() => {
684
- if (done) return;
685
- done = true;
686
- cleanup();
687
- reject(/* @__PURE__ */ new Error("Timeout waiting for download"));
688
- }, timeoutMs);
689
- }),
690
- cancel: () => {
691
- if (done) return;
692
- done = true;
693
- cleanup();
694
- }
695
- };
696
- }
697
- async function saveDownloadPayload(download, outPath) {
698
- const suggested = download.suggestedFilename?.() || "download.bin";
699
- const requestedPath = outPath?.trim();
700
- const resolvedOutPath = path.resolve(requestedPath || buildTempDownloadPath(suggested));
701
- await fs.mkdir(path.dirname(resolvedOutPath), { recursive: true });
702
- if (!requestedPath) await download.saveAs?.(resolvedOutPath);
703
- else await writeViaSiblingTempPath({
704
- rootDir: path.dirname(resolvedOutPath),
705
- targetPath: resolvedOutPath,
706
- writeTemp: async (tempPath) => {
707
- await download.saveAs?.(tempPath);
708
- }
709
- });
710
- return {
711
- url: download.url?.() || "",
712
- suggestedFilename: suggested,
713
- path: resolvedOutPath
714
- };
715
- }
716
- async function awaitDownloadPayload(params) {
717
- try {
718
- const download = await params.waiter.promise;
719
- if (params.state.armIdDownload !== params.armId) throw new Error("Download was superseded by another waiter");
720
- return await saveDownloadPayload(download, params.outPath ?? "");
721
- } catch (err) {
722
- params.waiter.cancel();
723
- throw err;
724
- }
725
- }
726
- async function armFileUploadViaPlaywright(opts) {
727
- const page = await getPageForTargetId(opts);
728
- const state = ensurePageState(page);
729
- const timeout = Math.max(500, Math.min(12e4, opts.timeoutMs ?? 12e4));
730
- state.armIdUpload = bumpUploadArmId();
731
- const armId = state.armIdUpload;
732
- page.waitForEvent("filechooser", { timeout }).then(async (fileChooser) => {
733
- if (state.armIdUpload !== armId) return;
734
- if (!opts.paths?.length) {
735
- try {
736
- await page.keyboard.press("Escape");
737
- } catch {}
738
- return;
739
- }
740
- const uploadPathsResult = await resolveStrictExistingPathsWithinRoot({
741
- rootDir: DEFAULT_UPLOAD_DIR,
742
- requestedPaths: opts.paths,
743
- scopeLabel: `uploads directory (${DEFAULT_UPLOAD_DIR})`
744
- });
745
- if (!uploadPathsResult.ok) {
746
- try {
747
- await page.keyboard.press("Escape");
748
- } catch {}
749
- return;
750
- }
751
- await fileChooser.setFiles(uploadPathsResult.paths);
752
- try {
753
- const input = typeof fileChooser.element === "function" ? await Promise.resolve(fileChooser.element()) : null;
754
- if (input) await input.evaluate((el) => {
755
- el.dispatchEvent(new Event("input", { bubbles: true }));
756
- el.dispatchEvent(new Event("change", { bubbles: true }));
757
- });
758
- } catch {}
759
- }).catch(() => {});
760
- }
761
- async function armDialogViaPlaywright(opts) {
762
- const page = await getPageForTargetId(opts);
763
- const state = ensurePageState(page);
764
- const timeout = normalizeTimeoutMs(opts.timeoutMs, 12e4);
765
- state.armIdDialog = bumpDialogArmId();
766
- const armId = state.armIdDialog;
767
- page.waitForEvent("dialog", { timeout }).then(async (dialog) => {
768
- if (state.armIdDialog !== armId) return;
769
- if (opts.accept) await dialog.accept(opts.promptText);
770
- else await dialog.dismiss();
771
- }).catch(() => {});
772
- }
773
- async function waitForDownloadViaPlaywright(opts) {
774
- const page = await getPageForTargetId(opts);
775
- const state = ensurePageState(page);
776
- const timeout = normalizeTimeoutMs(opts.timeoutMs, 12e4);
777
- state.armIdDownload = bumpDownloadArmId();
778
- const armId = state.armIdDownload;
779
- return await awaitDownloadPayload({
780
- waiter: createPageDownloadWaiter(page, timeout),
781
- state,
782
- armId,
783
- outPath: opts.path
784
- });
785
- }
786
- async function downloadViaPlaywright(opts) {
787
- const page = await getPageForTargetId(opts);
788
- const state = ensurePageState(page);
789
- restoreRoleRefsForTarget({
790
- cdpUrl: opts.cdpUrl,
791
- targetId: opts.targetId,
792
- page
793
- });
794
- const timeout = normalizeTimeoutMs(opts.timeoutMs, 12e4);
795
- const ref = requireRef(opts.ref);
796
- const outPath = String(opts.path ?? "").trim();
797
- if (!outPath) throw new Error("path is required");
798
- state.armIdDownload = bumpDownloadArmId();
799
- const armId = state.armIdDownload;
800
- const waiter = createPageDownloadWaiter(page, timeout);
801
- try {
802
- const locator = refLocator(page, ref);
803
- try {
804
- await locator.click({ timeout });
805
- } catch (err) {
806
- throw toAIFriendlyError(err, ref);
807
- }
808
- return await awaitDownloadPayload({
809
- waiter,
810
- state,
811
- armId,
812
- outPath
813
- });
814
- } catch (err) {
815
- waiter.cancel();
816
- throw err;
817
- }
818
- }
819
- //#endregion
820
- //#region src/browser/pw-tools-core.snapshot.ts
821
- async function snapshotAriaViaPlaywright(opts) {
822
- const limit = Math.max(1, Math.min(2e3, Math.floor(opts.limit ?? 500)));
823
- const page = await getPageForTargetId({
824
- cdpUrl: opts.cdpUrl,
825
- targetId: opts.targetId
826
- });
827
- ensurePageState(page);
828
- const res = await withPageScopedCdpClient({
829
- cdpUrl: opts.cdpUrl,
830
- page,
831
- targetId: opts.targetId,
832
- fn: async (send) => {
833
- await send("Accessibility.enable").catch(() => {});
834
- return await send("Accessibility.getFullAXTree");
835
- }
836
- });
837
- return { nodes: formatAriaSnapshot(Array.isArray(res?.nodes) ? res.nodes : [], limit) };
838
- }
839
- async function snapshotAiViaPlaywright(opts) {
840
- const page = await getPageForTargetId({
841
- cdpUrl: opts.cdpUrl,
842
- targetId: opts.targetId
843
- });
844
- ensurePageState(page);
845
- const maybe = page;
846
- if (!maybe._snapshotForAI) throw new Error("Playwright _snapshotForAI is not available. Upgrade playwright-core.");
847
- const result = await maybe._snapshotForAI({
848
- timeout: Math.max(500, Math.min(6e4, Math.floor(opts.timeoutMs ?? 5e3))),
849
- track: "response"
850
- });
851
- let snapshot = String(result?.full ?? "");
852
- const maxChars = opts.maxChars;
853
- const limit = typeof maxChars === "number" && Number.isFinite(maxChars) && maxChars > 0 ? Math.floor(maxChars) : void 0;
854
- let truncated = false;
855
- if (limit && snapshot.length > limit) {
856
- snapshot = `${snapshot.slice(0, limit)}\n\n[...TRUNCATED - page too large]`;
857
- truncated = true;
858
- }
859
- const built = buildRoleSnapshotFromAiSnapshot(snapshot);
860
- storeRoleRefsForTarget({
861
- page,
862
- cdpUrl: opts.cdpUrl,
863
- targetId: opts.targetId,
864
- refs: built.refs,
865
- mode: "aria"
866
- });
867
- return truncated ? {
868
- snapshot,
869
- truncated,
870
- refs: built.refs
871
- } : {
872
- snapshot,
873
- refs: built.refs
874
- };
875
- }
876
- async function snapshotRoleViaPlaywright(opts) {
877
- const page = await getPageForTargetId({
878
- cdpUrl: opts.cdpUrl,
879
- targetId: opts.targetId
880
- });
881
- ensurePageState(page);
882
- if (opts.refsMode === "aria") {
883
- if (opts.selector?.trim() || opts.frameSelector?.trim()) throw new Error("refs=aria does not support selector/frame snapshots yet.");
884
- const maybe = page;
885
- if (!maybe._snapshotForAI) throw new Error("refs=aria requires Playwright _snapshotForAI support.");
886
- const result = await maybe._snapshotForAI({
887
- timeout: 5e3,
888
- track: "response"
889
- });
890
- const built = buildRoleSnapshotFromAiSnapshot(String(result?.full ?? ""), opts.options);
891
- storeRoleRefsForTarget({
892
- page,
893
- cdpUrl: opts.cdpUrl,
894
- targetId: opts.targetId,
895
- refs: built.refs,
896
- mode: "aria"
897
- });
898
- return {
899
- snapshot: built.snapshot,
900
- refs: built.refs,
901
- stats: getRoleSnapshotStats(built.snapshot, built.refs)
902
- };
903
- }
904
- const frameSelector = opts.frameSelector?.trim() || "";
905
- const selector = opts.selector?.trim() || "";
906
- const ariaSnapshot = await (frameSelector ? selector ? page.frameLocator(frameSelector).locator(selector) : page.frameLocator(frameSelector).locator(":root") : selector ? page.locator(selector) : page.locator(":root")).ariaSnapshot();
907
- const built = buildRoleSnapshotFromAriaSnapshot(String(ariaSnapshot ?? ""), opts.options);
908
- storeRoleRefsForTarget({
909
- page,
910
- cdpUrl: opts.cdpUrl,
911
- targetId: opts.targetId,
912
- refs: built.refs,
913
- frameSelector: frameSelector || void 0,
914
- mode: "role"
915
- });
916
- return {
917
- snapshot: built.snapshot,
918
- refs: built.refs,
919
- stats: getRoleSnapshotStats(built.snapshot, built.refs)
920
- };
921
- }
922
- async function navigateViaPlaywright(opts) {
923
- const isRetryableNavigateError = (err) => {
924
- const msg = typeof err === "string" ? err.toLowerCase() : err instanceof Error ? err.message.toLowerCase() : "";
925
- return msg.includes("frame has been detached") || msg.includes("target page, context or browser has been closed");
926
- };
927
- const url = String(opts.url ?? "").trim();
928
- if (!url) throw new Error("url is required");
929
- await assertBrowserNavigationAllowed({
930
- url,
931
- ...withBrowserNavigationPolicy(opts.ssrfPolicy)
932
- });
933
- const timeout = Math.max(1e3, Math.min(12e4, opts.timeoutMs ?? 2e4));
934
- let page = await getPageForTargetId(opts);
935
- ensurePageState(page);
936
- const navigate = async () => await page.goto(url, { timeout });
937
- let response;
938
- try {
939
- response = await navigate();
940
- } catch (err) {
941
- if (!isRetryableNavigateError(err)) throw err;
942
- await forceDisconnectPlaywrightForTarget({
943
- cdpUrl: opts.cdpUrl,
944
- targetId: opts.targetId,
945
- reason: "retry navigate after detached frame"
946
- }).catch(() => {});
947
- page = await getPageForTargetId(opts);
948
- ensurePageState(page);
949
- response = await navigate();
950
- }
951
- await assertBrowserNavigationRedirectChainAllowed({
952
- request: response?.request(),
953
- ...withBrowserNavigationPolicy(opts.ssrfPolicy)
954
- });
955
- const finalUrl = page.url();
956
- await assertBrowserNavigationResultAllowed({
957
- url: finalUrl,
958
- ...withBrowserNavigationPolicy(opts.ssrfPolicy)
959
- });
960
- return { url: finalUrl };
961
- }
962
- async function resizeViewportViaPlaywright(opts) {
963
- const page = await getPageForTargetId(opts);
964
- ensurePageState(page);
965
- await page.setViewportSize({
966
- width: Math.max(1, Math.floor(opts.width)),
967
- height: Math.max(1, Math.floor(opts.height))
968
- });
969
- }
970
- async function closePageViaPlaywright(opts) {
971
- const page = await getPageForTargetId(opts);
972
- ensurePageState(page);
973
- await page.close();
974
- }
975
- async function pdfViaPlaywright(opts) {
976
- const page = await getPageForTargetId(opts);
977
- ensurePageState(page);
978
- return { buffer: await page.pdf({ printBackground: true }) };
979
- }
980
- //#endregion
981
- //#region src/browser/pw-tools-core.interactions.ts
982
- const MAX_CLICK_DELAY_MS = 5e3;
983
- const MAX_WAIT_TIME_MS = 3e4;
984
- const MAX_BATCH_ACTIONS = 100;
985
- function resolveBoundedDelayMs(value, label, maxMs) {
986
- const normalized = Math.floor(value ?? 0);
987
- if (!Number.isFinite(normalized) || normalized < 0) throw new Error(`${label} must be >= 0`);
988
- if (normalized > maxMs) throw new Error(`${label} exceeds maximum of ${maxMs}ms`);
989
- return normalized;
990
- }
991
- async function getRestoredPageForTarget(opts) {
992
- const page = await getPageForTargetId(opts);
993
- ensurePageState(page);
994
- restoreRoleRefsForTarget({
995
- cdpUrl: opts.cdpUrl,
996
- targetId: opts.targetId,
997
- page
998
- });
999
- return page;
1000
- }
1001
- function resolveInteractionTimeoutMs(timeoutMs) {
1002
- return Math.max(500, Math.min(6e4, Math.floor(timeoutMs ?? 8e3)));
1003
- }
1004
- async function awaitEvalWithAbort(evalPromise, abortPromise) {
1005
- if (!abortPromise) return await evalPromise;
1006
- try {
1007
- return await Promise.race([evalPromise, abortPromise]);
1008
- } catch (err) {
1009
- evalPromise.catch(() => {});
1010
- throw err;
1011
- }
1012
- }
1013
- async function highlightViaPlaywright(opts) {
1014
- const page = await getRestoredPageForTarget(opts);
1015
- const ref = requireRef(opts.ref);
1016
- try {
1017
- await refLocator(page, ref).highlight();
1018
- } catch (err) {
1019
- throw toAIFriendlyError(err, ref);
1020
- }
1021
- }
1022
- async function clickViaPlaywright(opts) {
1023
- const resolved = requireRefOrSelector(opts.ref, opts.selector);
1024
- const page = await getRestoredPageForTarget(opts);
1025
- const label = resolved.ref ?? resolved.selector;
1026
- const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
1027
- const timeout = resolveInteractionTimeoutMs(opts.timeoutMs);
1028
- try {
1029
- const delayMs = resolveBoundedDelayMs(opts.delayMs, "click delayMs", MAX_CLICK_DELAY_MS);
1030
- if (delayMs > 0) {
1031
- await locator.hover({ timeout });
1032
- await new Promise((resolve) => setTimeout(resolve, delayMs));
1033
- }
1034
- if (opts.doubleClick) await locator.dblclick({
1035
- timeout,
1036
- button: opts.button,
1037
- modifiers: opts.modifiers
1038
- });
1039
- else await locator.click({
1040
- timeout,
1041
- button: opts.button,
1042
- modifiers: opts.modifiers
1043
- });
1044
- } catch (err) {
1045
- throw toAIFriendlyError(err, label);
1046
- }
1047
- }
1048
- async function hoverViaPlaywright(opts) {
1049
- const resolved = requireRefOrSelector(opts.ref, opts.selector);
1050
- const page = await getRestoredPageForTarget(opts);
1051
- const label = resolved.ref ?? resolved.selector;
1052
- const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
1053
- try {
1054
- await locator.hover({ timeout: resolveInteractionTimeoutMs(opts.timeoutMs) });
1055
- } catch (err) {
1056
- throw toAIFriendlyError(err, label);
1057
- }
1058
- }
1059
- async function dragViaPlaywright(opts) {
1060
- const resolvedStart = requireRefOrSelector(opts.startRef, opts.startSelector);
1061
- const resolvedEnd = requireRefOrSelector(opts.endRef, opts.endSelector);
1062
- const page = await getRestoredPageForTarget(opts);
1063
- const startLocator = resolvedStart.ref ? refLocator(page, requireRef(resolvedStart.ref)) : page.locator(resolvedStart.selector);
1064
- const endLocator = resolvedEnd.ref ? refLocator(page, requireRef(resolvedEnd.ref)) : page.locator(resolvedEnd.selector);
1065
- const startLabel = resolvedStart.ref ?? resolvedStart.selector;
1066
- const endLabel = resolvedEnd.ref ?? resolvedEnd.selector;
1067
- try {
1068
- await startLocator.dragTo(endLocator, { timeout: resolveInteractionTimeoutMs(opts.timeoutMs) });
1069
- } catch (err) {
1070
- throw toAIFriendlyError(err, `${startLabel} -> ${endLabel}`);
1071
- }
1072
- }
1073
- async function selectOptionViaPlaywright(opts) {
1074
- const resolved = requireRefOrSelector(opts.ref, opts.selector);
1075
- if (!opts.values?.length) throw new Error("values are required");
1076
- const page = await getRestoredPageForTarget(opts);
1077
- const label = resolved.ref ?? resolved.selector;
1078
- const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
1079
- try {
1080
- await locator.selectOption(opts.values, { timeout: resolveInteractionTimeoutMs(opts.timeoutMs) });
1081
- } catch (err) {
1082
- throw toAIFriendlyError(err, label);
1083
- }
1084
- }
1085
- async function pressKeyViaPlaywright(opts) {
1086
- const key = String(opts.key ?? "").trim();
1087
- if (!key) throw new Error("key is required");
1088
- const page = await getPageForTargetId(opts);
1089
- ensurePageState(page);
1090
- await page.keyboard.press(key, { delay: Math.max(0, Math.floor(opts.delayMs ?? 0)) });
1091
- }
1092
- async function typeViaPlaywright(opts) {
1093
- const resolved = requireRefOrSelector(opts.ref, opts.selector);
1094
- const text = String(opts.text ?? "");
1095
- const page = await getRestoredPageForTarget(opts);
1096
- const label = resolved.ref ?? resolved.selector;
1097
- const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
1098
- const timeout = resolveInteractionTimeoutMs(opts.timeoutMs);
1099
- try {
1100
- if (opts.slowly) {
1101
- await locator.click({ timeout });
1102
- await locator.type(text, {
1103
- timeout,
1104
- delay: 75
1105
- });
1106
- } else await locator.fill(text, { timeout });
1107
- if (opts.submit) await locator.press("Enter", { timeout });
1108
- } catch (err) {
1109
- throw toAIFriendlyError(err, label);
1110
- }
1111
- }
1112
- async function fillFormViaPlaywright(opts) {
1113
- const page = await getRestoredPageForTarget(opts);
1114
- const timeout = resolveInteractionTimeoutMs(opts.timeoutMs);
1115
- for (const field of opts.fields) {
1116
- const ref = field.ref.trim();
1117
- const type = (field.type || "text").trim() || "text";
1118
- const rawValue = field.value;
1119
- const value = typeof rawValue === "string" ? rawValue : typeof rawValue === "number" || typeof rawValue === "boolean" ? String(rawValue) : "";
1120
- if (!ref) continue;
1121
- const locator = refLocator(page, ref);
1122
- if (type === "checkbox" || type === "radio") {
1123
- const checked = rawValue === true || rawValue === 1 || rawValue === "1" || rawValue === "true";
1124
- try {
1125
- await locator.setChecked(checked, { timeout });
1126
- } catch (err) {
1127
- throw toAIFriendlyError(err, ref);
1128
- }
1129
- continue;
1130
- }
1131
- try {
1132
- await locator.fill(value, { timeout });
1133
- } catch (err) {
1134
- throw toAIFriendlyError(err, ref);
1135
- }
1136
- }
1137
- }
1138
- async function evaluateViaPlaywright(opts) {
1139
- const fnText = String(opts.fn ?? "").trim();
1140
- if (!fnText) throw new Error("function is required");
1141
- const page = await getRestoredPageForTarget(opts);
1142
- const outerTimeout = normalizeTimeoutMs(opts.timeoutMs, 2e4);
1143
- let evaluateTimeout = Math.max(1e3, Math.min(12e4, outerTimeout - 500));
1144
- evaluateTimeout = Math.min(evaluateTimeout, outerTimeout);
1145
- const signal = opts.signal;
1146
- let abortListener;
1147
- let abortReject;
1148
- let abortPromise;
1149
- if (signal) {
1150
- abortPromise = new Promise((_, reject) => {
1151
- abortReject = reject;
1152
- });
1153
- abortPromise.catch(() => {});
1154
- }
1155
- if (signal) {
1156
- const disconnect = () => {
1157
- forceDisconnectPlaywrightForTarget({
1158
- cdpUrl: opts.cdpUrl,
1159
- targetId: opts.targetId,
1160
- reason: "evaluate aborted"
1161
- }).catch(() => {});
1162
- };
1163
- if (signal.aborted) {
1164
- disconnect();
1165
- throw signal.reason ?? /* @__PURE__ */ new Error("aborted");
1166
- }
1167
- abortListener = () => {
1168
- disconnect();
1169
- abortReject?.(signal.reason ?? /* @__PURE__ */ new Error("aborted"));
1170
- };
1171
- signal.addEventListener("abort", abortListener, { once: true });
1172
- if (signal.aborted) {
1173
- abortListener();
1174
- throw signal.reason ?? /* @__PURE__ */ new Error("aborted");
1175
- }
1176
- }
1177
- try {
1178
- if (opts.ref) {
1179
- const locator = refLocator(page, opts.ref);
1180
- const elementEvaluator = new Function("el", "args", `
1181
- "use strict";
1182
- var fnBody = args.fnBody, timeoutMs = args.timeoutMs;
1183
- try {
1184
- var candidate = eval("(" + fnBody + ")");
1185
- var result = typeof candidate === "function" ? candidate(el) : candidate;
1186
- if (result && typeof result.then === "function") {
1187
- return Promise.race([
1188
- result,
1189
- new Promise(function(_, reject) {
1190
- setTimeout(function() { reject(new Error("evaluate timed out after " + timeoutMs + "ms")); }, timeoutMs);
1191
- })
1192
- ]);
1193
- }
1194
- return result;
1195
- } catch (err) {
1196
- throw new Error("Invalid evaluate function: " + (err && err.message ? err.message : String(err)));
1197
- }
1198
- `);
1199
- return await awaitEvalWithAbort(locator.evaluate(elementEvaluator, {
1200
- fnBody: fnText,
1201
- timeoutMs: evaluateTimeout
1202
- }), abortPromise);
1203
- }
1204
- const browserEvaluator = new Function("args", `
1205
- "use strict";
1206
- var fnBody = args.fnBody, timeoutMs = args.timeoutMs;
1207
- try {
1208
- var candidate = eval("(" + fnBody + ")");
1209
- var result = typeof candidate === "function" ? candidate() : candidate;
1210
- if (result && typeof result.then === "function") {
1211
- return Promise.race([
1212
- result,
1213
- new Promise(function(_, reject) {
1214
- setTimeout(function() { reject(new Error("evaluate timed out after " + timeoutMs + "ms")); }, timeoutMs);
1215
- })
1216
- ]);
1217
- }
1218
- return result;
1219
- } catch (err) {
1220
- throw new Error("Invalid evaluate function: " + (err && err.message ? err.message : String(err)));
1221
- }
1222
- `);
1223
- return await awaitEvalWithAbort(page.evaluate(browserEvaluator, {
1224
- fnBody: fnText,
1225
- timeoutMs: evaluateTimeout
1226
- }), abortPromise);
1227
- } finally {
1228
- if (signal && abortListener) signal.removeEventListener("abort", abortListener);
1229
- }
1230
- }
1231
- async function scrollIntoViewViaPlaywright(opts) {
1232
- const resolved = requireRefOrSelector(opts.ref, opts.selector);
1233
- const page = await getRestoredPageForTarget(opts);
1234
- const timeout = normalizeTimeoutMs(opts.timeoutMs, 2e4);
1235
- const label = resolved.ref ?? resolved.selector;
1236
- const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
1237
- try {
1238
- await locator.scrollIntoViewIfNeeded({ timeout });
1239
- } catch (err) {
1240
- throw toAIFriendlyError(err, label);
1241
- }
1242
- }
1243
- async function waitForViaPlaywright(opts) {
1244
- const page = await getPageForTargetId(opts);
1245
- ensurePageState(page);
1246
- const timeout = normalizeTimeoutMs(opts.timeoutMs, 2e4);
1247
- if (typeof opts.timeMs === "number" && Number.isFinite(opts.timeMs)) await page.waitForTimeout(resolveBoundedDelayMs(opts.timeMs, "wait timeMs", MAX_WAIT_TIME_MS));
1248
- if (opts.text) await page.getByText(opts.text).first().waitFor({
1249
- state: "visible",
1250
- timeout
1251
- });
1252
- if (opts.textGone) await page.getByText(opts.textGone).first().waitFor({
1253
- state: "hidden",
1254
- timeout
1255
- });
1256
- if (opts.selector) {
1257
- const selector = String(opts.selector).trim();
1258
- if (selector) await page.locator(selector).first().waitFor({
1259
- state: "visible",
1260
- timeout
1261
- });
1262
- }
1263
- if (opts.url) {
1264
- const url = String(opts.url).trim();
1265
- if (url) await page.waitForURL(url, { timeout });
1266
- }
1267
- if (opts.loadState) await page.waitForLoadState(opts.loadState, { timeout });
1268
- if (opts.fn) {
1269
- const fn = String(opts.fn).trim();
1270
- if (fn) await page.waitForFunction(fn, { timeout });
1271
- }
1272
- }
1273
- async function takeScreenshotViaPlaywright(opts) {
1274
- const page = await getPageForTargetId(opts);
1275
- ensurePageState(page);
1276
- restoreRoleRefsForTarget({
1277
- cdpUrl: opts.cdpUrl,
1278
- targetId: opts.targetId,
1279
- page
1280
- });
1281
- const type = opts.type ?? "png";
1282
- if (opts.ref) {
1283
- if (opts.fullPage) throw new Error("fullPage is not supported for element screenshots");
1284
- return { buffer: await refLocator(page, opts.ref).screenshot({ type }) };
1285
- }
1286
- if (opts.element) {
1287
- if (opts.fullPage) throw new Error("fullPage is not supported for element screenshots");
1288
- return { buffer: await page.locator(opts.element).first().screenshot({ type }) };
1289
- }
1290
- return { buffer: await page.screenshot({
1291
- type,
1292
- fullPage: Boolean(opts.fullPage)
1293
- }) };
1294
- }
1295
- async function screenshotWithLabelsViaPlaywright(opts) {
1296
- const page = await getPageForTargetId(opts);
1297
- ensurePageState(page);
1298
- restoreRoleRefsForTarget({
1299
- cdpUrl: opts.cdpUrl,
1300
- targetId: opts.targetId,
1301
- page
1302
- });
1303
- const type = opts.type ?? "png";
1304
- const maxLabels = typeof opts.maxLabels === "number" && Number.isFinite(opts.maxLabels) ? Math.max(1, Math.floor(opts.maxLabels)) : 150;
1305
- const viewport = await page.evaluate(() => ({
1306
- scrollX: window.scrollX || 0,
1307
- scrollY: window.scrollY || 0,
1308
- width: window.innerWidth || 0,
1309
- height: window.innerHeight || 0
1310
- }));
1311
- const refs = Object.keys(opts.refs ?? {});
1312
- const boxes = [];
1313
- let skipped = 0;
1314
- for (const ref of refs) {
1315
- if (boxes.length >= maxLabels) {
1316
- skipped += 1;
1317
- continue;
1318
- }
1319
- try {
1320
- const box = await refLocator(page, ref).boundingBox();
1321
- if (!box) {
1322
- skipped += 1;
1323
- continue;
1324
- }
1325
- const x0 = box.x;
1326
- const y0 = box.y;
1327
- const x1 = box.x + box.width;
1328
- const y1 = box.y + box.height;
1329
- const vx0 = viewport.scrollX;
1330
- const vy0 = viewport.scrollY;
1331
- const vx1 = viewport.scrollX + viewport.width;
1332
- const vy1 = viewport.scrollY + viewport.height;
1333
- if (x1 < vx0 || x0 > vx1 || y1 < vy0 || y0 > vy1) {
1334
- skipped += 1;
1335
- continue;
1336
- }
1337
- boxes.push({
1338
- ref,
1339
- x: x0 - viewport.scrollX,
1340
- y: y0 - viewport.scrollY,
1341
- w: Math.max(1, box.width),
1342
- h: Math.max(1, box.height)
1343
- });
1344
- } catch {
1345
- skipped += 1;
1346
- }
1347
- }
1348
- try {
1349
- if (boxes.length > 0) await page.evaluate((labels) => {
1350
- document.querySelectorAll("[data-moldclaw-labels]").forEach((el) => el.remove());
1351
- const root = document.createElement("div");
1352
- root.setAttribute("data-moldclaw-labels", "1");
1353
- root.style.position = "fixed";
1354
- root.style.left = "0";
1355
- root.style.top = "0";
1356
- root.style.zIndex = "2147483647";
1357
- root.style.pointerEvents = "none";
1358
- root.style.fontFamily = "\"SF Mono\",\"SFMono-Regular\",Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace";
1359
- const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
1360
- for (const label of labels) {
1361
- const box = document.createElement("div");
1362
- box.setAttribute("data-moldclaw-labels", "1");
1363
- box.style.position = "absolute";
1364
- box.style.left = `${label.x}px`;
1365
- box.style.top = `${label.y}px`;
1366
- box.style.width = `${label.w}px`;
1367
- box.style.height = `${label.h}px`;
1368
- box.style.border = "2px solid #ffb020";
1369
- box.style.boxSizing = "border-box";
1370
- const tag = document.createElement("div");
1371
- tag.setAttribute("data-moldclaw-labels", "1");
1372
- tag.textContent = label.ref;
1373
- tag.style.position = "absolute";
1374
- tag.style.left = `${label.x}px`;
1375
- tag.style.top = `${clamp(label.y - 18, 0, 2e4)}px`;
1376
- tag.style.background = "#ffb020";
1377
- tag.style.color = "#1a1a1a";
1378
- tag.style.fontSize = "12px";
1379
- tag.style.lineHeight = "14px";
1380
- tag.style.padding = "1px 4px";
1381
- tag.style.borderRadius = "3px";
1382
- tag.style.boxShadow = "0 1px 2px rgba(0,0,0,0.35)";
1383
- tag.style.whiteSpace = "nowrap";
1384
- root.appendChild(box);
1385
- root.appendChild(tag);
1386
- }
1387
- document.documentElement.appendChild(root);
1388
- }, boxes);
1389
- return {
1390
- buffer: await page.screenshot({ type }),
1391
- labels: boxes.length,
1392
- skipped
1393
- };
1394
- } finally {
1395
- await page.evaluate(() => {
1396
- document.querySelectorAll("[data-moldclaw-labels]").forEach((el) => el.remove());
1397
- }).catch(() => {});
1398
- }
1399
- }
1400
- async function setInputFilesViaPlaywright(opts) {
1401
- const page = await getPageForTargetId(opts);
1402
- ensurePageState(page);
1403
- restoreRoleRefsForTarget({
1404
- cdpUrl: opts.cdpUrl,
1405
- targetId: opts.targetId,
1406
- page
1407
- });
1408
- if (!opts.paths.length) throw new Error("paths are required");
1409
- const inputRef = typeof opts.inputRef === "string" ? opts.inputRef.trim() : "";
1410
- const element = typeof opts.element === "string" ? opts.element.trim() : "";
1411
- if (inputRef && element) throw new Error("inputRef and element are mutually exclusive");
1412
- if (!inputRef && !element) throw new Error("inputRef or element is required");
1413
- const locator = inputRef ? refLocator(page, inputRef) : page.locator(element).first();
1414
- const uploadPathsResult = await resolveStrictExistingPathsWithinRoot({
1415
- rootDir: DEFAULT_UPLOAD_DIR,
1416
- requestedPaths: opts.paths,
1417
- scopeLabel: `uploads directory (${DEFAULT_UPLOAD_DIR})`
1418
- });
1419
- if (!uploadPathsResult.ok) throw new Error(uploadPathsResult.error);
1420
- const resolvedPaths = uploadPathsResult.paths;
1421
- try {
1422
- await locator.setInputFiles(resolvedPaths);
1423
- } catch (err) {
1424
- throw toAIFriendlyError(err, inputRef || element);
1425
- }
1426
- try {
1427
- const handle = await locator.elementHandle();
1428
- if (handle) await handle.evaluate((el) => {
1429
- el.dispatchEvent(new Event("input", { bubbles: true }));
1430
- el.dispatchEvent(new Event("change", { bubbles: true }));
1431
- });
1432
- } catch {}
1433
- }
1434
- const MAX_BATCH_DEPTH = 5;
1435
- async function executeSingleAction(action, cdpUrl, targetId, evaluateEnabled, depth = 0) {
1436
- if (depth > MAX_BATCH_DEPTH) throw new Error(`Batch nesting depth exceeds maximum of ${MAX_BATCH_DEPTH}`);
1437
- const effectiveTargetId = action.targetId ?? targetId;
1438
- switch (action.kind) {
1439
- case "click":
1440
- await clickViaPlaywright({
1441
- cdpUrl,
1442
- targetId: effectiveTargetId,
1443
- ref: action.ref,
1444
- selector: action.selector,
1445
- doubleClick: action.doubleClick,
1446
- button: action.button,
1447
- modifiers: action.modifiers,
1448
- delayMs: action.delayMs,
1449
- timeoutMs: action.timeoutMs
1450
- });
1451
- break;
1452
- case "type":
1453
- await typeViaPlaywright({
1454
- cdpUrl,
1455
- targetId: effectiveTargetId,
1456
- ref: action.ref,
1457
- selector: action.selector,
1458
- text: action.text,
1459
- submit: action.submit,
1460
- slowly: action.slowly,
1461
- timeoutMs: action.timeoutMs
1462
- });
1463
- break;
1464
- case "press":
1465
- await pressKeyViaPlaywright({
1466
- cdpUrl,
1467
- targetId: effectiveTargetId,
1468
- key: action.key,
1469
- delayMs: action.delayMs
1470
- });
1471
- break;
1472
- case "hover":
1473
- await hoverViaPlaywright({
1474
- cdpUrl,
1475
- targetId: effectiveTargetId,
1476
- ref: action.ref,
1477
- selector: action.selector,
1478
- timeoutMs: action.timeoutMs
1479
- });
1480
- break;
1481
- case "scrollIntoView":
1482
- await scrollIntoViewViaPlaywright({
1483
- cdpUrl,
1484
- targetId: effectiveTargetId,
1485
- ref: action.ref,
1486
- selector: action.selector,
1487
- timeoutMs: action.timeoutMs
1488
- });
1489
- break;
1490
- case "drag":
1491
- await dragViaPlaywright({
1492
- cdpUrl,
1493
- targetId: effectiveTargetId,
1494
- startRef: action.startRef,
1495
- startSelector: action.startSelector,
1496
- endRef: action.endRef,
1497
- endSelector: action.endSelector,
1498
- timeoutMs: action.timeoutMs
1499
- });
1500
- break;
1501
- case "select":
1502
- await selectOptionViaPlaywright({
1503
- cdpUrl,
1504
- targetId: effectiveTargetId,
1505
- ref: action.ref,
1506
- selector: action.selector,
1507
- values: action.values,
1508
- timeoutMs: action.timeoutMs
1509
- });
1510
- break;
1511
- case "fill":
1512
- await fillFormViaPlaywright({
1513
- cdpUrl,
1514
- targetId: effectiveTargetId,
1515
- fields: action.fields,
1516
- timeoutMs: action.timeoutMs
1517
- });
1518
- break;
1519
- case "resize":
1520
- await resizeViewportViaPlaywright({
1521
- cdpUrl,
1522
- targetId: effectiveTargetId,
1523
- width: action.width,
1524
- height: action.height
1525
- });
1526
- break;
1527
- case "wait":
1528
- if (action.fn && !evaluateEnabled) throw new Error("wait --fn is disabled by config (browser.evaluateEnabled=false)");
1529
- await waitForViaPlaywright({
1530
- cdpUrl,
1531
- targetId: effectiveTargetId,
1532
- timeMs: action.timeMs,
1533
- text: action.text,
1534
- textGone: action.textGone,
1535
- selector: action.selector,
1536
- url: action.url,
1537
- loadState: action.loadState,
1538
- fn: action.fn,
1539
- timeoutMs: action.timeoutMs
1540
- });
1541
- break;
1542
- case "evaluate":
1543
- if (!evaluateEnabled) throw new Error("act:evaluate is disabled by config (browser.evaluateEnabled=false)");
1544
- await evaluateViaPlaywright({
1545
- cdpUrl,
1546
- targetId: effectiveTargetId,
1547
- fn: action.fn,
1548
- ref: action.ref,
1549
- timeoutMs: action.timeoutMs
1550
- });
1551
- break;
1552
- case "close":
1553
- await closePageViaPlaywright({
1554
- cdpUrl,
1555
- targetId: effectiveTargetId
1556
- });
1557
- break;
1558
- case "batch":
1559
- await batchViaPlaywright({
1560
- cdpUrl,
1561
- targetId: effectiveTargetId,
1562
- actions: action.actions,
1563
- stopOnError: action.stopOnError,
1564
- evaluateEnabled,
1565
- depth: depth + 1
1566
- });
1567
- break;
1568
- default: throw new Error(`Unsupported batch action kind: ${action.kind}`);
1569
- }
1570
- }
1571
- async function batchViaPlaywright(opts) {
1572
- const depth = opts.depth ?? 0;
1573
- if (depth > MAX_BATCH_DEPTH) throw new Error(`Batch nesting depth exceeds maximum of ${MAX_BATCH_DEPTH}`);
1574
- if (opts.actions.length > MAX_BATCH_ACTIONS) throw new Error(`Batch exceeds maximum of ${MAX_BATCH_ACTIONS} actions`);
1575
- const results = [];
1576
- for (const action of opts.actions) try {
1577
- await executeSingleAction(action, opts.cdpUrl, opts.targetId, opts.evaluateEnabled, depth);
1578
- results.push({ ok: true });
1579
- } catch (err) {
1580
- const message = err instanceof Error ? err.message : String(err);
1581
- results.push({
1582
- ok: false,
1583
- error: message
1584
- });
1585
- if (opts.stopOnError !== false) break;
1586
- }
1587
- return { results };
1588
- }
1589
- //#endregion
1590
- //#region src/browser/pw-tools-core.responses.ts
1591
- async function responseBodyViaPlaywright(opts) {
1592
- const pattern = String(opts.url ?? "").trim();
1593
- if (!pattern) throw new Error("url is required");
1594
- const maxChars = typeof opts.maxChars === "number" && Number.isFinite(opts.maxChars) ? Math.max(1, Math.min(5e6, Math.floor(opts.maxChars))) : 2e5;
1595
- const timeout = normalizeTimeoutMs(opts.timeoutMs, 2e4);
1596
- const page = await getPageForTargetId(opts);
1597
- ensurePageState(page);
1598
- const resp = await new Promise((resolve, reject) => {
1599
- let done = false;
1600
- let timer;
1601
- let handler;
1602
- const cleanup = () => {
1603
- if (timer) clearTimeout(timer);
1604
- timer = void 0;
1605
- if (handler) page.off("response", handler);
1606
- };
1607
- handler = (resp) => {
1608
- if (done) return;
1609
- if (!matchBrowserUrlPattern(pattern, resp.url?.() || "")) return;
1610
- done = true;
1611
- cleanup();
1612
- resolve(resp);
1613
- };
1614
- page.on("response", handler);
1615
- timer = setTimeout(() => {
1616
- if (done) return;
1617
- done = true;
1618
- cleanup();
1619
- reject(/* @__PURE__ */ new Error(`Response not found for url pattern "${pattern}". Run '${formatCliCommand("moldclaw browser requests")}' to inspect recent network activity.`));
1620
- }, timeout);
1621
- });
1622
- const url = resp.url?.() || "";
1623
- const status = resp.status?.();
1624
- const headers = resp.headers?.();
1625
- let bodyText = "";
1626
- try {
1627
- if (typeof resp.text === "function") bodyText = await resp.text();
1628
- else if (typeof resp.body === "function") {
1629
- const buf = await resp.body();
1630
- bodyText = new TextDecoder("utf-8").decode(buf);
1631
- }
1632
- } catch (err) {
1633
- throw new Error(`Failed to read response body for "${url}": ${String(err)}`, { cause: err });
1634
- }
1635
- return {
1636
- url,
1637
- status,
1638
- headers,
1639
- body: bodyText.length > maxChars ? bodyText.slice(0, maxChars) : bodyText,
1640
- truncated: bodyText.length > maxChars ? true : void 0
1641
- };
1642
- }
1643
- //#endregion
1644
- //#region src/browser/pw-tools-core.state.ts
1645
- async function setOfflineViaPlaywright(opts) {
1646
- const page = await getPageForTargetId(opts);
1647
- ensurePageState(page);
1648
- await page.context().setOffline(Boolean(opts.offline));
1649
- }
1650
- async function setExtraHTTPHeadersViaPlaywright(opts) {
1651
- const page = await getPageForTargetId(opts);
1652
- ensurePageState(page);
1653
- await page.context().setExtraHTTPHeaders(opts.headers);
1654
- }
1655
- async function setHttpCredentialsViaPlaywright(opts) {
1656
- const page = await getPageForTargetId(opts);
1657
- ensurePageState(page);
1658
- if (opts.clear) {
1659
- await page.context().setHTTPCredentials(null);
1660
- return;
1661
- }
1662
- const username = String(opts.username ?? "");
1663
- const password = String(opts.password ?? "");
1664
- if (!username) throw new Error("username is required (or set clear=true)");
1665
- await page.context().setHTTPCredentials({
1666
- username,
1667
- password
1668
- });
1669
- }
1670
- async function setGeolocationViaPlaywright(opts) {
1671
- const page = await getPageForTargetId(opts);
1672
- ensurePageState(page);
1673
- const context = page.context();
1674
- if (opts.clear) {
1675
- await context.setGeolocation(null);
1676
- await context.clearPermissions().catch(() => {});
1677
- return;
1678
- }
1679
- if (typeof opts.latitude !== "number" || typeof opts.longitude !== "number") throw new Error("latitude and longitude are required (or set clear=true)");
1680
- await context.setGeolocation({
1681
- latitude: opts.latitude,
1682
- longitude: opts.longitude,
1683
- accuracy: typeof opts.accuracy === "number" ? opts.accuracy : void 0
1684
- });
1685
- const origin = opts.origin?.trim() || (() => {
1686
- try {
1687
- return new URL(page.url()).origin;
1688
- } catch {
1689
- return "";
1690
- }
1691
- })();
1692
- if (origin) await context.grantPermissions(["geolocation"], { origin }).catch(() => {});
1693
- }
1694
- async function emulateMediaViaPlaywright(opts) {
1695
- const page = await getPageForTargetId(opts);
1696
- ensurePageState(page);
1697
- await page.emulateMedia({ colorScheme: opts.colorScheme });
1698
- }
1699
- async function setLocaleViaPlaywright(opts) {
1700
- const page = await getPageForTargetId(opts);
1701
- ensurePageState(page);
1702
- const locale = String(opts.locale ?? "").trim();
1703
- if (!locale) throw new Error("locale is required");
1704
- await withPageScopedCdpClient({
1705
- cdpUrl: opts.cdpUrl,
1706
- page,
1707
- targetId: opts.targetId,
1708
- fn: async (send) => {
1709
- try {
1710
- await send("Emulation.setLocaleOverride", { locale });
1711
- } catch (err) {
1712
- if (String(err).includes("Another locale override is already in effect")) return;
1713
- throw err;
1714
- }
1715
- }
1716
- });
1717
- }
1718
- async function setTimezoneViaPlaywright(opts) {
1719
- const page = await getPageForTargetId(opts);
1720
- ensurePageState(page);
1721
- const timezoneId = String(opts.timezoneId ?? "").trim();
1722
- if (!timezoneId) throw new Error("timezoneId is required");
1723
- await withPageScopedCdpClient({
1724
- cdpUrl: opts.cdpUrl,
1725
- page,
1726
- targetId: opts.targetId,
1727
- fn: async (send) => {
1728
- try {
1729
- await send("Emulation.setTimezoneOverride", { timezoneId });
1730
- } catch (err) {
1731
- const msg = String(err);
1732
- if (msg.includes("Timezone override is already in effect")) return;
1733
- if (msg.includes("Invalid timezone")) throw new Error(`Invalid timezone ID: ${timezoneId}`, { cause: err });
1734
- throw err;
1735
- }
1736
- }
1737
- });
1738
- }
1739
- async function setDeviceViaPlaywright(opts) {
1740
- const page = await getPageForTargetId(opts);
1741
- ensurePageState(page);
1742
- const name = String(opts.name ?? "").trim();
1743
- if (!name) throw new Error("device name is required");
1744
- const descriptor = devices[name];
1745
- if (!descriptor) throw new Error(`Unknown device "${name}".`);
1746
- if (descriptor.viewport) await page.setViewportSize({
1747
- width: descriptor.viewport.width,
1748
- height: descriptor.viewport.height
1749
- });
1750
- await withPageScopedCdpClient({
1751
- cdpUrl: opts.cdpUrl,
1752
- page,
1753
- targetId: opts.targetId,
1754
- fn: async (send) => {
1755
- if (descriptor.userAgent || descriptor.locale) await send("Emulation.setUserAgentOverride", {
1756
- userAgent: descriptor.userAgent ?? "",
1757
- acceptLanguage: descriptor.locale ?? void 0
1758
- });
1759
- if (descriptor.viewport) await send("Emulation.setDeviceMetricsOverride", {
1760
- mobile: Boolean(descriptor.isMobile),
1761
- width: descriptor.viewport.width,
1762
- height: descriptor.viewport.height,
1763
- deviceScaleFactor: descriptor.deviceScaleFactor ?? 1,
1764
- screenWidth: descriptor.viewport.width,
1765
- screenHeight: descriptor.viewport.height
1766
- });
1767
- if (descriptor.hasTouch) await send("Emulation.setTouchEmulationEnabled", { enabled: true });
1768
- }
1769
- });
1770
- }
1771
- //#endregion
1772
- //#region src/browser/pw-tools-core.storage.ts
1773
- async function cookiesGetViaPlaywright(opts) {
1774
- const page = await getPageForTargetId(opts);
1775
- ensurePageState(page);
1776
- return { cookies: await page.context().cookies() };
1777
- }
1778
- async function cookiesSetViaPlaywright(opts) {
1779
- const page = await getPageForTargetId(opts);
1780
- ensurePageState(page);
1781
- const cookie = opts.cookie;
1782
- if (!cookie.name || cookie.value === void 0) throw new Error("cookie name and value are required");
1783
- const hasUrl = typeof cookie.url === "string" && cookie.url.trim();
1784
- const hasDomainPath = typeof cookie.domain === "string" && cookie.domain.trim() && typeof cookie.path === "string" && cookie.path.trim();
1785
- if (!hasUrl && !hasDomainPath) throw new Error("cookie requires url, or domain+path");
1786
- await page.context().addCookies([cookie]);
1787
- }
1788
- async function cookiesClearViaPlaywright(opts) {
1789
- const page = await getPageForTargetId(opts);
1790
- ensurePageState(page);
1791
- await page.context().clearCookies();
1792
- }
1793
- async function storageGetViaPlaywright(opts) {
1794
- const page = await getPageForTargetId(opts);
1795
- ensurePageState(page);
1796
- const kind = opts.kind;
1797
- const key = typeof opts.key === "string" ? opts.key : void 0;
1798
- return { values: await page.evaluate(({ kind: kind2, key: key2 }) => {
1799
- const store = kind2 === "session" ? window.sessionStorage : window.localStorage;
1800
- if (key2) {
1801
- const value = store.getItem(key2);
1802
- return value === null ? {} : { [key2]: value };
1803
- }
1804
- const out = {};
1805
- for (let i = 0; i < store.length; i += 1) {
1806
- const k = store.key(i);
1807
- if (!k) continue;
1808
- const v = store.getItem(k);
1809
- if (v !== null) out[k] = v;
1810
- }
1811
- return out;
1812
- }, {
1813
- kind,
1814
- key
1815
- }) ?? {} };
1816
- }
1817
- async function storageSetViaPlaywright(opts) {
1818
- const page = await getPageForTargetId(opts);
1819
- ensurePageState(page);
1820
- const key = String(opts.key ?? "");
1821
- if (!key) throw new Error("key is required");
1822
- await page.evaluate(({ kind, key: k, value }) => {
1823
- (kind === "session" ? window.sessionStorage : window.localStorage).setItem(k, value);
1824
- }, {
1825
- kind: opts.kind,
1826
- key,
1827
- value: String(opts.value ?? "")
1828
- });
1829
- }
1830
- async function storageClearViaPlaywright(opts) {
1831
- const page = await getPageForTargetId(opts);
1832
- ensurePageState(page);
1833
- await page.evaluate(({ kind }) => {
1834
- (kind === "session" ? window.sessionStorage : window.localStorage).clear();
1835
- }, { kind: opts.kind });
1836
- }
1837
- //#endregion
1838
- //#region src/browser/pw-tools-core.trace.ts
1839
- async function traceStartViaPlaywright(opts) {
1840
- const context = (await getPageForTargetId(opts)).context();
1841
- const ctxState = ensureContextState(context);
1842
- if (ctxState.traceActive) throw new Error("Trace already running. Stop the current trace before starting a new one.");
1843
- await context.tracing.start({
1844
- screenshots: opts.screenshots ?? true,
1845
- snapshots: opts.snapshots ?? true,
1846
- sources: opts.sources ?? false
1847
- });
1848
- ctxState.traceActive = true;
1849
- }
1850
- async function traceStopViaPlaywright(opts) {
1851
- const context = (await getPageForTargetId(opts)).context();
1852
- const ctxState = ensureContextState(context);
1853
- if (!ctxState.traceActive) throw new Error("No active trace. Start a trace before stopping it.");
1854
- await writeViaSiblingTempPath({
1855
- rootDir: DEFAULT_TRACE_DIR,
1856
- targetPath: opts.path,
1857
- writeTemp: async (tempPath) => {
1858
- await context.tracing.stop({ path: tempPath });
1859
- }
1860
- });
1861
- ctxState.traceActive = false;
1862
- }
1863
- //#endregion
1864
- //#region src/browser/pw-ai.ts
1865
- markPwAiLoaded();
1866
- //#endregion
1867
- export { armDialogViaPlaywright, armFileUploadViaPlaywright, batchViaPlaywright, clickViaPlaywright, closePageByTargetIdViaPlaywright, closePageViaPlaywright, closePlaywrightBrowserConnection, cookiesClearViaPlaywright, cookiesGetViaPlaywright, cookiesSetViaPlaywright, createPageViaPlaywright, downloadViaPlaywright, dragViaPlaywright, emulateMediaViaPlaywright, ensurePageState, evaluateViaPlaywright, fillFormViaPlaywright, focusPageByTargetIdViaPlaywright, forceDisconnectPlaywrightForTarget, getConsoleMessagesViaPlaywright, getNetworkRequestsViaPlaywright, getPageErrorsViaPlaywright, getPageForTargetId, highlightViaPlaywright, hoverViaPlaywright, listPagesViaPlaywright, navigateViaPlaywright, pdfViaPlaywright, pressKeyViaPlaywright, refLocator, resizeViewportViaPlaywright, responseBodyViaPlaywright, screenshotWithLabelsViaPlaywright, scrollIntoViewViaPlaywright, selectOptionViaPlaywright, setDeviceViaPlaywright, setExtraHTTPHeadersViaPlaywright, setGeolocationViaPlaywright, setHttpCredentialsViaPlaywright, setInputFilesViaPlaywright, setLocaleViaPlaywright, setOfflineViaPlaywright, setTimezoneViaPlaywright, snapshotAiViaPlaywright, snapshotAriaViaPlaywright, snapshotRoleViaPlaywright, storageClearViaPlaywright, storageGetViaPlaywright, storageSetViaPlaywright, takeScreenshotViaPlaywright, traceStartViaPlaywright, traceStopViaPlaywright, typeViaPlaywright, waitForDownloadViaPlaywright, waitForViaPlaywright };