fengming 0.3.3 → 0.3.5

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 (2022) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/dist/abort-CjCDVBbH.js +277 -0
  3. package/dist/abort.runtime-DxJ8129J.js +2 -0
  4. package/dist/abort.runtime.js +1 -1
  5. package/dist/accounts-Cyn0sm_v.js +423 -0
  6. package/dist/accounts-DzcLKcN5.js +2 -0
  7. package/dist/acp/control-plane/manager.js +1 -1
  8. package/dist/acp-spawn-4lfz_3K9.js +1286 -0
  9. package/dist/acp-spawn-BCUjuO6L.js +2 -0
  10. package/dist/acp-stateful-target-driver-Bv99uwEA.js +89 -0
  11. package/dist/action-info-CP-p6RHS.js +75 -0
  12. package/dist/active-runtime-registry-DjKe53a5.js +62 -0
  13. package/dist/active-tool-schema-warnings-p7CqUnu1.js +105 -0
  14. package/dist/active-tool-schema-warnings-pGI92yka.js +2 -0
  15. package/dist/agent-B77yluip.js +1825 -0
  16. package/dist/agent-BooUvZnR.js +2 -0
  17. package/dist/agent-bundle-lsp-runtime-3ieSgTgo.js +389 -0
  18. package/dist/agent-bundle-lsp-runtime-CkJ0XJK7.js +2 -0
  19. package/dist/agent-bundle-mcp-materialize-BH-esGZL.js +124 -0
  20. package/dist/agent-bundle-mcp-tools-DkixTTnL.js +3 -0
  21. package/dist/agent-command-BJKcnQy6.js +1435 -0
  22. package/dist/agent-delivery-CEfe_Zzt.js +117 -0
  23. package/dist/agent-harness-runtime-R_Ae6o9C.js +207 -0
  24. package/dist/agent-kWSaRcQt.js +3 -0
  25. package/dist/agent-model-discovery-C49swEgd.js +238 -0
  26. package/dist/agent-model-discovery-DZbixJQs.js +3 -0
  27. package/dist/agent-runner-utils-BChpi9Ec.js +267 -0
  28. package/dist/agent-runner.runtime-3LOdt215.js +3784 -0
  29. package/dist/agent-runner.runtime.js +1 -1
  30. package/dist/agent-runtime-3jsv8b7Y.js +199 -0
  31. package/dist/agent-runtime-label-uoFI4ovH.js +30 -0
  32. package/dist/agent-runtime-metadata-BhFt6kLt.js +53 -0
  33. package/dist/agent-tool-result-middleware-loader-BxYJNC1i.js +55 -0
  34. package/dist/agent-tools-COLEG7aL.js +2506 -0
  35. package/dist/agent-tools.before-tool-call--rMZI5Rd.js +1274 -0
  36. package/dist/agent-tools.before-tool-call-CbX2sfP4.js +2 -0
  37. package/dist/agent-via-gateway-DfKij3De.js +486 -0
  38. package/dist/agent-wait-dedupe-BAUSJotw.js +180 -0
  39. package/dist/agents/agent-bundle-mcp-materialize.js +1 -1
  40. package/dist/agents/auth-profiles.runtime.js +1 -1
  41. package/dist/agents/compaction-planning.worker.js +1 -1
  42. package/dist/agents/embedded-agent-runner/effective-tool-policy.js +1 -1
  43. package/dist/agents/embedded-agent-runner/tool-split.js +1 -1
  44. package/dist/agents/model-catalog.runtime.js +1 -1
  45. package/dist/agents/model-provider-auth.worker.js +3 -3
  46. package/dist/agents/models-config.runtime.js +1 -1
  47. package/dist/agents-CZSNDJWD.js +632 -0
  48. package/dist/agents.command-shared-DgbjfH23.js +16 -0
  49. package/dist/agents.commands.add-DknGM1oz.js +304 -0
  50. package/dist/agents.commands.bind-DDVI0yDe.js +265 -0
  51. package/dist/agents.commands.delete-Dv4RHEhc.js +128 -0
  52. package/dist/agents.commands.identity-BSZbc1QR.js +143 -0
  53. package/dist/agents.commands.list-CA0OTw59.js +235 -0
  54. package/dist/aliases-EY1GbfwT.js +97 -0
  55. package/dist/api-CY0oKcRz.js +3 -0
  56. package/dist/api-DgjY0gIl.js +6 -0
  57. package/dist/api-VyMyAYze.js +2 -0
  58. package/dist/api-key-rotation-DxPKIdmC.js +167 -0
  59. package/dist/app-registration-BBDxCbFo.js +194 -0
  60. package/dist/apply-DMYy7tc3.js +544 -0
  61. package/dist/apply-Dd0n97MD.js +2 -0
  62. package/dist/apply-bHIT1nMp.js +416 -0
  63. package/dist/apply-g8x7Z83S.js +510 -0
  64. package/dist/apply-nnbx9TaB.js +2 -0
  65. package/dist/approval-native-helpers-CjaYvOaZ.js +398 -0
  66. package/dist/artifacts-B55YR-uA.js +368 -0
  67. package/dist/assistant-hJaOgfKl.js +291 -0
  68. package/dist/attachment-normalize-COsastJx.js +213 -0
  69. package/dist/attempt-execution-fDWDWcWe.js +584 -0
  70. package/dist/attempt-execution.helpers-Cze5xPim.js +969 -0
  71. package/dist/attempt-execution.runtime-B1iCG6LN.js +3 -0
  72. package/dist/attempt-execution.runtime.js +1 -1
  73. package/dist/attempt.prompt-helpers-CkBYHBBo.js +543 -0
  74. package/dist/attempt.tool-run-context-DzfRK5pV.js +1240 -0
  75. package/dist/audio-preflight.runtime-rjWd9uyk.js +7 -0
  76. package/dist/audio-preflight.runtime.js +1 -1
  77. package/dist/audit-DgFtNg3U.js +1108 -0
  78. package/dist/audit-L8EC3WhV.js +477 -0
  79. package/dist/audit.nondeep.runtime-D0sQ6bO2.js +1416 -0
  80. package/dist/audit.nondeep.runtime.js +1 -1
  81. package/dist/audit.runtime-CiG82F31.js +7 -0
  82. package/dist/audit.runtime.js +1 -1
  83. package/dist/auth-CzPdsZVM.js +567 -0
  84. package/dist/auth-choice-BNzS9QBI.js +3 -0
  85. package/dist/auth-choice-Cwr5kgcD.js +110 -0
  86. package/dist/auth-choice-DW9qPpMS.js +400 -0
  87. package/dist/auth-choice.apply.api-providers-C68tOdqj.js +34 -0
  88. package/dist/auth-choice.apply.api-providers-DSRK0gYo.js +2 -0
  89. package/dist/auth-choice.plugin-providers.runtime-BJ9VyO1C.js +11 -0
  90. package/dist/auth-choice.plugin-providers.runtime.js +1 -1
  91. package/dist/auth-health-BanKwsTW.js +219 -0
  92. package/dist/auth-list-Dq8obVno.js +115 -0
  93. package/dist/auth-order-VXqoAroP.js +105 -0
  94. package/dist/auth-profiles-6VFEdgC-.js +73 -0
  95. package/dist/auth-profiles-a0M4JYYg.js +14 -0
  96. package/dist/backend-config-COaTdVnN.js +259 -0
  97. package/dist/bash-tools-BMAquSiM.js +3 -0
  98. package/dist/bash-tools-DLiUXfaS.js +3497 -0
  99. package/dist/binding-routing-Bwvdx_7S.js +113 -0
  100. package/dist/binding-targets-Z_d0mK_1.js +121 -0
  101. package/dist/bootstrap-files-CoCV_zqu.js +202 -0
  102. package/dist/bootstrap-files-_T3VoTrV.js +3 -0
  103. package/dist/bridge-server-BIaNurGa.js +113 -0
  104. package/dist/browser-cli-D4wL8NU9.js +230 -0
  105. package/dist/browser-cli-actions-input-z40PGiYI.js +522 -0
  106. package/dist/browser-cli-actions-observe-C4TeyNke.js +81 -0
  107. package/dist/browser-cli-debug-Dv0gH-c8.js +137 -0
  108. package/dist/browser-cli-inspect-BUXeITYc.js +117 -0
  109. package/dist/browser-cli-manage-qMb3Yw5Y.js +446 -0
  110. package/dist/browser-cli-resize-CZWnGwGz.js +32 -0
  111. package/dist/browser-cli-shared-BpinhvE3.js +69 -0
  112. package/dist/browser-cli-state-CBbKqqgP.js +371 -0
  113. package/dist/browser-cli-uI5GGX51.js +2 -0
  114. package/dist/browser-control-auth-CFPJXdN_.js +2 -0
  115. package/dist/browser-profiles-D4ni3t4J.js +2 -0
  116. package/dist/browser-runtime-Dm5D_PLf.js +389 -0
  117. package/dist/browser-tool.schema-Bek02ox5.js +132 -0
  118. package/dist/btw-command-DdrwvCK4.js +18 -0
  119. package/dist/build-DkEeJ9sO.js +261 -0
  120. package/dist/build-info.json +2 -2
  121. package/dist/bundled/boot-md/handler.js +2 -2
  122. package/dist/bundled/session-memory/handler.js +1 -1
  123. package/dist/bundled-channel-config-schema-BeowdkHi.d.ts +3168 -0
  124. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  125. package/dist/capability-cli-DTRuKZJC.js +1809 -0
  126. package/dist/capability-provider-runtime-Cpp-Jq9g.js +346 -0
  127. package/dist/cdp.helpers-GfQkB-B5.js +637 -0
  128. package/dist/channel-BRehZ4Cg.js +2309 -0
  129. package/dist/channel-actions-hdQKe_se.js +46 -0
  130. package/dist/channel-bootstrap.runtime-BzjlNG_j.js +38 -0
  131. package/dist/channel-bootstrap.runtime-CmNNVl40.js +2 -0
  132. package/dist/channel-bootstrap.runtime.js +1 -1
  133. package/dist/channel-core-BLcWqSk-.js +5 -0
  134. package/dist/channel-inbound-pR1B7HTU.js +121 -0
  135. package/dist/channel-message-W0VurpjH.js +12 -0
  136. package/dist/channel-outbound-DO4HI6E_.js +436 -0
  137. package/dist/channel-plugin-resolution-CLA7S5_A.js +2 -0
  138. package/dist/channel-plugin-resolution-DzwVj01h.js +135 -0
  139. package/dist/channel-resolution-DOPyiG4k.js +46 -0
  140. package/dist/channel-selection-kwoWZDQ3.js +171 -0
  141. package/dist/channel-selection.runtime-LiDliif9.js +2 -0
  142. package/dist/channel-selection.runtime.js +1 -1
  143. package/dist/channel.runtime-DDt3PayH.js +697 -0
  144. package/dist/channel.runtime.js +1 -1
  145. package/dist/channels-CKJd4eUz.js +1004 -0
  146. package/dist/channels-cli-DLAPi8pX.js +331 -0
  147. package/dist/chat-6WsYrS9m.js +3 -0
  148. package/dist/chat-DpsCEXAx.js +2940 -0
  149. package/dist/chrome-BWHc9vYG.js +1517 -0
  150. package/dist/chrome-mcp-BGKgR8A_.js +2 -0
  151. package/dist/chrome-mcp-Bg5D5PDc.js +864 -0
  152. package/dist/claude-live-session-BLCZnv-A.js +2 -0
  153. package/dist/claude-live-session-CGnB64D6.js +1338 -0
  154. package/dist/clawbot-cli-ynXzgp8B.js +9 -0
  155. package/dist/cli/daemon-cli.js +3 -3
  156. package/dist/cli/gateway-lifecycle.runtime.js +4 -4
  157. package/dist/cli/run-main.js +12 -12
  158. package/dist/cli-B4Ttnj0P.js +2 -0
  159. package/dist/cli-BjVgdamH.js +2 -0
  160. package/dist/cli-CNqBrHLU.js +293 -0
  161. package/dist/cli-backends.runtime-DoxtCrow.js +7 -0
  162. package/dist/cli-backends.runtime.js +1 -1
  163. package/dist/cli-compaction-BCuLbs75.js +363 -0
  164. package/dist/cli-mthNIkji.js +141 -0
  165. package/dist/cli-registry-loader-B2sNTdgY.js +2 -0
  166. package/dist/cli-registry-loader-Dz9YFrjw.js +193 -0
  167. package/dist/cli-runner-C9t-9-Io.js +597 -0
  168. package/dist/cli-runner-D21qMGk7.js +2 -0
  169. package/dist/cli-runner.runtime-BNqbJFgu.js +3 -0
  170. package/dist/cli-runner.runtime-Dv50IEvH.js +4 -0
  171. package/dist/cli-runner.runtime.js +1 -1
  172. package/dist/cli-session-jBtClYfT.js +119 -0
  173. package/dist/cli-startup-metadata.json +9 -9
  174. package/dist/cli.runtime-CGBzSGAG.js +1276 -0
  175. package/dist/cli.runtime.js +1 -1
  176. package/dist/codex-native-web-search-B3C-srtm.js +20 -0
  177. package/dist/codex-native-web-search-B7xh2Xcb.js +4 -0
  178. package/dist/codex-native-web-search-core-CrwANQg5.js +106 -0
  179. package/dist/command-auth-Dz_pdczs.js +135 -0
  180. package/dist/command-config-resolution-XCA63Yv8.js +25 -0
  181. package/dist/command-config-resolution-xtKMDTG9.js +2 -0
  182. package/dist/command-config-resolution.runtime-xtKMDTG9.js +2 -0
  183. package/dist/command-config-resolution.runtime.js +1 -1
  184. package/dist/command-execution-startup-CasEqEXh.js +90 -0
  185. package/dist/command-primitives-runtime-DC9gtSI3.js +3 -0
  186. package/dist/command-registry-BQnMdca9.js +9 -0
  187. package/dist/command-registry-core-hx2t1jQP.js +114 -0
  188. package/dist/command-registry-rbKA-L_8.js +4 -0
  189. package/dist/command-secret-gateway-7oveYQCx.js +589 -0
  190. package/dist/command-secret-targets-B7M1Us_C.js +2 -0
  191. package/dist/command-status-builders-DrSoZhiI.js +147 -0
  192. package/dist/command-status.runtime-By0071-y.js +90 -0
  193. package/dist/command-status.runtime.js +1 -1
  194. package/dist/commands/status.summary.runtime.js +3 -3
  195. package/dist/commands-B1MnUj5-.js +161 -0
  196. package/dist/commands-compact.runtime-DELj3JaW.js +10 -0
  197. package/dist/commands-compact.runtime.js +1 -1
  198. package/dist/commands-core.runtime-Zw0grrkC.js +2 -0
  199. package/dist/commands-core.runtime.js +1 -1
  200. package/dist/commands-handlers.runtime-BCl_ZHJZ.js +6327 -0
  201. package/dist/commands-handlers.runtime.js +1 -1
  202. package/dist/commands-models-Uurm-0C3.js +448 -0
  203. package/dist/commands-registry-Bo1AeDcq.js +195 -0
  204. package/dist/commands-registry.runtime-C9DBHyhh.js +4 -0
  205. package/dist/commands-registry.runtime.js +1 -1
  206. package/dist/commands-status-BoAXH-wg.js +16 -0
  207. package/dist/commands-status-CNALMTN9.js +3 -0
  208. package/dist/commands-status.runtime-CNALMTN9.js +3 -0
  209. package/dist/commands-status.runtime.js +1 -1
  210. package/dist/commands-subagents-control.runtime-Dl4IuTzV.js +2 -0
  211. package/dist/commands-subagents-control.runtime.js +1 -1
  212. package/dist/commands-system-prompt-BPzpLmUp.js +2 -0
  213. package/dist/commands-system-prompt-DCOZSNh5.js +161 -0
  214. package/dist/commands.runtime-bfCLM0Sg.js +175 -0
  215. package/dist/commands.runtime.js +1 -1
  216. package/dist/commitments/runtime.js +1 -1
  217. package/dist/common-CoOYhmSg.js +286 -0
  218. package/dist/compact-yqaUOESq.js +1165 -0
  219. package/dist/compact.runtime-Y91AFZVE.js +12 -0
  220. package/dist/compact.runtime.js +1 -1
  221. package/dist/compaction-planning-DVnykwzd.js +202 -0
  222. package/dist/completion-cli-BJjq_g_B.js +393 -0
  223. package/dist/config-CsmSEaNn.js +374 -0
  224. package/dist/config-CtNXZ0iy.js +610 -0
  225. package/dist/config-cli-CNpIVdqp.js +1703 -0
  226. package/dist/config-mutation-B-SErGM0.js +5 -0
  227. package/dist/config-mutations-Bu3ahkX8.js +161 -0
  228. package/dist/config-utils-Bv0Nisds.js +141 -0
  229. package/dist/config-validation-DitvTYD8.js +33 -0
  230. package/dist/configure-CdjbRKTg.js +771 -0
  231. package/dist/configure-Cvi-5ml4.js +3 -0
  232. package/dist/configure.commands-BJii4733.js +1253 -0
  233. package/dist/configure.commands-tJzVFJ0o.js +2 -0
  234. package/dist/context-D1N9oPds.js +2 -0
  235. package/dist/context-XMtJ9b3v.js +248 -0
  236. package/dist/context-engine-host-compat-3QznbSaW.js +280 -0
  237. package/dist/context-engine-host-compat-DquSpnKD.js +2 -0
  238. package/dist/context-engine-lifecycle-Bqdhy9JU.js +627 -0
  239. package/dist/control-auth-CMW_9jmY.js +114 -0
  240. package/dist/control-service-D-r3k91q.js +40 -0
  241. package/dist/control-service-uIPYrp9F.js +3 -0
  242. package/dist/control-ui/assets/activity-DgMhyllD.js +124 -0
  243. package/dist/control-ui/assets/agents-CsRhxO2O.js +1030 -0
  244. package/dist/control-ui/assets/channels-Dq8bzpMg.js +120 -0
  245. package/dist/control-ui/assets/cron-Dk5bqYwg.js +1016 -0
  246. package/dist/control-ui/assets/debug-CNIwFEQO.js +97 -0
  247. package/dist/control-ui/assets/index-CV2NsPlu.js +7214 -0
  248. package/dist/control-ui/assets/instances-DLr0iEvT.js +57 -0
  249. package/dist/control-ui/assets/nodes-D3JEksjl.js +444 -0
  250. package/dist/control-ui/assets/sessions-nbXWGlHZ.js +425 -0
  251. package/dist/control-ui/assets/skills-tBOi8OBq.js +362 -0
  252. package/dist/control-ui/assets/workboard-ClTo7wmK.js +402 -0
  253. package/dist/control-ui/index.html +1 -1
  254. package/dist/control-ui/sw.js +1 -1
  255. package/dist/control-ui-AkRMsk9S.js +750 -0
  256. package/dist/conversation-label-generator-DHtcgSBn.js +72 -0
  257. package/dist/conversation-runtime-BEgHW4ta.js +31 -0
  258. package/dist/core-Bslrvfnp.js +284 -0
  259. package/dist/core-api-BOlUb7G8.js +5 -0
  260. package/dist/core-api-CiBoGa2I.js +2 -0
  261. package/dist/crestodian/crestodian.js +1 -1
  262. package/dist/crestodian/rescue-message.js +1 -1
  263. package/dist/crestodian-mXnyuHx9.js +55 -0
  264. package/dist/cron-PbdpyFrD.js +453 -0
  265. package/dist/daemon-install-C-d4dFvn.js +66 -0
  266. package/dist/daemon-install-auth-profiles-store.runtime-CvE2EVVo.js +2 -0
  267. package/dist/daemon-install-auth-profiles-store.runtime.js +1 -1
  268. package/dist/dashboard-Ey5dnvMI.js +263 -0
  269. package/dist/defaults-CsRAv-qE.js +130 -0
  270. package/dist/defaults-DHZBSNHC.js +3 -0
  271. package/dist/defaults.constants-CR4S_tvw.js +76 -0
  272. package/dist/deliver-BkuuFBlm.js +1399 -0
  273. package/dist/deliver-P4upyes7.js +3 -0
  274. package/dist/deliver-runtime-CjnLI_nC.js +2 -0
  275. package/dist/delivery-outbound.runtime-fcJ-M8qj.js +7 -0
  276. package/dist/delivery-outbound.runtime.js +1 -1
  277. package/dist/delivery-queue-BqgHvNlY.js +863 -0
  278. package/dist/delivery-queue-CfsRscJb.js +2 -0
  279. package/dist/delivery-queue-runtime-D0PKG1Bv.js +16 -0
  280. package/dist/delivery-target.runtime-C5e8d0WH.js +45 -0
  281. package/dist/delivery-target.runtime.js +1 -1
  282. package/dist/delivery.runtime-2Ut8xM3P.js +470 -0
  283. package/dist/delivery.runtime.js +1 -1
  284. package/dist/detached-task-runtime-OOZBqRy-.js +86 -0
  285. package/dist/diagnostics-zf6WQ2h7.js +168 -0
  286. package/dist/dialogue-C8IOya-l.js +37 -0
  287. package/dist/direct-dm-wPF-KfNb.js +81 -0
  288. package/dist/directive-handling.defaults-C-1lmFYo.js +22 -0
  289. package/dist/directive-handling.fast-lane-DENPMtYI.js +70 -0
  290. package/dist/directive-handling.impl-C1p5t3qA.js +2 -0
  291. package/dist/directive-handling.impl-DOo2Sa7C.js +823 -0
  292. package/dist/directive-handling.model-selection-6gC-fr_g.js +122 -0
  293. package/dist/directive-handling.persist.runtime-CuhUd2kW.js +274 -0
  294. package/dist/directive-handling.persist.runtime.js +1 -1
  295. package/dist/directives-BIKSyN8C.js +319 -0
  296. package/dist/directory-cli-DZ0PU0Rv.js +239 -0
  297. package/dist/dispatch-DQLImAqt.js +2057 -0
  298. package/dist/dispatch-acp-DzyX7wsq.js +1102 -0
  299. package/dist/dispatch-acp-manager.runtime-CoAfs4O1.js +3 -0
  300. package/dist/dispatch-acp-manager.runtime.js +1 -1
  301. package/dist/dispatch-acp-media.runtime-7uUP_jr9.js +4 -0
  302. package/dist/dispatch-acp-media.runtime.js +1 -1
  303. package/dist/dispatch-acp-transcript.runtime-BUlmV_h0.js +40 -0
  304. package/dist/dispatch-acp-transcript.runtime.js +1 -1
  305. package/dist/dispatch-acp-tts.runtime-ChBnVkNt.js +3 -0
  306. package/dist/dispatch-acp-tts.runtime.js +1 -1
  307. package/dist/dispatch-acp.runtime-DAexFaBu.js +18 -0
  308. package/dist/dispatch-acp.runtime.js +1 -1
  309. package/dist/dispatcher-D3IQEbf9.js +106 -0
  310. package/dist/doctor-BSqEqfb6.js +760 -0
  311. package/dist/doctor-auth-flat-profiles-BIZ4wsYP.js +2 -0
  312. package/dist/doctor-auth-flat-profiles-DXtD5LfC.js +516 -0
  313. package/dist/doctor-auth-legacy-oauth-DwFbRYTP.js +48 -0
  314. package/dist/doctor-auth-oauth-sidecar-6I3FEJbi.js +2 -0
  315. package/dist/doctor-auth-oauth-sidecar-BSC3rnDM.js +177 -0
  316. package/dist/doctor-auth-tVGsUiM6.js +216 -0
  317. package/dist/doctor-bootstrap-size-B0q6bdkO.js +57 -0
  318. package/dist/doctor-claude-cli-Bn79OuBT.js +150 -0
  319. package/dist/doctor-config-flow-CCwocXpV.js +1819 -0
  320. package/dist/doctor-core-checks-D7-1l8jy.js +666 -0
  321. package/dist/doctor-core-checks-eM8FNi8B.js +2 -0
  322. package/dist/doctor-core-checks.runtime-Dc03aeoU.js +278 -0
  323. package/dist/doctor-core-checks.runtime.js +1 -1
  324. package/dist/doctor-gRYfpEbB.js +6 -0
  325. package/dist/doctor-gateway-daemon-flow-KTnHAdeV.js +349 -0
  326. package/dist/doctor-gateway-services-BByDQtjY.js +465 -0
  327. package/dist/doctor-health-CnoM718z.js +65 -0
  328. package/dist/doctor-health-contributions-flVKMQwr.js +874 -0
  329. package/dist/doctor-lint-BBm6gtBa.js +95 -0
  330. package/dist/doctor-memory-search-DjHVDCGo.js +407 -0
  331. package/dist/doctor-state-integrity-Bgw25cz1.js +1257 -0
  332. package/dist/doctor-tool-result-cap-advice-B8wTpiTO.js +27 -0
  333. package/dist/doctor-workspace-status-DcjeJIpT.js +76 -0
  334. package/dist/dreaming-BE4t8DVf.js +523 -0
  335. package/dist/dreaming-command-DWm1lB-Z.js +101 -0
  336. package/dist/dreaming-narrative-8DM-OMrm.js +721 -0
  337. package/dist/dreaming-narrative-CcFfheQI.js +2 -0
  338. package/dist/dreaming-phases-CqOhhTdZ.js +2 -0
  339. package/dist/dreaming-phases-D9eT6Kk0.js +1162 -0
  340. package/dist/drive-D2M5B7-2.js +899 -0
  341. package/dist/echo-transcript-B-wl5MoX.js +52 -0
  342. package/dist/effective-tool-policy-Cx8mC5aA.js +89 -0
  343. package/dist/embedded-agent-BTvtoOe_.js +4 -0
  344. package/dist/embedded-agent-CGmSKuNM.js +4074 -0
  345. package/dist/embedded-agent-helpers-CboIPx57.js +6 -0
  346. package/dist/embedded-agent-helpers-cw0InMDZ.js +1037 -0
  347. package/dist/embedded-agent.runtime-Bfe4bjyF.js +4 -0
  348. package/dist/embedded-agent.runtime.js +1 -1
  349. package/dist/embedded-backend-D-EshN85.js +744 -0
  350. package/dist/embedded-gateway-stub.runtime-Cx9qs0KV.js +12 -0
  351. package/dist/embedded-gateway-stub.runtime.js +1 -1
  352. package/dist/embedding-provider-runtime-DaXfsUPo.js +86 -0
  353. package/dist/embedding-providers-CdU99clu.js +2 -0
  354. package/dist/embeddings-http-BQnlTr-1.js +222 -0
  355. package/dist/engine-qmd-5jbjGywA.js +708 -0
  356. package/dist/engine-storage-CfAgwoDp.js +203 -0
  357. package/dist/entry.js +1 -1
  358. package/dist/errors-C0AUxo3P.js +2 -0
  359. package/dist/exec-approval-forwarder.runtime-BvR47p5Z.js +4 -0
  360. package/dist/exec-approval-forwarder.runtime.js +1 -1
  361. package/dist/exec-approval-session-target-CCqYgaVa.js +177 -0
  362. package/dist/exec-auto-reviewer-BfJaNkNy.js +2 -0
  363. package/dist/exec-auto-reviewer-Dqx7I88Z.js +241 -0
  364. package/dist/execute.runtime-Qb6Z75sG.js +579 -0
  365. package/dist/execute.runtime.js +1 -1
  366. package/dist/extensionAPI.js +2 -2
  367. package/dist/extensions/active-memory/index.js +3 -3
  368. package/dist/extensions/admin-http-rpc/index.js +1 -1
  369. package/dist/extensions/alibaba/index.js +1 -1
  370. package/dist/extensions/alibaba/video-generation-provider.js +1 -1
  371. package/dist/extensions/baichuan/index.js +1 -1
  372. package/dist/extensions/browser/browser-bridge.js +1 -1
  373. package/dist/extensions/browser/browser-cdp.js +1 -1
  374. package/dist/extensions/browser/browser-config.js +5 -5
  375. package/dist/extensions/browser/browser-control-auth.js +2 -2
  376. package/dist/extensions/browser/browser-doctor.js +3 -3
  377. package/dist/extensions/browser/browser-maintenance.js +1 -1
  378. package/dist/extensions/browser/browser-profiles.js +3 -3
  379. package/dist/extensions/browser/browser-runtime-api.js +14 -14
  380. package/dist/extensions/browser/cli-metadata.js +1 -1
  381. package/dist/extensions/browser/index.js +1 -1
  382. package/dist/extensions/browser/plugin-registration.js +1 -1
  383. package/dist/extensions/browser/register.runtime.js +4 -4
  384. package/dist/extensions/browser/runtime-api.js +16 -16
  385. package/dist/extensions/byteplus/index.js +3 -3
  386. package/dist/extensions/byteplus/video-generation-provider.js +1 -1
  387. package/dist/extensions/canvas/index.js +3 -3
  388. package/dist/extensions/canvas/runtime-api.js +2 -2
  389. package/dist/extensions/deepseek/index.js +1 -1
  390. package/dist/extensions/device-pair/api.js +2 -2
  391. package/dist/extensions/device-pair/pair-command-approve.js +1 -1
  392. package/dist/extensions/device-pair/qr-image.js +2 -2
  393. package/dist/extensions/longcat/index.js +1 -1
  394. package/dist/extensions/memory-core/api.js +3 -3
  395. package/dist/extensions/memory-core/cli-metadata.js +1 -1
  396. package/dist/extensions/memory-core/cli.js +2 -2
  397. package/dist/extensions/memory-core/index.js +11 -11
  398. package/dist/extensions/memory-core/manager-runtime.js +1 -1
  399. package/dist/extensions/memory-core/runtime-api.js +6 -6
  400. package/dist/extensions/minimax/image-generation-provider.js +1 -1
  401. package/dist/extensions/minimax/index.js +7 -7
  402. package/dist/extensions/minimax/media-understanding-provider.js +1 -1
  403. package/dist/extensions/minimax/music-generation-provider.js +1 -1
  404. package/dist/extensions/minimax/oauth.js +1 -1
  405. package/dist/extensions/minimax/oauth.runtime.js +1 -1
  406. package/dist/extensions/minimax/provider-registration.js +1 -1
  407. package/dist/extensions/minimax/speech-provider.js +1 -1
  408. package/dist/extensions/minimax/video-generation-provider.js +1 -1
  409. package/dist/extensions/minimax/web-search-provider.js +1 -1
  410. package/dist/extensions/moonshot/index.js +5 -5
  411. package/dist/extensions/moonshot/media-understanding-provider.js +1 -1
  412. package/dist/extensions/moonshot/web-search-provider.js +1 -1
  413. package/dist/extensions/qianfan/index.js +1 -1
  414. package/dist/extensions/qwen/index.js +5 -5
  415. package/dist/extensions/qwen/media-understanding-provider.js +1 -1
  416. package/dist/extensions/qwen/video-generation-provider.js +1 -1
  417. package/dist/extensions/sensenova/index.js +1 -1
  418. package/dist/extensions/skill-workshop/api.js +2 -2
  419. package/dist/extensions/skill-workshop/index.js +4 -4
  420. package/dist/extensions/stepfun/index.js +2 -2
  421. package/dist/extensions/tavily/index.js +1 -1
  422. package/dist/extensions/tavily/web-search-provider.js +1 -1
  423. package/dist/extensions/tencent/index.js +2 -2
  424. package/dist/extensions/tiangong/index.js +1 -1
  425. package/dist/extensions/volcengine/index.js +3 -3
  426. package/dist/extensions/volcengine/speech-provider.js +1 -1
  427. package/dist/extensions/webhooks/api.js +1 -1
  428. package/dist/extensions/webhooks/index.js +1 -1
  429. package/dist/extensions/weixin/index.js +7 -7
  430. package/dist/extensions/workboard/index.js +2 -2
  431. package/dist/extensions/xiaomi/index.js +4 -4
  432. package/dist/extensions/xiaomi/speech-provider.js +1 -1
  433. package/dist/extensions/xingchen/index.js +1 -1
  434. package/dist/extensions/yi/index.js +1 -1
  435. package/dist/extensions/zai/index.js +4 -4
  436. package/dist/extensions/zai/media-understanding-provider.js +1 -1
  437. package/dist/extensions/zhinao/index.js +1 -1
  438. package/dist/external-cli-auth-selection-CM_aOUJw.js +113 -0
  439. package/dist/extra-params-Bm1eLWN9.js +615 -0
  440. package/dist/fallback-notice-state-v1kyWACv.js +15 -0
  441. package/dist/fallbacks-CDllk2g1.js +31 -0
  442. package/dist/fallbacks-shared-DdMKEmAC.js +116 -0
  443. package/dist/fengming-runtime-DSv30J04.js +33 -0
  444. package/dist/fengming-runtime-config-BE-DquuY.js +2 -0
  445. package/dist/fengming-runtime-memory-BE-DquuY.js +2 -0
  446. package/dist/fengming-runtime-session-BE-DquuY.js +2 -0
  447. package/dist/fengming-tools-DHb-ZeDC.js +12221 -0
  448. package/dist/flows-Cz3y10A9.js +189 -0
  449. package/dist/fs-utils-D05rps7O.js +9 -0
  450. package/dist/gateway-DTi2D7ZS.js +133 -0
  451. package/dist/gateway-cli-DT2fL2fX.js +443 -0
  452. package/dist/gateway-install-token-CJhAycOA.js +136 -0
  453. package/dist/gateway-method-runtime-BuiYTDQk.js +21 -0
  454. package/dist/gateway-runtime-C5_cVlSW.js +23 -0
  455. package/dist/get-reply-Cz-dUrWm.js +5198 -0
  456. package/dist/get-reply-from-config.runtime-BC1HT67i.js +2 -0
  457. package/dist/get-reply-from-config.runtime.js +1 -1
  458. package/dist/github-copilot-token-09lxV3kH.js +2 -0
  459. package/dist/health-CmihbcqN.js +621 -0
  460. package/dist/health-D8L37hBZ.js +111 -0
  461. package/dist/health-DU7I9RrJ.js +3 -0
  462. package/dist/health-state-QZ2E6xGQ.js +106 -0
  463. package/dist/heartbeat-runner-Bz5PMzEI.js +1930 -0
  464. package/dist/heartbeat-runner-DfqqQ_8w.js +5 -0
  465. package/dist/heartbeat-runner.runtime-8BshUhoS.js +3 -0
  466. package/dist/heartbeat-runner.runtime.js +1 -1
  467. package/dist/helpers-Bkq4POdX.js +406 -0
  468. package/dist/hook-helpers-nmDwt3Fa.js +44 -0
  469. package/dist/hooks-9FOcRqfu.js +536 -0
  470. package/dist/hooks-cli-CrQelcwo.js +465 -0
  471. package/dist/http-endpoint-helpers-BD5u6YsT.js +37 -0
  472. package/dist/http-utils-RcKuBJ0I.js +98 -0
  473. package/dist/image-DwNoypK2.js +385 -0
  474. package/dist/image-fallbacks-BUyDnmUX.js +31 -0
  475. package/dist/image-generation-core.auth.runtime-CA8miEMh.js +2 -0
  476. package/dist/image-generation-core.auth.runtime.js +1 -1
  477. package/dist/image-generation-provider-DXMW5EmB.js +152 -0
  478. package/dist/image-runtime-D5QpNNzz.js +9 -0
  479. package/dist/image-tool.helpers-6vGxo1Y0.js +150 -0
  480. package/dist/images-BGWLzQEJ.js +416 -0
  481. package/dist/images-Db4UB3JG.js +2 -0
  482. package/dist/inbound-reply-dispatch-DRF6ZmQg.js +2 -0
  483. package/dist/inbound-reply-dispatch-RAKLqow4.js +147 -0
  484. package/dist/index.js +1 -1
  485. package/dist/infra-runtime-BFrpRc_V.js +32 -0
  486. package/dist/init-sR7bCS9D.js +59 -0
  487. package/dist/install-BzdJbOUx.js +262 -0
  488. package/dist/install.runtime-Zye6pbZ6.js +2 -0
  489. package/dist/internal-DL_vFx8C.js +399 -0
  490. package/dist/isolated-agent-Qif8Llbt.js +2 -0
  491. package/dist/isolated-agent-aqEjxqs-.js +1097 -0
  492. package/dist/kernel-B-i4c2IK.js +979 -0
  493. package/dist/kernel-DYDJ_hLb.js +3 -0
  494. package/dist/kimi-web-search-provider.runtime-95HAkvHY.js +307 -0
  495. package/dist/kimi-web-search-provider.runtime.js +1 -1
  496. package/dist/library-CZVbE5hF.js +45 -0
  497. package/dist/lifecycle-C8M3YLbT.js +2 -0
  498. package/dist/lifecycle-CPDNQnUN.js +570 -0
  499. package/dist/lifecycle-DpuP7n3J.js +355 -0
  500. package/dist/lifecycle.runtime-C8M3YLbT.js +2 -0
  501. package/dist/lifecycle.runtime.js +1 -1
  502. package/dist/link-understanding/apply.runtime.js +3 -3
  503. package/dist/list-B_ALwpPl.js +2 -0
  504. package/dist/list-Bda_GYFy.js +207 -0
  505. package/dist/list.list-command-W9OGfAIU.js +429 -0
  506. package/dist/list.model-row-LV4AaX0H.js +39 -0
  507. package/dist/list.probe-CrZm6BH2.js +451 -0
  508. package/dist/list.probe-Dfdmb8bC.js +2 -0
  509. package/dist/list.provider-catalog-7T1jKk0n.js +211 -0
  510. package/dist/list.provider-catalog-DjGyZVEj.js +2 -0
  511. package/dist/list.registry-load-DkCS8JZQ.js +152 -0
  512. package/dist/list.row-sources-B1vjo_Y9.js +474 -0
  513. package/dist/list.source-plan-C9Sa6zRK.js +81 -0
  514. package/dist/list.status-command-9daSZZDm.js +815 -0
  515. package/dist/live-model-switch-Dy-UFUMS.js +119 -0
  516. package/dist/llm-slug-generator-DEmh5-_1.js +78 -0
  517. package/dist/llm-slug-generator.js +1 -1
  518. package/dist/load-config-CvQpC8k6.js +27 -0
  519. package/dist/load-context-_qSHpZ5S.js +82 -0
  520. package/dist/loader-CntMt07B.js +7008 -0
  521. package/dist/local-dispatch.runtime-BSN_gqNS.js +10 -0
  522. package/dist/local-dispatch.runtime.js +1 -1
  523. package/dist/main-session-restart-recovery-Db7366lt.js +2 -0
  524. package/dist/main-session-restart-recovery-n87NTooQ.js +389 -0
  525. package/dist/managed-image-attachments-BTBBHlKl.js +2 -0
  526. package/dist/managed-image-attachments-C6_V1yX0.js +616 -0
  527. package/dist/manager-CKrWxjV6.js +3737 -0
  528. package/dist/manager-Dvb1FVnx.js +2314 -0
  529. package/dist/mcp/plugin-tools-serve.js +2 -2
  530. package/dist/mcp-http-CSoGXOa_.js +583 -0
  531. package/dist/mcp-http-D4ieDB3W.js +2 -0
  532. package/dist/media-runtime-GeQTQkkK.js +391 -0
  533. package/dist/media-services-CWbIUZDe.js +416 -0
  534. package/dist/media-understanding/apply.runtime.js +1 -1
  535. package/dist/media-understanding-DXc2BD2L.js +87 -0
  536. package/dist/media-understanding-provider-BkdUiVWU.js +70 -0
  537. package/dist/media-understanding-provider-BlgmLViW.js +13 -0
  538. package/dist/media-understanding-provider-C9P2VjkC.js +29 -0
  539. package/dist/media-understanding-provider-CJlbgAvl.js +69 -0
  540. package/dist/memory-CnC2jM1l.js +437 -0
  541. package/dist/memory-core-host-engine-embeddings-Dy9vN-Ce.js +667 -0
  542. package/dist/memory-core-host-engine-foundation-C-pGGQnm.js +15 -0
  543. package/dist/memory-core-host-engine-qmd-DLJDON9w.js +2 -0
  544. package/dist/memory-core-host-engine-storage-Bzf-C8XE.js +2 -0
  545. package/dist/memory-core-host-runtime-cli-_LWA6G3x.js +10 -0
  546. package/dist/memory-core-host-runtime-core-CromkNBr.js +12 -0
  547. package/dist/memory-core-host-runtime-files-DpbviC1b.js +4 -0
  548. package/dist/memory-embedding-provider-runtime-CaVVaYC5.js +36 -0
  549. package/dist/memory-host-core-B5dWHwBF.js +78 -0
  550. package/dist/memory-host-search.runtime-DqlCFac1.js +2 -0
  551. package/dist/memory-host-search.runtime.js +1 -1
  552. package/dist/memory-runtime-BCeeWb1G.js +2 -0
  553. package/dist/memory-runtime-pR9KGin0.js +57 -0
  554. package/dist/memory-search-CpDEEY2Q.js +235 -0
  555. package/dist/message-BeGCG-D8.js +284 -0
  556. package/dist/message-YGMOyqP5.js +2 -0
  557. package/dist/message-action-runner-ByMT3_eb.js +1922 -0
  558. package/dist/message-action-runner-VXmKO_W7.js +2 -0
  559. package/dist/message-handler-MZ0DMbCx.js +1806 -0
  560. package/dist/metadata-registry-loader-BH9D1UOx.js +2 -0
  561. package/dist/metadata-registry-loader-BK1cHCas.js +22 -0
  562. package/dist/migrate-BA6w0hd3.js +2 -0
  563. package/dist/migrate-BGuQC-1W.js +458 -0
  564. package/dist/migration-provider-runtime-BBdDegWG.js +2 -0
  565. package/dist/migration-provider-runtime-C5WUjrQz.js +68 -0
  566. package/dist/minimax-web-search-provider.runtime-suVFk3Zx.js +148 -0
  567. package/dist/minimax-web-search-provider.runtime.js +1 -1
  568. package/dist/model-BJZXR9dq.js +1302 -0
  569. package/dist/model-BL7xlN5h.js +2 -0
  570. package/dist/model-auth-C-6dYVob.js +6 -0
  571. package/dist/model-auth-DJz7R41W.js +705 -0
  572. package/dist/model-auth-label-DKNXktIu.js +67 -0
  573. package/dist/model-catalog-BjiK5rtT.js +3 -0
  574. package/dist/model-catalog-DM1CTjkW.js +434 -0
  575. package/dist/model-catalog-visibility-DEJZG0In.js +76 -0
  576. package/dist/model-config.helpers-BKcUeE_P.js +95 -0
  577. package/dist/model-context-tokens-5y_PQELY.js +572 -0
  578. package/dist/model-fallback-BDdBR053.js +1288 -0
  579. package/dist/model-fallback-auth.runtime-pcWfkIUF.js +5 -0
  580. package/dist/model-fallback-auth.runtime.js +1 -1
  581. package/dist/model-picker-Bpvp4_N4.js +1135 -0
  582. package/dist/model-picker-DWPPtq6d.js +3 -0
  583. package/dist/model-picker-visibility-BtdqVF80.js +22 -0
  584. package/dist/model-picker.runtime-CYlqts2z.js +48 -0
  585. package/dist/model-picker.runtime.js +1 -1
  586. package/dist/model-pricing-cache-BmmncDqL.js +856 -0
  587. package/dist/model-pricing-cache-CEwRyWw2.js +3 -0
  588. package/dist/model-pricing-cache-state-B8Aspp85.js +83 -0
  589. package/dist/model-provider-auth-B3KXoKkE.js +2 -0
  590. package/dist/model-provider-auth-Bo_8T7of.js +375 -0
  591. package/dist/model-runtime-aliases-Br-ZlhrL.js +133 -0
  592. package/dist/model-selection-D5-ERakL.js +254 -0
  593. package/dist/model-selection-DrzgktRu.js +7 -0
  594. package/dist/model-selection-ibwsPgIw.js +352 -0
  595. package/dist/model-selection.runtime-BRkOZejt.js +7 -0
  596. package/dist/model-selection.runtime.js +1 -1
  597. package/dist/models-RPAH3ZBn.js +57 -0
  598. package/dist/models-auth-status-Cwu9OXU8.js +280 -0
  599. package/dist/models-cli-CrYkSUoa.js +257 -0
  600. package/dist/models-config-Ayzj9gDz.js +1189 -0
  601. package/dist/models-config-BFcjB7nN.js +2 -0
  602. package/dist/models-config.providers.secrets-CCRUW7gL.js +2 -0
  603. package/dist/models-config.providers.secrets-DdX_XSRo.js +382 -0
  604. package/dist/models-http-jLFnelH7.js +88 -0
  605. package/dist/monitor-CqWICrjO.js +60 -0
  606. package/dist/monitor-DwccYPfp.js +1024 -0
  607. package/dist/monitor.account-e9EVttpP.js +5382 -0
  608. package/dist/music-generation-provider-Dfc--R-x.js +308 -0
  609. package/dist/native-hook-relay-Cioqiqv8.js +1378 -0
  610. package/dist/native-hook-relay-DRwJIspI.js +19 -0
  611. package/dist/node-cli-CrG3LH9J.js +2806 -0
  612. package/dist/node-command-policy-CkBTEmhl.js +295 -0
  613. package/dist/nodes-BxrWFA09.js +1483 -0
  614. package/dist/nodes-DFPTGZjc.js +3 -0
  615. package/dist/nodes-cli-Czwyt6r1.js +960 -0
  616. package/dist/nodes-pending-B_4QHyB2.js +211 -0
  617. package/dist/nodes-utils-c4k31OaG.js +85 -0
  618. package/dist/oauth-BXncC0JP.js +852 -0
  619. package/dist/oauth-Ba1O2vqP.js +207 -0
  620. package/dist/oauth-CGQkfxbJ.js +746 -0
  621. package/dist/onboard-I5tQlVm6.js +768 -0
  622. package/dist/onboard-channels-BleKfB1D.js +2 -0
  623. package/dist/onboard-channels-jVaUjGYX.js +1534 -0
  624. package/dist/onboard-custom-BR_5oqUr.js +3 -0
  625. package/dist/onboard-custom-Ss0DThuP.js +280 -0
  626. package/dist/onboard-custom-config-B-knjQm7.js +422 -0
  627. package/dist/onboard-search-BsIztGYF.js +412 -0
  628. package/dist/openai-compat-errors-UkLkk8Q9.js +136 -0
  629. package/dist/openai-http-mTQB44gu.js +836 -0
  630. package/dist/openai-transport-stream-CZSs3SIi.js +3427 -0
  631. package/dist/openresponses-http-BA1Shmj-.js +1175 -0
  632. package/dist/operations-DhgPih1F.js +805 -0
  633. package/dist/order-CaXafMPG.js +218 -0
  634. package/dist/outbound-attachment-BAp7DXDc.js +19 -0
  635. package/dist/param-readers-De-m2SoB.js +2 -0
  636. package/dist/payloads-Dg9aAEOC.js +256 -0
  637. package/dist/persistent-bindings.lifecycle-BkLOz501.js +2 -0
  638. package/dist/persistent-bindings.lifecycle-e2MLbBCo.js +85 -0
  639. package/dist/plugin-enabled-CGSENjXc.js +232 -0
  640. package/dist/plugin-install-BI9_bsVT.js +118 -0
  641. package/dist/plugin-install-an4V2iXO.js +2 -0
  642. package/dist/plugin-install-config-policy-C66Nss3D.js +169 -0
  643. package/dist/plugin-registration-DMerQktl.js +97 -0
  644. package/dist/plugin-registry-BZfdCw65.js +3 -0
  645. package/dist/plugin-registry-I1fegSdK.js +2 -0
  646. package/dist/plugin-runtime-B3XMLJka.js +102 -0
  647. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  648. package/dist/plugin-sdk/acp-binding-runtime.js +1 -1
  649. package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
  650. package/dist/plugin-sdk/acp-runtime.js +2 -2
  651. package/dist/plugin-sdk/agent-config-primitives.d.ts +1 -1
  652. package/dist/plugin-sdk/agent-harness-runtime.js +16 -16
  653. package/dist/plugin-sdk/agent-harness-task-runtime.js +4 -4
  654. package/dist/plugin-sdk/agent-harness.js +17 -17
  655. package/dist/plugin-sdk/agent-runtime.js +17 -17
  656. package/dist/plugin-sdk/agent-sessions.js +1 -1
  657. package/dist/plugin-sdk/approval-native-runtime.js +2 -2
  658. package/dist/plugin-sdk/approval-reaction-runtime.js +1 -1
  659. package/dist/plugin-sdk/approval-runtime.js +2 -2
  660. package/dist/plugin-sdk/bundled-channel-config-schema-BsOWCrJT.d.ts +3169 -0
  661. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +3 -3
  662. package/dist/plugin-sdk/channel-actions.js +2 -2
  663. package/dist/plugin-sdk/channel-config-primitives.d.ts +2 -2
  664. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +3 -3
  665. package/dist/plugin-sdk/channel-config-schema.d.ts +2 -2
  666. package/dist/plugin-sdk/channel-core.d.ts +1 -1
  667. package/dist/plugin-sdk/channel-core.js +2 -2
  668. package/dist/plugin-sdk/channel-envelope.js +1 -1
  669. package/dist/plugin-sdk/channel-inbound-roots.js +1 -1
  670. package/dist/plugin-sdk/channel-inbound.js +4 -4
  671. package/dist/plugin-sdk/channel-location.js +1 -1
  672. package/dist/plugin-sdk/channel-message-runtime.js +5 -5
  673. package/dist/plugin-sdk/channel-message.js +5 -5
  674. package/dist/plugin-sdk/channel-outbound.js +2 -2
  675. package/dist/plugin-sdk/channel-plugin-common.d.ts +1 -1
  676. package/dist/plugin-sdk/channel-reply-options-runtime.js +1 -1
  677. package/dist/plugin-sdk/command-auth-native.js +2 -2
  678. package/dist/plugin-sdk/command-auth.js +4 -4
  679. package/dist/plugin-sdk/command-primitives-runtime.js +2 -2
  680. package/dist/plugin-sdk/command-status-runtime.js +1 -1
  681. package/dist/plugin-sdk/command-status.js +1 -1
  682. package/dist/plugin-sdk/compat.d.ts +2 -2
  683. package/dist/plugin-sdk/compat.js +2 -2
  684. package/dist/plugin-sdk/config-mutation.js +2 -2
  685. package/dist/plugin-sdk/config-runtime.js +1 -1
  686. package/dist/plugin-sdk/config-schema-DUddICQM.d.ts +33 -0
  687. package/dist/plugin-sdk/conversation-binding-runtime.js +1 -1
  688. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  689. package/dist/plugin-sdk/core.d.ts +1 -1
  690. package/dist/plugin-sdk/core.js +3 -3
  691. package/dist/plugin-sdk/delivery-queue-runtime.js +1 -1
  692. package/dist/plugin-sdk/direct-dm.js +1 -1
  693. package/dist/plugin-sdk/discord.d.ts +2 -2
  694. package/dist/plugin-sdk/embedding-providers.js +2 -2
  695. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  696. package/dist/plugin-sdk/gateway-runtime.js +2 -2
  697. package/dist/plugin-sdk/health.js +1 -1
  698. package/dist/plugin-sdk/image-generation-core.js +3 -3
  699. package/dist/plugin-sdk/image-generation-runtime.js +1 -1
  700. package/dist/plugin-sdk/image-generation.js +2 -2
  701. package/dist/plugin-sdk/inbound-reply-dispatch.js +3 -3
  702. package/dist/plugin-sdk/index.js +1 -1
  703. package/dist/plugin-sdk/infra-runtime.js +3 -3
  704. package/dist/plugin-sdk/mattermost.js +1 -1
  705. package/dist/plugin-sdk/media-generation-runtime-shared.js +1 -1
  706. package/dist/plugin-sdk/media-generation-runtime.js +1 -1
  707. package/dist/plugin-sdk/media-runtime.js +7 -7
  708. package/dist/plugin-sdk/media-understanding-runtime.js +1 -1
  709. package/dist/plugin-sdk/media-understanding.js +2 -2
  710. package/dist/plugin-sdk/memory-core-host-engine-embeddings.js +4 -4
  711. package/dist/plugin-sdk/memory-core-host-engine-foundation.js +2 -2
  712. package/dist/plugin-sdk/memory-core-host-engine-qmd.js +2 -2
  713. package/dist/plugin-sdk/memory-core-host-engine-storage.js +6 -6
  714. package/dist/plugin-sdk/memory-core-host-runtime-cli.js +2 -2
  715. package/dist/plugin-sdk/memory-core-host-runtime-core.js +3 -3
  716. package/dist/plugin-sdk/memory-core-host-runtime-files.js +4 -4
  717. package/dist/plugin-sdk/memory-core.js +3 -3
  718. package/dist/plugin-sdk/memory-host-core.js +3 -3
  719. package/dist/plugin-sdk/memory-host-files.js +4 -4
  720. package/dist/plugin-sdk/memory-host-search.js +1 -1
  721. package/dist/plugin-sdk/models-provider-runtime.js +1 -1
  722. package/dist/plugin-sdk/music-generation-core.js +1 -1
  723. package/dist/plugin-sdk/native-command-registry.js +1 -1
  724. package/dist/plugin-sdk/outbound-media.js +2 -2
  725. package/dist/plugin-sdk/outbound-runtime.js +3 -3
  726. package/dist/plugin-sdk/param-readers.js +2 -2
  727. package/dist/plugin-sdk/plugin-runtime.js +2 -2
  728. package/dist/plugin-sdk/provider-auth-api-key.js +4 -4
  729. package/dist/plugin-sdk/provider-auth-login.js +1 -1
  730. package/dist/plugin-sdk/provider-auth-runtime.js +2 -2
  731. package/dist/plugin-sdk/provider-auth.js +6 -6
  732. package/dist/plugin-sdk/provider-catalog-runtime.js +2 -2
  733. package/dist/plugin-sdk/provider-entry.js +1 -1
  734. package/dist/plugin-sdk/provider-setup.js +1 -1
  735. package/dist/plugin-sdk/provider-stream-family.js +3 -3
  736. package/dist/plugin-sdk/provider-stream.js +2 -2
  737. package/dist/plugin-sdk/provider-transport-runtime.js +1 -1
  738. package/dist/plugin-sdk/provider-web-fetch.js +2 -2
  739. package/dist/plugin-sdk/provider-web-search.js +4 -4
  740. package/dist/plugin-sdk/realtime-bootstrap-context.js +2 -2
  741. package/dist/plugin-sdk/realtime-transcription.js +1 -1
  742. package/dist/plugin-sdk/realtime-voice.js +2 -2
  743. package/dist/plugin-sdk/reply-dispatch-runtime.js +1 -1
  744. package/dist/plugin-sdk/reply-runtime.js +6 -6
  745. package/dist/plugin-sdk/runtime-secret-resolution.js +2 -2
  746. package/dist/plugin-sdk/runtime.js +3 -3
  747. package/dist/plugin-sdk/self-hosted-provider-setup.js +1 -1
  748. package/dist/plugin-sdk/simple-completion-runtime.js +1 -1
  749. package/dist/plugin-sdk/speech-core.js +2 -2
  750. package/dist/plugin-sdk/speech.js +1 -1
  751. package/dist/plugin-sdk/tool-plugin.js +1 -1
  752. package/dist/plugin-sdk/transcripts.js +1 -1
  753. package/dist/plugin-sdk/tts-runtime.d.ts +1 -1
  754. package/dist/plugin-sdk/tts-runtime.js +1 -1
  755. package/dist/plugin-sdk/video-generation-core.js +2 -2
  756. package/dist/plugin-sdk/video-generation-runtime.js +1 -1
  757. package/dist/plugin-sdk/web-media.js +3 -3
  758. package/dist/plugin-sdk/zalouser.js +1 -1
  759. package/dist/plugin-sdk/zod-schema.core-B4_b2R5K.d.ts +166 -0
  760. package/dist/plugin-service-2XF6Lu_a.js +1249 -0
  761. package/dist/plugins/build-smoke-entry.js +2 -2
  762. package/dist/plugins/loader.js +1 -1
  763. package/dist/plugins/provider-discovery.runtime.js +1 -1
  764. package/dist/plugins/provider-runtime.runtime.js +1 -1
  765. package/dist/plugins/runtime/index.js +21 -21
  766. package/dist/plugins/tools.js +1 -1
  767. package/dist/plugins-authoring-command-CCX6tJwd.js +304 -0
  768. package/dist/plugins-cli-HX8nTV2h.js +63 -0
  769. package/dist/plugins-cli.runtime-BYn4VsLP.js +339 -0
  770. package/dist/plugins-cli.runtime.js +1 -1
  771. package/dist/plugins-command-helpers-ByuW-yNj.js +2 -0
  772. package/dist/plugins-command-helpers-DaaxGnCD.js +164 -0
  773. package/dist/plugins-inspect-command-C9NDk23X.js +248 -0
  774. package/dist/plugins-install-command-B0NfUxeA.js +993 -0
  775. package/dist/plugins-install-command-BmuScfLI.js +2 -0
  776. package/dist/plugins-install-persist-CfwO876P.js +252 -0
  777. package/dist/plugins-list-command-Bx8X908n.js +184 -0
  778. package/dist/plugins-uninstall-command-p6h44-Ft.js +118 -0
  779. package/dist/postinstall-inventory.json +862 -862
  780. package/dist/prepare.runtime-8DdQ4k9k.js +798 -0
  781. package/dist/prepare.runtime.js +1 -1
  782. package/dist/presentation-card-DeAf3jYW.js +164 -0
  783. package/dist/preview-warnings-BF7nlTo8.js +618 -0
  784. package/dist/profiles-DUhMLnqX.js +194 -0
  785. package/dist/program-C7f_U7fr.js +131 -0
  786. package/dist/provider-adapters-CWLwE9KS.js +104 -0
  787. package/dist/provider-api-key-auth-CshQbUPZ.js +117 -0
  788. package/dist/provider-api-key-auth.runtime-B64jPCKn.js +14 -0
  789. package/dist/provider-api-key-auth.runtime.js +1 -1
  790. package/dist/provider-auth-D-I3YLSn.js +281 -0
  791. package/dist/provider-auth-api-key-Bub0Rjak.js +5 -0
  792. package/dist/provider-auth-choice-DpNAEScm.js +311 -0
  793. package/dist/provider-auth-choice-helpers-Bof937LW.js +210 -0
  794. package/dist/provider-auth-choice.runtime-B3spikLY.js +18 -0
  795. package/dist/provider-auth-choice.runtime-vVgz7FKq.js +2 -0
  796. package/dist/provider-auth-choice.runtime.js +1 -1
  797. package/dist/provider-auth-guidance-DcCL0Q2U.js +2 -0
  798. package/dist/provider-auth-guidance-rWRMN4Jn.js +34 -0
  799. package/dist/provider-auth-helpers-Cp8L-Xha.js +177 -0
  800. package/dist/provider-auth-login.runtime-BJUzc4iH.js +156 -0
  801. package/dist/provider-auth-login.runtime.js +1 -1
  802. package/dist/provider-auth-runtime-DmcWtzbb.js +186 -0
  803. package/dist/provider-discovery-JyAJi97k.js +95 -0
  804. package/dist/provider-discovery.runtime-D_0WTYr8.js +290 -0
  805. package/dist/provider-discovery.runtime.js +1 -1
  806. package/dist/provider-dispatcher-C8Jt94Xl.js +22 -0
  807. package/dist/provider-dispatcher.runtime.js +1 -1
  808. package/dist/provider-entry-By0ggZuI.js +134 -0
  809. package/dist/provider-hook-runtime-B8AUbQxf.js +255 -0
  810. package/dist/provider-openai-codex-oauth-C9Mmnt7d.js +2 -0
  811. package/dist/provider-openai-codex-oauth-CH5Jg1vk.js +44 -0
  812. package/dist/provider-registration-C1zvaHQP.js +235 -0
  813. package/dist/provider-registry-B9diJyLv.js +31 -0
  814. package/dist/provider-registry-BXSxmPGA.js +61 -0
  815. package/dist/provider-registry-CoE-sxbq.js +61 -0
  816. package/dist/provider-registry-DLth_GdI.js +61 -0
  817. package/dist/provider-registry-J4LRd5Rg.js +36 -0
  818. package/dist/provider-runtime-B4cw16pt.js +3 -0
  819. package/dist/provider-runtime-DNNbfwOK.js +386 -0
  820. package/dist/provider-runtime.runtime-98mAe_ni.js +26 -0
  821. package/dist/provider-runtime.runtime.js +1 -1
  822. package/dist/provider-self-hosted-setup-Dysv2Kwt.js +373 -0
  823. package/dist/provider-stream-BLaC8bqO.js +1084 -0
  824. package/dist/provider-stream-Caa5YOx2.js +313 -0
  825. package/dist/provider-stream-family-CvvfxLyP.js +2 -0
  826. package/dist/provider-usage-CVNosTP3.js +71 -0
  827. package/dist/provider-usage-D2NudXbO.js +4 -0
  828. package/dist/provider-usage.load-DG6R3lkG.js +357 -0
  829. package/dist/provider-web-search-DmgTaxRU.js +58 -0
  830. package/dist/provider-wizard-Cw-5H3tX.js +125 -0
  831. package/dist/providers.runtime-DF0T9lFz.js +240 -0
  832. package/dist/providers.runtime-oM9Vn1wr.js +2 -0
  833. package/dist/providers.runtime.js +1 -1
  834. package/dist/proxy-BxGnVyJu.js +662 -0
  835. package/dist/public-artifacts-BMP9hZfh.js +7 -0
  836. package/dist/pw-ai-CD52qfYo.js +3064 -0
  837. package/dist/qmd-manager-BYbvU4YC.js +2040 -0
  838. package/dist/qr-cli-Btz2ZdO3.js +2 -0
  839. package/dist/qr-cli-eyTRwMm2.js +371 -0
  840. package/dist/qr-image-BCwiO6tL.js +2 -0
  841. package/dist/queue-CJRoTOBi.js +923 -0
  842. package/dist/read-file-ogB-HjbK.js +183 -0
  843. package/dist/register-service-commands-D_gQ3b6_.js +77 -0
  844. package/dist/register.agent-DXQLn-r0.js +152 -0
  845. package/dist/register.configure-FavQPGce.js +16 -0
  846. package/dist/register.crestodian-Cbfmnl6h.js +24 -0
  847. package/dist/register.maintenance-B8xODEMU.js +85 -0
  848. package/dist/register.message-B8PYgZ-j.js +404 -0
  849. package/dist/register.migrate-CieoN8zZ.js +106 -0
  850. package/dist/register.onboard-BqWDIDKH.js +115 -0
  851. package/dist/register.setup-CgeTBW4T.js +40 -0
  852. package/dist/register.status-health-sessions-C99aHa5h.js +293 -0
  853. package/dist/register.subclis-79SvyMFt.js +31 -0
  854. package/dist/register.subclis-CXrO8_TO.js +3 -0
  855. package/dist/register.subclis-core-GoXV1yMG.js +273 -0
  856. package/dist/rem-harness-laL5luQa.js +649 -0
  857. package/dist/repair-sequencing-DGY2mBg6.js +652 -0
  858. package/dist/reply-media-paths.runtime-BeWVPkgy.js +2 -0
  859. package/dist/reply-media-paths.runtime-rzAV_Kee.js +154 -0
  860. package/dist/reply-media-paths.runtime.js +1 -1
  861. package/dist/reply-payloads-D_JHMviC.js +79 -0
  862. package/dist/reply-payloads-dedupe-B9GGGaL-.js +176 -0
  863. package/dist/reply-payloads-dedupe.runtime--C3jHs9y.js +2 -0
  864. package/dist/reply-payloads-dedupe.runtime.js +1 -1
  865. package/dist/reply-timing-tracker-DPjlETUb.js +205 -0
  866. package/dist/reply-turn-admission-DdfIwcMK.js +2056 -0
  867. package/dist/reply.runtime-BC1HT67i.js +2 -0
  868. package/dist/reply.runtime.js +1 -1
  869. package/dist/reset-preserved-selection-Czd80hug.js +45 -0
  870. package/dist/resolve-COJFlAZT.js +106 -0
  871. package/dist/restart-B9GMMIZt.js +121 -0
  872. package/dist/result-fallback-classifier-By0Z6b8r.js +98 -0
  873. package/dist/root-help-Bp0kGaUZ.js +43 -0
  874. package/dist/route-CgG9Z7OI.js +475 -0
  875. package/dist/route-reply-D9_9oRg1.js +174 -0
  876. package/dist/route-reply.runtime-BwNl3h2m.js +2 -0
  877. package/dist/route-reply.runtime.js +1 -1
  878. package/dist/routes-Cz2NHUV4.js +2 -0
  879. package/dist/routes-DMo6Eacc.js +3701 -0
  880. package/dist/run-SFRSThMI.js +1162 -0
  881. package/dist/run-auth-profile.runtime-BxLM8m_2.js +2 -0
  882. package/dist/run-auth-profile.runtime.js +1 -1
  883. package/dist/run-command-Cd5iN7eN.js +2 -0
  884. package/dist/run-command-ah46O06U.js +23 -0
  885. package/dist/run-context-DGCQJldA.js +66 -0
  886. package/dist/run-context.runtime-CSBHDAd5.js +2 -0
  887. package/dist/run-context.runtime.js +1 -1
  888. package/dist/run-delivery.runtime-C9xoiZ3h.js +762 -0
  889. package/dist/run-delivery.runtime.js +1 -1
  890. package/dist/run-embedded.runtime-D8bz5vfV.js +4 -0
  891. package/dist/run-embedded.runtime.js +1 -1
  892. package/dist/run-execution-cli.runtime-BAa8KPn7.js +4 -0
  893. package/dist/run-execution-cli.runtime.js +1 -1
  894. package/dist/run-executor.runtime-CNnemqSa.js +330 -0
  895. package/dist/run-executor.runtime.js +1 -1
  896. package/dist/run-model-catalog.runtime-Dh7EghXr.js +2 -0
  897. package/dist/run-model-catalog.runtime.js +1 -1
  898. package/dist/run-session-state-cMlTFwT_.js +159 -0
  899. package/dist/run-subagent-registry.runtime-BgQU86-E.js +2 -0
  900. package/dist/run-subagent-registry.runtime.js +1 -1
  901. package/dist/runner-B3YXRJOB.js +704 -0
  902. package/dist/runner.entries-DMTKpRDP.js +1485 -0
  903. package/dist/runtime-BHReFHE2.js +2 -0
  904. package/dist/runtime-BiQZ6Usw.js +615 -0
  905. package/dist/runtime-CAeriu2O.js +10 -0
  906. package/dist/runtime-CAnCRCX3.js +224 -0
  907. package/dist/runtime-CV_2NqSY.js +300 -0
  908. package/dist/runtime-CmpnvXo3.js +245 -0
  909. package/dist/runtime-D2fci1Ey.js +2 -0
  910. package/dist/runtime-DAsYmYeA.js +3 -0
  911. package/dist/runtime-DeA45VKG.js +210 -0
  912. package/dist/runtime-DvkZ8tHI.js +436 -0
  913. package/dist/runtime-DxVUR2Xg.js +2 -0
  914. package/dist/runtime-api-B88le0UE.js +12 -0
  915. package/dist/runtime-channel-AubRWvnH.js +2 -0
  916. package/dist/runtime-channel-DdclSuEu.js +148 -0
  917. package/dist/runtime-config-collectors-DukTj2va.js +525 -0
  918. package/dist/runtime-embedded-agent.runtime-BpLweeFv.js +2 -0
  919. package/dist/runtime-embedded-agent.runtime.js +1 -1
  920. package/dist/runtime-internal-CaoUylZw.js +2 -0
  921. package/dist/runtime-llm.runtime-DlpqGc7S.js +307 -0
  922. package/dist/runtime-llm.runtime.js +1 -1
  923. package/dist/runtime-model-auth.runtime-CLAaWzxY.js +46 -0
  924. package/dist/runtime-model-auth.runtime-DxVvqRTd.js +2 -0
  925. package/dist/runtime-model-auth.runtime.js +1 -1
  926. package/dist/runtime-options-TTtN01-I.js +275 -0
  927. package/dist/runtime-plugin-ClqxJSbp.js +92 -0
  928. package/dist/runtime-plugins-Bq01wLXP.js +32 -0
  929. package/dist/runtime-plugins.runtime-cwCvl1TR.js +2 -0
  930. package/dist/runtime-plugins.runtime.js +1 -1
  931. package/dist/runtime-prepare.runtime-Cz_hV_k5.js +81 -0
  932. package/dist/runtime-prepare.runtime.js +1 -1
  933. package/dist/runtime-provider-QCJq90av.js +24 -0
  934. package/dist/runtime-provider-Wllc3jC6.js +2 -0
  935. package/dist/runtime-registry-loader-BM1mQBJr.js +2 -0
  936. package/dist/runtime-registry-loader-DzhYCt4s.js +117 -0
  937. package/dist/runtime-shared-BfqOW-Vb.js +365 -0
  938. package/dist/runtime-web-channel-plugin-BcVPgD14.js +204 -0
  939. package/dist/runtime-web-tools-fallback.runtime.js +1 -1
  940. package/dist/scan-ldbaD8jq.js +573 -0
  941. package/dist/sdk-security-runtime-Bxhq2O1G.js +86 -0
  942. package/dist/sdk-setup-tools-CsQM9pF0.js +8 -0
  943. package/dist/secrets-cli-DbpIf4-z.js +150 -0
  944. package/dist/security-cli-BK4Xpa6h.js +520 -0
  945. package/dist/selection-BXKik6Ps.js +3 -0
  946. package/dist/selection-D4O3gK3Q.js +18365 -0
  947. package/dist/send-DaoGIay5.js +1222 -0
  948. package/dist/send-DzNjJGJX.js +178 -0
  949. package/dist/send-f5w9krNS.js +711 -0
  950. package/dist/send-media-cOciBxcg.js +2072 -0
  951. package/dist/send-result-DMFwBuOl.js +141 -0
  952. package/dist/server-BoC1mxZ-.js +24 -0
  953. package/dist/server-DZnI6w5k.js +72 -0
  954. package/dist/server-aux-handlers-BwRdYdub.js +1347 -0
  955. package/dist/server-chat-Q95f4ywD.js +827 -0
  956. package/dist/server-close.runtime.js +3 -3
  957. package/dist/server-context-CnXNaarB.js +2 -0
  958. package/dist/server-context-DRBebo7Y.js +955 -0
  959. package/dist/server-cron-C0o0ZvqF.js +3173 -0
  960. package/dist/server-cron-CLeBvurR.js +2 -0
  961. package/dist/server-maintenance-CqHfTnFD.js +152 -0
  962. package/dist/server-methods-BmlBQJMD.js +497 -0
  963. package/dist/server-middleware-DJhnR6jl.js +122 -0
  964. package/dist/server-model-catalog-CoSSk_Gy.js +2 -0
  965. package/dist/server-model-catalog-D32oDTQp.js +73 -0
  966. package/dist/server-node-events-DX9a4etQ.js +597 -0
  967. package/dist/server-plugin-bootstrap-Vco-EpxY.js +71 -0
  968. package/dist/server-plugins-WBX2fZRp.js +435 -0
  969. package/dist/server-reload-handlers-DGJLH8bg.js +719 -0
  970. package/dist/server-restart-sentinel-Bvon7f8K.js +700 -0
  971. package/dist/server-runtime-services-BNcH4vhR.js +3 -0
  972. package/dist/server-runtime-services-BjcQG5y7.js +147 -0
  973. package/dist/server-runtime-subscriptions-W39HeyoT.js +67 -0
  974. package/dist/server-session-events-CO73dMU-.js +244 -0
  975. package/dist/server-session-key-D8V67lDk.js +2 -0
  976. package/dist/server-session-key-v-KYSmRS.js +75 -0
  977. package/dist/server-startup-config-u54lUdWN.js +305 -0
  978. package/dist/server-startup-early-Cy5kArJG.js +87 -0
  979. package/dist/server-startup-memory-DvINFAYn.js +72 -0
  980. package/dist/server-startup-plugins-CerpbOSQ.js +127 -0
  981. package/dist/server-startup-post-attach-COUCwhNa.js +793 -0
  982. package/dist/server-ws-runtime-BfznAnbI.js +374 -0
  983. package/dist/server.impl-dQXccj0z.js +2622 -0
  984. package/dist/session-cost-usage-Bs5yIOBH.js +1600 -0
  985. package/dist/session-kill-http-DVleb3RW.js +121 -0
  986. package/dist/session-log-runtime-OG7J4j9m.js +1258 -0
  987. package/dist/session-override-LIWl5a9T.js +134 -0
  988. package/dist/session-reset-model.runtime-BpnTi4sa.js +144 -0
  989. package/dist/session-reset-model.runtime.js +1 -1
  990. package/dist/session-reset-service-HA07zS8L.js +651 -0
  991. package/dist/session-status.runtime-D6_clH8l.js +2 -0
  992. package/dist/session-status.runtime.js +1 -1
  993. package/dist/session-store-Cj4Rh6qc.js +273 -0
  994. package/dist/session-store.runtime-DSCxACdZ.js +4 -0
  995. package/dist/session-store.runtime.js +1 -1
  996. package/dist/session-subagent-reactivation.runtime-CcwaHAxg.js +2 -0
  997. package/dist/session-subagent-reactivation.runtime.js +1 -1
  998. package/dist/session-tab-registry-C-9uI2Wi.js +551 -0
  999. package/dist/session-utils-BRtPESA4.js +1508 -0
  1000. package/dist/sessions-Beltl3Ra.js +1917 -0
  1001. package/dist/sessions-DR-X-j8D.js +316 -0
  1002. package/dist/sessions-cleanup-CR1CFcJb.js +165 -0
  1003. package/dist/sessions-history-http-CjyHWYEv.js +432 -0
  1004. package/dist/sessions-patch-peSeltuF.js +401 -0
  1005. package/dist/sessions-resolve-D9ULr95s.js +180 -0
  1006. package/dist/sessions-table-Da6bua9d.js +161 -0
  1007. package/dist/sessions-uKpnhod0.js +12736 -0
  1008. package/dist/sessions.runtime-C1mVNaU3.js +2 -0
  1009. package/dist/sessions.runtime.js +1 -1
  1010. package/dist/set-DVj21EuB.js +31 -0
  1011. package/dist/set-image-JChDCaAP.js +17 -0
  1012. package/dist/setup-5I-zpID3.js +614 -0
  1013. package/dist/setup-CjtY6cli.js +2 -0
  1014. package/dist/setup-onboard-configure-help-fast-path-C5GcSuXb.js +64 -0
  1015. package/dist/setup.finalize-Bf10PNbl.js +586 -0
  1016. package/dist/setup.gateway-config-EH5Rvwzy.js +281 -0
  1017. package/dist/setup.migration-import-CoeV4Kc1.js +200 -0
  1018. package/dist/setup.migration-import-DFFGw4DI.js +2 -0
  1019. package/dist/setup.post-install-migration-DcQmWTE7.js +128 -0
  1020. package/dist/shared-BFSJZ6B3.js +212 -0
  1021. package/dist/shared-CVM-dYkO.js +5 -0
  1022. package/dist/shared-fvgcmCsj.js +71 -0
  1023. package/dist/simple-completion-runtime-C_TXe4M1.js +2 -0
  1024. package/dist/simple-completion-runtime-DREq-fcF.js +206 -0
  1025. package/dist/simple-completion-transport-DtD1fEvJ.js +83 -0
  1026. package/dist/snapshot-urls-B-wkwDI9.js +317 -0
  1027. package/dist/speech-core-KQg6oKcR.js +119 -0
  1028. package/dist/speech-provider-DfyLYitQ.js +171 -0
  1029. package/dist/speech-provider-oDvTumNW.js +227 -0
  1030. package/dist/speech-provider-yL-TQ3Em.js +233 -0
  1031. package/dist/stale-oauth-profile-shadows-CW11VYMM.js +2 -0
  1032. package/dist/stale-oauth-profile-shadows-DFl6Lyf1.js +186 -0
  1033. package/dist/standalone-runtime-registry-loader-BiponY-y.js +59 -0
  1034. package/dist/startup-context-PVXYM-X3.js +314 -0
  1035. package/dist/status-BA_0z83w.js +249 -0
  1036. package/dist/status-Bc7BGlRt.js +2 -0
  1037. package/dist/status-BwPWg9eQ.js +3 -0
  1038. package/dist/status-CLQ66eml.js +4 -0
  1039. package/dist/status-Ci2gChtY.js +466 -0
  1040. package/dist/status-CmtBWJEE.js +2 -0
  1041. package/dist/status-DdnMnPNs.js +73 -0
  1042. package/dist/status-all-BpTvkYrt.js +573 -0
  1043. package/dist/status-json-CizozZCr.js +15 -0
  1044. package/dist/status-json-command-FzKa2t6O.js +84 -0
  1045. package/dist/status-message-BHbnxwmt.js +495 -0
  1046. package/dist/status-message.runtime-Df5WBBAk.js +6 -0
  1047. package/dist/status-message.runtime.js +1 -1
  1048. package/dist/status-queue.runtime-CXnZV4Bj.js +2 -0
  1049. package/dist/status-queue.runtime.js +1 -1
  1050. package/dist/status-runtime-shared-D3Hz8WZ_.js +289 -0
  1051. package/dist/status-subagents.runtime-PoDdwwaw.js +32 -0
  1052. package/dist/status-subagents.runtime.js +1 -1
  1053. package/dist/status-text-DNxXSCuI.js +301 -0
  1054. package/dist/status.command-C_e9GcMg.js +2 -0
  1055. package/dist/status.command-DjVKDmt_.js +425 -0
  1056. package/dist/status.command.text-runtime-BeHlqL8b.js +15 -0
  1057. package/dist/status.runtime-h--fx9HY.js +2 -0
  1058. package/dist/status.scan-WyR8TeJz.js +72 -0
  1059. package/dist/status.scan-overview-CMzUAQMQ.js +460 -0
  1060. package/dist/status.scan.deps.runtime-1JTrdyHk.js +19 -0
  1061. package/dist/status.scan.deps.runtime.js +1 -1
  1062. package/dist/status.scan.fast-json-D2jw1wKO.js +163 -0
  1063. package/dist/status.scan.fast-json-DbN1KxJT.js +2 -0
  1064. package/dist/status.summary-6ZijZM1g.js +2 -0
  1065. package/dist/status.summary-CiCsChO-.js +276 -0
  1066. package/dist/store-CdBPITcg.js +2302 -0
  1067. package/dist/store-D0l2NCdn.js +3 -0
  1068. package/dist/stored-model-override-HEgnFh6b.js +79 -0
  1069. package/dist/subagent-announce-BUv_kA1W.js +353 -0
  1070. package/dist/subagent-announce-delivery-Ci2Y_p--.js +1369 -0
  1071. package/dist/subagent-control-BM3vNgsQ.js +492 -0
  1072. package/dist/subagent-control.runtime-Df3pVQL9.js +3 -0
  1073. package/dist/subagent-control.runtime.js +1 -1
  1074. package/dist/subagent-hooks-CN2fLez2.js +2 -0
  1075. package/dist/subagent-hooks-CeOmTJBf.js +230 -0
  1076. package/dist/subagent-hooks-api-Cfe4DAT9.js +23 -0
  1077. package/dist/subagent-registry-B9RPAXUs.js +2627 -0
  1078. package/dist/subagent-registry-C7tedtVB.js +3 -0
  1079. package/dist/subagent-registry.runtime.js +2 -2
  1080. package/dist/subagent-session-cleanup-y0ijZ-LQ.js +390 -0
  1081. package/dist/system-DVtrOGbV.js +111 -0
  1082. package/dist/system-prompt-config-BVmrcmmr.js +918 -0
  1083. package/dist/talk-CrdgqTCl.js +2454 -0
  1084. package/dist/target-id-CrUyi-Uq.js +107 -0
  1085. package/dist/targets-KZ2ezPwx.js +267 -0
  1086. package/dist/targets.runtime-iZ8KdQ1C.js +2 -0
  1087. package/dist/targets.runtime.js +1 -1
  1088. package/dist/task-executor-893pMqzn.js +349 -0
  1089. package/dist/task-owner-access-DC7MKz3n.js +74 -0
  1090. package/dist/task-registry-control.runtime.js +2 -2
  1091. package/dist/task-registry-delivery-runtime-YGMOyqP5.js +2 -0
  1092. package/dist/task-registry-uaYJfgXF.js +2362 -0
  1093. package/dist/task-registry.maintenance-Dx0m2NYh.js +2 -0
  1094. package/dist/task-registry.maintenance-gApg-XOt.js +764 -0
  1095. package/dist/task-status-access-CFhD_ieY.js +18 -0
  1096. package/dist/tasks-B_Qoz38D.js +153 -0
  1097. package/dist/tasks-DtV85zJT.js +548 -0
  1098. package/dist/tasks-audit-system-Con3yYnm.js +210 -0
  1099. package/dist/tasks-json-BM3pauZl.js +73 -0
  1100. package/dist/tavily-web-search-provider.runtime-Cmyyc5kX.js +112 -0
  1101. package/dist/tavily-web-search-provider.runtime.js +1 -1
  1102. package/dist/text-report-CKxmVmt5.js +695 -0
  1103. package/dist/text-transforms.runtime-DVwVsBRS.js +113 -0
  1104. package/dist/text-transforms.runtime.js +1 -1
  1105. package/dist/thread-bindings-B6UEVp9q.js +228 -0
  1106. package/dist/tool-KOZc7TIF.js +143 -0
  1107. package/dist/tool-dispatch-Ca4z2GEr.js +155 -0
  1108. package/dist/tool-images-CzDwHeDR.js +247 -0
  1109. package/dist/tool-plugin-BvQBJ2gU.js +93 -0
  1110. package/dist/tool-resolution-Ddxl6tjh.js +153 -0
  1111. package/dist/tool-result-truncation-BSKuIhd5.js +498 -0
  1112. package/dist/tool-schema-nB27q-vb.js +40 -0
  1113. package/dist/tool-schema-projection-COrMarLR.js +215 -0
  1114. package/dist/tool-split-BjPHBFrv.js +323 -0
  1115. package/dist/tools-CV40BWkc.js +901 -0
  1116. package/dist/tools-catalog-5stC7W2V.js +156 -0
  1117. package/dist/tools-effective-BVjqz2FV.js +442 -0
  1118. package/dist/tools-effective-inventory-esPY5jRB.js +379 -0
  1119. package/dist/tools-invoke-Czk_NM9G.js +51 -0
  1120. package/dist/tools-invoke-http-D7PbsODz.js +68 -0
  1121. package/dist/tools-invoke-shared-CzrEn0Dm.js +200 -0
  1122. package/dist/tools-rSjgf61B.js +579 -0
  1123. package/dist/tools.runtime-DiChCSGI.js +5 -0
  1124. package/dist/tools.runtime.js +1 -1
  1125. package/dist/transcript-rewrite-4IQefjvK.js +688 -0
  1126. package/dist/transcripts-tool-BXTS8tE5.js +2 -0
  1127. package/dist/transcripts-tool-CeWGgz5k.js +656 -0
  1128. package/dist/tts-BS8EeM8p.js +2 -0
  1129. package/dist/tts-BlTZjsaE.js +194 -0
  1130. package/dist/tts-runtime-BfRdJDyY.js +1337 -0
  1131. package/dist/tts-vRSvSw-t.js +3 -0
  1132. package/dist/tts.runtime-ChBnVkNt.js +3 -0
  1133. package/dist/tts.runtime-CmVCUbzq.js +2 -0
  1134. package/dist/tts.runtime.js +1 -1
  1135. package/dist/tui-BoQVBgWB.js +4860 -0
  1136. package/dist/tui-DBYK9BeQ.js +2 -0
  1137. package/dist/tui-backend-X0NI7rAv.js +256 -0
  1138. package/dist/tui-cli-BpUtjV38.js +40 -0
  1139. package/dist/typing-policy-CBwyAQh4.js +199 -0
  1140. package/dist/usage-Bl-tgGx-.js +623 -0
  1141. package/dist/usage-Cj_ektBl.js +1113 -0
  1142. package/dist/usage-format-DWO9ckX3.js +394 -0
  1143. package/dist/usage-format-DnCIXsqG.js +2 -0
  1144. package/dist/video-generation-provider-B7ib4AeI.js +297 -0
  1145. package/dist/video-generation-provider-CXQ6fqJx.js +64 -0
  1146. package/dist/video-generation-provider-DXjl05T6.js +325 -0
  1147. package/dist/video-generation-provider-Db8h71jA.js +77 -0
  1148. package/dist/web-fetch/runtime.js +1 -1
  1149. package/dist/web-fetch-providers.runtime-DhPkYjgB.js +41 -0
  1150. package/dist/web-fetch-providers.runtime.js +1 -1
  1151. package/dist/web-guarded-fetch-BdsVyvDS.js +58 -0
  1152. package/dist/web-guarded-fetch-CJR3JCwT.js +2 -0
  1153. package/dist/web-media-BzzQJAwk.js +4 -0
  1154. package/dist/web-media-DViZjNBa.js +2 -0
  1155. package/dist/web-media-inHawfBU.js +651 -0
  1156. package/dist/web-provider-runtime-shared-Cc08Lt9p.js +142 -0
  1157. package/dist/web-search-provider-common-CtbtmUL-.js +252 -0
  1158. package/dist/web-search-providers.runtime-B7x_cRVn.js +41 -0
  1159. package/dist/web-search-providers.runtime.js +1 -1
  1160. package/package.json +1 -1
  1161. package/dist/abort-CR0u3VsG.js +0 -277
  1162. package/dist/abort.runtime-CXUxanGg.js +0 -2
  1163. package/dist/accounts-BxBaquAf.js +0 -423
  1164. package/dist/accounts-vQjpoqEe.js +0 -2
  1165. package/dist/acp-spawn-2elSoS0E.js +0 -1286
  1166. package/dist/acp-spawn-DtKOHNO1.js +0 -2
  1167. package/dist/acp-stateful-target-driver-BqeA5j0h.js +0 -89
  1168. package/dist/action-info-B8NotHFw.js +0 -75
  1169. package/dist/active-runtime-registry-BO9mpPuB.js +0 -62
  1170. package/dist/active-tool-schema-warnings-C8vGj5FX.js +0 -105
  1171. package/dist/active-tool-schema-warnings-CVeFJuWI.js +0 -2
  1172. package/dist/agent-BgEaDMdp.js +0 -1825
  1173. package/dist/agent-_V5GbziF.js +0 -2
  1174. package/dist/agent-bundle-lsp-runtime-0jBcDEHh.js +0 -389
  1175. package/dist/agent-bundle-lsp-runtime-CQ6dZLs_.js +0 -2
  1176. package/dist/agent-bundle-mcp-materialize-Cu6JqMzC.js +0 -124
  1177. package/dist/agent-bundle-mcp-tools-BGL827cn.js +0 -3
  1178. package/dist/agent-command-CMJdGr16.js +0 -1435
  1179. package/dist/agent-delivery-DMu1MOeq.js +0 -117
  1180. package/dist/agent-harness-runtime-BKSW2E1O.js +0 -207
  1181. package/dist/agent-model-discovery-Cu4YL31r.js +0 -3
  1182. package/dist/agent-model-discovery-DdmVtkZo.js +0 -238
  1183. package/dist/agent-runner-utils-DXNDhwkI.js +0 -267
  1184. package/dist/agent-runner.runtime-Cym4Odfd.js +0 -3784
  1185. package/dist/agent-runtime-BkbhevY3.js +0 -199
  1186. package/dist/agent-runtime-label-DNP06p76.js +0 -30
  1187. package/dist/agent-runtime-metadata-JaTKc7mA.js +0 -53
  1188. package/dist/agent-tool-result-middleware-loader-FbZE0Qpk.js +0 -55
  1189. package/dist/agent-tools-Nwh8BlKX.js +0 -2506
  1190. package/dist/agent-tools.before-tool-call-BwY-FYFl.js +0 -1274
  1191. package/dist/agent-tools.before-tool-call-DwUmYhE3.js +0 -2
  1192. package/dist/agent-u5NDWrw9.js +0 -3
  1193. package/dist/agent-via-gateway-DMtOMwZa.js +0 -486
  1194. package/dist/agent-wait-dedupe-CLuKbI_7.js +0 -180
  1195. package/dist/agents-CiW7UEuB.js +0 -632
  1196. package/dist/agents.command-shared-CXGSQscb.js +0 -16
  1197. package/dist/agents.commands.add-BYBrZDXD.js +0 -304
  1198. package/dist/agents.commands.bind-nfg3AlVc.js +0 -265
  1199. package/dist/agents.commands.delete-pRj6vIrn.js +0 -128
  1200. package/dist/agents.commands.identity-Ci2PnDDl.js +0 -143
  1201. package/dist/agents.commands.list-Crj3BmqB.js +0 -235
  1202. package/dist/aliases-BFspFx3-.js +0 -97
  1203. package/dist/api-BiXhdPle.js +0 -3
  1204. package/dist/api-Cptkjys5.js +0 -6
  1205. package/dist/api-D3vT4ZVi.js +0 -2
  1206. package/dist/api-key-rotation-CQgW8LEx.js +0 -167
  1207. package/dist/app-registration-YW276fZC.js +0 -194
  1208. package/dist/apply-BRxKrOiK.js +0 -510
  1209. package/dist/apply-D0fWCa-U.js +0 -2
  1210. package/dist/apply-DIR8y0ZA.js +0 -2
  1211. package/dist/apply-DNUIV0Lt.js +0 -416
  1212. package/dist/apply-Dux9jI7f.js +0 -544
  1213. package/dist/approval-native-helpers-BMT-5X47.js +0 -398
  1214. package/dist/artifacts-CTrtIv9T.js +0 -368
  1215. package/dist/assistant-ClfI8Kho.js +0 -291
  1216. package/dist/attachment-normalize-DAW86mZY.js +0 -213
  1217. package/dist/attempt-execution-DTi2UfET.js +0 -584
  1218. package/dist/attempt-execution.helpers-DrX0QToi.js +0 -969
  1219. package/dist/attempt-execution.runtime-BCmAxwGy.js +0 -3
  1220. package/dist/attempt.prompt-helpers-BE6kGRtT.js +0 -543
  1221. package/dist/attempt.tool-run-context-J9O2yjbV.js +0 -1240
  1222. package/dist/audio-preflight.runtime-D3GXVYBI.js +0 -7
  1223. package/dist/audit-5T20D-xm.js +0 -1108
  1224. package/dist/audit-CWuV5GlP.js +0 -477
  1225. package/dist/audit.nondeep.runtime-DeYwRDYj.js +0 -1416
  1226. package/dist/audit.runtime-rUlvK4Rb.js +0 -7
  1227. package/dist/auth-DunUSatn.js +0 -567
  1228. package/dist/auth-choice--eBzca8Y.js +0 -3
  1229. package/dist/auth-choice-DJ9jsFUq.js +0 -400
  1230. package/dist/auth-choice-_pLkIdVh.js +0 -110
  1231. package/dist/auth-choice.apply.api-providers-CALcopRP.js +0 -2
  1232. package/dist/auth-choice.apply.api-providers-Dzzm1snk.js +0 -34
  1233. package/dist/auth-choice.plugin-providers.runtime-BHKTeZZc.js +0 -11
  1234. package/dist/auth-health-Cs4OjiF2.js +0 -219
  1235. package/dist/auth-list-bwJ4QDs0.js +0 -115
  1236. package/dist/auth-order-BoHN3Dc_.js +0 -105
  1237. package/dist/auth-profiles-BOLncVgy.js +0 -73
  1238. package/dist/auth-profiles-BiQRkULt.js +0 -14
  1239. package/dist/backend-config-B5yga5ay.js +0 -259
  1240. package/dist/bash-tools-BWvldguc.js +0 -3
  1241. package/dist/bash-tools-DEAAO5np.js +0 -3497
  1242. package/dist/binding-routing-BbtHmU_l.js +0 -113
  1243. package/dist/binding-targets-DSNv3-QA.js +0 -121
  1244. package/dist/bootstrap-files-DD8V2dLe.js +0 -202
  1245. package/dist/bootstrap-files-_6u1uJW2.js +0 -3
  1246. package/dist/bridge-server-v1-XPnAZ.js +0 -113
  1247. package/dist/browser-cli-CnpuO4KR.js +0 -230
  1248. package/dist/browser-cli-DPbIn8SK.js +0 -2
  1249. package/dist/browser-cli-actions-input-DoGR6LI-.js +0 -522
  1250. package/dist/browser-cli-actions-observe-CYMpgmtF.js +0 -81
  1251. package/dist/browser-cli-debug-ChJjSq-h.js +0 -137
  1252. package/dist/browser-cli-inspect-Bbci-WPG.js +0 -117
  1253. package/dist/browser-cli-manage-Bnscjb7b.js +0 -446
  1254. package/dist/browser-cli-resize-D1MJdvZI.js +0 -32
  1255. package/dist/browser-cli-shared-BCQwqz51.js +0 -69
  1256. package/dist/browser-cli-state-BWkPsvUg.js +0 -371
  1257. package/dist/browser-control-auth-CEP_ExeC.js +0 -2
  1258. package/dist/browser-profiles-SvnqnHVN.js +0 -2
  1259. package/dist/browser-runtime-0mRxjFpp.js +0 -389
  1260. package/dist/browser-tool.schema--CLR3nDv.js +0 -132
  1261. package/dist/btw-command-DV6HfrRV.js +0 -18
  1262. package/dist/build-DiRmljCi.js +0 -261
  1263. package/dist/bundled-channel-config-schema-DpdKMATU.d.ts +0 -3168
  1264. package/dist/capability-cli-ATfwTYFe.js +0 -1809
  1265. package/dist/capability-provider-runtime-l3nnLGvn.js +0 -346
  1266. package/dist/cdp.helpers-IIuc0KGS.js +0 -637
  1267. package/dist/channel-CzTD2ouI.js +0 -2309
  1268. package/dist/channel-actions-B5Yk5Axf.js +0 -46
  1269. package/dist/channel-bootstrap.runtime-C9F-Pq1o.js +0 -38
  1270. package/dist/channel-bootstrap.runtime-TPyY5Ngv.js +0 -2
  1271. package/dist/channel-core-XMZJ-ZGF.js +0 -5
  1272. package/dist/channel-inbound-DvqkKmiH.js +0 -121
  1273. package/dist/channel-message-CnJ4vUyt.js +0 -12
  1274. package/dist/channel-outbound-BhefGAqY.js +0 -436
  1275. package/dist/channel-plugin-resolution-BiaJ8aRa.js +0 -2
  1276. package/dist/channel-plugin-resolution-D_CxkMVc.js +0 -135
  1277. package/dist/channel-resolution-DzI28gIM.js +0 -46
  1278. package/dist/channel-selection-CLFO4-eQ.js +0 -171
  1279. package/dist/channel-selection.runtime-Beb2-bMH.js +0 -2
  1280. package/dist/channel.runtime-By5T5eGw.js +0 -697
  1281. package/dist/channels-BrRY9Mag.js +0 -1004
  1282. package/dist/channels-cli-CF--e2RU.js +0 -331
  1283. package/dist/chat-BTMPilpx.js +0 -2940
  1284. package/dist/chat-DnC7XCWK.js +0 -3
  1285. package/dist/chrome-C3_dN9jE.js +0 -1517
  1286. package/dist/chrome-mcp-5jjDHIgn.js +0 -864
  1287. package/dist/chrome-mcp-DFAa-WzK.js +0 -2
  1288. package/dist/claude-live-session-BUPeOzLE.js +0 -1338
  1289. package/dist/claude-live-session-Bprgmr1-.js +0 -2
  1290. package/dist/clawbot-cli-5UVkLT1Y.js +0 -9
  1291. package/dist/cli-6a6sMEUB.js +0 -2
  1292. package/dist/cli-COCN9B5e.js +0 -2
  1293. package/dist/cli-CpI4dBXy.js +0 -141
  1294. package/dist/cli-YLx-ekdH.js +0 -293
  1295. package/dist/cli-backends.runtime-CsBjr7ag.js +0 -7
  1296. package/dist/cli-compaction-Bh0oMwUa.js +0 -363
  1297. package/dist/cli-registry-loader-DDbaAJgY.js +0 -2
  1298. package/dist/cli-registry-loader-xc2Ah8S4.js +0 -193
  1299. package/dist/cli-runner-BfSrIn-9.js +0 -597
  1300. package/dist/cli-runner-D_FAjNbR.js +0 -2
  1301. package/dist/cli-runner.runtime-BJetQDu1.js +0 -3
  1302. package/dist/cli-runner.runtime-BKJQkc7C.js +0 -4
  1303. package/dist/cli-session-Cy3IeH0g.js +0 -119
  1304. package/dist/cli.runtime-BpOz0s3N.js +0 -1276
  1305. package/dist/codex-native-web-search-BDtKRV3F.js +0 -4
  1306. package/dist/codex-native-web-search-C0TrfoMX.js +0 -20
  1307. package/dist/codex-native-web-search-core-CzlK1GfN.js +0 -106
  1308. package/dist/command-auth-CFnvdYX2.js +0 -135
  1309. package/dist/command-config-resolution-B_86rG8v.js +0 -2
  1310. package/dist/command-config-resolution-BbadcA2M.js +0 -25
  1311. package/dist/command-config-resolution.runtime-B_86rG8v.js +0 -2
  1312. package/dist/command-execution-startup-Rrwwdg_5.js +0 -90
  1313. package/dist/command-primitives-runtime-C9bTt5IV.js +0 -3
  1314. package/dist/command-registry-CbpdQKmu.js +0 -9
  1315. package/dist/command-registry-Dw-XC_Zk.js +0 -4
  1316. package/dist/command-registry-core-rvEDki6p.js +0 -114
  1317. package/dist/command-secret-gateway-BX6BIiFn.js +0 -589
  1318. package/dist/command-secret-targets-DCzlTkb5.js +0 -2
  1319. package/dist/command-status-builders-DIsZN9aY.js +0 -147
  1320. package/dist/command-status.runtime-C2x4yMRd.js +0 -90
  1321. package/dist/commands-FYCxWqIx.js +0 -161
  1322. package/dist/commands-compact.runtime-BTMQfx1k.js +0 -10
  1323. package/dist/commands-core.runtime-CuNLz2wm.js +0 -2
  1324. package/dist/commands-handlers.runtime-DyNuPOmY.js +0 -6327
  1325. package/dist/commands-models-s7BRmLQh.js +0 -448
  1326. package/dist/commands-registry-BxEq-3UJ.js +0 -195
  1327. package/dist/commands-registry.runtime-CbXW33S_.js +0 -4
  1328. package/dist/commands-status-BRJMba4h.js +0 -16
  1329. package/dist/commands-status-DCXEwlSF.js +0 -3
  1330. package/dist/commands-status.runtime-DCXEwlSF.js +0 -3
  1331. package/dist/commands-subagents-control.runtime-CduLQJFD.js +0 -2
  1332. package/dist/commands-system-prompt-B3LD8CDs.js +0 -161
  1333. package/dist/commands-system-prompt-DPsXTqOQ.js +0 -2
  1334. package/dist/commands.runtime-3sVz8Qgo.js +0 -175
  1335. package/dist/common-CZvBLb3w.js +0 -286
  1336. package/dist/compact-DxU_9XEc.js +0 -1165
  1337. package/dist/compact.runtime-CqQTypVl.js +0 -12
  1338. package/dist/compaction-planning-DArTi9SN.js +0 -202
  1339. package/dist/completion-cli-CiKl5HhI.js +0 -393
  1340. package/dist/config--yllOaSC.js +0 -374
  1341. package/dist/config-Yt5UcD91.js +0 -610
  1342. package/dist/config-cli-BeXS3R6k.js +0 -1703
  1343. package/dist/config-mutation-cQeWhUqy.js +0 -5
  1344. package/dist/config-mutations-Cg04LH_S.js +0 -161
  1345. package/dist/config-utils-Dhq_UKMC.js +0 -141
  1346. package/dist/config-validation-BANohTKD.js +0 -33
  1347. package/dist/configure-CWxhlx9G.js +0 -771
  1348. package/dist/configure-Jejkc6dn.js +0 -3
  1349. package/dist/configure.commands-BYy1bz8G.js +0 -2
  1350. package/dist/configure.commands-C3hDvZse.js +0 -1253
  1351. package/dist/context-DptQ59DZ.js +0 -248
  1352. package/dist/context-_ZshNBhD.js +0 -2
  1353. package/dist/context-engine-host-compat-C_eflvRw.js +0 -2
  1354. package/dist/context-engine-host-compat-s15Pu845.js +0 -280
  1355. package/dist/context-engine-lifecycle-COHFLnj4.js +0 -627
  1356. package/dist/control-auth-CQJpLoIb.js +0 -114
  1357. package/dist/control-service-BFSgA0Py.js +0 -40
  1358. package/dist/control-service-D7GZv-GS.js +0 -3
  1359. package/dist/control-ui/assets/activity-B7yRLbf3.js +0 -124
  1360. package/dist/control-ui/assets/agents-E-3DAkaW.js +0 -1030
  1361. package/dist/control-ui/assets/channels-D0c7A9OX.js +0 -120
  1362. package/dist/control-ui/assets/cron-B54j2Vmo.js +0 -1016
  1363. package/dist/control-ui/assets/debug-CRcGYNA9.js +0 -97
  1364. package/dist/control-ui/assets/index-bZJJ7U8q.js +0 -7214
  1365. package/dist/control-ui/assets/instances-RcBeqNzx.js +0 -57
  1366. package/dist/control-ui/assets/nodes-BoWRh42t.js +0 -444
  1367. package/dist/control-ui/assets/sessions-BmRQ932H.js +0 -425
  1368. package/dist/control-ui/assets/skills-BDn45kHZ.js +0 -362
  1369. package/dist/control-ui/assets/workboard-BwbcNuC5.js +0 -402
  1370. package/dist/control-ui-ChfTPXZo.js +0 -750
  1371. package/dist/conversation-label-generator-CTfnInQF.js +0 -72
  1372. package/dist/conversation-runtime-B7oAN9Tq.js +0 -31
  1373. package/dist/core-api-CBD0dvTQ.js +0 -5
  1374. package/dist/core-api-ClCm_yM8.js +0 -2
  1375. package/dist/core-wuoxL08a.js +0 -284
  1376. package/dist/crestodian--iYeGB8u.js +0 -55
  1377. package/dist/cron-D2SzQyqo.js +0 -453
  1378. package/dist/daemon-install-B6CAkU3V.js +0 -66
  1379. package/dist/daemon-install-auth-profiles-store.runtime-Cpt5LSD6.js +0 -2
  1380. package/dist/dashboard-ChYOQjM2.js +0 -263
  1381. package/dist/defaults-CCopehWw.js +0 -130
  1382. package/dist/defaults-H4kBp17N.js +0 -3
  1383. package/dist/defaults.constants-CjB9HP6f.js +0 -76
  1384. package/dist/deliver-BzPhWO_F.js +0 -3
  1385. package/dist/deliver-DGyKH3Qi.js +0 -1399
  1386. package/dist/deliver-runtime-Ca2kcQoZ.js +0 -2
  1387. package/dist/delivery-outbound.runtime-D7ycPxY-.js +0 -7
  1388. package/dist/delivery-queue-CnLv30ko.js +0 -863
  1389. package/dist/delivery-queue-CuaDjNMh.js +0 -2
  1390. package/dist/delivery-queue-runtime-DO2vqOIJ.js +0 -16
  1391. package/dist/delivery-target.runtime-QcBVk_j8.js +0 -45
  1392. package/dist/delivery.runtime-L09v4tys.js +0 -470
  1393. package/dist/detached-task-runtime-BqU7YXYT.js +0 -86
  1394. package/dist/diagnostics-T-Hk_Qzi.js +0 -168
  1395. package/dist/dialogue-C0VnTMMn.js +0 -37
  1396. package/dist/direct-dm-BWn67tDD.js +0 -81
  1397. package/dist/directive-handling.defaults-DO6Snm4_.js +0 -22
  1398. package/dist/directive-handling.fast-lane-BemYRfPn.js +0 -70
  1399. package/dist/directive-handling.impl-BMVh1pMh.js +0 -823
  1400. package/dist/directive-handling.impl-vr4MsYbt.js +0 -2
  1401. package/dist/directive-handling.model-selection-DegP9exp.js +0 -122
  1402. package/dist/directive-handling.persist.runtime-BUdU6_zm.js +0 -274
  1403. package/dist/directives-1xk_ZcMf.js +0 -319
  1404. package/dist/directory-cli-D83WEjEG.js +0 -239
  1405. package/dist/dispatch-Ck2tvRYH.js +0 -2057
  1406. package/dist/dispatch-acp-GdaHNdvf.js +0 -1102
  1407. package/dist/dispatch-acp-manager.runtime-BGSrJqrW.js +0 -3
  1408. package/dist/dispatch-acp-media.runtime-DQ8dYQh8.js +0 -4
  1409. package/dist/dispatch-acp-transcript.runtime-CsJZGhnu.js +0 -40
  1410. package/dist/dispatch-acp-tts.runtime-Bo-QxKgx.js +0 -3
  1411. package/dist/dispatch-acp.runtime-C_u7sGcQ.js +0 -18
  1412. package/dist/dispatcher-GtuYO6Ni.js +0 -106
  1413. package/dist/doctor-B2qP9g8d.js +0 -760
  1414. package/dist/doctor-D9wCez5t.js +0 -6
  1415. package/dist/doctor-auth-XnseqtS7.js +0 -216
  1416. package/dist/doctor-auth-flat-profiles-B6cL-TiJ.js +0 -516
  1417. package/dist/doctor-auth-flat-profiles-Birb7qIk.js +0 -2
  1418. package/dist/doctor-auth-legacy-oauth-CXO3OtyG.js +0 -48
  1419. package/dist/doctor-auth-oauth-sidecar-BSgQPbcS.js +0 -177
  1420. package/dist/doctor-auth-oauth-sidecar-CzzyNwxc.js +0 -2
  1421. package/dist/doctor-bootstrap-size-BlVcO5D6.js +0 -57
  1422. package/dist/doctor-claude-cli-_MTVnCQ-.js +0 -150
  1423. package/dist/doctor-config-flow-0kxzjUjK.js +0 -1819
  1424. package/dist/doctor-core-checks-C_g9REOd.js +0 -666
  1425. package/dist/doctor-core-checks-CahzmM1L.js +0 -2
  1426. package/dist/doctor-core-checks.runtime-Bi_oTiTZ.js +0 -278
  1427. package/dist/doctor-gateway-daemon-flow-UAIWsI9w.js +0 -349
  1428. package/dist/doctor-gateway-services-BiMEGiw_.js +0 -465
  1429. package/dist/doctor-health-C69GVfMl.js +0 -65
  1430. package/dist/doctor-health-contributions-Bz19QhI4.js +0 -874
  1431. package/dist/doctor-lint-BVW4E6Qf.js +0 -95
  1432. package/dist/doctor-memory-search-D2PWzDCY.js +0 -407
  1433. package/dist/doctor-state-integrity-DuJIszQj.js +0 -1257
  1434. package/dist/doctor-tool-result-cap-advice-Dpn4zNH3.js +0 -27
  1435. package/dist/doctor-workspace-status-nW9TcIWi.js +0 -76
  1436. package/dist/dreaming-CcOWzGN5.js +0 -523
  1437. package/dist/dreaming-command-sxm3FQGb.js +0 -101
  1438. package/dist/dreaming-narrative-BSRwiUPL.js +0 -2
  1439. package/dist/dreaming-narrative-BskwmYdC.js +0 -721
  1440. package/dist/dreaming-phases-BuHjGyPw.js +0 -2
  1441. package/dist/dreaming-phases-ChVT8Ovk.js +0 -1162
  1442. package/dist/drive-C_u5W4ln.js +0 -899
  1443. package/dist/echo-transcript-tnZWH4EO.js +0 -52
  1444. package/dist/effective-tool-policy-CeHdL2D7.js +0 -89
  1445. package/dist/embedded-agent-CGULn3lb.js +0 -4
  1446. package/dist/embedded-agent-DZTa1YiK.js +0 -4074
  1447. package/dist/embedded-agent-helpers-B65K9o55.js +0 -6
  1448. package/dist/embedded-agent-helpers-BPXCvWBb.js +0 -1037
  1449. package/dist/embedded-agent.runtime-TfBgXcUV.js +0 -4
  1450. package/dist/embedded-backend-BAaFwayA.js +0 -744
  1451. package/dist/embedded-gateway-stub.runtime-CNyrjvgT.js +0 -12
  1452. package/dist/embedding-provider-runtime-EnkHdROJ.js +0 -86
  1453. package/dist/embedding-providers-CDkDb0kv.js +0 -2
  1454. package/dist/embeddings-http-ClIu4_mP.js +0 -222
  1455. package/dist/engine-qmd-DZRiT9i4.js +0 -708
  1456. package/dist/engine-storage-BEqlN8TR.js +0 -203
  1457. package/dist/errors-Co8auIlv.js +0 -2
  1458. package/dist/exec-approval-forwarder.runtime-C7QvfWQ6.js +0 -4
  1459. package/dist/exec-approval-session-target-ChuH1nXL.js +0 -177
  1460. package/dist/exec-auto-reviewer-Bm7380HF.js +0 -2
  1461. package/dist/exec-auto-reviewer-BrrdGleK.js +0 -241
  1462. package/dist/execute.runtime-B-8jUqDB.js +0 -579
  1463. package/dist/external-cli-auth-selection-0BxmRUps.js +0 -113
  1464. package/dist/extra-params-BgyvpEpv.js +0 -615
  1465. package/dist/fallback-notice-state-BXk_kRWM.js +0 -15
  1466. package/dist/fallbacks-CPdVRP81.js +0 -31
  1467. package/dist/fallbacks-shared-CSGf1oaf.js +0 -116
  1468. package/dist/fengming-runtime-NUA51sEw.js +0 -33
  1469. package/dist/fengming-runtime-config-CIZ-SHPt.js +0 -2
  1470. package/dist/fengming-runtime-memory-CIZ-SHPt.js +0 -2
  1471. package/dist/fengming-runtime-session-CIZ-SHPt.js +0 -2
  1472. package/dist/fengming-tools-MvRSt0JA.js +0 -12221
  1473. package/dist/flows-BocRit8D.js +0 -189
  1474. package/dist/fs-utils-DSXeBcjj.js +0 -9
  1475. package/dist/gateway-BCrUxrVw.js +0 -133
  1476. package/dist/gateway-cli-B8bXBd_L.js +0 -443
  1477. package/dist/gateway-install-token-pngTMc-f.js +0 -136
  1478. package/dist/gateway-method-runtime-ueZTz7WH.js +0 -21
  1479. package/dist/gateway-runtime-DbsoThML.js +0 -23
  1480. package/dist/get-reply-DUuaxcBz.js +0 -5198
  1481. package/dist/get-reply-from-config.runtime-B4Dgs3Hg.js +0 -2
  1482. package/dist/github-copilot-token-7AfRRF7J.js +0 -2
  1483. package/dist/health-7Yq5zpoZ.js +0 -3
  1484. package/dist/health-DlZqxm2f.js +0 -621
  1485. package/dist/health-DxesUuur.js +0 -111
  1486. package/dist/health-state-BMG8kOby.js +0 -106
  1487. package/dist/heartbeat-runner-Bq7A_Cjm.js +0 -5
  1488. package/dist/heartbeat-runner-DVwbVyft.js +0 -1930
  1489. package/dist/heartbeat-runner.runtime-DQ2NPXMD.js +0 -3
  1490. package/dist/helpers-PCu2RivJ.js +0 -406
  1491. package/dist/hook-helpers-DLEnCRO7.js +0 -44
  1492. package/dist/hooks-Bv-otcl7.js +0 -536
  1493. package/dist/hooks-cli-C5ve0nzF.js +0 -465
  1494. package/dist/http-endpoint-helpers-w2SagsQz.js +0 -37
  1495. package/dist/http-utils-CVvn0ZA-.js +0 -98
  1496. package/dist/image-BeixBis4.js +0 -385
  1497. package/dist/image-fallbacks-CPbmIMn9.js +0 -31
  1498. package/dist/image-generation-core.auth.runtime-Co38iRxQ.js +0 -2
  1499. package/dist/image-generation-provider-BA4Ar91S.js +0 -152
  1500. package/dist/image-runtime-7ZsfioS1.js +0 -9
  1501. package/dist/image-tool.helpers-upjA3ksB.js +0 -150
  1502. package/dist/images-ChLi1Uog.js +0 -2
  1503. package/dist/images-nB0XAnTa.js +0 -416
  1504. package/dist/inbound-reply-dispatch-DglobJ8j.js +0 -2
  1505. package/dist/inbound-reply-dispatch-QKOgNx-m.js +0 -147
  1506. package/dist/infra-runtime-CGD3RE_2.js +0 -32
  1507. package/dist/init-poVZDCAM.js +0 -59
  1508. package/dist/install-Dn9oPGmU.js +0 -262
  1509. package/dist/install.runtime-D5sllsjl.js +0 -2
  1510. package/dist/internal-CnOL_Roa.js +0 -399
  1511. package/dist/isolated-agent-CNw6E3F0.js +0 -1097
  1512. package/dist/isolated-agent-DjkHhEyR.js +0 -2
  1513. package/dist/kernel-B5Y5IQ-A.js +0 -3
  1514. package/dist/kernel-CMuO4VJy.js +0 -979
  1515. package/dist/kimi-web-search-provider.runtime-V4m_MHsk.js +0 -307
  1516. package/dist/library-B-1EZjtY.js +0 -45
  1517. package/dist/lifecycle-B-5gEZ7O.js +0 -570
  1518. package/dist/lifecycle-Bzh5Jo09.js +0 -2
  1519. package/dist/lifecycle-DvbcJYMl.js +0 -355
  1520. package/dist/lifecycle.runtime-Bzh5Jo09.js +0 -2
  1521. package/dist/list-B4xSHRdU.js +0 -2
  1522. package/dist/list-BnhZHpxx.js +0 -207
  1523. package/dist/list.list-command-DAz-Ws_6.js +0 -429
  1524. package/dist/list.model-row-DtdX9KDu.js +0 -39
  1525. package/dist/list.probe-CY6lxq51.js +0 -2
  1526. package/dist/list.probe-DPuE1GOH.js +0 -451
  1527. package/dist/list.provider-catalog-BHc9WXI6.js +0 -211
  1528. package/dist/list.provider-catalog-CFbrroys.js +0 -2
  1529. package/dist/list.registry-load-C1_sr3gb.js +0 -152
  1530. package/dist/list.row-sources-BMtHc9oi.js +0 -474
  1531. package/dist/list.source-plan-Dth72qPP.js +0 -81
  1532. package/dist/list.status-command-BXCnEq8Q.js +0 -815
  1533. package/dist/live-model-switch-Dxav22vq.js +0 -119
  1534. package/dist/llm-slug-generator-6o8RXL11.js +0 -78
  1535. package/dist/load-config-EF3n0Dyo.js +0 -27
  1536. package/dist/load-context-CI_ogQt_.js +0 -82
  1537. package/dist/loader-DtwEzpp-.js +0 -7008
  1538. package/dist/local-dispatch.runtime-21liE3rA.js +0 -10
  1539. package/dist/main-session-restart-recovery-D1g62iJ5.js +0 -2
  1540. package/dist/main-session-restart-recovery-v2I9CEXi.js +0 -389
  1541. package/dist/managed-image-attachments-BEl5qfCT.js +0 -616
  1542. package/dist/managed-image-attachments-D5KqX2Qy.js +0 -2
  1543. package/dist/manager-DZc3xiNq.js +0 -2314
  1544. package/dist/manager-Vf3vLTGe.js +0 -3737
  1545. package/dist/mcp-http-BaJoPKF9.js +0 -583
  1546. package/dist/mcp-http-CpEaJIGJ.js +0 -2
  1547. package/dist/media-runtime-DtP_Ff8m.js +0 -391
  1548. package/dist/media-services-CXYbyIIp.js +0 -416
  1549. package/dist/media-understanding-DvTIsIyr.js +0 -87
  1550. package/dist/media-understanding-provider-DBBAvuwG.js +0 -13
  1551. package/dist/media-understanding-provider-DOf_uZrx.js +0 -70
  1552. package/dist/media-understanding-provider-DdRfNh9h.js +0 -69
  1553. package/dist/media-understanding-provider-mqpQDt8V.js +0 -29
  1554. package/dist/memory-BNk25Hi6.js +0 -437
  1555. package/dist/memory-core-host-engine-embeddings-XsK5xS70.js +0 -667
  1556. package/dist/memory-core-host-engine-foundation-BYkoOLXl.js +0 -15
  1557. package/dist/memory-core-host-engine-qmd-0JuUCKCK.js +0 -2
  1558. package/dist/memory-core-host-engine-storage-MCFGjDwW.js +0 -2
  1559. package/dist/memory-core-host-runtime-cli-fVGH65E8.js +0 -10
  1560. package/dist/memory-core-host-runtime-core-JtXIAdlM.js +0 -12
  1561. package/dist/memory-core-host-runtime-files-BGw_ypoN.js +0 -4
  1562. package/dist/memory-embedding-provider-runtime-3UBzs4sx.js +0 -36
  1563. package/dist/memory-host-core-Y_O5V-mu.js +0 -78
  1564. package/dist/memory-host-search.runtime-B4TzyvmR.js +0 -2
  1565. package/dist/memory-runtime-9kEPAeKV.js +0 -2
  1566. package/dist/memory-runtime-BU4t85uu.js +0 -57
  1567. package/dist/memory-search-CVX--mSz.js +0 -235
  1568. package/dist/message-BVXoNpWP.js +0 -284
  1569. package/dist/message-HaiKqj0A.js +0 -2
  1570. package/dist/message-action-runner-Chwzn02r.js +0 -2
  1571. package/dist/message-action-runner-tEEliptt.js +0 -1922
  1572. package/dist/message-handler-CHDS_NF-.js +0 -1806
  1573. package/dist/metadata-registry-loader-Croa1pgR.js +0 -22
  1574. package/dist/metadata-registry-loader-w0p86vis.js +0 -2
  1575. package/dist/migrate-CPCZJ4H5.js +0 -2
  1576. package/dist/migrate-CUj6m6Cx.js +0 -458
  1577. package/dist/migration-provider-runtime-4r4WGtf2.js +0 -2
  1578. package/dist/migration-provider-runtime-TxrH_mM7.js +0 -68
  1579. package/dist/minimax-web-search-provider.runtime-Dr2GJiWj.js +0 -148
  1580. package/dist/model-BQSouNOa.js +0 -2
  1581. package/dist/model-CAk0bcuO.js +0 -1302
  1582. package/dist/model-auth-BF7w9Fiv.js +0 -705
  1583. package/dist/model-auth-label-r729wcPk.js +0 -67
  1584. package/dist/model-auth-us8b_D5d.js +0 -6
  1585. package/dist/model-catalog-BGykBGxx.js +0 -434
  1586. package/dist/model-catalog-BVXrqFbI.js +0 -3
  1587. package/dist/model-catalog-visibility-Bsup46vy.js +0 -76
  1588. package/dist/model-config.helpers-wzD1EEfE.js +0 -95
  1589. package/dist/model-context-tokens-DrIU9eJc.js +0 -572
  1590. package/dist/model-fallback-GySPjr3J.js +0 -1288
  1591. package/dist/model-fallback-auth.runtime-Dg_Jmguu.js +0 -5
  1592. package/dist/model-picker-BI6jXOjt.js +0 -3
  1593. package/dist/model-picker-DYyJHhfH.js +0 -1135
  1594. package/dist/model-picker-visibility-D_IMZfxd.js +0 -22
  1595. package/dist/model-picker.runtime-B70kQMyc.js +0 -48
  1596. package/dist/model-pricing-cache-CSpUDzSt.js +0 -856
  1597. package/dist/model-pricing-cache-dkPwTUVJ.js +0 -3
  1598. package/dist/model-pricing-cache-state-C6shoEWy.js +0 -83
  1599. package/dist/model-provider-auth-BfZHbTaj.js +0 -2
  1600. package/dist/model-provider-auth-CPCBWvqL.js +0 -375
  1601. package/dist/model-runtime-aliases-DUzusc9_.js +0 -133
  1602. package/dist/model-selection-8UzO5mgF.js +0 -254
  1603. package/dist/model-selection-Cb7azWw1.js +0 -7
  1604. package/dist/model-selection-jDYEo0WI.js +0 -352
  1605. package/dist/model-selection.runtime-D_yHZLbs.js +0 -7
  1606. package/dist/models-BxA2IU3W.js +0 -57
  1607. package/dist/models-auth-status-yG7yyRcv.js +0 -280
  1608. package/dist/models-cli-DUt4uiMH.js +0 -257
  1609. package/dist/models-config-B5bkuh6A.js +0 -1189
  1610. package/dist/models-config-Xj8vG_x2.js +0 -2
  1611. package/dist/models-config.providers.secrets-DNBB440Z.js +0 -2
  1612. package/dist/models-config.providers.secrets-DNIQlBSE.js +0 -382
  1613. package/dist/models-http-DMILRsry.js +0 -88
  1614. package/dist/monitor-7tD_FE_5.js +0 -60
  1615. package/dist/monitor-HjEwlqJs.js +0 -1024
  1616. package/dist/monitor.account-D0F9tnWD.js +0 -5382
  1617. package/dist/music-generation-provider-3ykPaUwR.js +0 -308
  1618. package/dist/native-hook-relay-BJKHIhWd.js +0 -1378
  1619. package/dist/native-hook-relay-V8Kappw1.js +0 -19
  1620. package/dist/node-cli-BLVyQ93e.js +0 -2806
  1621. package/dist/node-command-policy-B0ezpI_O.js +0 -295
  1622. package/dist/nodes-DnWH_15m.js +0 -3
  1623. package/dist/nodes-RkB4ZmP6.js +0 -1483
  1624. package/dist/nodes-cli-upwPs91b.js +0 -960
  1625. package/dist/nodes-pending--sojaxpI.js +0 -211
  1626. package/dist/nodes-utils-Yks_uDZK.js +0 -85
  1627. package/dist/oauth-CQN2efEy.js +0 -207
  1628. package/dist/oauth-DApi3OI9.js +0 -746
  1629. package/dist/oauth-DkUWBub2.js +0 -852
  1630. package/dist/onboard-CiQSBSrz.js +0 -768
  1631. package/dist/onboard-channels-DaWYXiLv.js +0 -1534
  1632. package/dist/onboard-channels-DnwM2_IL.js +0 -2
  1633. package/dist/onboard-custom-BQPckD0V.js +0 -3
  1634. package/dist/onboard-custom-config-BmbThk2-.js +0 -422
  1635. package/dist/onboard-custom-xInFj1Rs.js +0 -280
  1636. package/dist/onboard-search-DSfmthe5.js +0 -412
  1637. package/dist/openai-compat-errors-VR4SN1MV.js +0 -136
  1638. package/dist/openai-http-DV95ynPi.js +0 -836
  1639. package/dist/openai-transport-stream-BwpzqR-b.js +0 -3427
  1640. package/dist/openresponses-http-DPchx8IC.js +0 -1175
  1641. package/dist/operations-f9R8j-r9.js +0 -805
  1642. package/dist/order-BQx8mNGZ.js +0 -218
  1643. package/dist/outbound-attachment-C4yojK6p.js +0 -19
  1644. package/dist/param-readers-BIXyd5la.js +0 -2
  1645. package/dist/payloads-DrY1bKyF.js +0 -256
  1646. package/dist/persistent-bindings.lifecycle-BiPN7luW.js +0 -85
  1647. package/dist/persistent-bindings.lifecycle-X3wfan2Z.js +0 -2
  1648. package/dist/plugin-enabled-CqsBObeO.js +0 -232
  1649. package/dist/plugin-install-CfB1_kpX.js +0 -118
  1650. package/dist/plugin-install-DzMraXHH.js +0 -2
  1651. package/dist/plugin-install-config-policy-BD_elPNg.js +0 -169
  1652. package/dist/plugin-registration-Dy58ncPf.js +0 -97
  1653. package/dist/plugin-registry-BlmODeop.js +0 -3
  1654. package/dist/plugin-registry-k5OK18l5.js +0 -2
  1655. package/dist/plugin-runtime-B3t53CKr.js +0 -102
  1656. package/dist/plugin-sdk/bundled-channel-config-schema-C3pWWvwG.d.ts +0 -3169
  1657. package/dist/plugin-sdk/config-schema-D7cABQ6o.d.ts +0 -33
  1658. package/dist/plugin-sdk/zod-schema.core-CwBNqcXp.d.ts +0 -166
  1659. package/dist/plugin-service-sKF4gWFm.js +0 -1249
  1660. package/dist/plugins-authoring-command-I72k2cuv.js +0 -304
  1661. package/dist/plugins-cli-DMQRbPsU.js +0 -63
  1662. package/dist/plugins-cli.runtime-CvDuKFJj.js +0 -339
  1663. package/dist/plugins-command-helpers-C5WMM4bk.js +0 -164
  1664. package/dist/plugins-command-helpers-DDt_pMQ4.js +0 -2
  1665. package/dist/plugins-inspect-command-ka7Hpld3.js +0 -248
  1666. package/dist/plugins-install-command-BHSgof-_.js +0 -2
  1667. package/dist/plugins-install-command-t5caX9q_.js +0 -993
  1668. package/dist/plugins-install-persist-Bah1m3x7.js +0 -252
  1669. package/dist/plugins-list-command-BXLWwXHM.js +0 -184
  1670. package/dist/plugins-uninstall-command-C_3m6CrW.js +0 -118
  1671. package/dist/prepare.runtime-COZaHg5E.js +0 -798
  1672. package/dist/presentation-card-CciJv4ru.js +0 -164
  1673. package/dist/preview-warnings-L4VuEOyB.js +0 -618
  1674. package/dist/profiles-CM2xoUYX.js +0 -194
  1675. package/dist/program-B-4C7bC-.js +0 -131
  1676. package/dist/provider-adapters-Eh8mS2Fd.js +0 -104
  1677. package/dist/provider-api-key-auth-DTh2cbmS.js +0 -117
  1678. package/dist/provider-api-key-auth.runtime-DrTYYfxK.js +0 -14
  1679. package/dist/provider-auth-Bnaijzmv.js +0 -281
  1680. package/dist/provider-auth-api-key-CNP8o5E7.js +0 -5
  1681. package/dist/provider-auth-choice-Devw4sQf.js +0 -311
  1682. package/dist/provider-auth-choice-helpers-DmVudRp6.js +0 -210
  1683. package/dist/provider-auth-choice.runtime-C337IQ3W.js +0 -2
  1684. package/dist/provider-auth-choice.runtime-DqGYalFo.js +0 -18
  1685. package/dist/provider-auth-guidance-Bk4WV6Lg.js +0 -2
  1686. package/dist/provider-auth-guidance-C7NCKuKn.js +0 -34
  1687. package/dist/provider-auth-helpers-r7mC8I5l.js +0 -177
  1688. package/dist/provider-auth-login.runtime-BFJgAAS6.js +0 -156
  1689. package/dist/provider-auth-runtime-BiLPGiMW.js +0 -186
  1690. package/dist/provider-discovery-uxRmAIf_.js +0 -95
  1691. package/dist/provider-discovery.runtime-mwbSivDS.js +0 -290
  1692. package/dist/provider-dispatcher-CtKWj3r-.js +0 -22
  1693. package/dist/provider-entry-DjACqdrB.js +0 -134
  1694. package/dist/provider-hook-runtime-CpJsM7Dk.js +0 -255
  1695. package/dist/provider-openai-codex-oauth-DWGmVUYg.js +0 -2
  1696. package/dist/provider-openai-codex-oauth-ctxd00JW.js +0 -44
  1697. package/dist/provider-registration-l8EX4voM.js +0 -235
  1698. package/dist/provider-registry-BgIQXJle.js +0 -31
  1699. package/dist/provider-registry-CVuzobHN.js +0 -36
  1700. package/dist/provider-registry-DmdDbSQs.js +0 -61
  1701. package/dist/provider-registry-LqtLqheu.js +0 -61
  1702. package/dist/provider-registry-pTYVjODc.js +0 -61
  1703. package/dist/provider-runtime-BQZSuC9l.js +0 -3
  1704. package/dist/provider-runtime-D9Q-7VuO.js +0 -386
  1705. package/dist/provider-runtime.runtime-C6YZ8YI0.js +0 -26
  1706. package/dist/provider-self-hosted-setup-BIAD2ISe.js +0 -373
  1707. package/dist/provider-stream-DScdaoRo.js +0 -313
  1708. package/dist/provider-stream-PE0IxmpZ.js +0 -1084
  1709. package/dist/provider-stream-family-S2fhlydZ.js +0 -2
  1710. package/dist/provider-usage-DVKHMF6l.js +0 -4
  1711. package/dist/provider-usage-EEjx1av0.js +0 -71
  1712. package/dist/provider-usage.load-Cu11xbrw.js +0 -357
  1713. package/dist/provider-web-search-Dbk7MO-1.js +0 -58
  1714. package/dist/provider-wizard-DS2Xb2eu.js +0 -125
  1715. package/dist/providers.runtime-BPhGcupv.js +0 -240
  1716. package/dist/providers.runtime-DoylK-ht.js +0 -2
  1717. package/dist/proxy-BxacG0p3.js +0 -662
  1718. package/dist/public-artifacts-Dq3y7bBv.js +0 -7
  1719. package/dist/pw-ai-DlSSqerW.js +0 -3064
  1720. package/dist/qmd-manager-B_SG-ejE.js +0 -2040
  1721. package/dist/qr-cli-CT-sE_j9.js +0 -2
  1722. package/dist/qr-cli-DPlDCXJQ.js +0 -371
  1723. package/dist/qr-image--VmmvuDB.js +0 -2
  1724. package/dist/queue-Be2Y7PcO.js +0 -923
  1725. package/dist/read-file-hhemkDfq.js +0 -183
  1726. package/dist/register-service-commands-CeVpCQU3.js +0 -77
  1727. package/dist/register.agent-JLsb-giw.js +0 -152
  1728. package/dist/register.configure-CP0Q-ost.js +0 -16
  1729. package/dist/register.crestodian-CBXyXEix.js +0 -24
  1730. package/dist/register.maintenance-DGIPQ2Vo.js +0 -85
  1731. package/dist/register.message-BBQwz0Ld.js +0 -404
  1732. package/dist/register.migrate-CkgNlvLD.js +0 -106
  1733. package/dist/register.onboard-CS9gRK0c.js +0 -115
  1734. package/dist/register.setup-DhqDOer9.js +0 -40
  1735. package/dist/register.status-health-sessions-CiwQN_lw.js +0 -293
  1736. package/dist/register.subclis-86Md7P0P.js +0 -3
  1737. package/dist/register.subclis-CTVI8zvZ.js +0 -31
  1738. package/dist/register.subclis-core-Cy4AnRCu.js +0 -273
  1739. package/dist/rem-harness-vSsq3HiK.js +0 -649
  1740. package/dist/repair-sequencing-SHADYdcA.js +0 -652
  1741. package/dist/reply-media-paths.runtime-Bf5nxPuP.js +0 -154
  1742. package/dist/reply-media-paths.runtime-sLsMpKGO.js +0 -2
  1743. package/dist/reply-payloads-CJ3w8rSA.js +0 -79
  1744. package/dist/reply-payloads-dedupe-DDFXWCVR.js +0 -176
  1745. package/dist/reply-payloads-dedupe.runtime-DbXPzKmG.js +0 -2
  1746. package/dist/reply-timing-tracker-DjVIBsVb.js +0 -205
  1747. package/dist/reply-turn-admission-nEW5QbY5.js +0 -2056
  1748. package/dist/reply.runtime-B4Dgs3Hg.js +0 -2
  1749. package/dist/reset-preserved-selection-CVD1yeVC.js +0 -45
  1750. package/dist/resolve-DidlinMh.js +0 -106
  1751. package/dist/restart-DzTrO95c.js +0 -121
  1752. package/dist/result-fallback-classifier-BqsFUDvP.js +0 -98
  1753. package/dist/root-help-QGs0dCCN.js +0 -43
  1754. package/dist/route-B3R-uzFG.js +0 -475
  1755. package/dist/route-reply-CdfhgIoY.js +0 -174
  1756. package/dist/route-reply.runtime-DwuU2WjH.js +0 -2
  1757. package/dist/routes-ChXmJocl.js +0 -3701
  1758. package/dist/routes-D-ZF4AdA.js +0 -2
  1759. package/dist/run-ClmVDTET.js +0 -1162
  1760. package/dist/run-auth-profile.runtime-CTxrwz0y.js +0 -2
  1761. package/dist/run-command-CqZJQ0Im.js +0 -2
  1762. package/dist/run-command-GClW75NL.js +0 -23
  1763. package/dist/run-context-BOdGeRg5.js +0 -66
  1764. package/dist/run-context.runtime-CwuKVYPj.js +0 -2
  1765. package/dist/run-delivery.runtime-BQ39dm34.js +0 -762
  1766. package/dist/run-embedded.runtime-e1K4Bt1_.js +0 -4
  1767. package/dist/run-execution-cli.runtime-Cjrgt4cV.js +0 -4
  1768. package/dist/run-executor.runtime-C2JE6JGb.js +0 -330
  1769. package/dist/run-model-catalog.runtime-DkrLKopr.js +0 -2
  1770. package/dist/run-session-state-C5YdQs7o.js +0 -159
  1771. package/dist/run-subagent-registry.runtime-Dl_lXi6y.js +0 -2
  1772. package/dist/runner-CNGHdaIg.js +0 -704
  1773. package/dist/runner.entries-dckPkeld.js +0 -1485
  1774. package/dist/runtime-9LxcVCyw.js +0 -615
  1775. package/dist/runtime-BCOtBS5G.js +0 -3
  1776. package/dist/runtime-C-pgjoJr.js +0 -210
  1777. package/dist/runtime-CyF0vJXG.js +0 -10
  1778. package/dist/runtime-D-7lMvGV.js +0 -2
  1779. package/dist/runtime-D17OmF9G.js +0 -224
  1780. package/dist/runtime-D6SweufG.js +0 -245
  1781. package/dist/runtime-DVAM7AFd.js +0 -2
  1782. package/dist/runtime-DX2ClrP-.js +0 -436
  1783. package/dist/runtime-FOOWuiYX.js +0 -300
  1784. package/dist/runtime-api-B0F0JsV1.js +0 -12
  1785. package/dist/runtime-cREKSBYC.js +0 -2
  1786. package/dist/runtime-channel-BmD4hoCR.js +0 -148
  1787. package/dist/runtime-channel-BsebQSPL.js +0 -2
  1788. package/dist/runtime-config-collectors-BjYeQ0Tk.js +0 -525
  1789. package/dist/runtime-embedded-agent.runtime-A4r23Bn8.js +0 -2
  1790. package/dist/runtime-internal-DkV-EMTK.js +0 -2
  1791. package/dist/runtime-llm.runtime-BQKNnuRc.js +0 -307
  1792. package/dist/runtime-model-auth.runtime-BbGqHVM5.js +0 -2
  1793. package/dist/runtime-model-auth.runtime-rtJH4LBB.js +0 -46
  1794. package/dist/runtime-options-B0EGb1Wq.js +0 -275
  1795. package/dist/runtime-plugin-Bdqm44bH.js +0 -92
  1796. package/dist/runtime-plugins-rZk1eAK_.js +0 -32
  1797. package/dist/runtime-plugins.runtime-DApiYzny.js +0 -2
  1798. package/dist/runtime-prepare.runtime-DWxvnbyY.js +0 -81
  1799. package/dist/runtime-provider-B0slPjtk.js +0 -2
  1800. package/dist/runtime-provider-DLgupOKt.js +0 -24
  1801. package/dist/runtime-registry-loader-Cf2HuMjd.js +0 -2
  1802. package/dist/runtime-registry-loader-DLzDrA7e.js +0 -117
  1803. package/dist/runtime-shared-Bg-OiD4u.js +0 -365
  1804. package/dist/runtime-web-channel-plugin-DrMjRaqi.js +0 -204
  1805. package/dist/scan-DA7Oqxuv.js +0 -573
  1806. package/dist/sdk-security-runtime-WjOaCbga.js +0 -86
  1807. package/dist/sdk-setup-tools-DaYT6_jD.js +0 -8
  1808. package/dist/secrets-cli-fJQ0geWO.js +0 -150
  1809. package/dist/security-cli-CJMwGp8U.js +0 -520
  1810. package/dist/selection-BNwLQzqJ.js +0 -3
  1811. package/dist/selection-Cj-l80pO.js +0 -18365
  1812. package/dist/send-DstYcrDW.js +0 -711
  1813. package/dist/send-aTxtLkJm.js +0 -178
  1814. package/dist/send-media-Bl2ryo6a.js +0 -2072
  1815. package/dist/send-qwDMMnM6.js +0 -1222
  1816. package/dist/send-result-BWRKr16H.js +0 -141
  1817. package/dist/server-CMtA1S09.js +0 -24
  1818. package/dist/server-DIRaYiiH.js +0 -72
  1819. package/dist/server-aux-handlers-BRO-9-Jf.js +0 -1347
  1820. package/dist/server-chat-0J_ke0ph.js +0 -827
  1821. package/dist/server-context-DWOSX34k.js +0 -2
  1822. package/dist/server-context-R7MFLFdI.js +0 -955
  1823. package/dist/server-cron-2FuFg2j8.js +0 -2
  1824. package/dist/server-cron-ChPAVQtg.js +0 -3173
  1825. package/dist/server-maintenance-ZvS7Id6T.js +0 -152
  1826. package/dist/server-methods-DSbhPK3k.js +0 -497
  1827. package/dist/server-middleware-CYxFU-e5.js +0 -122
  1828. package/dist/server-model-catalog-B22UhmRr.js +0 -73
  1829. package/dist/server-model-catalog-BJIHPP3P.js +0 -2
  1830. package/dist/server-node-events-tNWJnXQM.js +0 -597
  1831. package/dist/server-plugin-bootstrap-Ccu97zi8.js +0 -71
  1832. package/dist/server-plugins-ByXwKPnj.js +0 -435
  1833. package/dist/server-reload-handlers-ConGiT9Q.js +0 -719
  1834. package/dist/server-restart-sentinel-mPHo61LL.js +0 -700
  1835. package/dist/server-runtime-services-BR1icaUW.js +0 -3
  1836. package/dist/server-runtime-services-Bx8n34dj.js +0 -147
  1837. package/dist/server-runtime-subscriptions-CZklTkRG.js +0 -67
  1838. package/dist/server-session-events-DxdiZYM2.js +0 -244
  1839. package/dist/server-session-key-CYvLslFO.js +0 -75
  1840. package/dist/server-session-key-D9GQut81.js +0 -2
  1841. package/dist/server-startup-config-Byb0vR8j.js +0 -305
  1842. package/dist/server-startup-early-a65fHTQS.js +0 -87
  1843. package/dist/server-startup-memory-ClwzC9jX.js +0 -72
  1844. package/dist/server-startup-plugins-CaBj0Nt2.js +0 -127
  1845. package/dist/server-startup-post-attach-B7TcxkmO.js +0 -793
  1846. package/dist/server-ws-runtime-Cxk_CqMr.js +0 -374
  1847. package/dist/server.impl-CQ6dnx43.js +0 -2622
  1848. package/dist/session-cost-usage-GsYDNvka.js +0 -1600
  1849. package/dist/session-kill-http-CKkxZhhd.js +0 -121
  1850. package/dist/session-log-runtime-Bwc2Oijk.js +0 -1258
  1851. package/dist/session-override-CWbKiXiC.js +0 -134
  1852. package/dist/session-reset-model.runtime-CDFMjwWA.js +0 -144
  1853. package/dist/session-reset-service-SE0aK4cw.js +0 -651
  1854. package/dist/session-status.runtime-Df89I7Fk.js +0 -2
  1855. package/dist/session-store-RkvjJPMQ.js +0 -273
  1856. package/dist/session-store.runtime-C7P5asx7.js +0 -4
  1857. package/dist/session-subagent-reactivation.runtime-BhGUZG1Z.js +0 -2
  1858. package/dist/session-tab-registry-9rSuQ0Yz.js +0 -551
  1859. package/dist/session-utils-De8TIM0h.js +0 -1508
  1860. package/dist/sessions-6b9a00Tl.js +0 -1917
  1861. package/dist/sessions-CEPHczjC.js +0 -316
  1862. package/dist/sessions-CEojHc8b.js +0 -12736
  1863. package/dist/sessions-cleanup-BkG7_sq9.js +0 -165
  1864. package/dist/sessions-history-http-BjJEfjJa.js +0 -432
  1865. package/dist/sessions-patch-PwG5sknc.js +0 -401
  1866. package/dist/sessions-resolve-CSIrd_fi.js +0 -180
  1867. package/dist/sessions-table-8CbU7jXa.js +0 -161
  1868. package/dist/sessions.runtime-BYHMD0M7.js +0 -2
  1869. package/dist/set-BJDpe28W.js +0 -31
  1870. package/dist/set-image-CwTFx7PX.js +0 -17
  1871. package/dist/setup-B6LmeIms.js +0 -614
  1872. package/dist/setup-B_zxHfYu.js +0 -2
  1873. package/dist/setup-onboard-configure-help-fast-path-Bck3SKEH.js +0 -64
  1874. package/dist/setup.finalize-CmLYX-Rf.js +0 -586
  1875. package/dist/setup.gateway-config-H_89Msro.js +0 -281
  1876. package/dist/setup.migration-import-DVzyUjX6.js +0 -2
  1877. package/dist/setup.migration-import-DmJpqoqf.js +0 -200
  1878. package/dist/setup.post-install-migration-WPFWKXXg.js +0 -128
  1879. package/dist/shared-CUhu8NTs.js +0 -5
  1880. package/dist/shared-D-BN2JhY.js +0 -71
  1881. package/dist/shared-ES8nDIcn.js +0 -212
  1882. package/dist/simple-completion-runtime-BGZkWvKr.js +0 -206
  1883. package/dist/simple-completion-runtime-CM_IISYW.js +0 -2
  1884. package/dist/simple-completion-transport-Bo0u9dhp.js +0 -83
  1885. package/dist/snapshot-urls-C1KjRQD5.js +0 -317
  1886. package/dist/speech-core-Bas7e4h0.js +0 -119
  1887. package/dist/speech-provider-BonJQv5S.js +0 -227
  1888. package/dist/speech-provider-CwdKQmDv.js +0 -171
  1889. package/dist/speech-provider-DcQRnYhZ.js +0 -233
  1890. package/dist/stale-oauth-profile-shadows-C3aeAWfv.js +0 -186
  1891. package/dist/stale-oauth-profile-shadows-m5rb8dPc.js +0 -2
  1892. package/dist/standalone-runtime-registry-loader-B9n2LBKC.js +0 -59
  1893. package/dist/startup-context-DY7C4riM.js +0 -314
  1894. package/dist/status-6EPKat7p.js +0 -73
  1895. package/dist/status-C6Fa7Dsf.js +0 -2
  1896. package/dist/status-CNnxDQlM.js +0 -4
  1897. package/dist/status-D2Scvbc0.js +0 -3
  1898. package/dist/status-Ducanro3.js +0 -2
  1899. package/dist/status-_XX_6QVA.js +0 -466
  1900. package/dist/status-all-BP1u6vou.js +0 -573
  1901. package/dist/status-json-DPlOJ_ue.js +0 -15
  1902. package/dist/status-json-command-BT7EwVKj.js +0 -84
  1903. package/dist/status-message-Dzr9-MX-.js +0 -495
  1904. package/dist/status-message.runtime-DFezIt1d.js +0 -6
  1905. package/dist/status-prBlcUV5.js +0 -249
  1906. package/dist/status-queue.runtime-C1bmg2rl.js +0 -2
  1907. package/dist/status-runtime-shared-RjKIPEQ0.js +0 -289
  1908. package/dist/status-subagents.runtime-tsCCe4Ny.js +0 -32
  1909. package/dist/status-text-Bkeyg8Bf.js +0 -301
  1910. package/dist/status.command-D06_4ATq.js +0 -425
  1911. package/dist/status.command-dDEZM84a.js +0 -2
  1912. package/dist/status.command.text-runtime-WH9tP7yg.js +0 -15
  1913. package/dist/status.runtime-B76GaBIR.js +0 -2
  1914. package/dist/status.scan-Bc6clx0F.js +0 -72
  1915. package/dist/status.scan-overview-v_-AaFhC.js +0 -460
  1916. package/dist/status.scan.deps.runtime-BkH1HAb4.js +0 -19
  1917. package/dist/status.scan.fast-json-CrlfKKI3.js +0 -2
  1918. package/dist/status.scan.fast-json-D8v6zfP8.js +0 -163
  1919. package/dist/status.summary-DBhvgOPr.js +0 -276
  1920. package/dist/status.summary-hQV0PKFO.js +0 -2
  1921. package/dist/store-BClomp_4.js +0 -3
  1922. package/dist/store-BHqDPtNw.js +0 -2302
  1923. package/dist/stored-model-override-vm4CtQWX.js +0 -79
  1924. package/dist/subagent-announce-D244Q4w2.js +0 -353
  1925. package/dist/subagent-announce-delivery-qKZfF7Bs.js +0 -1369
  1926. package/dist/subagent-control-c87mVGUE.js +0 -492
  1927. package/dist/subagent-control.runtime-DfQtIsDb.js +0 -3
  1928. package/dist/subagent-hooks-B_UW5Len.js +0 -2
  1929. package/dist/subagent-hooks-CYvFWt_r.js +0 -230
  1930. package/dist/subagent-hooks-api-DZgaJf19.js +0 -23
  1931. package/dist/subagent-registry-BlcoCggo.js +0 -2627
  1932. package/dist/subagent-registry-CuObhNeO.js +0 -3
  1933. package/dist/subagent-session-cleanup-hFF8Z34s.js +0 -390
  1934. package/dist/system-CN_Knfqq.js +0 -111
  1935. package/dist/system-prompt-config-BmZlhYK9.js +0 -918
  1936. package/dist/talk-DrjGczYs.js +0 -2454
  1937. package/dist/target-id-BNpbyWkq.js +0 -107
  1938. package/dist/targets-CQcGo6u4.js +0 -267
  1939. package/dist/targets.runtime-DwcxNI-x.js +0 -2
  1940. package/dist/task-executor-CZg-qt4u.js +0 -349
  1941. package/dist/task-owner-access-Duem5jjb.js +0 -74
  1942. package/dist/task-registry-Cw8pc3Ry.js +0 -2362
  1943. package/dist/task-registry-delivery-runtime-HaiKqj0A.js +0 -2
  1944. package/dist/task-registry.maintenance-BLv3wpK9.js +0 -764
  1945. package/dist/task-registry.maintenance-CvlIcxE-.js +0 -2
  1946. package/dist/task-status-access-C5nDJSI4.js +0 -18
  1947. package/dist/tasks-D3CfEAlq.js +0 -548
  1948. package/dist/tasks-WKnE5fvr.js +0 -153
  1949. package/dist/tasks-audit-system-okJjcOjU.js +0 -210
  1950. package/dist/tasks-json-C-iUgWNu.js +0 -73
  1951. package/dist/tavily-web-search-provider.runtime-jpagljrA.js +0 -112
  1952. package/dist/text-report-BTsF3Pv3.js +0 -695
  1953. package/dist/text-transforms.runtime-CgH_pbcQ.js +0 -113
  1954. package/dist/thread-bindings-BWxpUE9U.js +0 -228
  1955. package/dist/tool-DhJbbm91.js +0 -143
  1956. package/dist/tool-dispatch-CpFUfblu.js +0 -155
  1957. package/dist/tool-images-C-tFlXjE.js +0 -247
  1958. package/dist/tool-plugin-3NejWxZW.js +0 -93
  1959. package/dist/tool-resolution-oW8Cbamd.js +0 -153
  1960. package/dist/tool-result-truncation-CWFGf7Eu.js +0 -498
  1961. package/dist/tool-schema-CMtc7PdZ.js +0 -40
  1962. package/dist/tool-schema-projection-DJRPEEvY.js +0 -215
  1963. package/dist/tool-split-E4RdK5jS.js +0 -323
  1964. package/dist/tools-BAl3JiNw.js +0 -901
  1965. package/dist/tools-DC8tCPxR.js +0 -579
  1966. package/dist/tools-catalog-Dzv9zaBD.js +0 -156
  1967. package/dist/tools-effective-CGvzyIL2.js +0 -442
  1968. package/dist/tools-effective-inventory-GI5N5Q9v.js +0 -379
  1969. package/dist/tools-invoke-CU2U0hNH.js +0 -51
  1970. package/dist/tools-invoke-http-8s3FiUy4.js +0 -68
  1971. package/dist/tools-invoke-shared-DIETrEY7.js +0 -200
  1972. package/dist/tools.runtime-Bnm8CI7w.js +0 -5
  1973. package/dist/transcript-rewrite-Buv2ITw4.js +0 -688
  1974. package/dist/transcripts-tool-BCFlLCFd.js +0 -2
  1975. package/dist/transcripts-tool-CWgNd0Uw.js +0 -656
  1976. package/dist/tts-Aguo4zC5.js +0 -3
  1977. package/dist/tts-Bf77cURn.js +0 -2
  1978. package/dist/tts-DnADOKOP.js +0 -194
  1979. package/dist/tts-runtime-MBSH-nOM.js +0 -1337
  1980. package/dist/tts.runtime-B-NR9osE.js +0 -2
  1981. package/dist/tts.runtime-Bo-QxKgx.js +0 -3
  1982. package/dist/tui-B0CdNmCz.js +0 -4860
  1983. package/dist/tui-ByRcXM3Z.js +0 -2
  1984. package/dist/tui-backend-C52BUoZI.js +0 -256
  1985. package/dist/tui-cli-BQHpZ4n0.js +0 -40
  1986. package/dist/typing-policy-XspVOezC.js +0 -199
  1987. package/dist/usage-BOYwzimH.js +0 -1113
  1988. package/dist/usage-BSmLrVWB.js +0 -623
  1989. package/dist/usage-format-CfzICmvv.js +0 -2
  1990. package/dist/usage-format-DPJKCPic.js +0 -394
  1991. package/dist/video-generation-provider-CdCTztQ7.js +0 -77
  1992. package/dist/video-generation-provider-MUUshUzz.js +0 -325
  1993. package/dist/video-generation-provider-XmzzTa6e.js +0 -297
  1994. package/dist/video-generation-provider-weiQUJE5.js +0 -64
  1995. package/dist/web-fetch-providers.runtime-tD9zqAS2.js +0 -41
  1996. package/dist/web-guarded-fetch-CyhQZ1yD.js +0 -2
  1997. package/dist/web-guarded-fetch-DIXHI-yJ.js +0 -58
  1998. package/dist/web-media-BPnTMYE5.js +0 -4
  1999. package/dist/web-media-DV_tCQiQ.js +0 -2
  2000. package/dist/web-media-DYydVGCK.js +0 -651
  2001. package/dist/web-provider-runtime-shared-h3M6Bqyg.js +0 -142
  2002. package/dist/web-search-provider-common-CEYWuDcp.js +0 -252
  2003. package/dist/web-search-providers.runtime-YrayP296.js +0 -41
  2004. /package/dist/{acp-runtime-backend-CHZtaM6t.js → acp-runtime-backend-B83JR5Zf.js} +0 -0
  2005. /package/dist/{agent-turn-attachments-BYCRK86s.js → agent-turn-attachments-D5uJijuK.js} +0 -0
  2006. /package/dist/{auth-install-policy-t46tJ8jV.js → auth-install-policy-BIpdwrZ9.js} +0 -0
  2007. /package/dist/{cli-backends-BHXnrVN_.js → cli-backends-79CCRQ2a.js} +0 -0
  2008. /package/dist/{command-secret-targets-DZ0J2Wm3.js → command-secret-targets-BOJlcBil.js} +0 -0
  2009. /package/dist/{commands-DWp49Exc.js → commands-Dw9hwmVt.js} +0 -0
  2010. /package/dist/{commands-reset-hooks-MMq2dvff.js → commands-reset-hooks-epArfNOY.js} +0 -0
  2011. /package/dist/{delegate-Dkj_5OvH.js → delegate-Bw8NQXVr.js} +0 -0
  2012. /package/dist/{jobs-BGELIHcx.js → jobs-BIOTaq7l.js} +0 -0
  2013. /package/dist/{kimi-web-search-provider-4PlMYsPx.js → kimi-web-search-provider-Bzg_DiXO.js} +0 -0
  2014. /package/dist/{memory-host-search-Ds9GiNpf.js → memory-host-search-Dph0Mq-v.js} +0 -0
  2015. /package/dist/{minimax-web-search-provider-d5gTJUNg.js → minimax-web-search-provider-CETxDkkI.js} +0 -0
  2016. /package/dist/{model-selection-cli-CO6BHPiL.js → model-selection-cli-DizUvxeY.js} +0 -0
  2017. /package/dist/{provider-auth-choice-preference-f7Us6TQL.js → provider-auth-choice-preference-uJn1811S.js} +0 -0
  2018. /package/dist/{runtime-wfO9bV5y.js → runtime-BEVbpIgZ.js} +0 -0
  2019. /package/dist/{runtime-web-tools-B6vr1LZs.js → runtime-web-tools-Bf0aEe-F.js} +0 -0
  2020. /package/dist/{runtime-web-tools-fallback.runtime-Crs7KfH5.js → runtime-web-tools-fallback.runtime-DU6rTj6l.js} +0 -0
  2021. /package/dist/{session-subagent-reactivation-H5Rdwkyy.js → session-subagent-reactivation-Bb5SCi9J.js} +0 -0
  2022. /package/dist/{tavily-web-search-provider-DbdIzpMv.js → tavily-web-search-provider-CIEhV60D.js} +0 -0
@@ -0,0 +1,3064 @@
1
+ import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString, p as readStringValue } from "./string-coerce-DKw2K5wM.js";
2
+ import { C as resolveNonNegativeIntegerOption, S as resolveIntegerOption, p as parseFiniteNumber } from "./number-coercion-D1aDmIZp.js";
3
+ import { i as formatErrorMessage } from "./errors-5ePGD43N.js";
4
+ import { v as uniqueValues } from "./string-normalization-B8G0vlWE.js";
5
+ import { m as resolveStrictExistingPathsWithinRoot, r as writeExternalFileWithinRoot } from "./fs-safe-CR_om3kX.js";
6
+ import { r as sanitizeUntrustedFileName } from "./sibling-temp-DOXxHtE7.js";
7
+ import { n as resolvePreferredFengMingTmpDir } from "./tmp-fengming-dir-0p6iJKE-.js";
8
+ import { t as SsrFBlockedError } from "./ssrf-CSnp9Gml.js";
9
+ import "./number-runtime-Cu8gqEYx.js";
10
+ import "./string-coerce-runtime-BurriTLB.js";
11
+ import { a as resolveActInteractionTimeoutMs, n as ACT_MAX_VIEWPORT_DIMENSION, o as resolveActWaitTimeoutMs, r as ACT_MAX_WAIT_TIME_MS, t as ACT_MAX_CLICK_DELAY_MS } from "./act-policy-gF8d1KDG.js";
12
+ import "./sdk-security-runtime-Bxhq2O1G.js";
13
+ import { S as BrowserTabNotFoundError, Y as withNoProxyForCdpUrl, c as isWebSocketUrl, d as withCdpSocket, i as fetchJson, l as normalizeCdpHttpBaseForJsonEndpoints, n as assertCdpEndpointAllowed, o as getHeadersWithAuth, t as appendCdpPath } from "./cdp.helpers-GfQkB-B5.js";
14
+ import { a as DEFAULT_DOWNLOAD_DIR, o as DEFAULT_TRACE_DIR, s as DEFAULT_UPLOAD_DIR } from "./config-CsmSEaNn.js";
15
+ import "./tmp-fengming-dir-C2gM7rwb.js";
16
+ import "./errors-C0AUxo3P.js";
17
+ import { C as assertBrowserNavigationRedirectChainAllowed, E as withBrowserNavigationPolicy, S as assertBrowserNavigationAllowed, f as formatAriaSnapshot, l as AX_REF_PATTERN, p as normalizeCdpWsUrl, t as getChromeWebSocketUrl, w as assertBrowserNavigationResultAllowed, x as InvalidBrowserNavigationUrlError, y as ensureOutputDirectory } from "./chrome-BWHc9vYG.js";
18
+ import { a as parseRoleRef, i as getRoleSnapshotStats, l as matchBrowserUrlPattern, n as buildRoleSnapshotFromAiSnapshot, r as buildRoleSnapshotFromAriaSnapshot, t as appendSnapshotUrls } from "./snapshot-urls-B-wkwDI9.js";
19
+ import { n as markPwAiLoaded } from "./pw-ai-state-DL7FXLI8.js";
20
+ import { t as isSelectableCdpBrowserTarget } from "./cdp-target-filter-CaIsrb0G.js";
21
+ import { createRequire } from "node:module";
22
+ import path from "node:path";
23
+ import crypto from "node:crypto";
24
+ //#region extensions/browser/src/browser/output-atomic.ts
25
+ async function writeViaSiblingTempPath(params) {
26
+ await ensureOutputDirectory(params.rootDir);
27
+ await writeExternalFileWithinRoot({
28
+ rootDir: params.rootDir,
29
+ path: params.targetPath,
30
+ write: params.writeTemp
31
+ });
32
+ }
33
+ const playwrightCore = createRequire(import.meta.url)("playwright-core");
34
+ //#endregion
35
+ //#region extensions/browser/src/browser/pw-session.page-cdp.ts
36
+ const BROWSER_REF_MARKER_ATTRIBUTE = "data-fengming-browser-ref";
37
+ async function withPlaywrightPageCdpSession(page, fn) {
38
+ const session = await page.context().newCDPSession(page);
39
+ try {
40
+ return await fn(session);
41
+ } finally {
42
+ await session.detach().catch(() => {});
43
+ }
44
+ }
45
+ async function withPageScopedCdpClient(opts) {
46
+ return await withPlaywrightPageCdpSession(opts.page, async (session) => {
47
+ return await opts.fn((method, params) => session.send(method, params));
48
+ });
49
+ }
50
+ async function markBackendDomRefsOnPage(opts) {
51
+ await opts.page.locator(`[${BROWSER_REF_MARKER_ATTRIBUTE}]`).evaluateAll((elements, attr) => {
52
+ for (const element of elements) if (element instanceof Element) element.removeAttribute(attr);
53
+ }, BROWSER_REF_MARKER_ATTRIBUTE).catch(() => {});
54
+ const refs = opts.refs.filter((entry) => /^ax\d+$/.test(entry.ref) && Number.isFinite(entry.backendDOMNodeId) && Math.floor(entry.backendDOMNodeId) > 0);
55
+ const marked = /* @__PURE__ */ new Set();
56
+ if (!refs.length) return marked;
57
+ return await withPlaywrightPageCdpSession(opts.page, async (session) => {
58
+ const send = async (method, params) => await session.send(method, params);
59
+ await send("DOM.enable").catch(() => {});
60
+ const backendNodeIds = uniqueValues(refs.map((entry) => Math.floor(entry.backendDOMNodeId)));
61
+ const pushed = await send("DOM.pushNodesByBackendIdsToFrontend", { backendNodeIds }).catch(() => ({}));
62
+ const nodeIds = Array.isArray(pushed.nodeIds) ? pushed.nodeIds : [];
63
+ const nodeIdByBackendId = /* @__PURE__ */ new Map();
64
+ for (let index = 0; index < backendNodeIds.length; index += 1) {
65
+ const backendNodeId = backendNodeIds[index];
66
+ const nodeId = nodeIds[index];
67
+ if (backendNodeId && typeof nodeId === "number" && nodeId > 0) nodeIdByBackendId.set(backendNodeId, nodeId);
68
+ }
69
+ for (const entry of refs) {
70
+ const nodeId = nodeIdByBackendId.get(Math.floor(entry.backendDOMNodeId));
71
+ if (!nodeId) continue;
72
+ try {
73
+ await send("DOM.setAttributeValue", {
74
+ nodeId,
75
+ name: BROWSER_REF_MARKER_ATTRIBUTE,
76
+ value: entry.ref
77
+ });
78
+ marked.add(entry.ref);
79
+ } catch {}
80
+ }
81
+ return marked;
82
+ });
83
+ }
84
+ //#endregion
85
+ //#region extensions/browser/src/browser/pw-session.ts
86
+ const { chromium } = playwrightCore;
87
+ var BrowserObservedDialogBlockedError = class extends Error {
88
+ constructor(browserState) {
89
+ super("Browser action blocked by a modal dialog.");
90
+ this.name = "BrowserObservedDialogBlockedError";
91
+ this.browserState = browserState;
92
+ }
93
+ };
94
+ function isBrowserObservedDialogBlockedError(err) {
95
+ return err instanceof BrowserObservedDialogBlockedError;
96
+ }
97
+ const pageStates = /* @__PURE__ */ new WeakMap();
98
+ const contextStates = /* @__PURE__ */ new WeakMap();
99
+ const observedContexts = /* @__PURE__ */ new WeakSet();
100
+ const observedPages = /* @__PURE__ */ new WeakSet();
101
+ const roleRefsByTarget = /* @__PURE__ */ new Map();
102
+ const MAX_ROLE_REFS_CACHE = 50;
103
+ const MAX_CONSOLE_MESSAGES = 500;
104
+ const MAX_PAGE_ERRORS = 200;
105
+ const MAX_NETWORK_REQUESTS = 500;
106
+ const MAX_RECENT_DIALOGS = 20;
107
+ const OBSERVED_DIALOG_TIMEOUT_MS = 12e4;
108
+ const cachedByCdpUrl = /* @__PURE__ */ new Map();
109
+ const connectingByCdpUrl = /* @__PURE__ */ new Map();
110
+ const blockedTargetsByCdpUrl = /* @__PURE__ */ new Set();
111
+ const blockedPageRefsByCdpUrl = /* @__PURE__ */ new Map();
112
+ function resolveObservedDialogTimeoutMs(timeoutMs) {
113
+ const parsed = parseFiniteNumber(timeoutMs);
114
+ return Math.max(1, Math.floor(parsed ?? OBSERVED_DIALOG_TIMEOUT_MS));
115
+ }
116
+ function normalizeCdpUrl(raw) {
117
+ return raw.replace(/\/$/, "");
118
+ }
119
+ function buildManagedDownloadPath(fileName) {
120
+ const id = crypto.randomUUID();
121
+ const safeName = sanitizeUntrustedFileName(fileName, "download.bin");
122
+ return path.join(DEFAULT_DOWNLOAD_DIR, `${id}-${safeName}`);
123
+ }
124
+ function hasCachedPlaywrightBrowserConnection(cdpUrl) {
125
+ return cachedByCdpUrl.has(normalizeCdpUrl(cdpUrl));
126
+ }
127
+ function isRecoverablePlaywrightDisconnectError(err) {
128
+ const message = formatErrorMessage(err).toLowerCase();
129
+ return message.includes("target page, context or browser has been closed") || message.includes("browser has been closed") || message.includes("browser disconnected") || message.includes("target closed") || message.includes("connection closed") || message.includes("websocket closed") || message.includes("cdp socket closed");
130
+ }
131
+ function isRecoverableStalePageSelectionError(err, reusedCachedBrowser) {
132
+ if (!reusedCachedBrowser) return false;
133
+ if (err instanceof Error && err.message.includes("No pages available in the connected browser.")) return true;
134
+ if (err instanceof BrowserTabNotFoundError) return true;
135
+ return (err instanceof Error ? err.message : formatErrorMessage(err)).toLowerCase().includes("tab not found");
136
+ }
137
+ function findNetworkRequestById(state, id) {
138
+ for (let i = state.requests.length - 1; i >= 0; i -= 1) {
139
+ const candidate = state.requests[i];
140
+ if (candidate && candidate.id === id) return candidate;
141
+ }
142
+ }
143
+ function appendRecentDialog(state, record) {
144
+ state.recentDialogs.push(record);
145
+ while (state.recentDialogs.length > MAX_RECENT_DIALOGS) state.recentDialogs.shift();
146
+ }
147
+ function serializeDialogRecord(dialog) {
148
+ return {
149
+ id: dialog.id,
150
+ type: dialog.type,
151
+ message: dialog.message,
152
+ ...dialog.defaultValue !== void 0 ? { defaultValue: dialog.defaultValue } : {},
153
+ openedAt: dialog.openedAt,
154
+ ...dialog.closedAt !== void 0 ? { closedAt: dialog.closedAt } : {},
155
+ ...dialog.closedBy !== void 0 ? { closedBy: dialog.closedBy } : {}
156
+ };
157
+ }
158
+ function serializePendingDialog(dialog) {
159
+ return serializeDialogRecord(dialog);
160
+ }
161
+ function serializeObservedBrowserState(state) {
162
+ return { dialogs: {
163
+ pending: state.pendingDialogs.map(serializePendingDialog),
164
+ recent: state.recentDialogs.map(serializeDialogRecord)
165
+ } };
166
+ }
167
+ function clearArmedDialogResponse(state) {
168
+ if (state.armedDialogResponse?.timer) clearTimeout(state.armedDialogResponse.timer);
169
+ state.armedDialogResponse = void 0;
170
+ }
171
+ function abortActionsBlockedByDialog(state) {
172
+ if (state.dialogAbortControllers.size === 0) return;
173
+ const err = new BrowserObservedDialogBlockedError(serializeObservedBrowserState(state));
174
+ for (const controller of state.dialogAbortControllers) if (!controller.signal.aborted) controller.abort(err);
175
+ state.dialogAbortControllers.clear();
176
+ }
177
+ function isNoDialogShowingError(err) {
178
+ return (err instanceof Error ? err.message : String(err)).toLowerCase().includes("no dialog is showing");
179
+ }
180
+ async function settleObservedDialog(params) {
181
+ const { state, pending } = params;
182
+ state.pendingDialogs = state.pendingDialogs.filter((dialog) => dialog.id !== pending.id);
183
+ let closedBy = params.closedBy;
184
+ try {
185
+ if (params.accept) await pending.dialog.accept(params.promptText);
186
+ else await pending.dialog.dismiss();
187
+ } catch (err) {
188
+ if (!isNoDialogShowingError(err)) {
189
+ if (params.closedBy === "agent") state.pendingDialogs.push(pending);
190
+ throw err;
191
+ }
192
+ closedBy = "remote";
193
+ }
194
+ const record = {
195
+ id: pending.id,
196
+ type: pending.type,
197
+ message: pending.message,
198
+ ...pending.defaultValue !== void 0 ? { defaultValue: pending.defaultValue } : {},
199
+ openedAt: pending.openedAt,
200
+ closedAt: (/* @__PURE__ */ new Date()).toISOString(),
201
+ closedBy
202
+ };
203
+ appendRecentDialog(state, record);
204
+ return record;
205
+ }
206
+ function observeDialog(pageState, dialog) {
207
+ pageState.nextObservedDialogId += 1;
208
+ const type = dialog.type();
209
+ const defaultValue = dialog.defaultValue();
210
+ const pending = {
211
+ id: `d${pageState.nextObservedDialogId}`,
212
+ type,
213
+ message: dialog.message(),
214
+ openedAt: (/* @__PURE__ */ new Date()).toISOString(),
215
+ dialog,
216
+ ...type === "prompt" ? { defaultValue } : {}
217
+ };
218
+ pageState.pendingDialogs.push(pending);
219
+ const armed = pageState.armedDialogResponse;
220
+ if (armed && armed.expiresAt >= Date.now()) {
221
+ clearArmedDialogResponse(pageState);
222
+ settleObservedDialog({
223
+ state: pageState,
224
+ pending,
225
+ accept: armed.accept,
226
+ ...armed.promptText !== void 0 ? { promptText: armed.promptText } : {},
227
+ closedBy: "armed"
228
+ }).catch(() => {});
229
+ return;
230
+ }
231
+ if (armed) clearArmedDialogResponse(pageState);
232
+ abortActionsBlockedByDialog(pageState);
233
+ }
234
+ function targetKey(cdpUrl, targetId) {
235
+ return `${normalizeCdpUrl(cdpUrl)}::${targetId}`;
236
+ }
237
+ function roleRefsKey(cdpUrl, targetId) {
238
+ return targetKey(cdpUrl, targetId);
239
+ }
240
+ function isBlockedTarget(cdpUrl, targetId) {
241
+ const normalizedTargetId = normalizeOptionalString(targetId) ?? "";
242
+ if (!normalizedTargetId) return false;
243
+ return blockedTargetsByCdpUrl.has(targetKey(cdpUrl, normalizedTargetId));
244
+ }
245
+ function markTargetBlocked(cdpUrl, targetId) {
246
+ const normalizedTargetId = normalizeOptionalString(targetId) ?? "";
247
+ if (!normalizedTargetId) return;
248
+ blockedTargetsByCdpUrl.add(targetKey(cdpUrl, normalizedTargetId));
249
+ }
250
+ function clearBlockedTarget(cdpUrl, targetId) {
251
+ const normalizedTargetId = normalizeOptionalString(targetId) ?? "";
252
+ if (!normalizedTargetId) return;
253
+ blockedTargetsByCdpUrl.delete(targetKey(cdpUrl, normalizedTargetId));
254
+ }
255
+ function clearBlockedTargetsForCdpUrl(cdpUrl) {
256
+ if (!cdpUrl) {
257
+ blockedTargetsByCdpUrl.clear();
258
+ return;
259
+ }
260
+ const prefix = `${normalizeCdpUrl(cdpUrl)}::`;
261
+ for (const key of blockedTargetsByCdpUrl) if (key.startsWith(prefix)) blockedTargetsByCdpUrl.delete(key);
262
+ }
263
+ function blockedPageRefsForCdpUrl(cdpUrl) {
264
+ const normalized = normalizeCdpUrl(cdpUrl);
265
+ const existing = blockedPageRefsByCdpUrl.get(normalized);
266
+ if (existing) return existing;
267
+ const created = /* @__PURE__ */ new WeakSet();
268
+ blockedPageRefsByCdpUrl.set(normalized, created);
269
+ return created;
270
+ }
271
+ function isBlockedPageRef(cdpUrl, page) {
272
+ return blockedPageRefsByCdpUrl.get(normalizeCdpUrl(cdpUrl))?.has(page) ?? false;
273
+ }
274
+ function markPageRefBlocked(cdpUrl, page) {
275
+ blockedPageRefsForCdpUrl(cdpUrl).add(page);
276
+ }
277
+ function clearBlockedPageRefsForCdpUrl(cdpUrl) {
278
+ if (!cdpUrl) {
279
+ blockedPageRefsByCdpUrl.clear();
280
+ return;
281
+ }
282
+ blockedPageRefsByCdpUrl.delete(normalizeCdpUrl(cdpUrl));
283
+ }
284
+ function clearBlockedPageRef(cdpUrl, page) {
285
+ blockedPageRefsByCdpUrl.get(normalizeCdpUrl(cdpUrl))?.delete(page);
286
+ }
287
+ function takeCachedPlaywrightBrowserConnection(cdpUrl) {
288
+ const normalized = normalizeCdpUrl(cdpUrl);
289
+ const cur = cachedByCdpUrl.get(normalized);
290
+ cachedByCdpUrl.delete(normalized);
291
+ connectingByCdpUrl.delete(normalized);
292
+ if (!cur) return null;
293
+ if (cur.onDisconnected && typeof cur.browser.off === "function") cur.browser.off("disconnected", cur.onDisconnected);
294
+ return cur;
295
+ }
296
+ function evictStalePlaywrightBrowserConnection(cdpUrl) {
297
+ takeCachedPlaywrightBrowserConnection(cdpUrl)?.browser.close().catch(() => {});
298
+ }
299
+ function hasBlockedTargetsForCdpUrl(cdpUrl) {
300
+ const prefix = `${normalizeCdpUrl(cdpUrl)}::`;
301
+ for (const key of blockedTargetsByCdpUrl) if (key.startsWith(prefix)) return true;
302
+ return false;
303
+ }
304
+ var BlockedBrowserTargetError = class extends Error {
305
+ constructor() {
306
+ super("Browser target is unavailable after SSRF policy blocked its navigation.");
307
+ this.name = "BlockedBrowserTargetError";
308
+ }
309
+ };
310
+ function rememberRoleRefsForTarget(opts) {
311
+ const targetId = normalizeOptionalString(opts.targetId) ?? "";
312
+ if (!targetId) return;
313
+ roleRefsByTarget.set(roleRefsKey(opts.cdpUrl, targetId), {
314
+ refs: opts.refs,
315
+ ...opts.frameSelector ? { frameSelector: opts.frameSelector } : {},
316
+ ...opts.mode ? { mode: opts.mode } : {}
317
+ });
318
+ while (roleRefsByTarget.size > MAX_ROLE_REFS_CACHE) {
319
+ const first = roleRefsByTarget.keys().next();
320
+ if (first.done) break;
321
+ roleRefsByTarget.delete(first.value);
322
+ }
323
+ }
324
+ function storeRoleRefsForTarget(opts) {
325
+ const state = ensurePageState(opts.page);
326
+ state.roleRefs = opts.refs;
327
+ state.roleRefsFrameSelector = opts.frameSelector;
328
+ state.roleRefsMode = opts.mode;
329
+ const targetId = normalizeOptionalString(opts.targetId);
330
+ if (!targetId) return;
331
+ rememberRoleRefsForTarget({
332
+ cdpUrl: opts.cdpUrl,
333
+ targetId,
334
+ refs: opts.refs,
335
+ frameSelector: opts.frameSelector,
336
+ mode: opts.mode
337
+ });
338
+ }
339
+ function restoreRoleRefsForTarget(opts) {
340
+ const targetId = normalizeOptionalString(opts.targetId) ?? "";
341
+ if (!targetId) return;
342
+ const cached = roleRefsByTarget.get(roleRefsKey(opts.cdpUrl, targetId));
343
+ if (!cached) return;
344
+ const state = ensurePageState(opts.page);
345
+ if (state.roleRefs) return;
346
+ state.roleRefs = cached.refs;
347
+ state.roleRefsFrameSelector = cached.frameSelector;
348
+ state.roleRefsMode = cached.mode;
349
+ }
350
+ function ensurePageState(page) {
351
+ const existing = pageStates.get(page);
352
+ if (existing) return existing;
353
+ const state = {
354
+ console: [],
355
+ errors: [],
356
+ requests: [],
357
+ requestIds: /* @__PURE__ */ new WeakMap(),
358
+ nextRequestId: 0,
359
+ armIdUpload: 0,
360
+ armIdDownload: 0,
361
+ downloadWaiterDepth: 0,
362
+ nextObservedDialogId: 0,
363
+ pendingDialogs: [],
364
+ recentDialogs: [],
365
+ dialogAbortControllers: /* @__PURE__ */ new Set()
366
+ };
367
+ pageStates.set(page, state);
368
+ if (!observedPages.has(page)) {
369
+ observedPages.add(page);
370
+ page.on("console", (msg) => {
371
+ const entry = {
372
+ type: msg.type(),
373
+ text: msg.text(),
374
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
375
+ location: msg.location()
376
+ };
377
+ state.console.push(entry);
378
+ if (state.console.length > MAX_CONSOLE_MESSAGES) state.console.shift();
379
+ });
380
+ page.on("pageerror", (err) => {
381
+ state.errors.push({
382
+ message: err.message || String(err),
383
+ name: err.name || void 0,
384
+ stack: err.stack || void 0,
385
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
386
+ });
387
+ if (state.errors.length > MAX_PAGE_ERRORS) state.errors.shift();
388
+ });
389
+ page.on("request", (req) => {
390
+ state.nextRequestId += 1;
391
+ const id = `r${state.nextRequestId}`;
392
+ state.requestIds.set(req, id);
393
+ state.requests.push({
394
+ id,
395
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
396
+ method: req.method(),
397
+ url: req.url(),
398
+ resourceType: req.resourceType()
399
+ });
400
+ if (state.requests.length > MAX_NETWORK_REQUESTS) state.requests.shift();
401
+ });
402
+ page.on("response", (resp) => {
403
+ const req = resp.request();
404
+ const id = state.requestIds.get(req);
405
+ if (!id) return;
406
+ const rec = findNetworkRequestById(state, id);
407
+ if (!rec) return;
408
+ rec.status = resp.status();
409
+ rec.ok = resp.ok();
410
+ });
411
+ page.on("requestfailed", (req) => {
412
+ const id = state.requestIds.get(req);
413
+ if (!id) return;
414
+ const rec = findNetworkRequestById(state, id);
415
+ if (!rec) return;
416
+ rec.failureText = req.failure()?.errorText;
417
+ rec.ok = false;
418
+ });
419
+ page.on("dialog", (dialog) => {
420
+ observeDialog(state, dialog);
421
+ });
422
+ page.on("download", (download) => {
423
+ if (state.downloadWaiterDepth > 0) return;
424
+ const managedPath = buildManagedDownloadPath(sanitizeUntrustedFileName(download.suggestedFilename?.() || "download.bin", "download.bin"));
425
+ const managedSave = (async () => {
426
+ await writeViaSiblingTempPath({
427
+ rootDir: DEFAULT_DOWNLOAD_DIR,
428
+ targetPath: managedPath,
429
+ writeTemp: async (tempPath) => {
430
+ await download.saveAs?.(tempPath);
431
+ }
432
+ });
433
+ return managedPath;
434
+ })();
435
+ managedSave.catch(() => {});
436
+ download.path = async () => await managedSave;
437
+ });
438
+ page.on("close", () => {
439
+ clearArmedDialogResponse(state);
440
+ for (const controller of state.dialogAbortControllers) if (!controller.signal.aborted) controller.abort(/* @__PURE__ */ new Error("页面在浏览器操作完成前已关闭"));
441
+ state.dialogAbortControllers.clear();
442
+ state.pendingDialogs = [];
443
+ pageStates.delete(page);
444
+ observedPages.delete(page);
445
+ });
446
+ }
447
+ return state;
448
+ }
449
+ function getObservedBrowserStateForPage(page) {
450
+ return serializeObservedBrowserState(ensurePageState(page));
451
+ }
452
+ async function getObservedBrowserStateViaPlaywright(opts) {
453
+ return getObservedBrowserStateForPage(await getPageForTargetId(opts));
454
+ }
455
+ function resolvePendingDialogForResponse(params) {
456
+ const dialogId = normalizeOptionalString(params.dialogId);
457
+ if (dialogId) {
458
+ const found = params.state.pendingDialogs.find((dialog) => dialog.id === dialogId);
459
+ if (found) return found;
460
+ throw new Error(`Dialog "${dialogId}" is not pending.`);
461
+ }
462
+ if (params.state.pendingDialogs.length === 1) return params.state.pendingDialogs[0];
463
+ if (params.state.pendingDialogs.length > 1) throw new Error("存在多个待处理对话框,请传入 dialogId");
464
+ throw new Error("没有待处理的对话框");
465
+ }
466
+ async function respondToObservedDialogOnPage(opts) {
467
+ const state = ensurePageState(opts.page);
468
+ return await settleObservedDialog({
469
+ state,
470
+ pending: resolvePendingDialogForResponse({
471
+ state,
472
+ ...opts.dialogId !== void 0 ? { dialogId: opts.dialogId } : {}
473
+ }),
474
+ accept: opts.accept,
475
+ ...opts.promptText !== void 0 ? { promptText: opts.promptText } : {},
476
+ closedBy: opts.closedBy ?? "agent"
477
+ });
478
+ }
479
+ async function respondToObservedDialogViaPlaywright(opts) {
480
+ return await respondToObservedDialogOnPage({
481
+ page: await getPageForTargetId(opts),
482
+ accept: opts.accept,
483
+ ...opts.dialogId !== void 0 ? { dialogId: opts.dialogId } : {},
484
+ ...opts.promptText !== void 0 ? { promptText: opts.promptText } : {}
485
+ });
486
+ }
487
+ function markObservedDialogsHandledRemotelyForPage(page) {
488
+ const state = ensurePageState(page);
489
+ const pending = state.pendingDialogs.splice(0);
490
+ const closedAt = (/* @__PURE__ */ new Date()).toISOString();
491
+ for (const dialog of pending) appendRecentDialog(state, {
492
+ id: dialog.id,
493
+ type: dialog.type,
494
+ message: dialog.message,
495
+ ...dialog.defaultValue !== void 0 ? { defaultValue: dialog.defaultValue } : {},
496
+ openedAt: dialog.openedAt,
497
+ closedAt,
498
+ closedBy: "remote"
499
+ });
500
+ return serializeObservedBrowserState(state);
501
+ }
502
+ function armObservedDialogResponseOnPage(opts) {
503
+ const state = ensurePageState(opts.page);
504
+ clearArmedDialogResponse(state);
505
+ const timeoutMs = resolveObservedDialogTimeoutMs(opts.timeoutMs);
506
+ const response = {
507
+ accept: opts.accept,
508
+ expiresAt: Date.now() + timeoutMs,
509
+ ...opts.promptText !== void 0 ? { promptText: opts.promptText } : {}
510
+ };
511
+ response.timer = setTimeout(() => {
512
+ if (state.armedDialogResponse === response) state.armedDialogResponse = void 0;
513
+ }, timeoutMs);
514
+ state.armedDialogResponse = response;
515
+ }
516
+ function createObservedDialogAbortSignalForPage(opts) {
517
+ const state = ensurePageState(opts.page);
518
+ const controller = new AbortController();
519
+ const abortForCurrentDialog = () => {
520
+ if (!controller.signal.aborted) controller.abort(new BrowserObservedDialogBlockedError(serializeObservedBrowserState(state)));
521
+ };
522
+ const abortForParent = () => {
523
+ if (!controller.signal.aborted) controller.abort(opts.parentSignal?.reason ?? /* @__PURE__ */ new Error("已中止"));
524
+ };
525
+ if (state.pendingDialogs.length > 0) abortForCurrentDialog();
526
+ else state.dialogAbortControllers.add(controller);
527
+ if (opts.parentSignal) if (opts.parentSignal.aborted) abortForParent();
528
+ else opts.parentSignal.addEventListener("abort", abortForParent, { once: true });
529
+ return {
530
+ signal: controller.signal,
531
+ cleanup: () => {
532
+ state.dialogAbortControllers.delete(controller);
533
+ opts.parentSignal?.removeEventListener("abort", abortForParent);
534
+ }
535
+ };
536
+ }
537
+ function observeContext(context) {
538
+ if (observedContexts.has(context)) return;
539
+ observedContexts.add(context);
540
+ ensureContextState(context);
541
+ for (const page of context.pages()) ensurePageState(page);
542
+ context.on("page", (page) => ensurePageState(page));
543
+ }
544
+ function ensureContextState(context) {
545
+ const existing = contextStates.get(context);
546
+ if (existing) return existing;
547
+ const state = { traceActive: false };
548
+ contextStates.set(context, state);
549
+ return state;
550
+ }
551
+ function observeBrowser(browser) {
552
+ for (const context of browser.contexts()) observeContext(context);
553
+ }
554
+ async function connectBrowser(cdpUrl, ssrfPolicy) {
555
+ const normalized = normalizeCdpUrl(cdpUrl);
556
+ const cached = cachedByCdpUrl.get(normalized);
557
+ if (cached) return cached;
558
+ await assertCdpEndpointAllowed(normalized, ssrfPolicy);
559
+ const connecting = connectingByCdpUrl.get(normalized);
560
+ if (connecting) return await connecting;
561
+ const connectWithRetry = async () => {
562
+ let lastErr;
563
+ for (let attempt = 0; attempt < 3; attempt += 1) try {
564
+ const timeout = 5e3 + attempt * 2e3;
565
+ const endpoint = await getChromeWebSocketUrl(normalized, timeout, ssrfPolicy).catch(() => null) ?? normalized;
566
+ const connectEndpoint = async (target) => {
567
+ const headers = getHeadersWithAuth(target);
568
+ return await withNoProxyForCdpUrl(target, () => chromium.connectOverCDP(target, {
569
+ timeout,
570
+ headers
571
+ }));
572
+ };
573
+ let browser;
574
+ try {
575
+ browser = await connectEndpoint(endpoint);
576
+ } catch (err) {
577
+ if (!isWebSocketUrl(normalized) || endpoint === normalized) throw err;
578
+ browser = await connectEndpoint(normalized);
579
+ }
580
+ const onDisconnected = () => {
581
+ if (cachedByCdpUrl.get(normalized)?.browser === browser) cachedByCdpUrl.delete(normalized);
582
+ };
583
+ const connected = {
584
+ browser,
585
+ cdpUrl: normalized,
586
+ onDisconnected
587
+ };
588
+ cachedByCdpUrl.set(normalized, connected);
589
+ browser.on("disconnected", onDisconnected);
590
+ observeBrowser(browser);
591
+ return connected;
592
+ } catch (err) {
593
+ lastErr = err;
594
+ if (formatErrorMessage(err).includes("rate limit")) break;
595
+ const delay = 250 + attempt * 250;
596
+ await new Promise((r) => setTimeout(r, delay));
597
+ }
598
+ if (lastErr instanceof Error) throw lastErr;
599
+ const message = lastErr ? formatErrorMessage(lastErr) : "CDP connect failed";
600
+ throw new Error(message);
601
+ };
602
+ const pending = connectWithRetry().finally(() => {
603
+ connectingByCdpUrl.delete(normalized);
604
+ });
605
+ connectingByCdpUrl.set(normalized, pending);
606
+ return await pending;
607
+ }
608
+ async function getAllPages(browser) {
609
+ return browser.contexts().flatMap((c) => c.pages());
610
+ }
611
+ async function partitionAccessiblePages(opts) {
612
+ const accessible = [];
613
+ let blockedCount = 0;
614
+ for (const page of opts.pages) {
615
+ if (isBlockedPageRef(opts.cdpUrl, page)) {
616
+ blockedCount += 1;
617
+ continue;
618
+ }
619
+ const targetId = await pageTargetId(page).catch(() => null);
620
+ if (!targetId) {
621
+ if (hasBlockedTargetsForCdpUrl(opts.cdpUrl)) {
622
+ blockedCount += 1;
623
+ continue;
624
+ }
625
+ accessible.push(page);
626
+ continue;
627
+ }
628
+ if (isBlockedTarget(opts.cdpUrl, targetId)) {
629
+ blockedCount += 1;
630
+ continue;
631
+ }
632
+ accessible.push(page);
633
+ }
634
+ return {
635
+ accessible,
636
+ blockedCount
637
+ };
638
+ }
639
+ async function pageTargetId(page) {
640
+ const session = await page.context().newCDPSession(page);
641
+ try {
642
+ return (normalizeOptionalString((await session.send("Target.getTargetInfo"))?.targetInfo?.targetId) ?? "") || null;
643
+ } finally {
644
+ await session.detach().catch(() => {});
645
+ }
646
+ }
647
+ function matchPageByTargetList(pages, targets, targetId) {
648
+ const target = targets.find((entry) => entry.id === targetId);
649
+ if (!target) return null;
650
+ const urlMatch = pages.filter((page) => page.url() === target.url);
651
+ if (urlMatch.length === 1) return urlMatch[0] ?? null;
652
+ if (urlMatch.length > 1) {
653
+ const sameUrlTargets = targets.filter((entry) => entry.url === target.url);
654
+ if (sameUrlTargets.length === urlMatch.length) {
655
+ const idx = sameUrlTargets.findIndex((entry) => entry.id === targetId);
656
+ if (idx >= 0 && idx < urlMatch.length) return urlMatch[idx] ?? null;
657
+ }
658
+ }
659
+ return null;
660
+ }
661
+ async function findPageByTargetIdViaTargetList(pages, targetId, cdpUrl, ssrfPolicy) {
662
+ const cdpHttpBase = normalizeCdpHttpBaseForJsonEndpoints(cdpUrl);
663
+ await assertCdpEndpointAllowed(cdpUrl, ssrfPolicy);
664
+ return matchPageByTargetList(pages, await fetchJson(appendCdpPath(cdpHttpBase, "/json/list"), 2e3), targetId);
665
+ }
666
+ async function findPageByTargetId(browser, targetId, cdpUrl, ssrfPolicy) {
667
+ const pages = await getAllPages(browser);
668
+ let resolvedViaCdp = false;
669
+ for (const page of pages) {
670
+ let tid = null;
671
+ try {
672
+ tid = await pageTargetId(page);
673
+ resolvedViaCdp = true;
674
+ } catch {
675
+ tid = null;
676
+ }
677
+ if (tid && tid === targetId) return page;
678
+ }
679
+ if (cdpUrl) try {
680
+ return await findPageByTargetIdViaTargetList(pages, targetId, cdpUrl, ssrfPolicy);
681
+ } catch {}
682
+ if (!resolvedViaCdp && pages.length === 1) return pages[0] ?? null;
683
+ return null;
684
+ }
685
+ async function resolvePageByTargetIdOrThrow(opts) {
686
+ if (isBlockedTarget(opts.cdpUrl, opts.targetId)) throw new BlockedBrowserTargetError();
687
+ const { browser } = await connectBrowser(opts.cdpUrl, opts.ssrfPolicy);
688
+ const page = await findPageByTargetId(browser, opts.targetId, opts.cdpUrl, opts.ssrfPolicy);
689
+ if (!page) throw new BrowserTabNotFoundError();
690
+ return page;
691
+ }
692
+ async function getPageForTargetIdOnce(opts) {
693
+ if (opts.targetId && isBlockedTarget(opts.cdpUrl, opts.targetId)) throw new BlockedBrowserTargetError();
694
+ const { browser } = await connectBrowser(opts.cdpUrl, opts.ssrfPolicy);
695
+ const pages = await getAllPages(browser);
696
+ if (!pages.length) throw new Error("连接到的浏览器中没有可用页面");
697
+ const { accessible, blockedCount } = await partitionAccessiblePages({
698
+ cdpUrl: opts.cdpUrl,
699
+ pages
700
+ });
701
+ if (!accessible.length) {
702
+ if (blockedCount > 0) throw new BlockedBrowserTargetError();
703
+ throw new Error("连接到的浏览器中没有可用页面");
704
+ }
705
+ const first = accessible[0];
706
+ if (!opts.targetId) return first;
707
+ const found = await findPageByTargetId(browser, opts.targetId, opts.cdpUrl, opts.ssrfPolicy);
708
+ if (found) {
709
+ if (isBlockedPageRef(opts.cdpUrl, found)) throw new BlockedBrowserTargetError();
710
+ const foundTargetId = await pageTargetId(found).catch(() => null);
711
+ if (foundTargetId && isBlockedTarget(opts.cdpUrl, foundTargetId)) throw new BlockedBrowserTargetError();
712
+ return found;
713
+ }
714
+ if (pages.length === 1) return first;
715
+ throw new BrowserTabNotFoundError();
716
+ }
717
+ async function getPageForTargetId(opts) {
718
+ const reusedCachedBrowser = hasCachedPlaywrightBrowserConnection(opts.cdpUrl);
719
+ try {
720
+ return await getPageForTargetIdOnce(opts);
721
+ } catch (err) {
722
+ if (!isRecoverableStalePageSelectionError(err, reusedCachedBrowser)) throw err;
723
+ await closePlaywrightBrowserConnection({ cdpUrl: opts.cdpUrl });
724
+ return await getPageForTargetIdOnce(opts);
725
+ }
726
+ }
727
+ function isTopLevelNavigationRequest(page, request) {
728
+ let sameMainFrame = false;
729
+ try {
730
+ sameMainFrame = request.frame() === page.mainFrame();
731
+ } catch {
732
+ sameMainFrame = true;
733
+ }
734
+ if (!sameMainFrame) return false;
735
+ try {
736
+ if (request.isNavigationRequest()) return true;
737
+ } catch {}
738
+ try {
739
+ return request.resourceType() === "document";
740
+ } catch {
741
+ return false;
742
+ }
743
+ }
744
+ function isSubframeDocumentNavigationRequest(page, request) {
745
+ let sameMainFrame = false;
746
+ try {
747
+ sameMainFrame = request.frame() === page.mainFrame();
748
+ } catch {
749
+ return true;
750
+ }
751
+ if (sameMainFrame) return false;
752
+ try {
753
+ if (request.isNavigationRequest()) return true;
754
+ } catch {}
755
+ try {
756
+ return request.resourceType() === "document";
757
+ } catch {
758
+ return false;
759
+ }
760
+ }
761
+ function isPolicyDenyNavigationError(err) {
762
+ return err instanceof SsrFBlockedError || err instanceof InvalidBrowserNavigationUrlError;
763
+ }
764
+ async function quarantineBlockedTarget(opts) {
765
+ markPageRefBlocked(opts.cdpUrl, opts.page);
766
+ const resolvedTargetId = await pageTargetId(opts.page).catch(() => null);
767
+ const fallbackTargetId = normalizeOptionalString(opts.targetId) ?? "";
768
+ const targetIdToBlock = resolvedTargetId || fallbackTargetId;
769
+ if (targetIdToBlock) markTargetBlocked(opts.cdpUrl, targetIdToBlock);
770
+ }
771
+ async function closeBlockedNavigationTarget(opts) {
772
+ await quarantineBlockedTarget(opts);
773
+ await opts.page.close().catch(() => {});
774
+ }
775
+ async function assertPageNavigationCompletedSafely(opts) {
776
+ const navigationPolicy = withBrowserNavigationPolicy(opts.ssrfPolicy, { browserProxyMode: opts.browserProxyMode });
777
+ try {
778
+ await assertBrowserNavigationRedirectChainAllowed({
779
+ request: opts.response?.request(),
780
+ ...navigationPolicy
781
+ });
782
+ await assertBrowserNavigationResultAllowed({
783
+ url: opts.page.url(),
784
+ ...navigationPolicy
785
+ });
786
+ } catch (err) {
787
+ if (isPolicyDenyNavigationError(err)) await quarantineBlockedTarget({
788
+ cdpUrl: opts.cdpUrl,
789
+ page: opts.page,
790
+ targetId: opts.targetId
791
+ });
792
+ throw err;
793
+ }
794
+ }
795
+ async function continueRouteSafely(route) {
796
+ try {
797
+ await route.continue();
798
+ } catch (err) {
799
+ if ((err instanceof Error ? err.message : "").includes("Route is already handled")) return;
800
+ throw err;
801
+ }
802
+ }
803
+ async function gotoPageWithNavigationGuard(opts) {
804
+ const navigationPolicy = withBrowserNavigationPolicy(opts.ssrfPolicy, { browserProxyMode: opts.browserProxyMode });
805
+ let blockedError = null;
806
+ const handler = async (route, request) => {
807
+ if (blockedError) {
808
+ await route.abort().catch(() => {});
809
+ return;
810
+ }
811
+ const isTopLevel = isTopLevelNavigationRequest(opts.page, request);
812
+ const isSubframeDocument = !isTopLevel && isSubframeDocumentNavigationRequest(opts.page, request);
813
+ if (!isTopLevel && !isSubframeDocument) {
814
+ await continueRouteSafely(route);
815
+ return;
816
+ }
817
+ try {
818
+ await assertBrowserNavigationAllowed({
819
+ url: request.url(),
820
+ ...navigationPolicy
821
+ });
822
+ } catch (err) {
823
+ if (isPolicyDenyNavigationError(err)) {
824
+ if (isTopLevel) blockedError = err;
825
+ await route.abort().catch(() => {});
826
+ return;
827
+ }
828
+ throw err;
829
+ }
830
+ await continueRouteSafely(route);
831
+ };
832
+ await opts.page.route("**", handler);
833
+ try {
834
+ const response = await opts.page.goto(opts.url, { timeout: opts.timeoutMs });
835
+ if (blockedError) throw blockedError;
836
+ return response;
837
+ } catch (err) {
838
+ if (blockedError) throw blockedError;
839
+ throw err;
840
+ } finally {
841
+ await opts.page.unroute("**", handler).catch(() => {});
842
+ if (blockedError) await closeBlockedNavigationTarget({
843
+ cdpUrl: opts.cdpUrl,
844
+ page: opts.page,
845
+ targetId: opts.targetId
846
+ });
847
+ }
848
+ }
849
+ function refLocator(page, ref) {
850
+ const normalized = ref.startsWith("@") ? ref.slice(1) : ref.startsWith("ref=") ? ref.slice(4) : ref;
851
+ if (/^e\d+$/.test(normalized)) {
852
+ const state = pageStates.get(page);
853
+ if (state?.roleRefsMode === "aria") return (state.roleRefsFrameSelector ? page.frameLocator(state.roleRefsFrameSelector) : page).locator(`aria-ref=${normalized}`);
854
+ const info = state?.roleRefs?.[normalized];
855
+ if (!info) throw new Error(`Unknown ref "${normalized}". Run a new snapshot and use a ref from that snapshot.`);
856
+ const locAny = state?.roleRefsFrameSelector ? page.frameLocator(state.roleRefsFrameSelector) : page;
857
+ const locator = info.name ? locAny.getByRole(info.role, {
858
+ name: info.name,
859
+ exact: true
860
+ }) : locAny.getByRole(info.role);
861
+ return info.nth !== void 0 ? locator.nth(info.nth) : locator;
862
+ }
863
+ if (AX_REF_PATTERN.test(normalized)) {
864
+ const state = pageStates.get(page);
865
+ const info = state?.roleRefs?.[normalized];
866
+ if (!info) throw new Error(`Unknown ref "${normalized}". Run a new snapshot and use a ref from that snapshot.`);
867
+ const scope = state.roleRefsFrameSelector ? page.frameLocator(state.roleRefsFrameSelector) : page;
868
+ if (info.domMarker) return scope.locator(`[${BROWSER_REF_MARKER_ATTRIBUTE}="${normalized}"]`);
869
+ const locAny = scope;
870
+ const locator = info.name ? locAny.getByRole(info.role, {
871
+ name: info.name,
872
+ exact: true
873
+ }) : locAny.getByRole(info.role);
874
+ return info.nth !== void 0 ? locator.nth(info.nth) : locator;
875
+ }
876
+ return page.locator(`aria-ref=${normalized}`);
877
+ }
878
+ async function closePlaywrightBrowserConnection(opts) {
879
+ const normalized = opts?.cdpUrl ? normalizeCdpUrl(opts.cdpUrl) : null;
880
+ if (normalized) {
881
+ clearBlockedTargetsForCdpUrl(normalized);
882
+ clearBlockedPageRefsForCdpUrl(normalized);
883
+ const cur = takeCachedPlaywrightBrowserConnection(normalized);
884
+ if (!cur) return;
885
+ await cur.browser.close().catch(() => {});
886
+ return;
887
+ }
888
+ const connections = Array.from(cachedByCdpUrl.values());
889
+ clearBlockedTargetsForCdpUrl();
890
+ clearBlockedPageRefsForCdpUrl();
891
+ cachedByCdpUrl.clear();
892
+ connectingByCdpUrl.clear();
893
+ for (const cur of connections) {
894
+ if (cur.onDisconnected && typeof cur.browser.off === "function") cur.browser.off("disconnected", cur.onDisconnected);
895
+ await cur.browser.close().catch(() => {});
896
+ }
897
+ }
898
+ function cdpSocketNeedsAttach(wsUrl) {
899
+ try {
900
+ const pathname = new URL(wsUrl).pathname;
901
+ return pathname === "/cdp" || pathname.endsWith("/cdp") || pathname.includes("/devtools/browser/");
902
+ } catch {
903
+ return false;
904
+ }
905
+ }
906
+ async function tryTerminateExecutionViaCdp(opts) {
907
+ await assertCdpEndpointAllowed(opts.cdpUrl, opts.ssrfPolicy);
908
+ const cdpHttpBase = normalizeCdpHttpBaseForJsonEndpoints(opts.cdpUrl);
909
+ const pages = await fetchJson(appendCdpPath(cdpHttpBase, "/json/list"), 2e3).catch(() => null);
910
+ if (!pages || pages.length === 0) return;
911
+ const targetId = normalizeOptionalString(opts.targetId) ?? "";
912
+ const wsUrlRaw = normalizeOptionalString(pages.find((p) => normalizeOptionalString(p.id) === targetId)?.webSocketDebuggerUrl) ?? "";
913
+ if (!wsUrlRaw) return;
914
+ const wsUrl = normalizeCdpWsUrl(wsUrlRaw, cdpHttpBase);
915
+ const needsAttach = cdpSocketNeedsAttach(wsUrl);
916
+ const runWithTimeout = async (work, ms) => {
917
+ let timer;
918
+ const timeoutPromise = new Promise((_, reject) => {
919
+ timer = setTimeout(() => reject(/* @__PURE__ */ new Error("CDP 命令超时")), ms);
920
+ });
921
+ try {
922
+ return await Promise.race([work, timeoutPromise]);
923
+ } finally {
924
+ if (timer) clearTimeout(timer);
925
+ }
926
+ };
927
+ await withCdpSocket(wsUrl, async (send) => {
928
+ let sessionId;
929
+ try {
930
+ if (needsAttach) {
931
+ const attachedSessionId = normalizeOptionalString((await runWithTimeout(send("Target.attachToTarget", {
932
+ targetId: opts.targetId,
933
+ flatten: true
934
+ }), 1500))?.sessionId);
935
+ if (attachedSessionId) sessionId = attachedSessionId;
936
+ }
937
+ await runWithTimeout(send("Runtime.terminateExecution", void 0, sessionId), 1500);
938
+ if (sessionId) send("Target.detachFromTarget", { sessionId }).catch(() => {});
939
+ } catch {}
940
+ }, { handshakeTimeoutMs: 2e3 }).catch(() => {});
941
+ }
942
+ /**
943
+ * Best-effort cancellation for stuck page operations.
944
+ *
945
+ * Playwright serializes CDP commands per page; a long-running or stuck operation (notably evaluate)
946
+ * can block all subsequent commands. We cannot safely "cancel" an individual command, and we do
947
+ * not want to close the actual Chromium tab. Instead, we disconnect Playwright's CDP connection
948
+ * so in-flight commands fail fast and the next request reconnects transparently.
949
+ *
950
+ * IMPORTANT: We CANNOT call Connection.close() because Playwright shares a single Connection
951
+ * across all objects (BrowserType, Browser, etc.). Closing it corrupts the entire Playwright
952
+ * instance, preventing reconnection.
953
+ *
954
+ * Instead we:
955
+ * 1. Null out `cached` so the next call triggers a fresh connectOverCDP
956
+ * 2. Fire-and-forget browser.close() — it may hang but won't block us
957
+ * 3. The next connectBrowser() creates a completely new CDP WebSocket connection
958
+ *
959
+ * The old browser.close() eventually resolves when the in-browser evaluate timeout fires,
960
+ * or the old connection gets GC'd. Either way, it doesn't affect the fresh connection.
961
+ */
962
+ async function forceDisconnectPlaywrightForTarget(opts) {
963
+ const normalized = normalizeCdpUrl(opts.cdpUrl);
964
+ const cur = takeCachedPlaywrightBrowserConnection(normalized);
965
+ if (!cur) return;
966
+ const targetId = normalizeOptionalString(opts.targetId) ?? "";
967
+ if (targetId) await tryTerminateExecutionViaCdp({
968
+ cdpUrl: normalized,
969
+ targetId,
970
+ ssrfPolicy: opts.ssrfPolicy
971
+ }).catch(() => {});
972
+ cur.browser.close().catch(() => {});
973
+ }
974
+ async function withPlaywrightSafeReadReconnect(cdpUrl, run) {
975
+ try {
976
+ return await run();
977
+ } catch (err) {
978
+ if (!isRecoverablePlaywrightDisconnectError(err)) throw err;
979
+ evictStalePlaywrightBrowserConnection(cdpUrl);
980
+ return await run();
981
+ }
982
+ }
983
+ /**
984
+ * List all pages/tabs from the persistent Playwright connection.
985
+ * Used for remote profiles where HTTP-based /json/list is ephemeral.
986
+ */
987
+ async function listPagesViaPlaywright(opts) {
988
+ return await withPlaywrightSafeReadReconnect(opts.cdpUrl, async () => {
989
+ const { browser } = await connectBrowser(opts.cdpUrl, opts.ssrfPolicy);
990
+ const pages = await getAllPages(browser);
991
+ const results = [];
992
+ for (const page of pages) {
993
+ if (isBlockedPageRef(opts.cdpUrl, page)) continue;
994
+ let tid;
995
+ try {
996
+ tid = await pageTargetId(page);
997
+ } catch (err) {
998
+ if (isRecoverablePlaywrightDisconnectError(err)) throw err;
999
+ tid = null;
1000
+ }
1001
+ if (tid && !isBlockedTarget(opts.cdpUrl, tid)) {
1002
+ let title = "";
1003
+ try {
1004
+ title = await page.title();
1005
+ } catch (err) {
1006
+ if (isRecoverablePlaywrightDisconnectError(err)) throw err;
1007
+ }
1008
+ let url = "";
1009
+ try {
1010
+ url = page.url();
1011
+ } catch (err) {
1012
+ if (isRecoverablePlaywrightDisconnectError(err)) throw err;
1013
+ }
1014
+ if (!isSelectableCdpBrowserTarget({ url })) continue;
1015
+ results.push({
1016
+ targetId: tid,
1017
+ title,
1018
+ url,
1019
+ type: "page"
1020
+ });
1021
+ }
1022
+ }
1023
+ return results;
1024
+ });
1025
+ }
1026
+ /**
1027
+ * Create a new page/tab using the persistent Playwright connection.
1028
+ * Used for remote profiles where HTTP-based /json/new is ephemeral.
1029
+ * Returns the new page's targetId and metadata.
1030
+ */
1031
+ async function createPageViaPlaywright(opts) {
1032
+ const { browser } = await connectBrowser(opts.cdpUrl, opts.ssrfPolicy);
1033
+ const context = browser.contexts()[0] ?? await browser.newContext();
1034
+ ensureContextState(context);
1035
+ const page = await context.newPage();
1036
+ ensurePageState(page);
1037
+ clearBlockedPageRef(opts.cdpUrl, page);
1038
+ const createdTargetId = await pageTargetId(page).catch(() => null);
1039
+ clearBlockedTarget(opts.cdpUrl, createdTargetId ?? void 0);
1040
+ const targetUrl = opts.url.trim() || "about:blank";
1041
+ if (targetUrl !== "about:blank") {
1042
+ await assertBrowserNavigationAllowed({
1043
+ url: targetUrl,
1044
+ ...withBrowserNavigationPolicy(opts.ssrfPolicy, { browserProxyMode: opts.browserProxyMode })
1045
+ });
1046
+ let response = null;
1047
+ try {
1048
+ response = await gotoPageWithNavigationGuard({
1049
+ cdpUrl: opts.cdpUrl,
1050
+ page,
1051
+ url: targetUrl,
1052
+ timeoutMs: 3e4,
1053
+ ssrfPolicy: opts.ssrfPolicy,
1054
+ browserProxyMode: opts.browserProxyMode,
1055
+ targetId: createdTargetId ?? void 0
1056
+ });
1057
+ } catch (err) {
1058
+ if (isPolicyDenyNavigationError(err) || err instanceof BlockedBrowserTargetError) throw err;
1059
+ }
1060
+ try {
1061
+ await assertPageNavigationCompletedSafely({
1062
+ cdpUrl: opts.cdpUrl,
1063
+ page,
1064
+ response,
1065
+ ssrfPolicy: opts.ssrfPolicy,
1066
+ browserProxyMode: opts.browserProxyMode,
1067
+ targetId: createdTargetId ?? void 0
1068
+ });
1069
+ } catch (err) {
1070
+ if (isPolicyDenyNavigationError(err)) await closeBlockedNavigationTarget({
1071
+ cdpUrl: opts.cdpUrl,
1072
+ page,
1073
+ targetId: createdTargetId ?? void 0
1074
+ });
1075
+ throw err;
1076
+ }
1077
+ }
1078
+ const tid = createdTargetId || await pageTargetId(page).catch(() => null);
1079
+ if (!tid) throw new Error("Failed to get targetId for new page");
1080
+ return {
1081
+ targetId: tid,
1082
+ title: await page.title().catch(() => ""),
1083
+ url: page.url(),
1084
+ type: "page"
1085
+ };
1086
+ }
1087
+ /**
1088
+ * Close a page/tab by targetId using the persistent Playwright connection.
1089
+ * Used for remote profiles where HTTP-based /json/close is ephemeral.
1090
+ */
1091
+ async function closePageByTargetIdViaPlaywright(opts) {
1092
+ await (await resolvePageByTargetIdOrThrow(opts)).close();
1093
+ }
1094
+ /**
1095
+ * Focus a page/tab by targetId using the persistent Playwright connection.
1096
+ * Used for remote profiles where HTTP-based /json/activate can be ephemeral.
1097
+ */
1098
+ async function focusPageByTargetIdViaPlaywright(opts) {
1099
+ const page = await resolvePageByTargetIdOrThrow(opts);
1100
+ try {
1101
+ await page.bringToFront();
1102
+ } catch (err) {
1103
+ try {
1104
+ await withPageScopedCdpClient({
1105
+ cdpUrl: opts.cdpUrl,
1106
+ page,
1107
+ targetId: opts.targetId,
1108
+ fn: async (send) => {
1109
+ await send("Page.bringToFront");
1110
+ }
1111
+ });
1112
+ return;
1113
+ } catch {
1114
+ throw err;
1115
+ }
1116
+ }
1117
+ }
1118
+ //#endregion
1119
+ //#region extensions/browser/src/browser/pw-tools-core.activity.ts
1120
+ async function getPageErrorsViaPlaywright(opts) {
1121
+ const state = ensurePageState(await getPageForTargetId(opts));
1122
+ const errors = [...state.errors];
1123
+ if (opts.clear) state.errors = [];
1124
+ return { errors };
1125
+ }
1126
+ async function getNetworkRequestsViaPlaywright(opts) {
1127
+ const state = ensurePageState(await getPageForTargetId(opts));
1128
+ const raw = [...state.requests];
1129
+ const filter = typeof opts.filter === "string" ? opts.filter.trim() : "";
1130
+ const requests = filter ? raw.filter((r) => r.url.includes(filter)) : raw;
1131
+ if (opts.clear) {
1132
+ state.requests = [];
1133
+ state.requestIds = /* @__PURE__ */ new WeakMap();
1134
+ }
1135
+ return { requests };
1136
+ }
1137
+ function consolePriority(level) {
1138
+ switch (level) {
1139
+ case "error": return 3;
1140
+ case "warning": return 2;
1141
+ case "info":
1142
+ case "log": return 1;
1143
+ case "debug": return 0;
1144
+ default: return 1;
1145
+ }
1146
+ }
1147
+ async function getConsoleMessagesViaPlaywright(opts) {
1148
+ const state = ensurePageState(await getPageForTargetId(opts));
1149
+ if (!opts.level) return [...state.console];
1150
+ const min = consolePriority(opts.level);
1151
+ return state.console.filter((msg) => consolePriority(msg.type) >= min);
1152
+ }
1153
+ //#endregion
1154
+ //#region extensions/browser/src/browser/output-files.ts
1155
+ async function writeExternalFileWithinOutputRoot(params) {
1156
+ const outputPath = params.path.trim();
1157
+ if (!outputPath) throw new Error("需要 output 路径");
1158
+ const rootDir = params.rootDir ? path.resolve(params.rootDir) : path.dirname(path.resolve(outputPath));
1159
+ await ensureOutputDirectory(rootDir);
1160
+ return (await writeExternalFileWithinRoot({
1161
+ rootDir,
1162
+ path: outputPath,
1163
+ write: params.write
1164
+ }).catch((err) => {
1165
+ if (err instanceof Error && /file not found/i.test(err.message)) throw new Error("写入文件时输出目录发生了变化");
1166
+ throw err;
1167
+ })).path;
1168
+ }
1169
+ //#endregion
1170
+ //#region extensions/browser/src/browser/pw-tools-core.shared.ts
1171
+ let nextUploadArmId = 0;
1172
+ let nextDownloadArmId = 0;
1173
+ function bumpUploadArmId() {
1174
+ nextUploadArmId += 1;
1175
+ return nextUploadArmId;
1176
+ }
1177
+ function bumpDownloadArmId() {
1178
+ nextDownloadArmId += 1;
1179
+ return nextDownloadArmId;
1180
+ }
1181
+ function requireRef(value) {
1182
+ const raw = normalizeOptionalString(value) ?? "";
1183
+ const ref = (raw ? parseRoleRef(raw) : null) ?? (raw.startsWith("@") ? raw.slice(1) : raw);
1184
+ if (!ref) throw new Error("ref 是必需的");
1185
+ return ref;
1186
+ }
1187
+ function requireRefOrSelector(ref, selector) {
1188
+ const trimmedRef = normalizeOptionalString(ref) ?? "";
1189
+ const trimmedSelector = normalizeOptionalString(selector) ?? "";
1190
+ if (!trimmedRef && !trimmedSelector) throw new Error("ref 或 selector 是必需的");
1191
+ return {
1192
+ ref: trimmedRef || void 0,
1193
+ selector: trimmedSelector || void 0
1194
+ };
1195
+ }
1196
+ function normalizeTimeoutMs(timeoutMs, fallback) {
1197
+ const parsed = parseFiniteNumber(timeoutMs);
1198
+ return Math.max(500, Math.min(12e4, Math.floor(parsed ?? fallback)));
1199
+ }
1200
+ function toAIFriendlyError(error, selector) {
1201
+ const message = formatErrorMessage(error);
1202
+ if (message.includes("strict mode violation")) {
1203
+ const countMatch = message.match(/resolved to (\d+) elements/);
1204
+ const count = countMatch ? countMatch[1] : "multiple";
1205
+ return /* @__PURE__ */ new Error(`Selector "${selector}" matched ${count} elements. Run a new snapshot to get updated refs, or use a different ref.`);
1206
+ }
1207
+ if ((message.includes("Timeout") || message.includes("waiting for")) && (message.includes("to be visible") || message.includes("not visible") || message.includes("waiting for locator("))) return /* @__PURE__ */ new Error(`Element "${selector}" not found or not visible. Run a new snapshot to see current page elements.`);
1208
+ 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.`);
1209
+ return error instanceof Error ? error : new Error(message);
1210
+ }
1211
+ //#endregion
1212
+ //#region extensions/browser/src/browser/pw-tools-core.downloads.ts
1213
+ function buildTempDownloadPath(fileName) {
1214
+ const id = crypto.randomUUID();
1215
+ const safeName = sanitizeUntrustedFileName(fileName, "download.bin");
1216
+ return path.join(resolvePreferredFengMingTmpDir(), "downloads", `${id}-${safeName}`);
1217
+ }
1218
+ function createPageDownloadWaiter(page, timeoutMs) {
1219
+ const state = ensurePageState(page);
1220
+ state.downloadWaiterDepth += 1;
1221
+ let done = false;
1222
+ let timer;
1223
+ let handler;
1224
+ let depthReleased = false;
1225
+ const cleanup = () => {
1226
+ if (!depthReleased) {
1227
+ depthReleased = true;
1228
+ state.downloadWaiterDepth = Math.max(0, state.downloadWaiterDepth - 1);
1229
+ }
1230
+ if (timer) clearTimeout(timer);
1231
+ timer = void 0;
1232
+ if (handler) {
1233
+ page.off("download", handler);
1234
+ handler = void 0;
1235
+ }
1236
+ };
1237
+ return {
1238
+ promise: new Promise((resolve, reject) => {
1239
+ handler = (download) => {
1240
+ if (done) return;
1241
+ done = true;
1242
+ cleanup();
1243
+ resolve(download);
1244
+ };
1245
+ page.on("download", handler);
1246
+ timer = setTimeout(() => {
1247
+ if (done) return;
1248
+ done = true;
1249
+ cleanup();
1250
+ reject(/* @__PURE__ */ new Error("等待下载超时"));
1251
+ }, timeoutMs);
1252
+ }),
1253
+ cancel: () => {
1254
+ if (done) return;
1255
+ done = true;
1256
+ cleanup();
1257
+ }
1258
+ };
1259
+ }
1260
+ async function saveDownloadPayload(download, outPath, rootDir) {
1261
+ const suggested = download.suggestedFilename?.() || "download.bin";
1262
+ const requestedPath = outPath?.trim();
1263
+ const finalPath = await writeExternalFileWithinOutputRoot({
1264
+ rootDir,
1265
+ path: path.resolve(requestedPath || buildTempDownloadPath(suggested)),
1266
+ write: async (tempPath) => {
1267
+ await download.saveAs?.(tempPath);
1268
+ }
1269
+ });
1270
+ return {
1271
+ url: download.url?.() || "",
1272
+ suggestedFilename: suggested,
1273
+ path: finalPath
1274
+ };
1275
+ }
1276
+ async function awaitDownloadPayload(params) {
1277
+ try {
1278
+ const download = await params.waiter.promise;
1279
+ if (params.state.armIdDownload !== params.armId) throw new Error("下载被另一个等待者替代");
1280
+ return await saveDownloadPayload(download, params.outPath ?? "", params.rootDir);
1281
+ } catch (err) {
1282
+ params.waiter.cancel();
1283
+ throw err;
1284
+ }
1285
+ }
1286
+ async function armFileUploadViaPlaywright(opts) {
1287
+ const page = await getPageForTargetId(opts);
1288
+ const state = ensurePageState(page);
1289
+ const timeout = normalizeTimeoutMs(opts.timeoutMs, 12e4);
1290
+ state.armIdUpload = bumpUploadArmId();
1291
+ const armId = state.armIdUpload;
1292
+ page.waitForEvent("filechooser", { timeout }).then(async (fileChooser) => {
1293
+ if (state.armIdUpload !== armId) return;
1294
+ if (!opts.paths?.length) {
1295
+ try {
1296
+ await page.keyboard.press("Escape");
1297
+ } catch {}
1298
+ return;
1299
+ }
1300
+ const uploadPathsResult = await resolveStrictExistingPathsWithinRoot({
1301
+ rootDir: DEFAULT_UPLOAD_DIR,
1302
+ requestedPaths: opts.paths,
1303
+ scopeLabel: `uploads directory (${DEFAULT_UPLOAD_DIR})`
1304
+ });
1305
+ if (!uploadPathsResult.ok) {
1306
+ try {
1307
+ await page.keyboard.press("Escape");
1308
+ } catch {}
1309
+ return;
1310
+ }
1311
+ await fileChooser.setFiles(uploadPathsResult.paths);
1312
+ try {
1313
+ const input = typeof fileChooser.element === "function" ? await Promise.resolve(fileChooser.element()) : null;
1314
+ if (input) await input.evaluate((el) => {
1315
+ el.dispatchEvent(new Event("input", { bubbles: true }));
1316
+ el.dispatchEvent(new Event("change", { bubbles: true }));
1317
+ });
1318
+ } catch {}
1319
+ }).catch(() => {});
1320
+ }
1321
+ async function armDialogViaPlaywright(opts) {
1322
+ const page = await getPageForTargetId(opts);
1323
+ const timeout = normalizeTimeoutMs(opts.timeoutMs, 12e4);
1324
+ try {
1325
+ await respondToObservedDialogOnPage({
1326
+ page,
1327
+ accept: opts.accept,
1328
+ closedBy: "agent",
1329
+ ...opts.dialogId !== void 0 ? { dialogId: opts.dialogId } : {},
1330
+ ...opts.promptText !== void 0 ? { promptText: opts.promptText } : {}
1331
+ });
1332
+ return;
1333
+ } catch (err) {
1334
+ if (opts.dialogId || err instanceof Error && !err.message.includes("No dialog is pending")) throw err;
1335
+ }
1336
+ armObservedDialogResponseOnPage({
1337
+ page,
1338
+ accept: opts.accept,
1339
+ timeoutMs: timeout,
1340
+ ...opts.promptText !== void 0 ? { promptText: opts.promptText } : {}
1341
+ });
1342
+ }
1343
+ async function waitForDownloadViaPlaywright(opts) {
1344
+ const page = await getPageForTargetId(opts);
1345
+ const state = ensurePageState(page);
1346
+ const timeout = normalizeTimeoutMs(opts.timeoutMs, 12e4);
1347
+ state.armIdDownload = bumpDownloadArmId();
1348
+ const armId = state.armIdDownload;
1349
+ return await awaitDownloadPayload({
1350
+ waiter: createPageDownloadWaiter(page, timeout),
1351
+ state,
1352
+ armId,
1353
+ outPath: opts.path,
1354
+ rootDir: opts.rootDir
1355
+ });
1356
+ }
1357
+ async function downloadViaPlaywright(opts) {
1358
+ const page = await getPageForTargetId(opts);
1359
+ const state = ensurePageState(page);
1360
+ restoreRoleRefsForTarget({
1361
+ cdpUrl: opts.cdpUrl,
1362
+ targetId: opts.targetId,
1363
+ page
1364
+ });
1365
+ const timeout = normalizeTimeoutMs(opts.timeoutMs, 12e4);
1366
+ const ref = requireRef(opts.ref);
1367
+ const outPath = opts.path?.trim() ?? "";
1368
+ if (!outPath) throw new Error("路径是必需的");
1369
+ state.armIdDownload = bumpDownloadArmId();
1370
+ const armId = state.armIdDownload;
1371
+ const waiter = createPageDownloadWaiter(page, timeout);
1372
+ try {
1373
+ const locator = refLocator(page, ref);
1374
+ try {
1375
+ await locator.click({ timeout });
1376
+ } catch (err) {
1377
+ throw toAIFriendlyError(err, ref);
1378
+ }
1379
+ return await awaitDownloadPayload({
1380
+ waiter,
1381
+ state,
1382
+ armId,
1383
+ outPath,
1384
+ rootDir: opts.rootDir
1385
+ });
1386
+ } catch (err) {
1387
+ waiter.cancel();
1388
+ throw err;
1389
+ }
1390
+ }
1391
+ //#endregion
1392
+ //#region extensions/browser/src/browser/pw-tools-core.snapshot.ts
1393
+ function resolveBoundedTimeoutMs(timeoutMs, fallbackMs, minMs, maxMs) {
1394
+ const parsed = parseFiniteNumber(timeoutMs);
1395
+ return Math.max(minMs, Math.min(maxMs, Math.floor(parsed ?? fallbackMs)));
1396
+ }
1397
+ function resolveSnapshotTimeoutMs(timeoutMs) {
1398
+ return resolveBoundedTimeoutMs(timeoutMs, 5e3, 500, 6e4);
1399
+ }
1400
+ function resolveNavigationTimeoutMs(timeoutMs) {
1401
+ return resolveBoundedTimeoutMs(timeoutMs, 2e4, 1e3, 12e4);
1402
+ }
1403
+ function resolveViewportDimension(value, label) {
1404
+ const dimension = resolveIntegerOption(value, 1, { min: 1 });
1405
+ if (dimension > 8192) throw new Error(`viewport ${label} exceeds maximum of ${ACT_MAX_VIEWPORT_DIMENSION}`);
1406
+ return dimension;
1407
+ }
1408
+ async function collectSnapshotUrls(page) {
1409
+ const urls = await page.evaluate(() => {
1410
+ const seen = /* @__PURE__ */ new Set();
1411
+ const out = [];
1412
+ for (const anchor of Array.from(document.querySelectorAll("a[href]"))) {
1413
+ const href = anchor instanceof HTMLAnchorElement ? anchor.href : "";
1414
+ if (!href || seen.has(href)) continue;
1415
+ const text = (anchor.textContent || anchor.getAttribute("aria-label") || "").replace(/\s+/g, " ").trim().slice(0, 120) || href;
1416
+ seen.add(href);
1417
+ out.push({
1418
+ text,
1419
+ url: href
1420
+ });
1421
+ if (out.length >= 100) break;
1422
+ }
1423
+ return out;
1424
+ }).catch(() => []);
1425
+ return Array.isArray(urls) ? urls : [];
1426
+ }
1427
+ function buildStoredAriaRefs(nodes, markedRefs) {
1428
+ const refs = {};
1429
+ const counts = /* @__PURE__ */ new Map();
1430
+ const refsByKey = /* @__PURE__ */ new Map();
1431
+ for (const node of nodes) {
1432
+ const role = normalizeLowercaseStringOrEmpty(node.role) || "unknown";
1433
+ const name = node.name.trim() || void 0;
1434
+ const key = `${role}:${name ?? ""}`;
1435
+ const nth = counts.get(key) ?? 0;
1436
+ counts.set(key, nth + 1);
1437
+ refsByKey.set(key, [...refsByKey.get(key) ?? [], node.ref]);
1438
+ refs[node.ref] = {
1439
+ role,
1440
+ ...name ? { name } : {},
1441
+ ...nth > 0 ? { nth } : {},
1442
+ ...markedRefs.has(node.ref) ? { domMarker: true } : {}
1443
+ };
1444
+ }
1445
+ for (const refsForKey of refsByKey.values()) {
1446
+ if (refsForKey.length > 1) continue;
1447
+ const ref = refsForKey[0];
1448
+ if (ref) delete refs[ref]?.nth;
1449
+ }
1450
+ return refs;
1451
+ }
1452
+ async function storeAriaSnapshotRefsViaPlaywright(opts) {
1453
+ const page = opts.page ?? await getPageForTargetId({
1454
+ cdpUrl: opts.cdpUrl,
1455
+ targetId: opts.targetId
1456
+ });
1457
+ ensurePageState(page);
1458
+ const markedRefs = await markBackendDomRefsOnPage({
1459
+ page,
1460
+ refs: opts.nodes.flatMap((node) => typeof node.backendDOMNodeId === "number" ? [{
1461
+ ref: node.ref,
1462
+ backendDOMNodeId: node.backendDOMNodeId
1463
+ }] : [])
1464
+ });
1465
+ storeRoleRefsForTarget({
1466
+ page,
1467
+ cdpUrl: opts.cdpUrl,
1468
+ targetId: opts.targetId,
1469
+ refs: buildStoredAriaRefs(opts.nodes, markedRefs),
1470
+ mode: "role"
1471
+ });
1472
+ }
1473
+ async function prepareSnapshotPageViaPlaywright(opts) {
1474
+ const page = await getPageForTargetId({
1475
+ cdpUrl: opts.cdpUrl,
1476
+ targetId: opts.targetId
1477
+ });
1478
+ ensurePageState(page);
1479
+ if (opts.ssrfPolicy) await assertPageNavigationCompletedSafely({
1480
+ cdpUrl: opts.cdpUrl,
1481
+ page,
1482
+ response: null,
1483
+ ssrfPolicy: opts.ssrfPolicy,
1484
+ targetId: opts.targetId
1485
+ });
1486
+ return page;
1487
+ }
1488
+ async function snapshotAriaViaPlaywright(opts) {
1489
+ const limit = resolveIntegerOption(opts.limit, 500, {
1490
+ min: 1,
1491
+ max: 2e3
1492
+ });
1493
+ const page = await prepareSnapshotPageViaPlaywright({
1494
+ cdpUrl: opts.cdpUrl,
1495
+ targetId: opts.targetId,
1496
+ ssrfPolicy: opts.ssrfPolicy
1497
+ });
1498
+ const ariaTimeoutMs = typeof opts.timeoutMs === "number" && Number.isFinite(opts.timeoutMs) && opts.timeoutMs > 0 ? Math.max(500, Math.min(6e4, Math.floor(opts.timeoutMs))) : void 0;
1499
+ const collectAxTree = withPageScopedCdpClient({
1500
+ cdpUrl: opts.cdpUrl,
1501
+ page,
1502
+ targetId: opts.targetId,
1503
+ fn: async (send) => {
1504
+ await send("Accessibility.enable").catch(() => {});
1505
+ return await send("Accessibility.getFullAXTree");
1506
+ }
1507
+ });
1508
+ const res = await (ariaTimeoutMs === void 0 ? collectAxTree : (() => {
1509
+ let timer;
1510
+ const timeout = new Promise((_, reject) => {
1511
+ timer = setTimeout(() => {
1512
+ reject(/* @__PURE__ */ new Error(`Aria snapshot via Playwright timed out after ${ariaTimeoutMs}ms.`));
1513
+ }, ariaTimeoutMs);
1514
+ timer.unref?.();
1515
+ });
1516
+ return Promise.race([collectAxTree, timeout]).finally(() => {
1517
+ if (timer) clearTimeout(timer);
1518
+ });
1519
+ })());
1520
+ const formatted = formatAriaSnapshot(Array.isArray(res?.nodes) ? res.nodes : [], limit);
1521
+ await storeAriaSnapshotRefsViaPlaywright({
1522
+ cdpUrl: opts.cdpUrl,
1523
+ targetId: opts.targetId,
1524
+ nodes: formatted,
1525
+ page
1526
+ });
1527
+ return { nodes: formatted };
1528
+ }
1529
+ async function snapshotAiViaPlaywright(opts) {
1530
+ const page = await prepareSnapshotPageViaPlaywright({
1531
+ cdpUrl: opts.cdpUrl,
1532
+ targetId: opts.targetId,
1533
+ ssrfPolicy: opts.ssrfPolicy
1534
+ });
1535
+ let snapshot = await page.ariaSnapshot({
1536
+ mode: "ai",
1537
+ timeout: resolveSnapshotTimeoutMs(opts.timeoutMs)
1538
+ });
1539
+ if (opts.urls) snapshot = appendSnapshotUrls(snapshot, await collectSnapshotUrls(page));
1540
+ const maxChars = opts.maxChars;
1541
+ const limit = typeof maxChars === "number" && Number.isFinite(maxChars) && maxChars > 0 ? Math.floor(maxChars) : void 0;
1542
+ let truncated = false;
1543
+ if (limit && snapshot.length > limit) {
1544
+ snapshot = `${snapshot.slice(0, limit)}\n\n[...TRUNCATED - page too large]`;
1545
+ truncated = true;
1546
+ }
1547
+ const built = buildRoleSnapshotFromAiSnapshot(snapshot);
1548
+ storeRoleRefsForTarget({
1549
+ page,
1550
+ cdpUrl: opts.cdpUrl,
1551
+ targetId: opts.targetId,
1552
+ refs: built.refs,
1553
+ mode: "aria"
1554
+ });
1555
+ return truncated ? {
1556
+ snapshot,
1557
+ truncated,
1558
+ refs: built.refs
1559
+ } : {
1560
+ snapshot,
1561
+ refs: built.refs
1562
+ };
1563
+ }
1564
+ async function finalizeRoleSnapshotViaPlaywright(params) {
1565
+ const snapshot = params.urls ? appendSnapshotUrls(params.built.snapshot, await collectSnapshotUrls(params.page)) : params.built.snapshot;
1566
+ storeRoleRefsForTarget({
1567
+ page: params.page,
1568
+ cdpUrl: params.cdpUrl,
1569
+ targetId: params.targetId,
1570
+ refs: params.built.refs,
1571
+ ...params.frameSelector ? { frameSelector: params.frameSelector } : {},
1572
+ mode: params.mode
1573
+ });
1574
+ return {
1575
+ snapshot,
1576
+ refs: params.built.refs,
1577
+ stats: getRoleSnapshotStats(snapshot, params.built.refs)
1578
+ };
1579
+ }
1580
+ async function snapshotRoleViaPlaywright(opts) {
1581
+ const page = await prepareSnapshotPageViaPlaywright({
1582
+ cdpUrl: opts.cdpUrl,
1583
+ targetId: opts.targetId,
1584
+ ssrfPolicy: opts.ssrfPolicy
1585
+ });
1586
+ const ariaSnapshotTimeout = resolveSnapshotTimeoutMs(opts.timeoutMs);
1587
+ if (opts.refsMode === "aria") {
1588
+ if (normalizeOptionalString(opts.selector) || normalizeOptionalString(opts.frameSelector)) throw new Error("refs=aria does not support selector/frame snapshots yet.");
1589
+ const built = buildRoleSnapshotFromAiSnapshot(await page.ariaSnapshot({
1590
+ mode: "ai",
1591
+ timeout: ariaSnapshotTimeout
1592
+ }), opts.options);
1593
+ return await finalizeRoleSnapshotViaPlaywright({
1594
+ page,
1595
+ cdpUrl: opts.cdpUrl,
1596
+ targetId: opts.targetId,
1597
+ built,
1598
+ mode: "aria",
1599
+ urls: opts.urls
1600
+ });
1601
+ }
1602
+ const frameSelector = normalizeOptionalString(opts.frameSelector) ?? "";
1603
+ const selector = normalizeOptionalString(opts.selector) ?? "";
1604
+ const built = buildRoleSnapshotFromAriaSnapshot(await (frameSelector ? selector ? page.frameLocator(frameSelector).locator(selector) : page.frameLocator(frameSelector).locator(":root") : selector ? page.locator(selector) : page.locator(":root")).ariaSnapshot({ timeout: ariaSnapshotTimeout }) ?? "", opts.options);
1605
+ return await finalizeRoleSnapshotViaPlaywright({
1606
+ page,
1607
+ cdpUrl: opts.cdpUrl,
1608
+ targetId: opts.targetId,
1609
+ frameSelector: frameSelector || void 0,
1610
+ built,
1611
+ mode: "role",
1612
+ urls: opts.urls
1613
+ });
1614
+ }
1615
+ async function navigateViaPlaywright(opts) {
1616
+ const isRetryableNavigateError = (err) => {
1617
+ const msg = typeof err === "string" ? err.toLowerCase() : err instanceof Error ? err.message.toLowerCase() : "";
1618
+ return msg.includes("frame has been detached") || msg.includes("target page, context or browser has been closed");
1619
+ };
1620
+ const url = normalizeOptionalString(opts.url) ?? "";
1621
+ if (!url) throw new Error("URL 是必需的");
1622
+ await assertBrowserNavigationAllowed({
1623
+ url,
1624
+ ...withBrowserNavigationPolicy(opts.ssrfPolicy, { browserProxyMode: opts.browserProxyMode })
1625
+ });
1626
+ const timeout = resolveNavigationTimeoutMs(opts.timeoutMs);
1627
+ let page = await getPageForTargetId(opts);
1628
+ ensurePageState(page);
1629
+ const navigate = async () => await gotoPageWithNavigationGuard({
1630
+ cdpUrl: opts.cdpUrl,
1631
+ page,
1632
+ url,
1633
+ timeoutMs: timeout,
1634
+ ssrfPolicy: opts.ssrfPolicy,
1635
+ browserProxyMode: opts.browserProxyMode,
1636
+ targetId: opts.targetId
1637
+ });
1638
+ let response;
1639
+ try {
1640
+ response = await navigate();
1641
+ } catch (err) {
1642
+ if (!isRetryableNavigateError(err)) throw err;
1643
+ await forceDisconnectPlaywrightForTarget({
1644
+ cdpUrl: opts.cdpUrl,
1645
+ targetId: opts.targetId,
1646
+ reason: "retry navigate after detached frame"
1647
+ }).catch(() => {});
1648
+ page = await getPageForTargetId(opts);
1649
+ ensurePageState(page);
1650
+ response = await navigate();
1651
+ }
1652
+ try {
1653
+ await assertPageNavigationCompletedSafely({
1654
+ cdpUrl: opts.cdpUrl,
1655
+ page,
1656
+ response,
1657
+ ssrfPolicy: opts.ssrfPolicy,
1658
+ browserProxyMode: opts.browserProxyMode,
1659
+ targetId: opts.targetId
1660
+ });
1661
+ } catch (err) {
1662
+ if (isPolicyDenyNavigationError(err)) await closeBlockedNavigationTarget({
1663
+ cdpUrl: opts.cdpUrl,
1664
+ page,
1665
+ targetId: opts.targetId
1666
+ });
1667
+ throw err;
1668
+ }
1669
+ return { url: page.url() };
1670
+ }
1671
+ async function resizeViewportViaPlaywright(opts) {
1672
+ const page = await getPageForTargetId(opts);
1673
+ ensurePageState(page);
1674
+ await page.setViewportSize({
1675
+ width: resolveViewportDimension(opts.width, "width"),
1676
+ height: resolveViewportDimension(opts.height, "height")
1677
+ });
1678
+ }
1679
+ async function closePageViaPlaywright(opts) {
1680
+ const page = await getPageForTargetId(opts);
1681
+ ensurePageState(page);
1682
+ await page.close();
1683
+ }
1684
+ async function pdfViaPlaywright(opts) {
1685
+ const page = await getPageForTargetId(opts);
1686
+ ensurePageState(page);
1687
+ return { buffer: await page.pdf({ printBackground: true }) };
1688
+ }
1689
+ //#endregion
1690
+ //#region extensions/browser/src/browser/pw-tools-core.interactions.ts
1691
+ const INTERACTION_NAVIGATION_GRACE_MS = 250;
1692
+ const pendingInteractionNavigationGuardCleanup = /* @__PURE__ */ new WeakMap();
1693
+ function resolveBoundedDelayMs(value, label, maxMs) {
1694
+ const normalized = Math.floor(value ?? 0);
1695
+ if (!Number.isFinite(normalized) || normalized < 0) throw new Error(`${label} must be >= 0`);
1696
+ if (normalized > maxMs) throw new Error(`${label} exceeds maximum of ${maxMs}ms`);
1697
+ return normalized;
1698
+ }
1699
+ async function getRestoredPageForTarget(opts) {
1700
+ const page = await getPageForTargetId(opts);
1701
+ ensurePageState(page);
1702
+ restoreRoleRefsForTarget({
1703
+ cdpUrl: opts.cdpUrl,
1704
+ targetId: opts.targetId,
1705
+ page
1706
+ });
1707
+ return page;
1708
+ }
1709
+ function toFriendlyInteractionError(err, label) {
1710
+ return isBrowserObservedDialogBlockedError(err) ? err : toAIFriendlyError(err, label);
1711
+ }
1712
+ function reconcileRemoteDialogAfterActionSettled(page, signal) {
1713
+ if (isBrowserObservedDialogBlockedError(signal?.reason)) markObservedDialogsHandledRemotelyForPage(page);
1714
+ }
1715
+ const resolveInteractionTimeoutMs = resolveActInteractionTimeoutMs;
1716
+ function didCrossDocumentUrlChange(page, previousUrl) {
1717
+ const currentUrl = page.url();
1718
+ if (currentUrl === previousUrl) return false;
1719
+ try {
1720
+ const prev = new URL(previousUrl);
1721
+ const curr = new URL(currentUrl);
1722
+ if (prev.origin === curr.origin && prev.pathname === curr.pathname && prev.search === curr.search) return false;
1723
+ } catch {}
1724
+ return true;
1725
+ }
1726
+ function isHashOnlyNavigation(currentUrl, previousUrl) {
1727
+ if (currentUrl === previousUrl) return false;
1728
+ try {
1729
+ const prev = new URL(previousUrl);
1730
+ const curr = new URL(currentUrl);
1731
+ return prev.origin === curr.origin && prev.pathname === curr.pathname && prev.search === curr.search;
1732
+ } catch {
1733
+ return false;
1734
+ }
1735
+ }
1736
+ function isMainFrameNavigation(page, frame) {
1737
+ if (typeof page.mainFrame !== "function") return true;
1738
+ return frame === page.mainFrame();
1739
+ }
1740
+ async function assertSubframeNavigationAllowed(frameUrl, ssrfPolicy) {
1741
+ if (!ssrfPolicy || !frameUrl.startsWith("http://") && !frameUrl.startsWith("https://")) return;
1742
+ await assertBrowserNavigationResultAllowed({
1743
+ url: frameUrl,
1744
+ ...withBrowserNavigationPolicy(ssrfPolicy)
1745
+ });
1746
+ }
1747
+ function snapshotNetworkFrameUrl(frame) {
1748
+ try {
1749
+ const frameUrl = frame.url();
1750
+ return frameUrl.startsWith("http://") || frameUrl.startsWith("https://") ? frameUrl : null;
1751
+ } catch {
1752
+ return null;
1753
+ }
1754
+ }
1755
+ async function assertObservedDelayedNavigations(opts) {
1756
+ let subframeError;
1757
+ try {
1758
+ for (const frameUrl of opts.observed.subframes) await assertSubframeNavigationAllowed(frameUrl, opts.ssrfPolicy);
1759
+ } catch (err) {
1760
+ subframeError = err;
1761
+ }
1762
+ if (opts.observed.mainFrameNavigated) await assertPageNavigationCompletedSafely({
1763
+ cdpUrl: opts.cdpUrl,
1764
+ page: opts.page,
1765
+ response: null,
1766
+ ssrfPolicy: opts.ssrfPolicy,
1767
+ targetId: opts.targetId
1768
+ });
1769
+ if (subframeError) throw subframeError;
1770
+ }
1771
+ function observeDelayedInteractionNavigation(page, previousUrl) {
1772
+ if (didCrossDocumentUrlChange(page, previousUrl)) return Promise.resolve({
1773
+ mainFrameNavigated: true,
1774
+ subframes: []
1775
+ });
1776
+ if (typeof page.on !== "function" || typeof page.off !== "function") return Promise.resolve({
1777
+ mainFrameNavigated: false,
1778
+ subframes: []
1779
+ });
1780
+ return new Promise((resolve) => {
1781
+ const subframes = [];
1782
+ const onFrameNavigated = (frame) => {
1783
+ if (!isMainFrameNavigation(page, frame)) {
1784
+ const frameUrl = snapshotNetworkFrameUrl(frame);
1785
+ if (frameUrl) subframes.push(frameUrl);
1786
+ return;
1787
+ }
1788
+ if (isHashOnlyNavigation(page.url(), previousUrl)) return;
1789
+ cleanup();
1790
+ resolve({
1791
+ mainFrameNavigated: true,
1792
+ subframes
1793
+ });
1794
+ };
1795
+ const timeout = setTimeout(() => {
1796
+ cleanup();
1797
+ resolve({
1798
+ mainFrameNavigated: didCrossDocumentUrlChange(page, previousUrl),
1799
+ subframes
1800
+ });
1801
+ }, INTERACTION_NAVIGATION_GRACE_MS);
1802
+ const cleanup = () => {
1803
+ clearTimeout(timeout);
1804
+ page.off("framenavigated", onFrameNavigated);
1805
+ };
1806
+ page.on("framenavigated", onFrameNavigated);
1807
+ });
1808
+ }
1809
+ function scheduleDelayedInteractionNavigationGuard(opts) {
1810
+ if (!opts.ssrfPolicy) return Promise.resolve();
1811
+ const page = opts.page;
1812
+ if (didCrossDocumentUrlChange(page, opts.previousUrl)) return assertPageNavigationCompletedSafely({
1813
+ cdpUrl: opts.cdpUrl,
1814
+ page: opts.page,
1815
+ response: null,
1816
+ ssrfPolicy: opts.ssrfPolicy,
1817
+ targetId: opts.targetId
1818
+ });
1819
+ if (typeof page.on !== "function" || typeof page.off !== "function") return Promise.resolve();
1820
+ pendingInteractionNavigationGuardCleanup.get(opts.page)?.();
1821
+ return new Promise((resolve, reject) => {
1822
+ const settle = (err) => {
1823
+ cleanup();
1824
+ if (err) {
1825
+ reject(err);
1826
+ return;
1827
+ }
1828
+ resolve();
1829
+ };
1830
+ const subframes = [];
1831
+ const onFrameNavigated = (frame) => {
1832
+ if (!isMainFrameNavigation(page, frame)) {
1833
+ const frameUrl = snapshotNetworkFrameUrl(frame);
1834
+ if (frameUrl) subframes.push(frameUrl);
1835
+ return;
1836
+ }
1837
+ if (isHashOnlyNavigation(page.url(), opts.previousUrl)) return;
1838
+ cleanup();
1839
+ assertObservedDelayedNavigations({
1840
+ cdpUrl: opts.cdpUrl,
1841
+ page: opts.page,
1842
+ ssrfPolicy: opts.ssrfPolicy,
1843
+ targetId: opts.targetId,
1844
+ observed: {
1845
+ mainFrameNavigated: true,
1846
+ subframes
1847
+ }
1848
+ }).then(() => settle(), settle);
1849
+ };
1850
+ const timeout = setTimeout(() => {
1851
+ cleanup();
1852
+ assertObservedDelayedNavigations({
1853
+ cdpUrl: opts.cdpUrl,
1854
+ page: opts.page,
1855
+ ssrfPolicy: opts.ssrfPolicy,
1856
+ targetId: opts.targetId,
1857
+ observed: {
1858
+ mainFrameNavigated: didCrossDocumentUrlChange(page, opts.previousUrl),
1859
+ subframes
1860
+ }
1861
+ }).then(() => settle(), settle);
1862
+ }, INTERACTION_NAVIGATION_GRACE_MS);
1863
+ const cleanup = () => {
1864
+ clearTimeout(timeout);
1865
+ page.off("framenavigated", onFrameNavigated);
1866
+ if (pendingInteractionNavigationGuardCleanup.get(opts.page) === settle) pendingInteractionNavigationGuardCleanup.delete(opts.page);
1867
+ };
1868
+ pendingInteractionNavigationGuardCleanup.set(opts.page, settle);
1869
+ page.on("framenavigated", onFrameNavigated);
1870
+ });
1871
+ }
1872
+ async function assertInteractionNavigationCompletedSafely(opts) {
1873
+ if (!opts.ssrfPolicy) return await opts.action();
1874
+ const navPage = opts.page;
1875
+ let navigatedDuringAction = false;
1876
+ const subframeNavigationsDuringAction = [];
1877
+ const onFrameNavigated = (frame) => {
1878
+ if (!isMainFrameNavigation(navPage, frame)) {
1879
+ const frameUrl = snapshotNetworkFrameUrl(frame);
1880
+ if (frameUrl) subframeNavigationsDuringAction.push(frameUrl);
1881
+ return;
1882
+ }
1883
+ if (!isHashOnlyNavigation(opts.page.url(), opts.previousUrl)) navigatedDuringAction = true;
1884
+ };
1885
+ if (typeof navPage.on === "function") navPage.on("framenavigated", onFrameNavigated);
1886
+ let result;
1887
+ let actionError = null;
1888
+ try {
1889
+ result = await opts.action();
1890
+ } catch (err) {
1891
+ actionError = err;
1892
+ } finally {
1893
+ if (typeof navPage.off === "function") navPage.off("framenavigated", onFrameNavigated);
1894
+ }
1895
+ const navigationObserved = navigatedDuringAction || didCrossDocumentUrlChange(opts.page, opts.previousUrl);
1896
+ let subframeError;
1897
+ try {
1898
+ for (const frameUrl of subframeNavigationsDuringAction) await assertSubframeNavigationAllowed(frameUrl, opts.ssrfPolicy);
1899
+ } catch (err) {
1900
+ subframeError = err;
1901
+ }
1902
+ if (navigationObserved) await assertPageNavigationCompletedSafely({
1903
+ cdpUrl: opts.cdpUrl,
1904
+ page: opts.page,
1905
+ response: null,
1906
+ ssrfPolicy: opts.ssrfPolicy,
1907
+ targetId: opts.targetId
1908
+ });
1909
+ else if (actionError) {
1910
+ const observed = await observeDelayedInteractionNavigation(opts.page, opts.previousUrl);
1911
+ if (observed.mainFrameNavigated || observed.subframes.length > 0) await assertObservedDelayedNavigations({
1912
+ cdpUrl: opts.cdpUrl,
1913
+ page: opts.page,
1914
+ ssrfPolicy: opts.ssrfPolicy,
1915
+ targetId: opts.targetId,
1916
+ observed
1917
+ });
1918
+ } else await scheduleDelayedInteractionNavigationGuard({
1919
+ cdpUrl: opts.cdpUrl,
1920
+ page: opts.page,
1921
+ previousUrl: opts.previousUrl,
1922
+ ssrfPolicy: opts.ssrfPolicy,
1923
+ targetId: opts.targetId
1924
+ });
1925
+ if (subframeError) throw subframeError;
1926
+ if (actionError) throw actionError;
1927
+ return result;
1928
+ }
1929
+ async function awaitActionWithAbort(actionPromise, abortPromise, onActionResolvedAfterAbort) {
1930
+ if (!abortPromise) return await actionPromise;
1931
+ try {
1932
+ return await Promise.race([actionPromise, abortPromise]);
1933
+ } catch (err) {
1934
+ actionPromise.then(() => onActionResolvedAfterAbort?.(), () => {});
1935
+ throw err;
1936
+ }
1937
+ }
1938
+ function createAbortPromise(signal) {
1939
+ return createAbortPromiseWithListener(signal);
1940
+ }
1941
+ function createAbortPromiseWithListener(signal, onAbort) {
1942
+ if (!signal) return { cleanup: () => {} };
1943
+ let abortListener;
1944
+ const abortPromise = signal.aborted ? (() => {
1945
+ onAbort?.(signal.reason);
1946
+ return Promise.reject(signal.reason ?? /* @__PURE__ */ new Error("已中止"));
1947
+ })() : new Promise((_, reject) => {
1948
+ abortListener = () => {
1949
+ onAbort?.(signal.reason);
1950
+ reject(signal.reason ?? /* @__PURE__ */ new Error("已中止"));
1951
+ };
1952
+ signal.addEventListener("abort", abortListener, { once: true });
1953
+ });
1954
+ abortPromise.catch(() => {});
1955
+ return {
1956
+ abortPromise,
1957
+ cleanup: () => {
1958
+ if (abortListener) signal.removeEventListener("abort", abortListener);
1959
+ }
1960
+ };
1961
+ }
1962
+ async function highlightViaPlaywright(opts) {
1963
+ const page = await getRestoredPageForTarget(opts);
1964
+ const ref = requireRef(opts.ref);
1965
+ try {
1966
+ await refLocator(page, ref).highlight();
1967
+ } catch (err) {
1968
+ throw toFriendlyInteractionError(err, ref);
1969
+ }
1970
+ }
1971
+ async function clickViaPlaywright(opts) {
1972
+ const resolved = requireRefOrSelector(opts.ref, opts.selector);
1973
+ const page = await getRestoredPageForTarget(opts);
1974
+ const label = resolved.ref ?? resolved.selector;
1975
+ const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
1976
+ const timeout = resolveInteractionTimeoutMs(opts.timeoutMs);
1977
+ const previousUrl = page.url();
1978
+ const signal = opts.signal;
1979
+ let abortListener;
1980
+ let abortReject;
1981
+ let abortPromise;
1982
+ if (signal) {
1983
+ abortPromise = new Promise((_, reject) => {
1984
+ abortReject = reject;
1985
+ });
1986
+ abortPromise.catch(() => {});
1987
+ const disconnect = () => {
1988
+ if (isBrowserObservedDialogBlockedError(signal.reason)) return;
1989
+ forceDisconnectPlaywrightForTarget({
1990
+ cdpUrl: opts.cdpUrl,
1991
+ targetId: opts.targetId,
1992
+ reason: "click aborted"
1993
+ }).catch(() => {});
1994
+ };
1995
+ if (signal.aborted) {
1996
+ disconnect();
1997
+ throw signal.reason ?? /* @__PURE__ */ new Error("已中止");
1998
+ }
1999
+ abortListener = () => {
2000
+ disconnect();
2001
+ abortReject?.(signal.reason ?? /* @__PURE__ */ new Error("已中止"));
2002
+ };
2003
+ signal.addEventListener("abort", abortListener, { once: true });
2004
+ if (signal.aborted) {
2005
+ abortListener();
2006
+ throw signal.reason ?? /* @__PURE__ */ new Error("已中止");
2007
+ }
2008
+ }
2009
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, signal);
2010
+ try {
2011
+ await assertInteractionNavigationCompletedSafely({
2012
+ action: async () => {
2013
+ const delayMs = resolveBoundedDelayMs(opts.delayMs, "click delayMs", ACT_MAX_CLICK_DELAY_MS);
2014
+ if (delayMs > 0) {
2015
+ await awaitActionWithAbort(locator.hover({ timeout }), abortPromise, reconcileRemoteDialog);
2016
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
2017
+ }
2018
+ if (opts.doubleClick) {
2019
+ await awaitActionWithAbort(locator.dblclick({
2020
+ timeout,
2021
+ button: opts.button,
2022
+ modifiers: opts.modifiers
2023
+ }), abortPromise, reconcileRemoteDialog);
2024
+ return;
2025
+ }
2026
+ await awaitActionWithAbort(locator.click({
2027
+ timeout,
2028
+ button: opts.button,
2029
+ modifiers: opts.modifiers
2030
+ }), abortPromise, reconcileRemoteDialog);
2031
+ },
2032
+ cdpUrl: opts.cdpUrl,
2033
+ page,
2034
+ previousUrl,
2035
+ ssrfPolicy: opts.ssrfPolicy,
2036
+ targetId: opts.targetId
2037
+ });
2038
+ } catch (err) {
2039
+ throw toFriendlyInteractionError(err, label);
2040
+ } finally {
2041
+ if (signal && abortListener) signal.removeEventListener("abort", abortListener);
2042
+ }
2043
+ }
2044
+ async function clickCoordsViaPlaywright(opts) {
2045
+ const page = await getRestoredPageForTarget(opts);
2046
+ const previousUrl = page.url();
2047
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2048
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2049
+ await assertInteractionNavigationCompletedSafely({
2050
+ action: async () => {
2051
+ await awaitActionWithAbort(page.mouse.click(opts.x, opts.y, {
2052
+ button: opts.button,
2053
+ clickCount: opts.doubleClick ? 2 : 1,
2054
+ delay: resolveBoundedDelayMs(opts.delayMs, "clickCoords delayMs", ACT_MAX_CLICK_DELAY_MS)
2055
+ }), abortPromise, reconcileRemoteDialog);
2056
+ },
2057
+ cdpUrl: opts.cdpUrl,
2058
+ page,
2059
+ previousUrl,
2060
+ ssrfPolicy: opts.ssrfPolicy,
2061
+ targetId: opts.targetId
2062
+ }).finally(cleanup);
2063
+ }
2064
+ async function hoverViaPlaywright(opts) {
2065
+ const resolved = requireRefOrSelector(opts.ref, opts.selector);
2066
+ const page = await getRestoredPageForTarget(opts);
2067
+ const label = resolved.ref ?? resolved.selector;
2068
+ const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
2069
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2070
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2071
+ try {
2072
+ await awaitActionWithAbort(locator.hover({ timeout: resolveInteractionTimeoutMs(opts.timeoutMs) }), abortPromise, reconcileRemoteDialog);
2073
+ } catch (err) {
2074
+ throw toFriendlyInteractionError(err, label);
2075
+ } finally {
2076
+ cleanup();
2077
+ }
2078
+ }
2079
+ async function dragViaPlaywright(opts) {
2080
+ const resolvedStart = requireRefOrSelector(opts.startRef, opts.startSelector);
2081
+ const resolvedEnd = requireRefOrSelector(opts.endRef, opts.endSelector);
2082
+ const page = await getRestoredPageForTarget(opts);
2083
+ const startLocator = resolvedStart.ref ? refLocator(page, requireRef(resolvedStart.ref)) : page.locator(resolvedStart.selector);
2084
+ const endLocator = resolvedEnd.ref ? refLocator(page, requireRef(resolvedEnd.ref)) : page.locator(resolvedEnd.selector);
2085
+ const startLabel = resolvedStart.ref ?? resolvedStart.selector;
2086
+ const endLabel = resolvedEnd.ref ?? resolvedEnd.selector;
2087
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2088
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2089
+ try {
2090
+ await awaitActionWithAbort(startLocator.dragTo(endLocator, { timeout: resolveInteractionTimeoutMs(opts.timeoutMs) }), abortPromise, reconcileRemoteDialog);
2091
+ } catch (err) {
2092
+ throw toFriendlyInteractionError(err, `${startLabel} -> ${endLabel}`);
2093
+ } finally {
2094
+ cleanup();
2095
+ }
2096
+ }
2097
+ async function selectOptionViaPlaywright(opts) {
2098
+ const resolved = requireRefOrSelector(opts.ref, opts.selector);
2099
+ if (!opts.values?.length) throw new Error("值列表是必需的");
2100
+ const page = await getRestoredPageForTarget(opts);
2101
+ const label = resolved.ref ?? resolved.selector;
2102
+ const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
2103
+ const previousUrl = page.url();
2104
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2105
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2106
+ try {
2107
+ await assertInteractionNavigationCompletedSafely({
2108
+ action: async () => {
2109
+ await awaitActionWithAbort(locator.selectOption(opts.values, { timeout: resolveInteractionTimeoutMs(opts.timeoutMs) }), abortPromise, reconcileRemoteDialog);
2110
+ },
2111
+ cdpUrl: opts.cdpUrl,
2112
+ page,
2113
+ previousUrl,
2114
+ ssrfPolicy: opts.ssrfPolicy,
2115
+ targetId: opts.targetId
2116
+ });
2117
+ } catch (err) {
2118
+ throw toFriendlyInteractionError(err, label);
2119
+ } finally {
2120
+ cleanup();
2121
+ }
2122
+ }
2123
+ async function pressKeyViaPlaywright(opts) {
2124
+ const key = normalizeOptionalString(opts.key) ?? "";
2125
+ if (!key) throw new Error("key 是必需的");
2126
+ const page = await getPageForTargetId(opts);
2127
+ ensurePageState(page);
2128
+ const previousUrl = page.url();
2129
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2130
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2131
+ try {
2132
+ await assertInteractionNavigationCompletedSafely({
2133
+ action: async () => {
2134
+ await awaitActionWithAbort(page.keyboard.press(key, { delay: resolveNonNegativeIntegerOption(opts.delayMs, 0) }), abortPromise, reconcileRemoteDialog);
2135
+ },
2136
+ cdpUrl: opts.cdpUrl,
2137
+ page,
2138
+ previousUrl,
2139
+ ssrfPolicy: opts.ssrfPolicy,
2140
+ targetId: opts.targetId
2141
+ });
2142
+ } finally {
2143
+ cleanup();
2144
+ }
2145
+ }
2146
+ async function typeViaPlaywright(opts) {
2147
+ const resolved = requireRefOrSelector(opts.ref, opts.selector);
2148
+ const text = opts.text ?? "";
2149
+ const page = await getRestoredPageForTarget(opts);
2150
+ const label = resolved.ref ?? resolved.selector;
2151
+ const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
2152
+ const timeout = resolveInteractionTimeoutMs(opts.timeoutMs);
2153
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2154
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2155
+ try {
2156
+ const previousUrl = page.url();
2157
+ if (opts.slowly) await assertInteractionNavigationCompletedSafely({
2158
+ action: async () => {
2159
+ await awaitActionWithAbort(locator.click({ timeout }), abortPromise, reconcileRemoteDialog);
2160
+ await awaitActionWithAbort(locator.type(text, {
2161
+ timeout,
2162
+ delay: 75
2163
+ }), abortPromise, reconcileRemoteDialog);
2164
+ if (opts.submit) await awaitActionWithAbort(locator.press("Enter", { timeout }), abortPromise, reconcileRemoteDialog);
2165
+ },
2166
+ cdpUrl: opts.cdpUrl,
2167
+ page,
2168
+ previousUrl,
2169
+ ssrfPolicy: opts.ssrfPolicy,
2170
+ targetId: opts.targetId
2171
+ });
2172
+ else await assertInteractionNavigationCompletedSafely({
2173
+ action: async () => {
2174
+ await awaitActionWithAbort(locator.fill(text, { timeout }), abortPromise, reconcileRemoteDialog);
2175
+ if (opts.submit) await awaitActionWithAbort(locator.press("Enter", { timeout }), abortPromise, reconcileRemoteDialog);
2176
+ },
2177
+ cdpUrl: opts.cdpUrl,
2178
+ page,
2179
+ previousUrl,
2180
+ ssrfPolicy: opts.ssrfPolicy,
2181
+ targetId: opts.targetId
2182
+ });
2183
+ } catch (err) {
2184
+ throw toFriendlyInteractionError(err, label);
2185
+ } finally {
2186
+ cleanup();
2187
+ }
2188
+ }
2189
+ async function fillFormViaPlaywright(opts) {
2190
+ const page = await getRestoredPageForTarget(opts);
2191
+ const timeout = resolveInteractionTimeoutMs(opts.timeoutMs);
2192
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2193
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2194
+ try {
2195
+ for (const field of opts.fields) {
2196
+ const ref = field.ref.trim();
2197
+ const type = (field.type || "text").trim() || "text";
2198
+ const rawValue = field.value;
2199
+ const value = typeof rawValue === "string" ? rawValue : typeof rawValue === "number" || typeof rawValue === "boolean" ? String(rawValue) : "";
2200
+ if (!ref) continue;
2201
+ const locator = refLocator(page, ref);
2202
+ if (type === "checkbox" || type === "radio") {
2203
+ const checked = rawValue === true || rawValue === 1 || rawValue === "1" || rawValue === "true";
2204
+ try {
2205
+ const previousUrl = page.url();
2206
+ await assertInteractionNavigationCompletedSafely({
2207
+ action: async () => {
2208
+ await awaitActionWithAbort(locator.setChecked(checked, { timeout }), abortPromise, reconcileRemoteDialog);
2209
+ },
2210
+ cdpUrl: opts.cdpUrl,
2211
+ page,
2212
+ previousUrl,
2213
+ ssrfPolicy: opts.ssrfPolicy,
2214
+ targetId: opts.targetId
2215
+ });
2216
+ } catch (err) {
2217
+ throw toFriendlyInteractionError(err, ref);
2218
+ }
2219
+ continue;
2220
+ }
2221
+ try {
2222
+ const previousUrl = page.url();
2223
+ await assertInteractionNavigationCompletedSafely({
2224
+ action: async () => {
2225
+ await awaitActionWithAbort(locator.fill(value, { timeout }), abortPromise, reconcileRemoteDialog);
2226
+ },
2227
+ cdpUrl: opts.cdpUrl,
2228
+ page,
2229
+ previousUrl,
2230
+ ssrfPolicy: opts.ssrfPolicy,
2231
+ targetId: opts.targetId
2232
+ });
2233
+ } catch (err) {
2234
+ throw toFriendlyInteractionError(err, ref);
2235
+ }
2236
+ }
2237
+ } finally {
2238
+ cleanup();
2239
+ }
2240
+ }
2241
+ async function evaluateViaPlaywright(opts) {
2242
+ const fnText = normalizeOptionalString(opts.fn) ?? "";
2243
+ if (!fnText) throw new Error("需要 function");
2244
+ const page = await getRestoredPageForTarget(opts);
2245
+ const outerTimeout = normalizeTimeoutMs(opts.timeoutMs, 2e4);
2246
+ let evaluateTimeout = Math.max(1e3, Math.min(12e4, outerTimeout - 500));
2247
+ evaluateTimeout = Math.min(evaluateTimeout, outerTimeout);
2248
+ const signal = opts.signal;
2249
+ const { abortPromise, cleanup } = createAbortPromiseWithListener(signal, (reason) => {
2250
+ if (isBrowserObservedDialogBlockedError(reason)) return;
2251
+ forceDisconnectPlaywrightForTarget({
2252
+ cdpUrl: opts.cdpUrl,
2253
+ targetId: opts.targetId,
2254
+ reason: "evaluate aborted"
2255
+ }).catch(() => {});
2256
+ });
2257
+ if (signal?.aborted) throw signal.reason ?? /* @__PURE__ */ new Error("已中止");
2258
+ try {
2259
+ const previousUrl = page.url();
2260
+ if (opts.ssrfPolicy) await assertPageNavigationCompletedSafely({
2261
+ cdpUrl: opts.cdpUrl,
2262
+ page,
2263
+ response: null,
2264
+ ssrfPolicy: opts.ssrfPolicy,
2265
+ targetId: opts.targetId
2266
+ });
2267
+ if (opts.ref) {
2268
+ const locator = refLocator(page, opts.ref);
2269
+ const elementEvaluator = new Function("el", "args", `
2270
+ "use strict";
2271
+ var fnBody = args.fnBody, timeoutMs = args.timeoutMs;
2272
+ try {
2273
+ var candidate = eval("(" + fnBody + ")");
2274
+ var result = typeof candidate === "function" ? candidate(el) : candidate;
2275
+ if (result && typeof result.then === "function") {
2276
+ return Promise.race([
2277
+ result,
2278
+ new Promise(function(_, reject) {
2279
+ setTimeout(function() { reject(new Error("evaluate timed out after " + timeoutMs + "ms")); }, timeoutMs);
2280
+ })
2281
+ ]);
2282
+ }
2283
+ return result;
2284
+ } catch (err) {
2285
+ throw new Error("Invalid evaluate function: " + (err && err.message ? err.message : String(err)));
2286
+ }
2287
+ `);
2288
+ const evalPromise = locator.evaluate(elementEvaluator, {
2289
+ fnBody: fnText,
2290
+ timeoutMs: evaluateTimeout
2291
+ });
2292
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, signal);
2293
+ return await assertInteractionNavigationCompletedSafely({
2294
+ action: () => awaitActionWithAbort(evalPromise, abortPromise, reconcileRemoteDialog),
2295
+ cdpUrl: opts.cdpUrl,
2296
+ page,
2297
+ previousUrl,
2298
+ ssrfPolicy: opts.ssrfPolicy,
2299
+ targetId: opts.targetId
2300
+ });
2301
+ }
2302
+ const browserEvaluator = new Function("args", `
2303
+ "use strict";
2304
+ var fnBody = args.fnBody, timeoutMs = args.timeoutMs;
2305
+ try {
2306
+ var candidate = eval("(" + fnBody + ")");
2307
+ var result = typeof candidate === "function" ? candidate() : candidate;
2308
+ if (result && typeof result.then === "function") {
2309
+ return Promise.race([
2310
+ result,
2311
+ new Promise(function(_, reject) {
2312
+ setTimeout(function() { reject(new Error("evaluate timed out after " + timeoutMs + "ms")); }, timeoutMs);
2313
+ })
2314
+ ]);
2315
+ }
2316
+ return result;
2317
+ } catch (err) {
2318
+ throw new Error("Invalid evaluate function: " + (err && err.message ? err.message : String(err)));
2319
+ }
2320
+ `);
2321
+ const evalPromise = page.evaluate(browserEvaluator, {
2322
+ fnBody: fnText,
2323
+ timeoutMs: evaluateTimeout
2324
+ });
2325
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, signal);
2326
+ return await assertInteractionNavigationCompletedSafely({
2327
+ action: () => awaitActionWithAbort(evalPromise, abortPromise, reconcileRemoteDialog),
2328
+ cdpUrl: opts.cdpUrl,
2329
+ page,
2330
+ previousUrl,
2331
+ ssrfPolicy: opts.ssrfPolicy,
2332
+ targetId: opts.targetId
2333
+ });
2334
+ } finally {
2335
+ cleanup();
2336
+ }
2337
+ }
2338
+ async function scrollIntoViewViaPlaywright(opts) {
2339
+ const resolved = requireRefOrSelector(opts.ref, opts.selector);
2340
+ const page = await getRestoredPageForTarget(opts);
2341
+ const timeout = normalizeTimeoutMs(opts.timeoutMs, 2e4);
2342
+ const label = resolved.ref ?? resolved.selector;
2343
+ const locator = resolved.ref ? refLocator(page, requireRef(resolved.ref)) : page.locator(resolved.selector);
2344
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2345
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2346
+ try {
2347
+ await awaitActionWithAbort(locator.scrollIntoViewIfNeeded({ timeout }), abortPromise, reconcileRemoteDialog);
2348
+ } catch (err) {
2349
+ throw toFriendlyInteractionError(err, label);
2350
+ } finally {
2351
+ cleanup();
2352
+ }
2353
+ }
2354
+ async function waitForViaPlaywright(opts) {
2355
+ const page = await getPageForTargetId(opts);
2356
+ ensurePageState(page);
2357
+ const timeout = resolveActWaitTimeoutMs(opts.timeoutMs);
2358
+ const { abortPromise, cleanup } = createAbortPromise(opts.signal);
2359
+ const reconcileRemoteDialog = () => reconcileRemoteDialogAfterActionSettled(page, opts.signal);
2360
+ const waitForStep = async (stepPromise) => {
2361
+ await awaitActionWithAbort(stepPromise, abortPromise, reconcileRemoteDialog);
2362
+ };
2363
+ try {
2364
+ if (typeof opts.timeMs === "number" && Number.isFinite(opts.timeMs)) await waitForStep(page.waitForTimeout(resolveBoundedDelayMs(opts.timeMs, "wait timeMs", ACT_MAX_WAIT_TIME_MS)));
2365
+ if (opts.text) await waitForStep(page.getByText(opts.text).first().waitFor({
2366
+ state: "visible",
2367
+ timeout
2368
+ }));
2369
+ if (opts.textGone) await waitForStep(page.getByText(opts.textGone).first().waitFor({
2370
+ state: "hidden",
2371
+ timeout
2372
+ }));
2373
+ if (opts.selector) {
2374
+ const selector = normalizeOptionalString(opts.selector) ?? "";
2375
+ if (selector) await waitForStep(page.locator(selector).first().waitFor({
2376
+ state: "visible",
2377
+ timeout
2378
+ }));
2379
+ }
2380
+ if (opts.url) {
2381
+ const url = normalizeOptionalString(opts.url) ?? "";
2382
+ if (url) await waitForStep(page.waitForURL(url, { timeout }));
2383
+ }
2384
+ if (opts.loadState) await waitForStep(page.waitForLoadState(opts.loadState, { timeout }));
2385
+ if (opts.fn) {
2386
+ const fn = normalizeOptionalString(opts.fn) ?? "";
2387
+ if (fn) await waitForStep(page.waitForFunction(fn, { timeout }));
2388
+ }
2389
+ } finally {
2390
+ cleanup();
2391
+ }
2392
+ }
2393
+ async function takeScreenshotViaPlaywright(opts) {
2394
+ const page = await getPageForTargetId(opts);
2395
+ ensurePageState(page);
2396
+ restoreRoleRefsForTarget({
2397
+ cdpUrl: opts.cdpUrl,
2398
+ targetId: opts.targetId,
2399
+ page
2400
+ });
2401
+ const type = opts.type ?? "png";
2402
+ if (opts.ref) {
2403
+ if (opts.fullPage) throw new Error("fullPage 不支持元素截图");
2404
+ return { buffer: await refLocator(page, opts.ref).screenshot({
2405
+ type,
2406
+ timeout: opts.timeoutMs
2407
+ }) };
2408
+ }
2409
+ if (opts.element) {
2410
+ if (opts.fullPage) throw new Error("fullPage 不支持元素截图");
2411
+ return { buffer: await page.locator(opts.element).first().screenshot({
2412
+ type,
2413
+ timeout: opts.timeoutMs
2414
+ }) };
2415
+ }
2416
+ return { buffer: await page.screenshot({
2417
+ type,
2418
+ fullPage: Boolean(opts.fullPage),
2419
+ timeout: opts.timeoutMs
2420
+ }) };
2421
+ }
2422
+ async function screenshotWithLabelsViaPlaywright(opts) {
2423
+ const page = await getPageForTargetId(opts);
2424
+ ensurePageState(page);
2425
+ restoreRoleRefsForTarget({
2426
+ cdpUrl: opts.cdpUrl,
2427
+ targetId: opts.targetId,
2428
+ page
2429
+ });
2430
+ const type = opts.type ?? "png";
2431
+ const maxLabels = typeof opts.maxLabels === "number" && Number.isFinite(opts.maxLabels) ? Math.max(1, Math.floor(opts.maxLabels)) : 150;
2432
+ const viewport = await page.evaluate(() => ({
2433
+ scrollX: window.scrollX || 0,
2434
+ scrollY: window.scrollY || 0,
2435
+ width: window.innerWidth || 0,
2436
+ height: window.innerHeight || 0
2437
+ }));
2438
+ const refs = Object.keys(opts.refs ?? {});
2439
+ const boxes = [];
2440
+ let skipped = 0;
2441
+ for (const ref of refs) {
2442
+ if (boxes.length >= maxLabels) {
2443
+ skipped += 1;
2444
+ continue;
2445
+ }
2446
+ try {
2447
+ const box = await refLocator(page, ref).boundingBox();
2448
+ if (!box) {
2449
+ skipped += 1;
2450
+ continue;
2451
+ }
2452
+ const x0 = box.x;
2453
+ const y0 = box.y;
2454
+ const x1 = box.x + box.width;
2455
+ const y1 = box.y + box.height;
2456
+ const vx0 = viewport.scrollX;
2457
+ const vy0 = viewport.scrollY;
2458
+ const vx1 = viewport.scrollX + viewport.width;
2459
+ const vy1 = viewport.scrollY + viewport.height;
2460
+ if (x1 < vx0 || x0 > vx1 || y1 < vy0 || y0 > vy1) {
2461
+ skipped += 1;
2462
+ continue;
2463
+ }
2464
+ boxes.push({
2465
+ ref,
2466
+ x: x0 - viewport.scrollX,
2467
+ y: y0 - viewport.scrollY,
2468
+ w: Math.max(1, box.width),
2469
+ h: Math.max(1, box.height)
2470
+ });
2471
+ } catch {
2472
+ skipped += 1;
2473
+ }
2474
+ }
2475
+ try {
2476
+ if (boxes.length > 0) await page.evaluate((labels) => {
2477
+ document.querySelectorAll("[data-fengming-labels]").forEach((el) => el.remove());
2478
+ const root = document.createElement("div");
2479
+ root.setAttribute("data-fengming-labels", "1");
2480
+ root.style.position = "fixed";
2481
+ root.style.left = "0";
2482
+ root.style.top = "0";
2483
+ root.style.zIndex = "2147483647";
2484
+ root.style.pointerEvents = "none";
2485
+ root.style.fontFamily = "\"SF Mono\",\"SFMono-Regular\",Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace";
2486
+ const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
2487
+ for (const label of labels) {
2488
+ const box = document.createElement("div");
2489
+ box.setAttribute("data-fengming-labels", "1");
2490
+ box.style.position = "absolute";
2491
+ box.style.left = `${label.x}px`;
2492
+ box.style.top = `${label.y}px`;
2493
+ box.style.width = `${label.w}px`;
2494
+ box.style.height = `${label.h}px`;
2495
+ box.style.border = "2px solid #ffb020";
2496
+ box.style.boxSizing = "border-box";
2497
+ const tag = document.createElement("div");
2498
+ tag.setAttribute("data-fengming-labels", "1");
2499
+ tag.textContent = label.ref;
2500
+ tag.style.position = "absolute";
2501
+ tag.style.left = `${label.x}px`;
2502
+ tag.style.top = `${clamp(label.y - 18, 0, 2e4)}px`;
2503
+ tag.style.background = "#ffb020";
2504
+ tag.style.color = "#1a1a1a";
2505
+ tag.style.fontSize = "12px";
2506
+ tag.style.lineHeight = "14px";
2507
+ tag.style.padding = "1px 4px";
2508
+ tag.style.borderRadius = "3px";
2509
+ tag.style.boxShadow = "0 1px 2px rgba(0,0,0,0.35)";
2510
+ tag.style.whiteSpace = "nowrap";
2511
+ root.appendChild(box);
2512
+ root.appendChild(tag);
2513
+ }
2514
+ document.documentElement.appendChild(root);
2515
+ }, boxes);
2516
+ return {
2517
+ buffer: await page.screenshot({
2518
+ type,
2519
+ timeout: opts.timeoutMs
2520
+ }),
2521
+ labels: boxes.length,
2522
+ skipped
2523
+ };
2524
+ } finally {
2525
+ await page.evaluate(() => {
2526
+ document.querySelectorAll("[data-fengming-labels]").forEach((el) => el.remove());
2527
+ }).catch(() => {});
2528
+ }
2529
+ }
2530
+ async function setInputFilesViaPlaywright(opts) {
2531
+ const page = await getPageForTargetId(opts);
2532
+ ensurePageState(page);
2533
+ restoreRoleRefsForTarget({
2534
+ cdpUrl: opts.cdpUrl,
2535
+ targetId: opts.targetId,
2536
+ page
2537
+ });
2538
+ if (!opts.paths.length) throw new Error("路径是必需的");
2539
+ const inputRef = normalizeOptionalString(opts.inputRef) ?? "";
2540
+ const element = normalizeOptionalString(opts.element) ?? "";
2541
+ if (inputRef && element) throw new Error("inputRef 和 element 互斥");
2542
+ if (!inputRef && !element) throw new Error("需要 inputRef 或 element");
2543
+ const locator = inputRef ? refLocator(page, inputRef) : page.locator(element).first();
2544
+ const uploadPathsResult = await resolveStrictExistingPathsWithinRoot({
2545
+ rootDir: DEFAULT_UPLOAD_DIR,
2546
+ requestedPaths: opts.paths,
2547
+ scopeLabel: `uploads directory (${DEFAULT_UPLOAD_DIR})`
2548
+ });
2549
+ if (!uploadPathsResult.ok) throw new Error(uploadPathsResult.error);
2550
+ const resolvedPaths = uploadPathsResult.paths;
2551
+ try {
2552
+ await locator.setInputFiles(resolvedPaths);
2553
+ } catch (err) {
2554
+ throw toFriendlyInteractionError(err, inputRef || element);
2555
+ }
2556
+ try {
2557
+ const handle = await locator.elementHandle();
2558
+ if (handle) await handle.evaluate((el) => {
2559
+ el.dispatchEvent(new Event("input", { bubbles: true }));
2560
+ el.dispatchEvent(new Event("change", { bubbles: true }));
2561
+ });
2562
+ } catch {}
2563
+ }
2564
+ async function executeSingleAction(action, cdpUrl, targetId, evaluateEnabled, ssrfPolicy, depth = 0, signal) {
2565
+ if (depth > 5) throw new Error(`Batch nesting depth exceeds maximum of 5`);
2566
+ const effectiveTargetId = action.targetId ?? targetId;
2567
+ switch (action.kind) {
2568
+ case "click":
2569
+ await clickViaPlaywright({
2570
+ cdpUrl,
2571
+ targetId: effectiveTargetId,
2572
+ ref: action.ref,
2573
+ selector: action.selector,
2574
+ doubleClick: action.doubleClick,
2575
+ button: action.button,
2576
+ modifiers: action.modifiers,
2577
+ delayMs: action.delayMs,
2578
+ timeoutMs: action.timeoutMs,
2579
+ ssrfPolicy,
2580
+ signal
2581
+ });
2582
+ break;
2583
+ case "clickCoords":
2584
+ await clickCoordsViaPlaywright({
2585
+ cdpUrl,
2586
+ targetId: effectiveTargetId,
2587
+ x: action.x,
2588
+ y: action.y,
2589
+ doubleClick: action.doubleClick,
2590
+ button: action.button,
2591
+ delayMs: action.delayMs,
2592
+ timeoutMs: action.timeoutMs,
2593
+ ssrfPolicy,
2594
+ signal
2595
+ });
2596
+ break;
2597
+ case "type":
2598
+ await typeViaPlaywright({
2599
+ cdpUrl,
2600
+ targetId: effectiveTargetId,
2601
+ ref: action.ref,
2602
+ selector: action.selector,
2603
+ text: action.text,
2604
+ submit: action.submit,
2605
+ slowly: action.slowly,
2606
+ timeoutMs: action.timeoutMs,
2607
+ ssrfPolicy,
2608
+ signal
2609
+ });
2610
+ break;
2611
+ case "press":
2612
+ await pressKeyViaPlaywright({
2613
+ cdpUrl,
2614
+ targetId: effectiveTargetId,
2615
+ key: action.key,
2616
+ delayMs: action.delayMs,
2617
+ ssrfPolicy,
2618
+ signal
2619
+ });
2620
+ break;
2621
+ case "hover":
2622
+ await hoverViaPlaywright({
2623
+ cdpUrl,
2624
+ targetId: effectiveTargetId,
2625
+ ref: action.ref,
2626
+ selector: action.selector,
2627
+ timeoutMs: action.timeoutMs,
2628
+ signal
2629
+ });
2630
+ break;
2631
+ case "scrollIntoView":
2632
+ await scrollIntoViewViaPlaywright({
2633
+ cdpUrl,
2634
+ targetId: effectiveTargetId,
2635
+ ref: action.ref,
2636
+ selector: action.selector,
2637
+ timeoutMs: action.timeoutMs,
2638
+ signal
2639
+ });
2640
+ break;
2641
+ case "drag":
2642
+ await dragViaPlaywright({
2643
+ cdpUrl,
2644
+ targetId: effectiveTargetId,
2645
+ startRef: action.startRef,
2646
+ startSelector: action.startSelector,
2647
+ endRef: action.endRef,
2648
+ endSelector: action.endSelector,
2649
+ timeoutMs: action.timeoutMs,
2650
+ signal
2651
+ });
2652
+ break;
2653
+ case "select":
2654
+ await selectOptionViaPlaywright({
2655
+ cdpUrl,
2656
+ targetId: effectiveTargetId,
2657
+ ref: action.ref,
2658
+ selector: action.selector,
2659
+ values: action.values,
2660
+ timeoutMs: action.timeoutMs,
2661
+ ssrfPolicy,
2662
+ signal
2663
+ });
2664
+ break;
2665
+ case "fill":
2666
+ await fillFormViaPlaywright({
2667
+ cdpUrl,
2668
+ targetId: effectiveTargetId,
2669
+ fields: action.fields,
2670
+ timeoutMs: action.timeoutMs,
2671
+ ssrfPolicy,
2672
+ signal
2673
+ });
2674
+ break;
2675
+ case "resize":
2676
+ await resizeViewportViaPlaywright({
2677
+ cdpUrl,
2678
+ targetId: effectiveTargetId,
2679
+ width: action.width,
2680
+ height: action.height
2681
+ });
2682
+ break;
2683
+ case "wait":
2684
+ if (action.fn && !evaluateEnabled) throw new Error("wait --fn 已被配置禁用");
2685
+ await waitForViaPlaywright({
2686
+ cdpUrl,
2687
+ targetId: effectiveTargetId,
2688
+ timeMs: action.timeMs,
2689
+ text: action.text,
2690
+ textGone: action.textGone,
2691
+ selector: action.selector,
2692
+ url: action.url,
2693
+ loadState: action.loadState,
2694
+ fn: action.fn,
2695
+ timeoutMs: action.timeoutMs,
2696
+ signal
2697
+ });
2698
+ break;
2699
+ case "evaluate":
2700
+ if (!evaluateEnabled) throw new Error("act:evaluate is disabled by config (browser.evaluateEnabled=false)");
2701
+ return await evaluateViaPlaywright({
2702
+ cdpUrl,
2703
+ targetId: effectiveTargetId,
2704
+ ssrfPolicy,
2705
+ fn: action.fn,
2706
+ ref: action.ref,
2707
+ timeoutMs: action.timeoutMs,
2708
+ signal
2709
+ });
2710
+ case "close":
2711
+ await closePageViaPlaywright({
2712
+ cdpUrl,
2713
+ targetId: effectiveTargetId
2714
+ });
2715
+ break;
2716
+ case "batch":
2717
+ await batchViaPlaywright({
2718
+ cdpUrl,
2719
+ targetId: effectiveTargetId,
2720
+ ssrfPolicy,
2721
+ actions: action.actions,
2722
+ stopOnError: action.stopOnError,
2723
+ evaluateEnabled,
2724
+ depth: depth + 1,
2725
+ signal
2726
+ });
2727
+ break;
2728
+ default: throw new Error(`Unsupported batch action kind: ${action.kind}`);
2729
+ }
2730
+ }
2731
+ async function executeActViaPlaywright(opts) {
2732
+ const dialogAbort = createObservedDialogAbortSignalForPage({
2733
+ page: await getPageForTargetId({
2734
+ cdpUrl: opts.cdpUrl,
2735
+ targetId: opts.targetId,
2736
+ ssrfPolicy: opts.ssrfPolicy
2737
+ }),
2738
+ parentSignal: opts.signal
2739
+ });
2740
+ try {
2741
+ if (opts.action.kind === "batch") return { results: (await batchViaPlaywright({
2742
+ cdpUrl: opts.cdpUrl,
2743
+ targetId: opts.targetId,
2744
+ ssrfPolicy: opts.ssrfPolicy,
2745
+ actions: opts.action.actions,
2746
+ stopOnError: opts.action.stopOnError,
2747
+ evaluateEnabled: opts.evaluateEnabled,
2748
+ signal: dialogAbort.signal
2749
+ })).results };
2750
+ const result = await executeSingleAction(opts.action, opts.cdpUrl, opts.targetId, opts.evaluateEnabled, opts.ssrfPolicy, 0, dialogAbort.signal);
2751
+ if (opts.action.kind === "evaluate") return { result };
2752
+ return {};
2753
+ } catch (err) {
2754
+ if (isBrowserObservedDialogBlockedError(err)) return {
2755
+ blockedByDialog: true,
2756
+ browserState: err.browserState
2757
+ };
2758
+ throw err;
2759
+ } finally {
2760
+ dialogAbort.cleanup();
2761
+ }
2762
+ }
2763
+ async function batchViaPlaywright(opts) {
2764
+ const depth = opts.depth ?? 0;
2765
+ if (depth > 5) throw new Error(`Batch nesting depth exceeds maximum of 5`);
2766
+ if (opts.actions.length > 100) throw new Error(`Batch exceeds maximum of 100 actions`);
2767
+ const results = [];
2768
+ for (const action of opts.actions) {
2769
+ if (opts.signal?.aborted) throw opts.signal.reason ?? /* @__PURE__ */ new Error("已中止");
2770
+ try {
2771
+ await executeSingleAction(action, opts.cdpUrl, opts.targetId, opts.evaluateEnabled, opts.ssrfPolicy, depth, opts.signal);
2772
+ results.push({ ok: true });
2773
+ } catch (err) {
2774
+ if (isBrowserObservedDialogBlockedError(err)) throw err;
2775
+ const message = formatErrorMessage(err);
2776
+ results.push({
2777
+ ok: false,
2778
+ error: message
2779
+ });
2780
+ if (opts.stopOnError !== false) break;
2781
+ }
2782
+ }
2783
+ return { results };
2784
+ }
2785
+ //#endregion
2786
+ //#region extensions/browser/src/browser/pw-tools-core.responses.ts
2787
+ async function responseBodyViaPlaywright(opts) {
2788
+ const pattern = normalizeOptionalString(opts.url) ?? "";
2789
+ if (!pattern) throw new Error("URL 是必需的");
2790
+ const maxChars = typeof opts.maxChars === "number" && Number.isFinite(opts.maxChars) ? Math.max(1, Math.min(5e6, Math.floor(opts.maxChars))) : 2e5;
2791
+ const timeout = normalizeTimeoutMs(opts.timeoutMs, 2e4);
2792
+ const page = await getPageForTargetId(opts);
2793
+ ensurePageState(page);
2794
+ const resp = await new Promise((resolve, reject) => {
2795
+ let done = false;
2796
+ let timer;
2797
+ let handler;
2798
+ const cleanup = () => {
2799
+ if (timer) clearTimeout(timer);
2800
+ timer = void 0;
2801
+ if (handler) page.off("response", handler);
2802
+ };
2803
+ handler = (resp) => {
2804
+ if (done) return;
2805
+ if (!matchBrowserUrlPattern(pattern, resp.url?.() || "")) return;
2806
+ done = true;
2807
+ cleanup();
2808
+ resolve(resp);
2809
+ };
2810
+ page.on("response", handler);
2811
+ timer = setTimeout(() => {
2812
+ if (done) return;
2813
+ done = true;
2814
+ cleanup();
2815
+ reject(/* @__PURE__ */ new Error(`Response not found for url pattern "${pattern}". Run 'fengming browser requests' to inspect recent network activity.`));
2816
+ }, timeout);
2817
+ });
2818
+ const url = resp.url?.() || "";
2819
+ const status = resp.status?.();
2820
+ const headers = resp.headers?.();
2821
+ let bodyText = "";
2822
+ try {
2823
+ if (typeof resp.text === "function") bodyText = await resp.text();
2824
+ else if (typeof resp.body === "function") {
2825
+ const buf = await resp.body();
2826
+ bodyText = new TextDecoder("utf-8").decode(buf);
2827
+ }
2828
+ } catch (err) {
2829
+ throw new Error(`Failed to read response body for "${url}": ${String(err)}`, { cause: err });
2830
+ }
2831
+ return {
2832
+ url,
2833
+ status,
2834
+ headers,
2835
+ body: bodyText.length > maxChars ? bodyText.slice(0, maxChars) : bodyText,
2836
+ truncated: bodyText.length > maxChars ? true : void 0
2837
+ };
2838
+ }
2839
+ //#endregion
2840
+ //#region extensions/browser/src/browser/pw-tools-core.state.ts
2841
+ const { devices: playwrightDevices } = playwrightCore;
2842
+ async function setOfflineViaPlaywright(opts) {
2843
+ const page = await getPageForTargetId(opts);
2844
+ ensurePageState(page);
2845
+ await page.context().setOffline(opts.offline);
2846
+ }
2847
+ async function setExtraHTTPHeadersViaPlaywright(opts) {
2848
+ const page = await getPageForTargetId(opts);
2849
+ ensurePageState(page);
2850
+ await page.context().setExtraHTTPHeaders(opts.headers);
2851
+ }
2852
+ async function setHttpCredentialsViaPlaywright(opts) {
2853
+ const page = await getPageForTargetId(opts);
2854
+ ensurePageState(page);
2855
+ if (opts.clear) {
2856
+ await page.context().setHTTPCredentials(null);
2857
+ return;
2858
+ }
2859
+ const username = opts.username ?? "";
2860
+ const password = opts.password ?? "";
2861
+ if (!username) throw new Error("用户名是必需的(或设置 clear=true)");
2862
+ await page.context().setHTTPCredentials({
2863
+ username,
2864
+ password
2865
+ });
2866
+ }
2867
+ async function setGeolocationViaPlaywright(opts) {
2868
+ const page = await getPageForTargetId(opts);
2869
+ ensurePageState(page);
2870
+ const context = page.context();
2871
+ if (opts.clear) {
2872
+ await context.setGeolocation(null);
2873
+ await context.clearPermissions().catch(() => {});
2874
+ return;
2875
+ }
2876
+ if (typeof opts.latitude !== "number" || typeof opts.longitude !== "number") throw new Error("latitude and longitude are required (or set clear=true)");
2877
+ await context.setGeolocation({
2878
+ latitude: opts.latitude,
2879
+ longitude: opts.longitude,
2880
+ accuracy: typeof opts.accuracy === "number" ? opts.accuracy : void 0
2881
+ });
2882
+ const origin = normalizeOptionalString(opts.origin) || (() => {
2883
+ try {
2884
+ return new URL(page.url()).origin;
2885
+ } catch {
2886
+ return "";
2887
+ }
2888
+ })();
2889
+ if (origin) await context.grantPermissions(["geolocation"], { origin }).catch(() => {});
2890
+ }
2891
+ async function emulateMediaViaPlaywright(opts) {
2892
+ const page = await getPageForTargetId(opts);
2893
+ ensurePageState(page);
2894
+ await page.emulateMedia({ colorScheme: opts.colorScheme });
2895
+ }
2896
+ async function setLocaleViaPlaywright(opts) {
2897
+ const page = await getPageForTargetId(opts);
2898
+ ensurePageState(page);
2899
+ const locale = normalizeOptionalString(opts.locale) ?? "";
2900
+ if (!locale) throw new Error("locale 是必需的");
2901
+ await withPageScopedCdpClient({
2902
+ cdpUrl: opts.cdpUrl,
2903
+ page,
2904
+ targetId: opts.targetId,
2905
+ fn: async (send) => {
2906
+ try {
2907
+ await send("Emulation.setLocaleOverride", { locale });
2908
+ } catch (err) {
2909
+ if (String(err).includes("Another locale override is already in effect")) return;
2910
+ throw err;
2911
+ }
2912
+ }
2913
+ });
2914
+ }
2915
+ async function setTimezoneViaPlaywright(opts) {
2916
+ const page = await getPageForTargetId(opts);
2917
+ ensurePageState(page);
2918
+ const timezoneId = normalizeOptionalString(opts.timezoneId) ?? "";
2919
+ if (!timezoneId) throw new Error("timezoneId 是必需的");
2920
+ await withPageScopedCdpClient({
2921
+ cdpUrl: opts.cdpUrl,
2922
+ page,
2923
+ targetId: opts.targetId,
2924
+ fn: async (send) => {
2925
+ try {
2926
+ await send("Emulation.setTimezoneOverride", { timezoneId });
2927
+ } catch (err) {
2928
+ const msg = String(err);
2929
+ if (msg.includes("Timezone override is already in effect")) return;
2930
+ if (msg.includes("Invalid timezone")) throw new Error(`Invalid timezone ID: ${timezoneId}`, { cause: err });
2931
+ throw err;
2932
+ }
2933
+ }
2934
+ });
2935
+ }
2936
+ async function setDeviceViaPlaywright(opts) {
2937
+ const page = await getPageForTargetId(opts);
2938
+ ensurePageState(page);
2939
+ const name = normalizeOptionalString(opts.name) ?? "";
2940
+ if (!name) throw new Error("设备名称是必需的");
2941
+ const descriptor = playwrightDevices[name];
2942
+ if (!descriptor) throw new Error(`Unknown device "${name}".`);
2943
+ if (descriptor.viewport) await page.setViewportSize({
2944
+ width: descriptor.viewport.width,
2945
+ height: descriptor.viewport.height
2946
+ });
2947
+ await withPageScopedCdpClient({
2948
+ cdpUrl: opts.cdpUrl,
2949
+ page,
2950
+ targetId: opts.targetId,
2951
+ fn: async (send) => {
2952
+ if (descriptor.userAgent || descriptor.locale) await send("Emulation.setUserAgentOverride", {
2953
+ userAgent: descriptor.userAgent ?? "",
2954
+ acceptLanguage: descriptor.locale ?? void 0
2955
+ });
2956
+ if (descriptor.viewport) await send("Emulation.setDeviceMetricsOverride", {
2957
+ mobile: Boolean(descriptor.isMobile),
2958
+ width: descriptor.viewport.width,
2959
+ height: descriptor.viewport.height,
2960
+ deviceScaleFactor: descriptor.deviceScaleFactor ?? 1,
2961
+ screenWidth: descriptor.viewport.width,
2962
+ screenHeight: descriptor.viewport.height
2963
+ });
2964
+ if (descriptor.hasTouch) await send("Emulation.setTouchEmulationEnabled", { enabled: true });
2965
+ }
2966
+ });
2967
+ }
2968
+ //#endregion
2969
+ //#region extensions/browser/src/browser/pw-tools-core.storage.ts
2970
+ async function cookiesGetViaPlaywright(opts) {
2971
+ const page = await getPageForTargetId(opts);
2972
+ ensurePageState(page);
2973
+ return { cookies: await page.context().cookies() };
2974
+ }
2975
+ async function cookiesSetViaPlaywright(opts) {
2976
+ const page = await getPageForTargetId(opts);
2977
+ ensurePageState(page);
2978
+ const cookie = opts.cookie;
2979
+ if (!cookie.name || cookie.value === void 0) throw new Error("cookie 的 name 和 value 是必需的");
2980
+ const hasUrl = typeof cookie.url === "string" && cookie.url.trim();
2981
+ const hasDomainPath = typeof cookie.domain === "string" && cookie.domain.trim() && typeof cookie.path === "string" && cookie.path.trim();
2982
+ if (!hasUrl && !hasDomainPath) throw new Error("cookie 需要 url 或 domain+path");
2983
+ await page.context().addCookies([cookie]);
2984
+ }
2985
+ async function cookiesClearViaPlaywright(opts) {
2986
+ const page = await getPageForTargetId(opts);
2987
+ ensurePageState(page);
2988
+ await page.context().clearCookies();
2989
+ }
2990
+ async function storageGetViaPlaywright(opts) {
2991
+ const page = await getPageForTargetId(opts);
2992
+ ensurePageState(page);
2993
+ const kind = opts.kind;
2994
+ const key = readStringValue(opts.key);
2995
+ return { values: await page.evaluate(({ kind: kind2, key: key2 }) => {
2996
+ const store = kind2 === "session" ? window.sessionStorage : window.localStorage;
2997
+ if (key2) {
2998
+ const value = store.getItem(key2);
2999
+ return value === null ? {} : { [key2]: value };
3000
+ }
3001
+ const out = {};
3002
+ for (let i = 0; i < store.length; i += 1) {
3003
+ const k = store.key(i);
3004
+ if (!k) continue;
3005
+ const v = store.getItem(k);
3006
+ if (v !== null) out[k] = v;
3007
+ }
3008
+ return out;
3009
+ }, {
3010
+ kind,
3011
+ key
3012
+ }) ?? {} };
3013
+ }
3014
+ async function storageSetViaPlaywright(opts) {
3015
+ const page = await getPageForTargetId(opts);
3016
+ ensurePageState(page);
3017
+ const key = opts.key;
3018
+ if (!key) throw new Error("key 是必需的");
3019
+ await page.evaluate(({ kind, key: k, value }) => {
3020
+ (kind === "session" ? window.sessionStorage : window.localStorage).setItem(k, value);
3021
+ }, {
3022
+ kind: opts.kind,
3023
+ key,
3024
+ value: opts.value
3025
+ });
3026
+ }
3027
+ async function storageClearViaPlaywright(opts) {
3028
+ const page = await getPageForTargetId(opts);
3029
+ ensurePageState(page);
3030
+ await page.evaluate(({ kind }) => {
3031
+ (kind === "session" ? window.sessionStorage : window.localStorage).clear();
3032
+ }, { kind: opts.kind });
3033
+ }
3034
+ //#endregion
3035
+ //#region extensions/browser/src/browser/pw-tools-core.trace.ts
3036
+ async function traceStartViaPlaywright(opts) {
3037
+ const context = (await getPageForTargetId(opts)).context();
3038
+ const ctxState = ensureContextState(context);
3039
+ if (ctxState.traceActive) throw new Error("Trace 已在运行中,请先停止当前 trace 再启动新的");
3040
+ await context.tracing.start({
3041
+ screenshots: opts.screenshots ?? true,
3042
+ snapshots: opts.snapshots ?? true,
3043
+ sources: opts.sources ?? false
3044
+ });
3045
+ ctxState.traceActive = true;
3046
+ }
3047
+ async function traceStopViaPlaywright(opts) {
3048
+ const context = (await getPageForTargetId(opts)).context();
3049
+ const ctxState = ensureContextState(context);
3050
+ if (!ctxState.traceActive) throw new Error("没有活跃的 trace,请先启动 trace 再停止");
3051
+ await writeViaSiblingTempPath({
3052
+ rootDir: DEFAULT_TRACE_DIR,
3053
+ targetPath: opts.path,
3054
+ writeTemp: async (tempPath) => {
3055
+ await context.tracing.stop({ path: tempPath });
3056
+ }
3057
+ });
3058
+ ctxState.traceActive = false;
3059
+ }
3060
+ //#endregion
3061
+ //#region extensions/browser/src/browser/pw-ai.ts
3062
+ markPwAiLoaded();
3063
+ //#endregion
3064
+ export { armDialogViaPlaywright, armFileUploadViaPlaywright, batchViaPlaywright, clickViaPlaywright, closePageByTargetIdViaPlaywright, closePageViaPlaywright, closePlaywrightBrowserConnection, cookiesClearViaPlaywright, cookiesGetViaPlaywright, cookiesSetViaPlaywright, createObservedDialogAbortSignalForPage, createPageViaPlaywright, downloadViaPlaywright, dragViaPlaywright, emulateMediaViaPlaywright, ensurePageState, evaluateViaPlaywright, executeActViaPlaywright, fillFormViaPlaywright, focusPageByTargetIdViaPlaywright, forceDisconnectPlaywrightForTarget, getConsoleMessagesViaPlaywright, getNetworkRequestsViaPlaywright, getObservedBrowserStateForPage, getObservedBrowserStateViaPlaywright, getPageErrorsViaPlaywright, getPageForTargetId, highlightViaPlaywright, hoverViaPlaywright, isBrowserObservedDialogBlockedError, listPagesViaPlaywright, markObservedDialogsHandledRemotelyForPage, navigateViaPlaywright, pdfViaPlaywright, pressKeyViaPlaywright, refLocator, resizeViewportViaPlaywright, respondToObservedDialogOnPage, respondToObservedDialogViaPlaywright, responseBodyViaPlaywright, screenshotWithLabelsViaPlaywright, scrollIntoViewViaPlaywright, selectOptionViaPlaywright, setDeviceViaPlaywright, setExtraHTTPHeadersViaPlaywright, setGeolocationViaPlaywright, setHttpCredentialsViaPlaywright, setInputFilesViaPlaywright, setLocaleViaPlaywright, setOfflineViaPlaywright, setTimezoneViaPlaywright, snapshotAiViaPlaywright, snapshotAriaViaPlaywright, snapshotRoleViaPlaywright, storageClearViaPlaywright, storageGetViaPlaywright, storageSetViaPlaywright, storeAriaSnapshotRefsViaPlaywright, takeScreenshotViaPlaywright, traceStartViaPlaywright, traceStopViaPlaywright, typeViaPlaywright, waitForDownloadViaPlaywright, waitForViaPlaywright };