@browserbasehq/orca 3.1.0-patch.3 → 3.2.0-preview.1

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 (1460) hide show
  1. package/dist/cjs/cli.js +2 -210
  2. package/dist/cjs/index.d.ts +1 -0
  3. package/dist/cjs/index.js +2 -25025
  4. package/dist/cjs/lib/inference.js +335 -0
  5. package/dist/cjs/lib/inference.js.map +1 -0
  6. package/dist/cjs/lib/inferenceLogUtils.js +99 -0
  7. package/dist/cjs/lib/inferenceLogUtils.js.map +1 -0
  8. package/dist/cjs/lib/logger.js +331 -0
  9. package/dist/cjs/lib/logger.js.map +1 -0
  10. package/dist/cjs/lib/modelUtils.d.ts +1 -0
  11. package/dist/cjs/lib/modelUtils.js +53 -0
  12. package/dist/cjs/lib/modelUtils.js.map +1 -0
  13. package/dist/cjs/lib/prompt.d.ts +3 -2
  14. package/dist/cjs/lib/prompt.js +245 -0
  15. package/dist/cjs/lib/prompt.js.map +1 -0
  16. package/dist/cjs/lib/utils.js +670 -0
  17. package/dist/cjs/lib/utils.js.map +1 -0
  18. package/dist/cjs/lib/v3/agent/AgentClient.js +21 -0
  19. package/dist/cjs/lib/v3/agent/AgentClient.js.map +1 -0
  20. package/dist/cjs/lib/v3/agent/AgentProvider.js +81 -0
  21. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -0
  22. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +844 -0
  23. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
  24. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +803 -0
  25. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -0
  26. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +777 -0
  27. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
  28. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +622 -0
  29. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -0
  30. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +3 -1
  31. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js +212 -0
  32. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
  33. package/dist/cjs/lib/v3/agent/tools/act.d.ts +2 -2
  34. package/dist/cjs/lib/v3/agent/tools/act.js +75 -0
  35. package/dist/cjs/lib/v3/agent/tools/act.js.map +1 -0
  36. package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  37. package/dist/cjs/lib/v3/agent/tools/ariaTree.js +73 -0
  38. package/dist/cjs/lib/v3/agent/tools/ariaTree.js.map +1 -0
  39. package/dist/cjs/lib/v3/agent/tools/click.js +100 -0
  40. package/dist/cjs/lib/v3/agent/tools/click.js.map +1 -0
  41. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js +72 -0
  42. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js.map +1 -0
  43. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js +101 -0
  44. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
  45. package/dist/cjs/lib/v3/agent/tools/extract.d.ts +2 -2
  46. package/dist/cjs/lib/v3/agent/tools/extract.js +110 -0
  47. package/dist/cjs/lib/v3/agent/tools/extract.js.map +1 -0
  48. package/dist/cjs/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
  49. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js +158 -0
  50. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js.map +1 -0
  51. package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +8 -2
  52. package/dist/cjs/lib/v3/agent/tools/fillform.js +90 -0
  53. package/dist/cjs/lib/v3/agent/tools/fillform.js.map +1 -0
  54. package/dist/cjs/lib/v3/agent/tools/goto.js +35 -0
  55. package/dist/cjs/lib/v3/agent/tools/goto.js.map +1 -0
  56. package/dist/cjs/lib/v3/agent/tools/index.d.ts +11 -1
  57. package/dist/cjs/lib/v3/agent/tools/index.js +78 -0
  58. package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -0
  59. package/dist/cjs/lib/v3/agent/tools/keys.js +64 -0
  60. package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -0
  61. package/dist/cjs/lib/v3/agent/tools/navback.js +27 -0
  62. package/dist/cjs/lib/v3/agent/tools/navback.js.map +1 -0
  63. package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +8 -0
  64. package/dist/cjs/lib/v3/agent/tools/screenshot.js +47 -0
  65. package/dist/cjs/lib/v3/agent/tools/screenshot.js.map +1 -0
  66. package/dist/cjs/lib/v3/agent/tools/scroll.js +159 -0
  67. package/dist/cjs/lib/v3/agent/tools/scroll.js.map +1 -0
  68. package/dist/cjs/lib/v3/agent/tools/search.js +77 -0
  69. package/dist/cjs/lib/v3/agent/tools/search.js.map +1 -0
  70. package/dist/cjs/lib/v3/agent/tools/think.js +28 -0
  71. package/dist/cjs/lib/v3/agent/tools/think.js.map +1 -0
  72. package/dist/cjs/lib/v3/agent/tools/type.d.ts +2 -2
  73. package/dist/cjs/lib/v3/agent/tools/type.js +111 -0
  74. package/dist/cjs/lib/v3/agent/tools/type.js.map +1 -0
  75. package/dist/cjs/lib/v3/agent/tools/wait.js +63 -0
  76. package/dist/cjs/lib/v3/agent/tools/wait.js.map +1 -0
  77. package/dist/cjs/lib/v3/agent/utils/actionMapping.js +103 -0
  78. package/dist/cjs/lib/v3/agent/utils/actionMapping.js.map +1 -0
  79. package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js +33 -0
  80. package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
  81. package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js +65 -0
  82. package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
  83. package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js +150 -0
  84. package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
  85. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +108 -0
  86. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
  87. package/dist/cjs/lib/v3/agent/utils/imageCompression.js +212 -0
  88. package/dist/cjs/lib/v3/agent/utils/imageCompression.js.map +1 -0
  89. package/dist/cjs/lib/v3/agent/utils/messageProcessing.js +167 -0
  90. package/dist/cjs/lib/v3/agent/utils/messageProcessing.js.map +1 -0
  91. package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js +29 -0
  92. package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
  93. package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js +90 -0
  94. package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
  95. package/dist/cjs/lib/v3/agent/utils/variables.d.ts +21 -0
  96. package/dist/cjs/lib/v3/agent/utils/variables.js +54 -0
  97. package/dist/cjs/lib/v3/agent/utils/variables.js.map +1 -0
  98. package/dist/cjs/lib/v3/agent/utils/xpath.js +22 -0
  99. package/dist/cjs/lib/v3/agent/utils/xpath.js.map +1 -0
  100. package/dist/cjs/lib/v3/api.d.ts +23 -5
  101. package/dist/cjs/lib/v3/api.js +589 -0
  102. package/dist/cjs/lib/v3/api.js.map +1 -0
  103. package/dist/cjs/lib/v3/cache/ActCache.d.ts +0 -1
  104. package/dist/cjs/lib/v3/cache/ActCache.js +280 -0
  105. package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -0
  106. package/dist/cjs/lib/v3/cache/AgentCache.d.ts +1 -0
  107. package/dist/cjs/lib/v3/cache/AgentCache.js +651 -0
  108. package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -0
  109. package/dist/cjs/lib/v3/cache/CacheStorage.js +105 -0
  110. package/dist/cjs/lib/v3/cache/CacheStorage.js.map +1 -0
  111. package/dist/cjs/lib/v3/cache/serverAgentCache.js +52 -0
  112. package/dist/cjs/lib/v3/cache/serverAgentCache.js.map +1 -0
  113. package/dist/cjs/lib/v3/cache/utils.js +44 -0
  114. package/dist/cjs/lib/v3/cache/utils.js.map +1 -0
  115. package/dist/cjs/lib/v3/cli.js +15 -0
  116. package/dist/cjs/lib/v3/cli.js.map +1 -0
  117. package/dist/cjs/lib/v3/dom/a11yScripts/index.js +124 -0
  118. package/dist/cjs/lib/v3/dom/a11yScripts/index.js.map +1 -0
  119. package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js +23 -0
  120. package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
  121. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +59 -0
  122. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
  123. package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js +5 -0
  124. package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js.map +1 -0
  125. package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js +11 -0
  126. package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
  127. package/dist/cjs/lib/v3/dom/build/scriptV3Content.js +5 -0
  128. package/dist/cjs/lib/v3/dom/build/scriptV3Content.js.map +1 -0
  129. package/dist/cjs/lib/v3/dom/index.js +18 -0
  130. package/dist/cjs/lib/v3/dom/index.js.map +1 -0
  131. package/dist/cjs/lib/v3/dom/locatorScripts/counts.js +278 -0
  132. package/dist/cjs/lib/v3/dom/locatorScripts/counts.js.map +1 -0
  133. package/dist/cjs/lib/v3/dom/locatorScripts/index.js +21 -0
  134. package/dist/cjs/lib/v3/dom/locatorScripts/index.js.map +1 -0
  135. package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js +474 -0
  136. package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
  137. package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js +289 -0
  138. package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
  139. package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js +286 -0
  140. package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
  141. package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js +381 -0
  142. package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
  143. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +202 -0
  144. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
  145. package/dist/cjs/lib/v3/dom/piercer.entry.js +5 -0
  146. package/dist/cjs/lib/v3/dom/piercer.entry.js.map +1 -0
  147. package/dist/cjs/lib/v3/dom/piercer.runtime.js +93 -0
  148. package/dist/cjs/lib/v3/dom/piercer.runtime.js.map +1 -0
  149. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js +5 -0
  150. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
  151. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js +43 -0
  152. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
  153. package/dist/cjs/lib/v3/dom/screenshotScripts/index.js +6 -0
  154. package/dist/cjs/lib/v3/dom/screenshotScripts/index.js.map +1 -0
  155. package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js +85 -0
  156. package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
  157. package/dist/cjs/lib/v3/external_clients/aisdk.js +107 -0
  158. package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -0
  159. package/dist/cjs/lib/v3/external_clients/customOpenAI.js +224 -0
  160. package/dist/cjs/lib/v3/external_clients/customOpenAI.js.map +1 -0
  161. package/dist/cjs/lib/v3/flowLogger.js +881 -0
  162. package/dist/cjs/lib/v3/flowLogger.js.map +1 -0
  163. package/dist/cjs/lib/v3/handlers/actHandler.d.ts +2 -1
  164. package/dist/cjs/lib/v3/handlers/actHandler.js +344 -0
  165. package/dist/cjs/lib/v3/handlers/actHandler.js.map +1 -0
  166. package/dist/cjs/lib/v3/handlers/extractHandler.js +144 -0
  167. package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -0
  168. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +604 -0
  169. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
  170. package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js +17 -0
  171. package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
  172. package/dist/cjs/lib/v3/handlers/observeHandler.js +159 -0
  173. package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -0
  174. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +462 -0
  175. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -0
  176. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +532 -0
  177. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
  178. package/dist/cjs/lib/v3/index.d.ts +143 -0
  179. package/dist/cjs/lib/v3/index.js +119 -0
  180. package/dist/cjs/lib/v3/index.js.map +1 -0
  181. package/dist/cjs/lib/v3/launch/browserbase.d.ts +1 -1
  182. package/dist/cjs/lib/v3/launch/browserbase.js +47 -0
  183. package/dist/cjs/lib/v3/launch/browserbase.js.map +1 -0
  184. package/dist/cjs/lib/v3/launch/local.js +104 -0
  185. package/dist/cjs/lib/v3/launch/local.js.map +1 -0
  186. package/dist/cjs/lib/v3/llm/AnthropicClient.js +246 -0
  187. package/dist/cjs/lib/v3/llm/AnthropicClient.js.map +1 -0
  188. package/dist/cjs/lib/v3/llm/CerebrasClient.js +242 -0
  189. package/dist/cjs/lib/v3/llm/CerebrasClient.js.map +1 -0
  190. package/dist/cjs/lib/v3/llm/GoogleClient.js +373 -0
  191. package/dist/cjs/lib/v3/llm/GoogleClient.js.map +1 -0
  192. package/dist/cjs/lib/v3/llm/GroqClient.js +243 -0
  193. package/dist/cjs/lib/v3/llm/GroqClient.js.map +1 -0
  194. package/dist/cjs/lib/v3/llm/LLMClient.js +27 -0
  195. package/dist/cjs/lib/v3/llm/LLMClient.js.map +1 -0
  196. package/dist/cjs/lib/v3/llm/LLMProvider.js +194 -0
  197. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -0
  198. package/dist/cjs/lib/v3/llm/OpenAIClient.js +336 -0
  199. package/dist/cjs/lib/v3/llm/OpenAIClient.js.map +1 -0
  200. package/dist/cjs/lib/v3/llm/aisdk.js +355 -0
  201. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -0
  202. package/dist/cjs/lib/v3/logger.js +102 -0
  203. package/dist/cjs/lib/v3/logger.js.map +1 -0
  204. package/dist/cjs/lib/v3/mcp/connection.d.ts +2 -0
  205. package/dist/cjs/lib/v3/mcp/connection.js +56 -0
  206. package/dist/cjs/lib/v3/mcp/connection.js.map +1 -0
  207. package/dist/cjs/lib/v3/mcp/utils.js +40 -0
  208. package/dist/cjs/lib/v3/mcp/utils.js.map +1 -0
  209. package/dist/cjs/lib/v3/runtimePaths.d.ts +6 -0
  210. package/dist/cjs/lib/v3/runtimePaths.js +119 -0
  211. package/dist/cjs/lib/v3/runtimePaths.js.map +1 -0
  212. package/dist/cjs/lib/v3/shutdown/cleanupLocal.js +36 -0
  213. package/dist/cjs/lib/v3/shutdown/cleanupLocal.js.map +1 -0
  214. package/dist/cjs/lib/v3/shutdown/supervisor.js +193 -0
  215. package/dist/cjs/lib/v3/shutdown/supervisor.js.map +1 -0
  216. package/dist/cjs/lib/v3/shutdown/supervisorClient.js +95 -0
  217. package/dist/cjs/lib/v3/shutdown/supervisorClient.js.map +1 -0
  218. package/dist/cjs/lib/v3/timeoutConfig.d.ts +1 -1
  219. package/dist/cjs/lib/v3/timeoutConfig.js +36 -0
  220. package/dist/cjs/lib/v3/timeoutConfig.js.map +1 -0
  221. package/dist/cjs/lib/v3/types/private/agent.js +3 -0
  222. package/dist/cjs/lib/v3/types/private/agent.js.map +1 -0
  223. package/dist/cjs/lib/v3/types/private/api.js +3 -0
  224. package/dist/cjs/lib/v3/types/private/api.js.map +1 -0
  225. package/dist/cjs/lib/v3/types/private/cache.d.ts +3 -0
  226. package/dist/cjs/lib/v3/types/private/cache.js +3 -0
  227. package/dist/cjs/lib/v3/types/private/cache.js.map +1 -0
  228. package/dist/cjs/lib/v3/types/private/evaluator.js +3 -0
  229. package/dist/cjs/lib/v3/types/private/evaluator.js.map +1 -0
  230. package/dist/cjs/lib/v3/types/private/handlers.d.ts +2 -1
  231. package/dist/cjs/lib/v3/types/private/handlers.js +19 -0
  232. package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -0
  233. package/dist/cjs/lib/v3/types/private/index.js +24 -0
  234. package/dist/cjs/lib/v3/types/private/index.js.map +1 -0
  235. package/dist/cjs/lib/v3/types/private/internal.js +3 -0
  236. package/dist/cjs/lib/v3/types/private/internal.js.map +1 -0
  237. package/dist/cjs/lib/v3/types/private/locator.js +3 -0
  238. package/dist/cjs/lib/v3/types/private/locator.js.map +1 -0
  239. package/dist/cjs/lib/v3/types/private/network.js +6 -0
  240. package/dist/cjs/lib/v3/types/private/network.js.map +1 -0
  241. package/dist/cjs/lib/v3/types/private/shutdown.d.ts +1 -1
  242. package/dist/cjs/lib/v3/types/private/shutdown.js +6 -0
  243. package/dist/cjs/lib/v3/types/private/shutdown.js.map +1 -0
  244. package/dist/cjs/lib/v3/types/private/shutdownErrors.js +28 -0
  245. package/dist/cjs/lib/v3/types/private/shutdownErrors.js.map +1 -0
  246. package/dist/cjs/lib/v3/types/private/snapshot.js +3 -0
  247. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -0
  248. package/dist/cjs/lib/v3/types/public/agent.d.ts +60 -2
  249. package/dist/cjs/lib/v3/types/public/agent.js +18 -0
  250. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -0
  251. package/dist/cjs/lib/v3/types/public/api.d.ts +17 -0
  252. package/dist/cjs/lib/v3/types/public/api.js +922 -0
  253. package/dist/cjs/lib/v3/types/public/api.js.map +1 -0
  254. package/dist/cjs/lib/v3/types/public/apiErrors.js +41 -0
  255. package/dist/cjs/lib/v3/types/public/apiErrors.js.map +1 -0
  256. package/dist/cjs/lib/v3/types/public/context.d.ts +32 -0
  257. package/dist/cjs/lib/v3/types/public/context.js +3 -0
  258. package/dist/cjs/lib/v3/types/public/context.js.map +1 -0
  259. package/dist/cjs/lib/v3/types/public/index.d.ts +1 -0
  260. package/dist/cjs/lib/v3/types/public/index.js +56 -0
  261. package/dist/cjs/lib/v3/types/public/index.js.map +1 -0
  262. package/dist/cjs/lib/v3/types/public/locator.js +3 -0
  263. package/dist/cjs/lib/v3/types/public/locator.js.map +1 -0
  264. package/dist/cjs/lib/v3/types/public/logs.js +16 -0
  265. package/dist/cjs/lib/v3/types/public/logs.js.map +1 -0
  266. package/dist/cjs/lib/v3/types/public/methods.d.ts +33 -2
  267. package/dist/cjs/lib/v3/types/public/methods.js +18 -0
  268. package/dist/cjs/lib/v3/types/public/methods.js.map +1 -0
  269. package/dist/cjs/lib/v3/types/public/metrics.js +3 -0
  270. package/dist/cjs/lib/v3/types/public/metrics.js.map +1 -0
  271. package/dist/cjs/lib/v3/types/public/model.d.ts +4 -2
  272. package/dist/cjs/lib/v3/types/public/model.js +3 -0
  273. package/dist/cjs/lib/v3/types/public/model.js.map +1 -0
  274. package/dist/cjs/lib/v3/types/public/options.d.ts +8 -0
  275. package/dist/cjs/lib/v3/types/public/options.js +7 -0
  276. package/dist/cjs/lib/v3/types/public/options.js.map +1 -0
  277. package/dist/cjs/lib/v3/types/public/page.js +8 -0
  278. package/dist/cjs/lib/v3/types/public/page.js.map +1 -0
  279. package/dist/cjs/lib/v3/types/public/screenshotTypes.js +3 -0
  280. package/dist/cjs/lib/v3/types/public/screenshotTypes.js.map +1 -0
  281. package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +13 -0
  282. package/dist/cjs/lib/v3/types/public/sdkErrors.js +390 -0
  283. package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -0
  284. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +204 -0
  285. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
  286. package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js +124 -0
  287. package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
  288. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js +345 -0
  289. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
  290. package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +132 -0
  291. package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
  292. package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js +285 -0
  293. package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
  294. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
  295. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js +226 -0
  296. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
  297. package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js +12 -0
  298. package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
  299. package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js +26 -0
  300. package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
  301. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +143 -0
  302. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
  303. package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js +110 -0
  304. package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
  305. package/dist/cjs/lib/v3/understudy/a11yInvocation.js +15 -0
  306. package/dist/cjs/lib/v3/understudy/a11yInvocation.js.map +1 -0
  307. package/dist/cjs/lib/v3/understudy/cdp.d.ts +6 -1
  308. package/dist/cjs/lib/v3/understudy/cdp.js +317 -0
  309. package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -0
  310. package/dist/cjs/lib/v3/understudy/consoleMessage.js +70 -0
  311. package/dist/cjs/lib/v3/understudy/consoleMessage.js.map +1 -0
  312. package/dist/cjs/lib/v3/understudy/context.d.ts +34 -0
  313. package/dist/cjs/lib/v3/understudy/context.js +960 -0
  314. package/dist/cjs/lib/v3/understudy/context.js.map +1 -0
  315. package/dist/cjs/lib/v3/understudy/cookies.d.ts +32 -0
  316. package/dist/cjs/lib/v3/understudy/cookies.js +142 -0
  317. package/dist/cjs/lib/v3/understudy/cookies.js.map +1 -0
  318. package/dist/cjs/lib/v3/understudy/deepLocator.js +204 -0
  319. package/dist/cjs/lib/v3/understudy/deepLocator.js.map +1 -0
  320. package/dist/cjs/lib/v3/understudy/executionContextRegistry.js +87 -0
  321. package/dist/cjs/lib/v3/understudy/executionContextRegistry.js.map +1 -0
  322. package/dist/cjs/lib/v3/understudy/fileUploadUtils.js +88 -0
  323. package/dist/cjs/lib/v3/understudy/fileUploadUtils.js.map +1 -0
  324. package/dist/cjs/lib/v3/understudy/frame.js +232 -0
  325. package/dist/cjs/lib/v3/understudy/frame.js.map +1 -0
  326. package/dist/cjs/lib/v3/understudy/frameLocator.js +260 -0
  327. package/dist/cjs/lib/v3/understudy/frameLocator.js.map +1 -0
  328. package/dist/cjs/lib/v3/understudy/frameRegistry.js +302 -0
  329. package/dist/cjs/lib/v3/understudy/frameRegistry.js.map +1 -0
  330. package/dist/cjs/lib/v3/understudy/initScripts.js +36 -0
  331. package/dist/cjs/lib/v3/understudy/initScripts.js.map +1 -0
  332. package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js +249 -0
  333. package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
  334. package/dist/cjs/lib/v3/understudy/locator.js +790 -0
  335. package/dist/cjs/lib/v3/understudy/locator.js.map +1 -0
  336. package/dist/cjs/lib/v3/understudy/locatorInvocation.js +15 -0
  337. package/dist/cjs/lib/v3/understudy/locatorInvocation.js.map +1 -0
  338. package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js +228 -0
  339. package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
  340. package/dist/cjs/lib/v3/understudy/networkManager.js +310 -0
  341. package/dist/cjs/lib/v3/understudy/networkManager.js.map +1 -0
  342. package/dist/cjs/lib/v3/understudy/page.d.ts +13 -0
  343. package/dist/cjs/lib/v3/understudy/page.js +1998 -0
  344. package/dist/cjs/lib/v3/understudy/page.js.map +1 -0
  345. package/dist/cjs/lib/v3/understudy/piercer.js +65 -0
  346. package/dist/cjs/lib/v3/understudy/piercer.js.map +1 -0
  347. package/dist/cjs/lib/v3/understudy/response.js +335 -0
  348. package/dist/cjs/lib/v3/understudy/response.js.map +1 -0
  349. package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  350. package/dist/cjs/lib/v3/understudy/screenshotUtils.js +345 -0
  351. package/dist/cjs/lib/v3/understudy/screenshotUtils.js.map +1 -0
  352. package/dist/cjs/lib/v3/understudy/selectorResolver.js +300 -0
  353. package/dist/cjs/lib/v3/understudy/selectorResolver.js.map +1 -0
  354. package/dist/cjs/lib/v3/v3.js +1631 -0
  355. package/dist/cjs/lib/v3/v3.js.map +1 -0
  356. package/dist/cjs/lib/v3/zodCompat.js +26 -0
  357. package/dist/cjs/lib/v3/zodCompat.js.map +1 -0
  358. package/dist/cjs/lib/v3Evaluator.js +214 -0
  359. package/dist/cjs/lib/v3Evaluator.js.map +1 -0
  360. package/dist/cjs/lib/version.d.ts +1 -1
  361. package/dist/cjs/lib/version.js +9 -0
  362. package/dist/cjs/lib/version.js.map +1 -0
  363. package/dist/cjs/tests/cache-variables.test.js +221 -0
  364. package/dist/cjs/tests/cache-variables.test.js.map +1 -0
  365. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +123 -0
  366. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +1 -0
  367. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +83 -0
  368. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
  369. package/dist/cjs/tests/integration/agent-callbacks.spec.js +385 -0
  370. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +1 -0
  371. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +362 -0
  372. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +1 -0
  373. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +262 -0
  374. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
  375. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +112 -0
  376. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +1 -0
  377. package/dist/cjs/tests/integration/agent-streaming.spec.js +140 -0
  378. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +1 -0
  379. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
  380. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +41 -0
  381. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +1 -0
  382. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +1 -0
  383. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +76 -0
  384. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +1 -0
  385. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +1 -0
  386. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +45 -0
  387. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +1 -0
  388. package/dist/cjs/tests/integration/click-count.spec.d.ts +1 -0
  389. package/dist/cjs/tests/integration/click-count.spec.js +163 -0
  390. package/dist/cjs/tests/integration/click-count.spec.js.map +1 -0
  391. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
  392. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +99 -0
  393. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
  394. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +1 -0
  395. package/dist/cjs/tests/integration/context-addInitScript.spec.js +285 -0
  396. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +1 -0
  397. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
  398. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +49 -0
  399. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +1 -0
  400. package/dist/cjs/tests/integration/cookies.spec.d.ts +1 -0
  401. package/dist/cjs/tests/integration/cookies.spec.js +187 -0
  402. package/dist/cjs/tests/integration/cookies.spec.js.map +1 -0
  403. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +1 -0
  404. package/dist/cjs/tests/integration/default-page-tracking.spec.js +52 -0
  405. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +1 -0
  406. package/dist/cjs/tests/integration/downloads.spec.d.ts +1 -0
  407. package/dist/cjs/tests/integration/downloads.spec.js +52 -0
  408. package/dist/cjs/tests/integration/downloads.spec.js.map +1 -0
  409. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
  410. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +57 -0
  411. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
  412. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  413. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +219 -0
  414. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  415. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
  416. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +474 -0
  417. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
  418. package/dist/cjs/tests/integration/keep-alive.child.d.ts +1 -0
  419. package/dist/cjs/tests/integration/keep-alive.child.js +85 -0
  420. package/dist/cjs/tests/integration/keep-alive.child.js.map +1 -0
  421. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +22 -0
  422. package/dist/cjs/tests/integration/keep-alive.spec.js +490 -0
  423. package/dist/cjs/tests/integration/keep-alive.spec.js.map +1 -0
  424. package/dist/cjs/tests/integration/keyboard.spec.d.ts +1 -0
  425. package/dist/cjs/tests/integration/keyboard.spec.js +259 -0
  426. package/dist/cjs/tests/integration/keyboard.spec.js.map +1 -0
  427. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
  428. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +150 -0
  429. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +1 -0
  430. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +1 -0
  431. package/dist/cjs/tests/integration/locator-content-methods.spec.js +180 -0
  432. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +1 -0
  433. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +1 -0
  434. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +129 -0
  435. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +1 -0
  436. package/dist/cjs/tests/integration/locator-count.spec.d.ts +1 -0
  437. package/dist/cjs/tests/integration/locator-count.spec.js +68 -0
  438. package/dist/cjs/tests/integration/locator-count.spec.js.map +1 -0
  439. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +1 -0
  440. package/dist/cjs/tests/integration/locator-fill.spec.js +117 -0
  441. package/dist/cjs/tests/integration/locator-fill.spec.js.map +1 -0
  442. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +1 -0
  443. package/dist/cjs/tests/integration/locator-input-methods.spec.js +127 -0
  444. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +1 -0
  445. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +1 -0
  446. package/dist/cjs/tests/integration/locator-nth.spec.js +175 -0
  447. package/dist/cjs/tests/integration/locator-nth.spec.js.map +1 -0
  448. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +1 -0
  449. package/dist/cjs/tests/integration/locator-select-option.spec.js +216 -0
  450. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +1 -0
  451. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +1 -0
  452. package/dist/cjs/tests/integration/logger-initialization.spec.js +597 -0
  453. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +1 -0
  454. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +1 -0
  455. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +293 -0
  456. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +1 -0
  457. package/dist/cjs/tests/integration/nested-div.spec.d.ts +1 -0
  458. package/dist/cjs/tests/integration/nested-div.spec.js +22 -0
  459. package/dist/cjs/tests/integration/nested-div.spec.js.map +1 -0
  460. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +1 -0
  461. package/dist/cjs/tests/integration/page-addInitScript.spec.js +94 -0
  462. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +1 -0
  463. package/dist/cjs/tests/integration/page-console.spec.d.ts +1 -0
  464. package/dist/cjs/tests/integration/page-console.spec.js +47 -0
  465. package/dist/cjs/tests/integration/page-console.spec.js.map +1 -0
  466. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
  467. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +437 -0
  468. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +1 -0
  469. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  470. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +85 -0
  471. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  472. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +1 -0
  473. package/dist/cjs/tests/integration/page-goto-response.spec.js +34 -0
  474. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +1 -0
  475. package/dist/cjs/tests/integration/page-hover.spec.d.ts +1 -0
  476. package/dist/cjs/tests/integration/page-hover.spec.js +165 -0
  477. package/dist/cjs/tests/integration/page-hover.spec.js.map +1 -0
  478. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +1 -0
  479. package/dist/cjs/tests/integration/page-screenshot.spec.js +292 -0
  480. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +1 -0
  481. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +1 -0
  482. package/dist/cjs/tests/integration/page-scroll.spec.js +183 -0
  483. package/dist/cjs/tests/integration/page-scroll.spec.js.map +1 -0
  484. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +1 -0
  485. package/dist/cjs/tests/integration/page-send-cdp.spec.js +47 -0
  486. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +1 -0
  487. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +1 -0
  488. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +63 -0
  489. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +1 -0
  490. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +1 -0
  491. package/dist/cjs/tests/integration/setinputfiles.spec.js +133 -0
  492. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +1 -0
  493. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
  494. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +161 -0
  495. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
  496. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
  497. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +160 -0
  498. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
  499. package/dist/cjs/tests/integration/testUtils.d.ts +7 -0
  500. package/dist/cjs/tests/integration/testUtils.js +44 -0
  501. package/dist/cjs/tests/integration/testUtils.js.map +1 -0
  502. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +1 -0
  503. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +105 -0
  504. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +1 -0
  505. package/dist/cjs/tests/integration/timeouts.spec.d.ts +1 -0
  506. package/dist/cjs/tests/integration/timeouts.spec.js +197 -0
  507. package/dist/cjs/tests/integration/timeouts.spec.js.map +1 -0
  508. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +1 -0
  509. package/dist/cjs/tests/integration/user-data-dir.spec.js +77 -0
  510. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +1 -0
  511. package/dist/cjs/tests/integration/v3.config.d.ts +4 -0
  512. package/dist/cjs/tests/integration/v3.config.js +11 -0
  513. package/dist/cjs/tests/integration/v3.config.js.map +1 -0
  514. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +4 -0
  515. package/dist/cjs/tests/integration/v3.dynamic.config.js +48 -0
  516. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +1 -0
  517. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +2 -0
  518. package/dist/cjs/tests/integration/v3.playwright.config.js +48 -0
  519. package/dist/cjs/tests/integration/v3.playwright.config.js.map +1 -0
  520. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +1 -0
  521. package/dist/cjs/tests/integration/wait-for-selector.spec.js +683 -0
  522. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +1 -0
  523. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +1 -0
  524. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +118 -0
  525. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +1 -0
  526. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
  527. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +87 -0
  528. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
  529. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +1 -0
  530. package/dist/cjs/tests/unit/agent-execution-model.test.js +128 -0
  531. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +1 -0
  532. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +1 -0
  533. package/dist/cjs/tests/unit/api-multiregion.test.js +58 -0
  534. package/dist/cjs/tests/unit/api-multiregion.test.js.map +1 -0
  535. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
  536. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +102 -0
  537. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +1 -0
  538. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +1 -0
  539. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +186 -0
  540. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +1 -0
  541. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +1 -0
  542. package/dist/cjs/tests/unit/cdp-connection-close.test.js +74 -0
  543. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +1 -0
  544. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +1 -0
  545. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +58 -0
  546. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +1 -0
  547. package/dist/cjs/tests/unit/cookies.test.d.ts +1 -0
  548. package/dist/cjs/tests/unit/cookies.test.js +944 -0
  549. package/dist/cjs/tests/unit/cookies.test.js.map +1 -0
  550. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +19 -0
  551. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +29 -0
  552. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +1 -0
  553. package/dist/cjs/tests/unit/llm-provider.test.d.ts +1 -0
  554. package/dist/cjs/tests/unit/llm-provider.test.js +64 -0
  555. package/dist/cjs/tests/unit/llm-provider.test.js.map +1 -0
  556. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +1 -0
  557. package/dist/cjs/tests/unit/model-deprecation.test.js +142 -0
  558. package/dist/cjs/tests/unit/model-deprecation.test.js.map +1 -0
  559. package/dist/cjs/tests/unit/model-utils.test.d.ts +1 -0
  560. package/dist/cjs/tests/unit/model-utils.test.js +42 -0
  561. package/dist/cjs/tests/unit/model-utils.test.js.map +1 -0
  562. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  563. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +92 -0
  564. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +1 -0
  565. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +1 -0
  566. package/dist/cjs/tests/unit/page-snapshot.test.js +75 -0
  567. package/dist/cjs/tests/unit/page-snapshot.test.js.map +1 -0
  568. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +1 -0
  569. package/dist/cjs/tests/unit/public-api/export-surface.test.js +107 -0
  570. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +1 -0
  571. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
  572. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +175 -0
  573. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
  574. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +62 -0
  575. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +110 -0
  576. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +1 -0
  577. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +1 -0
  578. package/dist/cjs/tests/unit/public-api/public-types.test.js +99 -0
  579. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +1 -0
  580. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
  581. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +60 -0
  582. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +1 -0
  583. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +1 -0
  584. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +95 -0
  585. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +1 -0
  586. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
  587. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +121 -0
  588. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
  589. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
  590. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +65 -0
  591. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +1 -0
  592. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +1 -0
  593. package/dist/cjs/tests/unit/public-api/v3-core.test.js +108 -0
  594. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +1 -0
  595. package/dist/cjs/tests/unit/rerender-missing-shadows.test.d.ts +1 -0
  596. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js +209 -0
  597. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js.map +1 -0
  598. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +1 -0
  599. package/dist/cjs/tests/unit/safety-confirmation.test.js +110 -0
  600. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +1 -0
  601. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
  602. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +330 -0
  603. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
  604. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
  605. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +286 -0
  606. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
  607. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
  608. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +394 -0
  609. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
  610. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +1 -0
  611. package/dist/cjs/tests/unit/snapshot-cbor.test.js +204 -0
  612. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +1 -0
  613. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
  614. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +220 -0
  615. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
  616. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
  617. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +107 -0
  618. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
  619. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
  620. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +89 -0
  621. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
  622. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
  623. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +335 -0
  624. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +1 -0
  625. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
  626. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +84 -0
  627. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
  628. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
  629. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +74 -0
  630. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
  631. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +1 -0
  632. package/dist/cjs/tests/unit/timeout-handlers.test.js +847 -0
  633. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +1 -0
  634. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +1 -0
  635. package/dist/cjs/tests/unit/understudy-command-exception.test.js +57 -0
  636. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +1 -0
  637. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +1 -0
  638. package/dist/cjs/tests/unit/xpath-parser.test.js +311 -0
  639. package/dist/cjs/tests/unit/xpath-parser.test.js.map +1 -0
  640. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +1 -0
  641. package/dist/cjs/tests/unit/xpath-resolver.test.js +80 -0
  642. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +1 -0
  643. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
  644. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +149 -0
  645. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +1 -0
  646. package/dist/esm/index.d.ts +1 -2
  647. package/dist/esm/index.js +1 -2
  648. package/dist/esm/lib/inference.js +5 -8
  649. package/dist/esm/lib/inference.js.map +1 -1
  650. package/dist/esm/lib/modelUtils.d.ts +1 -0
  651. package/dist/esm/lib/modelUtils.js.map +1 -1
  652. package/dist/esm/lib/prompt.d.ts +3 -2
  653. package/dist/esm/lib/prompt.js.map +1 -1
  654. package/dist/esm/lib/v3/agent/AgentProvider.js +1 -1
  655. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  656. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +17 -2
  657. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  658. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +4 -4
  659. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
  660. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +3 -1
  661. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +24 -1
  662. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
  663. package/dist/esm/lib/v3/agent/tools/act.d.ts +2 -2
  664. package/dist/esm/lib/v3/agent/tools/act.js +66 -44
  665. package/dist/esm/lib/v3/agent/tools/act.js.map +1 -1
  666. package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  667. package/dist/esm/lib/v3/agent/tools/ariaTree.js +60 -22
  668. package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -1
  669. package/dist/esm/lib/v3/agent/tools/click.js +23 -31
  670. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -1
  671. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +22 -30
  672. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
  673. package/dist/esm/lib/v3/agent/tools/extract.d.ts +2 -2
  674. package/dist/esm/lib/v3/agent/tools/extract.js +16 -3
  675. package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -1
  676. package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
  677. package/dist/esm/lib/v3/agent/tools/fillFormVision.js +109 -98
  678. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  679. package/dist/esm/lib/v3/agent/tools/fillform.d.ts +8 -2
  680. package/dist/esm/lib/v3/agent/tools/fillform.js +82 -52
  681. package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
  682. package/dist/esm/lib/v3/agent/tools/index.d.ts +11 -1
  683. package/dist/esm/lib/v3/agent/tools/index.js +8 -7
  684. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
  685. package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +8 -0
  686. package/dist/esm/lib/v3/agent/tools/screenshot.js +32 -15
  687. package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -1
  688. package/dist/esm/lib/v3/agent/tools/scroll.js +12 -0
  689. package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -1
  690. package/dist/esm/lib/v3/agent/tools/type.d.ts +2 -2
  691. package/dist/esm/lib/v3/agent/tools/type.js +80 -79
  692. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -1
  693. package/dist/esm/lib/v3/agent/tools/wait.js +6 -0
  694. package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -1
  695. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +4 -0
  696. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  697. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +8 -0
  698. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -1
  699. package/dist/esm/lib/v3/agent/utils/variables.d.ts +21 -0
  700. package/dist/esm/lib/v3/agent/utils/variables.js +48 -0
  701. package/dist/esm/lib/v3/agent/utils/variables.js.map +1 -0
  702. package/dist/esm/lib/v3/api.d.ts +23 -5
  703. package/dist/esm/lib/v3/api.js +74 -13
  704. package/dist/esm/lib/v3/api.js.map +1 -1
  705. package/dist/esm/lib/v3/cache/ActCache.d.ts +0 -1
  706. package/dist/esm/lib/v3/cache/ActCache.js +2 -18
  707. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
  708. package/dist/esm/lib/v3/cache/AgentCache.d.ts +1 -0
  709. package/dist/esm/lib/v3/cache/AgentCache.js +18 -11
  710. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
  711. package/dist/esm/lib/v3/handlers/actHandler.d.ts +2 -1
  712. package/dist/esm/lib/v3/handlers/actHandler.js +4 -4
  713. package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -1
  714. package/dist/esm/lib/v3/handlers/extractHandler.js +2 -2
  715. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
  716. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +0 -27
  717. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  718. package/dist/esm/lib/v3/handlers/observeHandler.js +1 -2
  719. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
  720. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +13 -16
  721. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  722. package/dist/esm/lib/v3/index.d.ts +143 -0
  723. package/dist/esm/lib/v3/index.js +41 -0
  724. package/dist/esm/lib/v3/index.js.map +1 -1
  725. package/dist/esm/lib/v3/launch/browserbase.d.ts +1 -1
  726. package/dist/esm/lib/v3/launch/browserbase.js +4 -9
  727. package/dist/esm/lib/v3/launch/browserbase.js.map +1 -1
  728. package/dist/esm/lib/v3/llm/LLMProvider.js +0 -5
  729. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  730. package/dist/esm/lib/v3/llm/OpenAIClient.js +2 -2
  731. package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -1
  732. package/dist/esm/lib/v3/mcp/connection.d.ts +2 -0
  733. package/dist/esm/lib/v3/mcp/connection.js +5 -2
  734. package/dist/esm/lib/v3/mcp/connection.js.map +1 -1
  735. package/dist/esm/lib/v3/runtimePaths.d.ts +6 -0
  736. package/dist/esm/lib/v3/runtimePaths.js +107 -0
  737. package/dist/esm/lib/v3/runtimePaths.js.map +1 -0
  738. package/dist/esm/lib/v3/shutdown/supervisor.js +2 -2
  739. package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -1
  740. package/dist/esm/lib/v3/shutdown/supervisorClient.js +9 -14
  741. package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -1
  742. package/dist/esm/lib/v3/timeoutConfig.d.ts +1 -1
  743. package/dist/esm/lib/v3/timeoutConfig.js +5 -0
  744. package/dist/esm/lib/v3/timeoutConfig.js.map +1 -1
  745. package/dist/esm/lib/v3/types/private/cache.d.ts +3 -0
  746. package/dist/esm/lib/v3/types/private/cache.js.map +1 -1
  747. package/dist/esm/lib/v3/types/private/handlers.d.ts +2 -1
  748. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
  749. package/dist/esm/lib/v3/types/private/shutdown.d.ts +1 -1
  750. package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -1
  751. package/dist/esm/lib/v3/types/public/agent.d.ts +60 -2
  752. package/dist/esm/lib/v3/types/public/agent.js +1 -1
  753. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  754. package/dist/esm/lib/v3/types/public/api.d.ts +17 -0
  755. package/dist/esm/lib/v3/types/public/api.js +3 -2
  756. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  757. package/dist/esm/lib/v3/types/public/context.d.ts +32 -0
  758. package/dist/esm/lib/v3/types/public/context.js +2 -0
  759. package/dist/esm/lib/v3/types/public/context.js.map +1 -0
  760. package/dist/esm/lib/v3/types/public/index.d.ts +1 -0
  761. package/dist/esm/lib/v3/types/public/index.js +1 -0
  762. package/dist/esm/lib/v3/types/public/index.js.map +1 -1
  763. package/dist/esm/lib/v3/types/public/methods.d.ts +33 -2
  764. package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
  765. package/dist/esm/lib/v3/types/public/model.d.ts +4 -2
  766. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  767. package/dist/esm/lib/v3/types/public/options.d.ts +8 -0
  768. package/dist/esm/lib/v3/types/public/options.js.map +1 -1
  769. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +13 -0
  770. package/dist/esm/lib/v3/types/public/sdkErrors.js +22 -0
  771. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
  772. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
  773. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +1 -1
  774. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -1
  775. package/dist/esm/lib/v3/understudy/cdp.d.ts +6 -1
  776. package/dist/esm/lib/v3/understudy/cdp.js +65 -7
  777. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
  778. package/dist/esm/lib/v3/understudy/context.d.ts +34 -0
  779. package/dist/esm/lib/v3/understudy/context.js +327 -67
  780. package/dist/esm/lib/v3/understudy/context.js.map +1 -1
  781. package/dist/esm/lib/v3/understudy/cookies.d.ts +32 -0
  782. package/dist/esm/lib/v3/understudy/cookies.js +136 -0
  783. package/dist/esm/lib/v3/understudy/cookies.js.map +1 -0
  784. package/dist/esm/lib/v3/understudy/deepLocator.js +1 -23
  785. package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -1
  786. package/dist/esm/lib/v3/understudy/frame.js +24 -7
  787. package/dist/esm/lib/v3/understudy/frame.js.map +1 -1
  788. package/dist/esm/lib/v3/understudy/page.d.ts +13 -0
  789. package/dist/esm/lib/v3/understudy/page.js +58 -5
  790. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  791. package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  792. package/dist/esm/lib/v3/understudy/screenshotUtils.js +1 -19
  793. package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -1
  794. package/dist/esm/lib/v3/understudy/selectorResolver.js +1 -1
  795. package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -1
  796. package/dist/esm/lib/v3/v3.js +59 -35
  797. package/dist/esm/lib/v3/v3.js.map +1 -1
  798. package/dist/esm/lib/version.d.ts +1 -1
  799. package/dist/esm/lib/version.js +1 -1
  800. package/dist/esm/lib/version.js.map +1 -1
  801. package/dist/esm/tests/cache-variables.test.d.ts +1 -0
  802. package/dist/esm/tests/cache-variables.test.js +219 -0
  803. package/dist/esm/tests/cache-variables.test.js.map +1 -0
  804. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +1 -0
  805. package/dist/esm/tests/integration/agent-abort-signal.spec.js +121 -0
  806. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +1 -0
  807. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +1 -0
  808. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +78 -0
  809. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
  810. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +1 -0
  811. package/dist/esm/tests/integration/agent-callbacks.spec.js +383 -0
  812. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +1 -0
  813. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +1 -0
  814. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +360 -0
  815. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +1 -0
  816. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +1 -0
  817. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +260 -0
  818. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
  819. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +1 -0
  820. package/dist/esm/tests/integration/agent-message-continuation.spec.js +110 -0
  821. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +1 -0
  822. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +1 -0
  823. package/dist/esm/tests/integration/agent-streaming.spec.js +138 -0
  824. package/dist/esm/tests/integration/agent-streaming.spec.js.map +1 -0
  825. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
  826. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +39 -0
  827. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +1 -0
  828. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +1 -0
  829. package/dist/esm/tests/integration/cdp-connection-close.spec.js +74 -0
  830. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +1 -0
  831. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +1 -0
  832. package/dist/esm/tests/integration/cdp-session-detached.spec.js +43 -0
  833. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +1 -0
  834. package/dist/esm/tests/integration/click-count.spec.d.ts +1 -0
  835. package/dist/esm/tests/integration/click-count.spec.js +161 -0
  836. package/dist/esm/tests/integration/click-count.spec.js.map +1 -0
  837. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
  838. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +97 -0
  839. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
  840. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +1 -0
  841. package/dist/esm/tests/integration/context-addInitScript.spec.js +283 -0
  842. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +1 -0
  843. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
  844. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +47 -0
  845. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +1 -0
  846. package/dist/esm/tests/integration/cookies.spec.d.ts +1 -0
  847. package/dist/esm/tests/integration/cookies.spec.js +185 -0
  848. package/dist/esm/tests/integration/cookies.spec.js.map +1 -0
  849. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +1 -0
  850. package/dist/esm/tests/integration/default-page-tracking.spec.js +50 -0
  851. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +1 -0
  852. package/dist/esm/tests/integration/downloads.spec.d.ts +1 -0
  853. package/dist/esm/tests/integration/downloads.spec.js +47 -0
  854. package/dist/esm/tests/integration/downloads.spec.js.map +1 -0
  855. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
  856. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +55 -0
  857. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
  858. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  859. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +217 -0
  860. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  861. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
  862. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +472 -0
  863. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
  864. package/dist/esm/tests/integration/keep-alive.child.d.ts +1 -0
  865. package/dist/esm/tests/integration/keep-alive.child.js +83 -0
  866. package/dist/esm/tests/integration/keep-alive.child.js.map +1 -0
  867. package/dist/esm/tests/integration/keep-alive.spec.d.ts +22 -0
  868. package/dist/esm/tests/integration/keep-alive.spec.js +482 -0
  869. package/dist/esm/tests/integration/keep-alive.spec.js.map +1 -0
  870. package/dist/esm/tests/integration/keyboard.spec.d.ts +1 -0
  871. package/dist/esm/tests/integration/keyboard.spec.js +257 -0
  872. package/dist/esm/tests/integration/keyboard.spec.js.map +1 -0
  873. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
  874. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +148 -0
  875. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +1 -0
  876. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +1 -0
  877. package/dist/esm/tests/integration/locator-content-methods.spec.js +178 -0
  878. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +1 -0
  879. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +1 -0
  880. package/dist/esm/tests/integration/locator-count-iframe.spec.js +127 -0
  881. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +1 -0
  882. package/dist/esm/tests/integration/locator-count.spec.d.ts +1 -0
  883. package/dist/esm/tests/integration/locator-count.spec.js +66 -0
  884. package/dist/esm/tests/integration/locator-count.spec.js.map +1 -0
  885. package/dist/esm/tests/integration/locator-fill.spec.d.ts +1 -0
  886. package/dist/esm/tests/integration/locator-fill.spec.js +115 -0
  887. package/dist/esm/tests/integration/locator-fill.spec.js.map +1 -0
  888. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +1 -0
  889. package/dist/esm/tests/integration/locator-input-methods.spec.js +125 -0
  890. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +1 -0
  891. package/dist/esm/tests/integration/locator-nth.spec.d.ts +1 -0
  892. package/dist/esm/tests/integration/locator-nth.spec.js +173 -0
  893. package/dist/esm/tests/integration/locator-nth.spec.js.map +1 -0
  894. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +1 -0
  895. package/dist/esm/tests/integration/locator-select-option.spec.js +214 -0
  896. package/dist/esm/tests/integration/locator-select-option.spec.js.map +1 -0
  897. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +1 -0
  898. package/dist/esm/tests/integration/logger-initialization.spec.js +595 -0
  899. package/dist/esm/tests/integration/logger-initialization.spec.js.map +1 -0
  900. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +1 -0
  901. package/dist/esm/tests/integration/multi-instance-logger.spec.js +291 -0
  902. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +1 -0
  903. package/dist/esm/tests/integration/nested-div.spec.d.ts +1 -0
  904. package/dist/esm/tests/integration/nested-div.spec.js +20 -0
  905. package/dist/esm/tests/integration/nested-div.spec.js.map +1 -0
  906. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +1 -0
  907. package/dist/esm/tests/integration/page-addInitScript.spec.js +92 -0
  908. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +1 -0
  909. package/dist/esm/tests/integration/page-console.spec.d.ts +1 -0
  910. package/dist/esm/tests/integration/page-console.spec.js +45 -0
  911. package/dist/esm/tests/integration/page-console.spec.js.map +1 -0
  912. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
  913. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +435 -0
  914. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +1 -0
  915. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  916. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +83 -0
  917. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  918. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +1 -0
  919. package/dist/esm/tests/integration/page-goto-response.spec.js +32 -0
  920. package/dist/esm/tests/integration/page-goto-response.spec.js.map +1 -0
  921. package/dist/esm/tests/integration/page-hover.spec.d.ts +1 -0
  922. package/dist/esm/tests/integration/page-hover.spec.js +163 -0
  923. package/dist/esm/tests/integration/page-hover.spec.js.map +1 -0
  924. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +1 -0
  925. package/dist/esm/tests/integration/page-screenshot.spec.js +257 -0
  926. package/dist/esm/tests/integration/page-screenshot.spec.js.map +1 -0
  927. package/dist/esm/tests/integration/page-scroll.spec.d.ts +1 -0
  928. package/dist/esm/tests/integration/page-scroll.spec.js +181 -0
  929. package/dist/esm/tests/integration/page-scroll.spec.js.map +1 -0
  930. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +1 -0
  931. package/dist/esm/tests/integration/page-send-cdp.spec.js +45 -0
  932. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +1 -0
  933. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +1 -0
  934. package/dist/esm/tests/integration/perform-understudy-method.spec.js +61 -0
  935. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +1 -0
  936. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +1 -0
  937. package/dist/esm/tests/integration/setinputfiles.spec.js +128 -0
  938. package/dist/esm/tests/integration/setinputfiles.spec.js.map +1 -0
  939. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
  940. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +156 -0
  941. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
  942. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
  943. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +155 -0
  944. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
  945. package/dist/esm/tests/integration/testUtils.d.ts +7 -0
  946. package/dist/esm/tests/integration/testUtils.js +40 -0
  947. package/dist/esm/tests/integration/testUtils.js.map +1 -0
  948. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +1 -0
  949. package/dist/esm/tests/integration/text-selector-innermost.spec.js +103 -0
  950. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +1 -0
  951. package/dist/esm/tests/integration/timeouts.spec.d.ts +1 -0
  952. package/dist/esm/tests/integration/timeouts.spec.js +195 -0
  953. package/dist/esm/tests/integration/timeouts.spec.js.map +1 -0
  954. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +1 -0
  955. package/dist/esm/tests/integration/user-data-dir.spec.js +42 -0
  956. package/dist/esm/tests/integration/user-data-dir.spec.js.map +1 -0
  957. package/dist/esm/tests/integration/v3.config.d.ts +4 -0
  958. package/dist/esm/tests/integration/v3.config.js +7 -0
  959. package/dist/esm/tests/integration/v3.config.js.map +1 -0
  960. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +4 -0
  961. package/dist/esm/tests/integration/v3.dynamic.config.js +44 -0
  962. package/dist/esm/tests/integration/v3.dynamic.config.js.map +1 -0
  963. package/dist/esm/tests/integration/v3.playwright.config.d.ts +2 -0
  964. package/dist/esm/tests/integration/v3.playwright.config.js +46 -0
  965. package/dist/esm/tests/integration/v3.playwright.config.js.map +1 -0
  966. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +1 -0
  967. package/dist/esm/tests/integration/wait-for-selector.spec.js +681 -0
  968. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +1 -0
  969. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +1 -0
  970. package/dist/esm/tests/integration/wait-for-timeout.spec.js +116 -0
  971. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +1 -0
  972. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
  973. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +85 -0
  974. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
  975. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +1 -0
  976. package/dist/esm/tests/unit/agent-execution-model.test.js +126 -0
  977. package/dist/esm/tests/unit/agent-execution-model.test.js.map +1 -0
  978. package/dist/esm/tests/unit/api-multiregion.test.d.ts +1 -0
  979. package/dist/esm/tests/unit/api-multiregion.test.js +56 -0
  980. package/dist/esm/tests/unit/api-multiregion.test.js.map +1 -0
  981. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
  982. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +100 -0
  983. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +1 -0
  984. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +1 -0
  985. package/dist/esm/tests/unit/cache-llm-resolution.test.js +184 -0
  986. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +1 -0
  987. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +1 -0
  988. package/dist/esm/tests/unit/cdp-connection-close.test.js +72 -0
  989. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +1 -0
  990. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +1 -0
  991. package/dist/esm/tests/unit/context-extra-http-headers.test.js +56 -0
  992. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +1 -0
  993. package/dist/esm/tests/unit/cookies.test.d.ts +1 -0
  994. package/dist/esm/tests/unit/cookies.test.js +909 -0
  995. package/dist/esm/tests/unit/cookies.test.js.map +1 -0
  996. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +19 -0
  997. package/dist/esm/tests/unit/helpers/mockCDPSession.js +25 -0
  998. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +1 -0
  999. package/dist/esm/tests/unit/llm-provider.test.d.ts +1 -0
  1000. package/dist/esm/tests/unit/llm-provider.test.js +62 -0
  1001. package/dist/esm/tests/unit/llm-provider.test.js.map +1 -0
  1002. package/dist/esm/tests/unit/model-deprecation.test.d.ts +1 -0
  1003. package/dist/esm/tests/unit/model-deprecation.test.js +140 -0
  1004. package/dist/esm/tests/unit/model-deprecation.test.js.map +1 -0
  1005. package/dist/esm/tests/unit/model-utils.test.d.ts +1 -0
  1006. package/dist/esm/tests/unit/model-utils.test.js +40 -0
  1007. package/dist/esm/tests/unit/model-utils.test.js.map +1 -0
  1008. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  1009. package/dist/esm/tests/unit/page-extra-http-headers.test.js +90 -0
  1010. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +1 -0
  1011. package/dist/esm/tests/unit/page-snapshot.test.d.ts +1 -0
  1012. package/dist/esm/tests/unit/page-snapshot.test.js +40 -0
  1013. package/dist/esm/tests/unit/page-snapshot.test.js.map +1 -0
  1014. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +1 -0
  1015. package/dist/esm/tests/unit/public-api/export-surface.test.js +72 -0
  1016. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +1 -0
  1017. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
  1018. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +140 -0
  1019. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
  1020. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +62 -0
  1021. package/dist/esm/tests/unit/public-api/public-error-types.test.js +74 -0
  1022. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +1 -0
  1023. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +1 -0
  1024. package/dist/esm/tests/unit/public-api/public-types.test.js +97 -0
  1025. package/dist/esm/tests/unit/public-api/public-types.test.js.map +1 -0
  1026. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
  1027. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +25 -0
  1028. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +1 -0
  1029. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +1 -0
  1030. package/dist/esm/tests/unit/public-api/schema-utils.test.js +60 -0
  1031. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +1 -0
  1032. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
  1033. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +86 -0
  1034. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
  1035. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
  1036. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +30 -0
  1037. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +1 -0
  1038. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +1 -0
  1039. package/dist/esm/tests/unit/public-api/v3-core.test.js +73 -0
  1040. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +1 -0
  1041. package/dist/esm/tests/unit/rerender-missing-shadows.test.d.ts +1 -0
  1042. package/dist/esm/tests/unit/rerender-missing-shadows.test.js +207 -0
  1043. package/dist/esm/tests/unit/rerender-missing-shadows.test.js.map +1 -0
  1044. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +1 -0
  1045. package/dist/esm/tests/unit/safety-confirmation.test.js +108 -0
  1046. package/dist/esm/tests/unit/safety-confirmation.test.js.map +1 -0
  1047. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
  1048. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +295 -0
  1049. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
  1050. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
  1051. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +284 -0
  1052. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
  1053. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
  1054. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +359 -0
  1055. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
  1056. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +1 -0
  1057. package/dist/esm/tests/unit/snapshot-cbor.test.js +202 -0
  1058. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +1 -0
  1059. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
  1060. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +218 -0
  1061. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
  1062. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
  1063. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +105 -0
  1064. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
  1065. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
  1066. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +87 -0
  1067. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
  1068. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
  1069. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +333 -0
  1070. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +1 -0
  1071. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
  1072. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +82 -0
  1073. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
  1074. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
  1075. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +72 -0
  1076. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
  1077. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +1 -0
  1078. package/dist/esm/tests/unit/timeout-handlers.test.js +812 -0
  1079. package/dist/esm/tests/unit/timeout-handlers.test.js.map +1 -0
  1080. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +1 -0
  1081. package/dist/esm/tests/unit/understudy-command-exception.test.js +55 -0
  1082. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +1 -0
  1083. package/dist/esm/tests/unit/xpath-parser.test.d.ts +1 -0
  1084. package/dist/esm/tests/unit/xpath-parser.test.js +309 -0
  1085. package/dist/esm/tests/unit/xpath-parser.test.js.map +1 -0
  1086. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +1 -0
  1087. package/dist/esm/tests/unit/xpath-resolver.test.js +78 -0
  1088. package/dist/esm/tests/unit/xpath-resolver.test.js.map +1 -0
  1089. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
  1090. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +114 -0
  1091. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +1 -0
  1092. package/package.json +19 -8
  1093. package/dist/cjs/cli.js.map +0 -7
  1094. package/dist/cjs/index.js.map +0 -7
  1095. package/dist/cjs/lib/v3/dom/build/rerender-index.d.ts +0 -0
  1096. package/dist/cjs/lib/v3/dom/build/v3-index.d.ts +0 -0
  1097. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js +0 -113
  1098. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
  1099. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js +0 -102
  1100. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
  1101. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js +0 -374
  1102. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
  1103. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js +0 -354
  1104. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
  1105. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
  1106. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
  1107. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js +0 -105
  1108. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
  1109. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js +0 -126
  1110. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js.map +0 -7
  1111. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js +0 -44
  1112. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
  1113. package/dist/cjs/lib/v3/tests/click-count.spec.js +0 -147
  1114. package/dist/cjs/lib/v3/tests/click-count.spec.js.map +0 -7
  1115. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
  1116. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
  1117. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js +0 -176
  1118. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
  1119. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js +0 -53
  1120. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
  1121. package/dist/cjs/lib/v3/tests/downloads.spec.js +0 -80
  1122. package/dist/cjs/lib/v3/tests/downloads.spec.js.map +0 -7
  1123. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
  1124. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
  1125. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
  1126. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
  1127. package/dist/cjs/lib/v3/tests/keep-alive.child.js +0 -92
  1128. package/dist/cjs/lib/v3/tests/keep-alive.child.js.map +0 -7
  1129. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js +0 -568
  1130. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js.map +0 -7
  1131. package/dist/cjs/lib/v3/tests/keep-alive.spec.js +0 -15
  1132. package/dist/cjs/lib/v3/tests/keep-alive.spec.js.map +0 -7
  1133. package/dist/cjs/lib/v3/tests/keyboard.spec.js +0 -296
  1134. package/dist/cjs/lib/v3/tests/keyboard.spec.js.map +0 -7
  1135. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
  1136. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
  1137. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js +0 -192
  1138. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
  1139. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js +0 -108
  1140. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
  1141. package/dist/cjs/lib/v3/tests/locator-count.spec.js +0 -71
  1142. package/dist/cjs/lib/v3/tests/locator-count.spec.js.map +0 -7
  1143. package/dist/cjs/lib/v3/tests/locator-fill.spec.js +0 -119
  1144. package/dist/cjs/lib/v3/tests/locator-fill.spec.js.map +0 -7
  1145. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js +0 -137
  1146. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
  1147. package/dist/cjs/lib/v3/tests/locator-nth.spec.js +0 -157
  1148. package/dist/cjs/lib/v3/tests/locator-nth.spec.js.map +0 -7
  1149. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js +0 -243
  1150. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js.map +0 -7
  1151. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js +0 -547
  1152. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js.map +0 -7
  1153. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js +0 -269
  1154. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
  1155. package/dist/cjs/lib/v3/tests/nested-div.spec.js +0 -23
  1156. package/dist/cjs/lib/v3/tests/nested-div.spec.js.map +0 -7
  1157. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js +0 -90
  1158. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
  1159. package/dist/cjs/lib/v3/tests/page-console.spec.js +0 -56
  1160. package/dist/cjs/lib/v3/tests/page-console.spec.js.map +0 -7
  1161. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
  1162. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
  1163. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js +0 -35
  1164. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js.map +0 -7
  1165. package/dist/cjs/lib/v3/tests/page-hover.spec.js +0 -167
  1166. package/dist/cjs/lib/v3/tests/page-hover.spec.js.map +0 -7
  1167. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js +0 -295
  1168. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js.map +0 -7
  1169. package/dist/cjs/lib/v3/tests/page-scroll.spec.js +0 -182
  1170. package/dist/cjs/lib/v3/tests/page-scroll.spec.js.map +0 -7
  1171. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js +0 -46
  1172. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
  1173. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js +0 -98
  1174. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
  1175. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js +0 -148
  1176. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js.map +0 -7
  1177. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -156
  1178. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
  1179. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js +0 -156
  1180. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
  1181. package/dist/cjs/lib/v3/tests/testUtils.js +0 -54
  1182. package/dist/cjs/lib/v3/tests/testUtils.js.map +0 -7
  1183. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js +0 -100
  1184. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
  1185. package/dist/cjs/lib/v3/tests/timeouts.spec.js +0 -32
  1186. package/dist/cjs/lib/v3/tests/timeouts.spec.js.map +0 -7
  1187. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js +0 -65
  1188. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js.map +0 -7
  1189. package/dist/cjs/lib/v3/tests/v3.config.js +0 -36
  1190. package/dist/cjs/lib/v3/tests/v3.config.js.map +0 -7
  1191. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js +0 -67
  1192. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js.map +0 -7
  1193. package/dist/cjs/lib/v3/tests/v3.playwright.config.js +0 -61
  1194. package/dist/cjs/lib/v3/tests/v3.playwright.config.js.map +0 -7
  1195. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js +0 -593
  1196. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
  1197. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js +0 -97
  1198. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
  1199. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
  1200. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
  1201. package/dist/cjs/tests/agent-execution-model.test.js +0 -139
  1202. package/dist/cjs/tests/agent-execution-model.test.js.map +0 -7
  1203. package/dist/cjs/tests/api-multiregion.test.js +0 -73
  1204. package/dist/cjs/tests/api-multiregion.test.js.map +0 -7
  1205. package/dist/cjs/tests/browserbase-session-accessors.test.js +0 -101
  1206. package/dist/cjs/tests/browserbase-session-accessors.test.js.map +0 -7
  1207. package/dist/cjs/tests/cache-llm-resolution.test.js +0 -187
  1208. package/dist/cjs/tests/cache-llm-resolution.test.js.map +0 -7
  1209. package/dist/cjs/tests/helpers/mockCDPSession.js +0 -50
  1210. package/dist/cjs/tests/helpers/mockCDPSession.js.map +0 -7
  1211. package/dist/cjs/tests/llm-provider.test.js +0 -57
  1212. package/dist/cjs/tests/llm-provider.test.js.map +0 -7
  1213. package/dist/cjs/tests/model-deprecation.test.js +0 -132
  1214. package/dist/cjs/tests/model-deprecation.test.js.map +0 -7
  1215. package/dist/cjs/tests/model-utils.test.js +0 -43
  1216. package/dist/cjs/tests/model-utils.test.js.map +0 -7
  1217. package/dist/cjs/tests/page-snapshot.test.js +0 -58
  1218. package/dist/cjs/tests/page-snapshot.test.js.map +0 -7
  1219. package/dist/cjs/tests/public-api/export-surface.test.js +0 -77
  1220. package/dist/cjs/tests/public-api/export-surface.test.js.map +0 -7
  1221. package/dist/cjs/tests/public-api/llm-and-agents.test.js +0 -151
  1222. package/dist/cjs/tests/public-api/llm-and-agents.test.js.map +0 -7
  1223. package/dist/cjs/tests/public-api/public-error-types.test.js +0 -106
  1224. package/dist/cjs/tests/public-api/public-error-types.test.js.map +0 -7
  1225. package/dist/cjs/tests/public-api/public-types.test.js +0 -74
  1226. package/dist/cjs/tests/public-api/public-types.test.js.map +0 -7
  1227. package/dist/cjs/tests/public-api/runtime-utils.test.js +0 -53
  1228. package/dist/cjs/tests/public-api/runtime-utils.test.js.map +0 -7
  1229. package/dist/cjs/tests/public-api/schema-utils.test.js +0 -100
  1230. package/dist/cjs/tests/public-api/schema-utils.test.js.map +0 -7
  1231. package/dist/cjs/tests/public-api/timeout-error-types.test.js +0 -103
  1232. package/dist/cjs/tests/public-api/timeout-error-types.test.js.map +0 -7
  1233. package/dist/cjs/tests/public-api/tool-type-export.test.js +0 -47
  1234. package/dist/cjs/tests/public-api/tool-type-export.test.js.map +0 -7
  1235. package/dist/cjs/tests/public-api/v3-core.test.js +0 -105
  1236. package/dist/cjs/tests/public-api/v3-core.test.js.map +0 -7
  1237. package/dist/cjs/tests/safety-confirmation.test.js +0 -134
  1238. package/dist/cjs/tests/safety-confirmation.test.js.map +0 -7
  1239. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js +0 -370
  1240. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js.map +0 -7
  1241. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js +0 -294
  1242. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
  1243. package/dist/cjs/tests/snapshot-capture-orchestration.test.js +0 -405
  1244. package/dist/cjs/tests/snapshot-capture-orchestration.test.js.map +0 -7
  1245. package/dist/cjs/tests/snapshot-cbor.test.js +0 -197
  1246. package/dist/cjs/tests/snapshot-cbor.test.js.map +0 -7
  1247. package/dist/cjs/tests/snapshot-dom-session-builders.test.js +0 -246
  1248. package/dist/cjs/tests/snapshot-dom-session-builders.test.js.map +0 -7
  1249. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js +0 -104
  1250. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js.map +0 -7
  1251. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js +0 -45
  1252. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
  1253. package/dist/cjs/tests/snapshot-frame-merge.test.js +0 -388
  1254. package/dist/cjs/tests/snapshot-frame-merge.test.js.map +0 -7
  1255. package/dist/cjs/tests/snapshot-tree-format-utils.test.js +0 -106
  1256. package/dist/cjs/tests/snapshot-tree-format-utils.test.js.map +0 -7
  1257. package/dist/cjs/tests/snapshot-xpath-utils.test.js +0 -74
  1258. package/dist/cjs/tests/snapshot-xpath-utils.test.js.map +0 -7
  1259. package/dist/cjs/tests/timeout-handlers.test.js +0 -864
  1260. package/dist/cjs/tests/timeout-handlers.test.js.map +0 -7
  1261. package/dist/cjs/tests/understudy-command-exception.test.js +0 -52
  1262. package/dist/cjs/tests/understudy-command-exception.test.js.map +0 -7
  1263. package/dist/cjs/tests/xpath-parser.test.js +0 -314
  1264. package/dist/cjs/tests/xpath-parser.test.js.map +0 -7
  1265. package/dist/cjs/tests/xpath-resolver.test.js +0 -70
  1266. package/dist/cjs/tests/xpath-resolver.test.js.map +0 -7
  1267. package/dist/cjs/tests/zod-enum-compatibility.test.js +0 -119
  1268. package/dist/cjs/tests/zod-enum-compatibility.test.js.map +0 -7
  1269. package/dist/esm/lib/v3/dom/build/rerender-index.d.ts +0 -0
  1270. package/dist/esm/lib/v3/dom/build/rerender-index.js.map +0 -1
  1271. package/dist/esm/lib/v3/dom/build/v3-index.d.ts +0 -0
  1272. package/dist/esm/lib/v3/dom/build/v3-index.js.map +0 -1
  1273. package/dist/esm/lib/v3/dom/genA11yScripts.js +0 -54
  1274. package/dist/esm/lib/v3/dom/genA11yScripts.js.map +0 -1
  1275. package/dist/esm/lib/v3/dom/genDomScripts.js +0 -38
  1276. package/dist/esm/lib/v3/dom/genDomScripts.js.map +0 -1
  1277. package/dist/esm/lib/v3/dom/genLocatorScripts.js +0 -51
  1278. package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +0 -1
  1279. package/dist/esm/lib/v3/dom/genScreenshotScripts.js +0 -37
  1280. package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +0 -1
  1281. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +0 -113
  1282. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
  1283. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +0 -80
  1284. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
  1285. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +0 -374
  1286. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
  1287. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +0 -357
  1288. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
  1289. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
  1290. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
  1291. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +0 -105
  1292. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
  1293. package/dist/esm/lib/v3/tests/agent-streaming.spec.js +0 -126
  1294. package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +0 -7
  1295. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +0 -44
  1296. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
  1297. package/dist/esm/lib/v3/tests/click-count.spec.js +0 -147
  1298. package/dist/esm/lib/v3/tests/click-count.spec.js.map +0 -7
  1299. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
  1300. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
  1301. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +0 -176
  1302. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
  1303. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +0 -53
  1304. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
  1305. package/dist/esm/lib/v3/tests/downloads.spec.js +0 -58
  1306. package/dist/esm/lib/v3/tests/downloads.spec.js.map +0 -7
  1307. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
  1308. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
  1309. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
  1310. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
  1311. package/dist/esm/lib/v3/tests/keep-alive.child.js +0 -92
  1312. package/dist/esm/lib/v3/tests/keep-alive.child.js.map +0 -7
  1313. package/dist/esm/lib/v3/tests/keep-alive.helpers.js +0 -532
  1314. package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +0 -7
  1315. package/dist/esm/lib/v3/tests/keep-alive.spec.js +0 -19
  1316. package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +0 -7
  1317. package/dist/esm/lib/v3/tests/keyboard.spec.js +0 -296
  1318. package/dist/esm/lib/v3/tests/keyboard.spec.js.map +0 -7
  1319. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
  1320. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
  1321. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +0 -192
  1322. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
  1323. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +0 -108
  1324. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
  1325. package/dist/esm/lib/v3/tests/locator-count.spec.js +0 -71
  1326. package/dist/esm/lib/v3/tests/locator-count.spec.js.map +0 -7
  1327. package/dist/esm/lib/v3/tests/locator-fill.spec.js +0 -119
  1328. package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +0 -7
  1329. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +0 -137
  1330. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
  1331. package/dist/esm/lib/v3/tests/locator-nth.spec.js +0 -157
  1332. package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +0 -7
  1333. package/dist/esm/lib/v3/tests/locator-select-option.spec.js +0 -243
  1334. package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +0 -7
  1335. package/dist/esm/lib/v3/tests/logger-initialization.spec.js +0 -552
  1336. package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +0 -7
  1337. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +0 -269
  1338. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
  1339. package/dist/esm/lib/v3/tests/nested-div.spec.js +0 -23
  1340. package/dist/esm/lib/v3/tests/nested-div.spec.js.map +0 -7
  1341. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +0 -90
  1342. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
  1343. package/dist/esm/lib/v3/tests/page-console.spec.js +0 -56
  1344. package/dist/esm/lib/v3/tests/page-console.spec.js.map +0 -7
  1345. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
  1346. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
  1347. package/dist/esm/lib/v3/tests/page-goto-response.spec.js +0 -35
  1348. package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +0 -7
  1349. package/dist/esm/lib/v3/tests/page-hover.spec.js +0 -167
  1350. package/dist/esm/lib/v3/tests/page-hover.spec.js.map +0 -7
  1351. package/dist/esm/lib/v3/tests/page-screenshot.spec.js +0 -273
  1352. package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +0 -7
  1353. package/dist/esm/lib/v3/tests/page-scroll.spec.js +0 -182
  1354. package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +0 -7
  1355. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +0 -46
  1356. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
  1357. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +0 -98
  1358. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
  1359. package/dist/esm/lib/v3/tests/setinputfiles.spec.js +0 -126
  1360. package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +0 -7
  1361. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -134
  1362. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
  1363. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +0 -134
  1364. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
  1365. package/dist/esm/lib/v3/tests/testUtils.js +0 -31
  1366. package/dist/esm/lib/v3/tests/testUtils.js.map +0 -7
  1367. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +0 -100
  1368. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
  1369. package/dist/esm/lib/v3/tests/timeouts.spec.js +0 -32
  1370. package/dist/esm/lib/v3/tests/timeouts.spec.js.map +0 -7
  1371. package/dist/esm/lib/v3/tests/user-data-dir.spec.js +0 -43
  1372. package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +0 -7
  1373. package/dist/esm/lib/v3/tests/v3.config.js +0 -15
  1374. package/dist/esm/lib/v3/tests/v3.config.js.map +0 -7
  1375. package/dist/esm/lib/v3/tests/v3.dynamic.config.js +0 -43
  1376. package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +0 -7
  1377. package/dist/esm/lib/v3/tests/v3.playwright.config.js +0 -41
  1378. package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +0 -7
  1379. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +0 -593
  1380. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
  1381. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +0 -97
  1382. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
  1383. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
  1384. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
  1385. package/dist/esm/tests/agent-execution-model.test.js +0 -139
  1386. package/dist/esm/tests/agent-execution-model.test.js.map +0 -7
  1387. package/dist/esm/tests/api-multiregion.test.js +0 -73
  1388. package/dist/esm/tests/api-multiregion.test.js.map +0 -7
  1389. package/dist/esm/tests/browserbase-session-accessors.test.js +0 -101
  1390. package/dist/esm/tests/browserbase-session-accessors.test.js.map +0 -7
  1391. package/dist/esm/tests/cache-llm-resolution.test.js +0 -187
  1392. package/dist/esm/tests/cache-llm-resolution.test.js.map +0 -7
  1393. package/dist/esm/tests/helpers/mockCDPSession.js +0 -27
  1394. package/dist/esm/tests/helpers/mockCDPSession.js.map +0 -7
  1395. package/dist/esm/tests/llm-provider.test.js +0 -57
  1396. package/dist/esm/tests/llm-provider.test.js.map +0 -7
  1397. package/dist/esm/tests/model-deprecation.test.js +0 -135
  1398. package/dist/esm/tests/model-deprecation.test.js.map +0 -7
  1399. package/dist/esm/tests/model-utils.test.js +0 -43
  1400. package/dist/esm/tests/model-utils.test.js.map +0 -7
  1401. package/dist/esm/tests/page-snapshot.test.js +0 -36
  1402. package/dist/esm/tests/page-snapshot.test.js.map +0 -7
  1403. package/dist/esm/tests/public-api/export-surface.test.js +0 -55
  1404. package/dist/esm/tests/public-api/export-surface.test.js.map +0 -7
  1405. package/dist/esm/tests/public-api/llm-and-agents.test.js +0 -129
  1406. package/dist/esm/tests/public-api/llm-and-agents.test.js.map +0 -7
  1407. package/dist/esm/tests/public-api/public-error-types.test.js +0 -73
  1408. package/dist/esm/tests/public-api/public-error-types.test.js.map +0 -7
  1409. package/dist/esm/tests/public-api/public-types.test.js +0 -74
  1410. package/dist/esm/tests/public-api/public-types.test.js.map +0 -7
  1411. package/dist/esm/tests/public-api/runtime-utils.test.js +0 -31
  1412. package/dist/esm/tests/public-api/runtime-utils.test.js.map +0 -7
  1413. package/dist/esm/tests/public-api/schema-utils.test.js +0 -78
  1414. package/dist/esm/tests/public-api/schema-utils.test.js.map +0 -7
  1415. package/dist/esm/tests/public-api/timeout-error-types.test.js +0 -81
  1416. package/dist/esm/tests/public-api/timeout-error-types.test.js.map +0 -7
  1417. package/dist/esm/tests/public-api/tool-type-export.test.js +0 -25
  1418. package/dist/esm/tests/public-api/tool-type-export.test.js.map +0 -7
  1419. package/dist/esm/tests/public-api/v3-core.test.js +0 -83
  1420. package/dist/esm/tests/public-api/v3-core.test.js.map +0 -7
  1421. package/dist/esm/tests/safety-confirmation.test.js +0 -134
  1422. package/dist/esm/tests/safety-confirmation.test.js.map +0 -7
  1423. package/dist/esm/tests/snapshot-a11y-resolvers.test.js +0 -348
  1424. package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +0 -7
  1425. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +0 -300
  1426. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
  1427. package/dist/esm/tests/snapshot-capture-orchestration.test.js +0 -383
  1428. package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +0 -7
  1429. package/dist/esm/tests/snapshot-cbor.test.js +0 -197
  1430. package/dist/esm/tests/snapshot-cbor.test.js.map +0 -7
  1431. package/dist/esm/tests/snapshot-dom-session-builders.test.js +0 -251
  1432. package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +0 -7
  1433. package/dist/esm/tests/snapshot-dom-tree-utils.test.js +0 -109
  1434. package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +0 -7
  1435. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +0 -49
  1436. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
  1437. package/dist/esm/tests/snapshot-frame-merge.test.js +0 -391
  1438. package/dist/esm/tests/snapshot-frame-merge.test.js.map +0 -7
  1439. package/dist/esm/tests/snapshot-tree-format-utils.test.js +0 -113
  1440. package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +0 -7
  1441. package/dist/esm/tests/snapshot-xpath-utils.test.js +0 -79
  1442. package/dist/esm/tests/snapshot-xpath-utils.test.js.map +0 -7
  1443. package/dist/esm/tests/timeout-handlers.test.js +0 -850
  1444. package/dist/esm/tests/timeout-handlers.test.js.map +0 -7
  1445. package/dist/esm/tests/understudy-command-exception.test.js +0 -55
  1446. package/dist/esm/tests/understudy-command-exception.test.js.map +0 -7
  1447. package/dist/esm/tests/xpath-parser.test.js +0 -317
  1448. package/dist/esm/tests/xpath-parser.test.js.map +0 -7
  1449. package/dist/esm/tests/xpath-resolver.test.js +0 -73
  1450. package/dist/esm/tests/xpath-resolver.test.js.map +0 -7
  1451. package/dist/esm/tests/zod-enum-compatibility.test.js +0 -97
  1452. package/dist/esm/tests/zod-enum-compatibility.test.js.map +0 -7
  1453. /package/dist/cjs/{lib/v3/dom/genA11yScripts.d.ts → tests/cache-variables.test.d.ts} +0 -0
  1454. /package/dist/cjs/{lib/v3/dom/genDomScripts.d.ts → tests/integration/agent-abort-signal.spec.d.ts} +0 -0
  1455. /package/dist/cjs/{lib/v3/dom/genLocatorScripts.d.ts → tests/integration/agent-cache-self-heal.spec.d.ts} +0 -0
  1456. /package/dist/cjs/{lib/v3/dom/genScreenshotScripts.d.ts → tests/integration/agent-callbacks.spec.d.ts} +0 -0
  1457. /package/dist/{esm/lib/v3/dom/genA11yScripts.d.ts → cjs/tests/integration/agent-experimental-validation.spec.d.ts} +0 -0
  1458. /package/dist/{esm/lib/v3/dom/genDomScripts.d.ts → cjs/tests/integration/agent-hybrid-mode.spec.d.ts} +0 -0
  1459. /package/dist/{esm/lib/v3/dom/genLocatorScripts.d.ts → cjs/tests/integration/agent-message-continuation.spec.d.ts} +0 -0
  1460. /package/dist/{esm/lib/v3/dom/genScreenshotScripts.d.ts → cjs/tests/integration/agent-streaming.spec.d.ts} +0 -0
@@ -68,7 +68,6 @@ export async function performUnderstudyMethod(page, frame, method, rawXPath, arg
68
68
  throw new UnderstudyCommandException(`Method ${method} not supported`);
69
69
  }
70
70
  }
71
- await handlePossibleNavigation("action", selectorRaw, initialUrl, frame);
72
71
  }
73
72
  catch (e) {
74
73
  const msg = e instanceof Error ? e.message : String(e);
@@ -596,30 +595,4 @@ export async function waitForDomNetworkQuiet(frame, timeoutMs) {
596
595
  };
597
596
  });
598
597
  }
599
- async function handlePossibleNavigation(actionDescription, xpath, initialUrl, frame) {
600
- v3Logger({
601
- category: "action",
602
- message: `${actionDescription}, checking for page navigation`,
603
- level: 1,
604
- auxiliary: { xpath: { value: xpath, type: "string" } },
605
- });
606
- // We only have a frame-scoped session, so detect navigation by URL change.
607
- const afterUrl = await getFrameUrl(frame);
608
- if (afterUrl !== initialUrl) {
609
- v3Logger({
610
- category: "action",
611
- message: "new page (frame) URL detected",
612
- level: 1,
613
- auxiliary: { url: { value: afterUrl, type: "string" } },
614
- });
615
- }
616
- else {
617
- v3Logger({
618
- category: "action",
619
- message: "no new (frame) URL detected",
620
- level: 1,
621
- auxiliary: { url: { value: afterUrl, type: "string" } },
622
- });
623
- }
624
- }
625
598
  //# sourceMappingURL=actHandlerUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actHandlerUtils.js","sourceRoot":"","sources":["../../../../../../lib/v3/handlers/handlerUtils/actHandlerUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/handlerUtils/actHandlerUtils.ts\nimport { Protocol } from \"devtools-protocol\";\nimport { Frame } from \"../../understudy/frame.js\";\nimport { Locator } from \"../../understudy/locator.js\";\nimport { MouseButton } from \"../../types/public/locator.js\";\nimport { resolveLocatorWithHops } from \"../../understudy/deepLocator.js\";\nimport type { Page } from \"../../understudy/page.js\";\nimport { v3Logger } from \"../../logger.js\";\nimport { SessionFileLogger } from \"../../flowLogger.js\";\nimport {\n StagehandClickError,\n UnderstudyCommandException,\n} from \"../../types/public/sdkErrors.js\";\n\nexport interface UnderstudyMethodHandlerContext {\n method: string;\n locator: Locator;\n xpath: string;\n args: ReadonlyArray<string>;\n frame: Frame;\n page: Page;\n initialUrl: string;\n domSettleTimeoutMs?: number;\n}\n\n// Normalize cases where the XPath is the root \"/\" to point to the HTML element.\nfunction normalizeRootXPath(input: string): string {\n const s = String(input ?? \"\").trim();\n if (s === \"/\") return \"/html\";\n if (/^xpath=\\/$/i.test(s)) return \"xpath=/html\";\n return s;\n}\n\nexport async function performUnderstudyMethod(\n page: Page,\n frame: Frame,\n method: string,\n rawXPath: string,\n args: ReadonlyArray<unknown>,\n domSettleTimeoutMs?: number,\n): Promise<void> {\n const selectorRaw = normalizeRootXPath(rawXPath);\n // Unified resolver: supports '>>' hops and XPath across iframes\n const locator: Locator = await resolveLocatorWithHops(\n page,\n frame,\n selectorRaw,\n );\n\n const initialUrl = await getFrameUrl(frame);\n\n v3Logger({\n category: \"action\",\n message: \"performing understudy method\",\n level: 2,\n auxiliary: {\n xpath: { value: selectorRaw, type: \"string\" },\n method: { value: method, type: \"string\" },\n url: { value: initialUrl, type: \"string\" },\n },\n });\n\n const ctx: UnderstudyMethodHandlerContext = {\n method,\n locator,\n xpath: selectorRaw,\n args: args.map((a) => (a == null ? \"\" : String(a))),\n frame,\n page,\n initialUrl,\n domSettleTimeoutMs,\n };\n\n SessionFileLogger.logUnderstudyActionEvent({\n actionType: `Understudy.${method}`,\n target: selectorRaw,\n args: Array.from(args),\n });\n\n try {\n const handler = METHOD_HANDLER_MAP[method] ?? null;\n\n if (handler) {\n await handler(ctx);\n } else {\n // Accept a few common locator method aliases\n switch (method) {\n case \"click\":\n await clickElement(ctx);\n break;\n case \"fill\":\n await fillOrType(ctx);\n break;\n case \"type\":\n await typeText(ctx);\n break;\n default:\n v3Logger({\n category: \"action\",\n message: \"chosen method is invalid\",\n level: 1,\n auxiliary: { method: { value: method, type: \"string\" } },\n });\n throw new UnderstudyCommandException(\n `Method ${method} not supported`,\n );\n }\n }\n\n await handlePossibleNavigation(\"action\", selectorRaw, initialUrl, frame);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const stack = e instanceof Error ? e.stack : undefined;\n v3Logger({\n category: \"action\",\n message: \"error performing method\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n trace: { value: stack ?? \"\", type: \"string\" },\n method: { value: method, type: \"string\" },\n xpath: { value: selectorRaw, type: \"string\" },\n args: { value: JSON.stringify(args), type: \"object\" },\n },\n });\n if (e instanceof UnderstudyCommandException) {\n throw e;\n }\n throw new UnderstudyCommandException(msg, e);\n } finally {\n SessionFileLogger.logUnderstudyActionCompleted();\n }\n}\n\n/* ===================== Handlers & Map ===================== */\n\nconst METHOD_HANDLER_MAP: Record<\n string,\n (ctx: UnderstudyMethodHandlerContext) => Promise<void>\n> = {\n scrollIntoView,\n scrollByPixelOffset,\n scrollTo: scrollElementToPercentage,\n scroll: scrollElementToPercentage,\n \"mouse.wheel\": wheelScroll,\n fill: fillOrType,\n type: typeText,\n press: pressKey,\n click: clickElement,\n doubleClick,\n dragAndDrop,\n nextChunk: scrollToNextChunk,\n prevChunk: scrollToPreviousChunk,\n selectOptionFromDropdown: selectOption,\n selectOption: selectOption,\n hover: hover,\n};\n\nexport async function selectOption(ctx: UnderstudyMethodHandlerContext) {\n const { locator, xpath, args } = ctx;\n try {\n const text = args[0]?.toString() || \"\";\n await locator.selectOption(text);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const stack = e instanceof Error ? e.stack : undefined;\n v3Logger({\n category: \"action\",\n message: \"error selecting option\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n trace: { value: stack ?? \"\", type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function scrollIntoView(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, xpath } = ctx;\n v3Logger({\n category: \"action\",\n message: \"scrolling element into view\",\n level: 2,\n auxiliary: { xpath: { value: xpath, type: \"string\" } },\n });\n const { objectId } = await locator.resolveNode();\n const ownerSession = locator.getFrame().session;\n await ownerSession.send(\"DOM.scrollIntoViewIfNeeded\", { objectId });\n await ownerSession\n .send(\"Runtime.releaseObject\", { objectId })\n .catch(() => {});\n}\n\nasync function scrollElementToPercentage(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, xpath, args } = ctx;\n v3Logger({\n category: \"action\",\n message: \"scrolling element vertically to specified percentage\",\n level: 2,\n auxiliary: {\n xpath: { value: xpath, type: \"string\" },\n coordinate: { value: JSON.stringify(args), type: \"string\" },\n },\n });\n\n const [yArg = \"0%\"] = args;\n await locator.scrollTo(yArg);\n}\n\n/** Scroll the page by pixel offset, starting from the element's center. */\nasync function scrollByPixelOffset(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, page, args } = ctx;\n const dx = Number(args[0] ?? 0);\n const dy = Number(args[1] ?? 0);\n\n try {\n const { x, y } = await locator.centroid();\n await page.scroll(x, y, dx, dy);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function wheelScroll(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { frame, args } = ctx;\n const deltaY = Number(args[0] ?? 200);\n v3Logger({\n category: \"action\",\n message: \"dispatching mouse wheel\",\n level: 2,\n auxiliary: { deltaY: { value: String(deltaY), type: \"string\" } },\n });\n await frame.session.send<never>(\"Input.dispatchMouseEvent\", {\n type: \"mouseWheel\",\n x: 0,\n y: 0,\n deltaY,\n deltaX: 0,\n } as Protocol.Input.DispatchMouseEventRequest);\n}\n\nasync function fillOrType(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { locator, xpath, args } = ctx;\n try {\n await locator.fill(\"\"); // clear\n await locator.fill(args[0] ?? \"\");\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error filling element\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function typeText(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { locator, xpath, args } = ctx;\n try {\n await locator.type(args[0] ?? \"\");\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error typing into element\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function pressKey(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { args, xpath, page } = ctx;\n const key = args[0] ?? \"\";\n try {\n v3Logger({\n category: \"action\",\n message: \"pressing key\",\n level: 1,\n auxiliary: {\n key: { value: key, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n await page.keyPress(key);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error pressing key\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n key: { value: key, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function clickElement(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, xpath, args } = ctx;\n try {\n await locator.click({ button: (args[0] as MouseButton) || undefined });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error performing click\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new StagehandClickError(ctx.xpath, msg);\n }\n}\n\nasync function doubleClick(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { locator, xpath } = ctx;\n try {\n await locator.click({ clickCount: 2 });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error performing doubleClick\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function dragAndDrop(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { page, frame, locator, args, xpath } = ctx;\n const toXPath = String(args[0] ?? \"\").trim();\n if (!toXPath)\n throw new UnderstudyCommandException(\n \"dragAndDrop requires a target XPath arg\",\n );\n\n const targetLocator = await resolveLocatorWithHops(page, frame, toXPath);\n\n try {\n // 1) Centers in local (owning-frame) viewport\n const { x: fromLocalX, y: fromLocalY } = await locator.centroid();\n const { x: toLocalX, y: toLocalY } = await targetLocator.centroid();\n\n // 2) Convert to main-viewport absolute coordinates\n const fromAbs = await locator\n .getFrame()\n .evaluate<{ x: number; y: number }, { x: number; y: number }>(\n ({ x, y }: { x: number; y: number }) => {\n let X = x;\n let Y = y;\n let w: Window = window;\n while (w !== w.top) {\n const fe = w.frameElement as HTMLElement | null;\n if (!fe) break;\n const r = fe.getBoundingClientRect();\n X += r.left;\n Y += r.top;\n w = w.parent as Window;\n }\n return { x: Math.round(X), y: Math.round(Y) };\n },\n { x: fromLocalX, y: fromLocalY },\n );\n\n const toAbs = await targetLocator\n .getFrame()\n .evaluate<{ x: number; y: number }, { x: number; y: number }>(\n ({ x, y }: { x: number; y: number }) => {\n let X = x;\n let Y = y;\n let w: Window = window;\n while (w !== w.top) {\n const fe = w.frameElement as HTMLElement | null;\n if (!fe) break;\n const r = fe.getBoundingClientRect();\n X += r.left;\n Y += r.top;\n w = w.parent as Window;\n }\n return { x: Math.round(X), y: Math.round(Y) };\n },\n { x: toLocalX, y: toLocalY },\n );\n\n // 3) Perform drag in main session\n await page.dragAndDrop(fromAbs.x, fromAbs.y, toAbs.x, toAbs.y, {\n steps: 10,\n delay: 5,\n });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error performing dragAndDrop\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n from: { value: xpath, type: \"string\" },\n to: { value: toXPath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function scrollToNextChunk(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n await scrollByElementHeight(ctx, /*dir=*/ 1);\n}\n\nasync function scrollToPreviousChunk(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n await scrollByElementHeight(ctx, /*dir=*/ -1);\n}\n\nasync function scrollByElementHeight(\n ctx: UnderstudyMethodHandlerContext,\n direction: 1 | -1,\n): Promise<void> {\n const { locator, xpath } = ctx;\n v3Logger({\n category: \"action\",\n message:\n direction > 0 ? \"scrolling to next chunk\" : \"scrolling to previous chunk\",\n level: 2,\n auxiliary: { xpath: { value: xpath, type: \"string\" } },\n });\n\n const { objectId } = await locator.resolveNode();\n try {\n const ownerSession = locator.getFrame().session;\n await ownerSession.send<Protocol.Runtime.CallFunctionOnResponse>(\n \"Runtime.callFunctionOn\",\n {\n objectId,\n functionDeclaration: `\n function(dir) {\n const waitForScrollEnd = (el) => new Promise((resolve) => {\n let last = el.scrollTop ?? 0;\n const check = () => {\n const cur = el.scrollTop ?? 0;\n if (cur === last) return resolve();\n last = cur;\n requestAnimationFrame(check);\n };\n requestAnimationFrame(check);\n });\n\n const tag = this.tagName?.toLowerCase();\n if (tag === \"html\" || tag === \"body\") {\n const h = window.visualViewport?.height ?? window.innerHeight;\n window.scrollBy({ top: h * dir, left: 0, behavior: \"smooth\" });\n const root = document.scrollingElement ?? document.documentElement;\n return waitForScrollEnd(root);\n }\n const h = this.getBoundingClientRect().height;\n this.scrollBy({ top: h * dir, left: 0, behavior: \"smooth\" });\n return waitForScrollEnd(this);\n }\n `,\n arguments: [{ value: direction }],\n awaitPromise: true,\n returnByValue: true,\n },\n );\n } finally {\n const ownerSession = locator.getFrame().session;\n await ownerSession\n .send(\"Runtime.releaseObject\", { objectId })\n .catch(() => {});\n }\n}\n\nexport async function hover(ctx: UnderstudyMethodHandlerContext) {\n const { locator, xpath } = ctx;\n try {\n await locator.hover();\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const stack = e instanceof Error ? e.stack : undefined;\n v3Logger({\n category: \"action\",\n message: \"error attempting to hover\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n trace: { value: stack ?? \"\", type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\n/* ===================== Helpers ===================== */\n\nasync function getFrameUrl(frame: Frame): Promise<string> {\n // Evaluate from within the frame's isolated world\n const url = await frame.evaluate<string>(\"location.href\");\n return url;\n}\n\n/**\n * More robust DOM settle using Network + Page events to detect network quiet.\n * Closely modeled after the provided snippet, adapted to our Frame/session + logger.\n */\nexport async function waitForDomNetworkQuiet(\n frame: Frame,\n timeoutMs?: number,\n): Promise<void> {\n const overallTimeout =\n typeof timeoutMs === \"number\" && Number.isFinite(timeoutMs)\n ? Math.max(0, timeoutMs)\n : 5_000;\n const client = frame.session;\n const settleStart = Date.now();\n\n // Ensure a document exists; if not, wait for DOMContentLoaded on this frame.\n let hasDoc: boolean;\n try {\n const rs = await frame.evaluate<string>(\"document.readyState\");\n hasDoc = rs === \"interactive\" || rs === \"complete\";\n } catch {\n hasDoc = false;\n }\n if (!hasDoc && overallTimeout > 0) {\n await frame\n .waitForLoadState(\"domcontentloaded\", overallTimeout)\n .catch(() => {});\n }\n\n const elapsed = Date.now() - settleStart;\n const remainingBudget = Math.max(0, overallTimeout - elapsed);\n if (remainingBudget === 0) {\n return;\n }\n\n await client.send(\"Network.enable\").catch(() => {});\n await client.send(\"Page.enable\").catch(() => {});\n // Best-effort; some sessions may not support Target.setAutoAttach here.\n await client\n .send(\"Target.setAutoAttach\", {\n autoAttach: true,\n waitForDebuggerOnStart: false,\n flatten: true,\n filter: [\n { type: \"worker\", exclude: true },\n { type: \"shared_worker\", exclude: true },\n ],\n })\n .catch(() => {});\n\n return new Promise<void>((resolve) => {\n const inflight = new Set<string>();\n const meta = new Map<string, { url: string; start: number }>();\n const docByFrame = new Map<string, string>();\n\n let quietTimer: NodeJS.Timeout | null = null;\n let stalledRequestSweepTimer: NodeJS.Timeout | null = null;\n\n const clearQuiet = () => {\n if (quietTimer) {\n clearTimeout(quietTimer);\n quietTimer = null;\n }\n };\n\n const maybeQuiet = () => {\n if (inflight.size === 0 && !quietTimer)\n quietTimer = setTimeout(() => resolveDone(), 500);\n };\n\n const finishReq = (id: string) => {\n if (!inflight.delete(id)) return;\n meta.delete(id);\n for (const [fid, rid] of docByFrame)\n if (rid === id) docByFrame.delete(fid);\n clearQuiet();\n maybeQuiet();\n };\n\n const onRequest = (p: Protocol.Network.RequestWillBeSentEvent) => {\n // Ignore long-lived streams\n // ResourceType includes: Document, XHR, Fetch, WebSocket, EventSource, etc.\n if (p.type === \"WebSocket\" || p.type === \"EventSource\") return;\n\n inflight.add(p.requestId);\n meta.set(p.requestId, { url: p.request.url, start: Date.now() });\n\n if (p.type === \"Document\" && p.frameId)\n docByFrame.set(p.frameId, p.requestId);\n\n clearQuiet();\n };\n\n const onFinish = (p: { requestId: string }) => finishReq(p.requestId);\n const onCached = (p: { requestId: string }) => finishReq(p.requestId);\n const onDataUrl = (p: Protocol.Network.ResponseReceivedEvent) => {\n if (p.response.url?.startsWith(\"data:\")) finishReq(p.requestId);\n };\n\n const onFrameStop = (f: Protocol.Page.FrameStoppedLoadingEvent) => {\n const id = docByFrame.get(f.frameId);\n if (id) finishReq(id);\n };\n\n client.on(\"Network.requestWillBeSent\", onRequest);\n client.on(\"Network.loadingFinished\", onFinish);\n client.on(\"Network.loadingFailed\", onFinish);\n client.on(\"Network.requestServedFromCache\", onCached);\n client.on(\"Network.responseReceived\", onDataUrl);\n client.on(\"Page.frameStoppedLoading\", onFrameStop);\n\n stalledRequestSweepTimer = setInterval(() => {\n const now = Date.now();\n for (const [id, m] of meta) {\n if (now - m.start > 2_000) {\n inflight.delete(id);\n meta.delete(id);\n v3Logger({\n category: \"dom\",\n message: \"⏳ forcing completion of stalled iframe document\",\n level: 1,\n auxiliary: {\n url: { value: (m.url ?? \"\").slice(0, 120), type: \"string\" },\n },\n });\n }\n }\n maybeQuiet();\n }, 500);\n\n maybeQuiet();\n\n const guard = setTimeout(() => {\n if (inflight.size) {\n v3Logger({\n category: \"dom\",\n message:\n \"⚠️ DOM-settle timeout reached – network requests still pending\",\n level: 1,\n auxiliary: {\n count: { value: String(inflight.size), type: \"integer\" },\n },\n });\n }\n resolveDone();\n }, remainingBudget);\n\n const resolveDone = () => {\n client.off(\"Network.requestWillBeSent\", onRequest);\n client.off(\"Network.loadingFinished\", onFinish);\n client.off(\"Network.loadingFailed\", onFinish);\n client.off(\"Network.requestServedFromCache\", onCached);\n client.off(\"Network.responseReceived\", onDataUrl);\n client.off(\"Page.frameStoppedLoading\", onFrameStop);\n if (quietTimer) clearTimeout(quietTimer);\n if (stalledRequestSweepTimer) clearInterval(stalledRequestSweepTimer);\n clearTimeout(guard);\n resolve();\n };\n });\n}\n\nasync function handlePossibleNavigation(\n actionDescription: string,\n xpath: string,\n initialUrl: string,\n frame: Frame,\n): Promise<void> {\n v3Logger({\n category: \"action\",\n message: `${actionDescription}, checking for page navigation`,\n level: 1,\n auxiliary: { xpath: { value: xpath, type: \"string\" } },\n });\n\n // We only have a frame-scoped session, so detect navigation by URL change.\n const afterUrl = await getFrameUrl(frame);\n\n if (afterUrl !== initialUrl) {\n v3Logger({\n category: \"action\",\n message: \"new page (frame) URL detected\",\n level: 1,\n auxiliary: { url: { value: afterUrl, type: \"string\" } },\n });\n } else {\n v3Logger({\n category: \"action\",\n message: \"no new (frame) URL detected\",\n level: 1,\n auxiliary: { url: { value: afterUrl, type: \"string\" } },\n });\n }\n}\n"]}
1
+ {"version":3,"file":"actHandlerUtils.js","sourceRoot":"","sources":["../../../../../../lib/v3/handlers/handlerUtils/actHandlerUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/handlerUtils/actHandlerUtils.ts\nimport { Protocol } from \"devtools-protocol\";\nimport { Frame } from \"../../understudy/frame.js\";\nimport { Locator } from \"../../understudy/locator.js\";\nimport { MouseButton } from \"../../types/public/locator.js\";\nimport { resolveLocatorWithHops } from \"../../understudy/deepLocator.js\";\nimport type { Page } from \"../../understudy/page.js\";\nimport { v3Logger } from \"../../logger.js\";\nimport { SessionFileLogger } from \"../../flowLogger.js\";\nimport {\n StagehandClickError,\n UnderstudyCommandException,\n} from \"../../types/public/sdkErrors.js\";\n\nexport interface UnderstudyMethodHandlerContext {\n method: string;\n locator: Locator;\n xpath: string;\n args: ReadonlyArray<string>;\n frame: Frame;\n page: Page;\n initialUrl: string;\n domSettleTimeoutMs?: number;\n}\n\n// Normalize cases where the XPath is the root \"/\" to point to the HTML element.\nfunction normalizeRootXPath(input: string): string {\n const s = String(input ?? \"\").trim();\n if (s === \"/\") return \"/html\";\n if (/^xpath=\\/$/i.test(s)) return \"xpath=/html\";\n return s;\n}\n\nexport async function performUnderstudyMethod(\n page: Page,\n frame: Frame,\n method: string,\n rawXPath: string,\n args: ReadonlyArray<unknown>,\n domSettleTimeoutMs?: number,\n): Promise<void> {\n const selectorRaw = normalizeRootXPath(rawXPath);\n // Unified resolver: supports '>>' hops and XPath across iframes\n const locator: Locator = await resolveLocatorWithHops(\n page,\n frame,\n selectorRaw,\n );\n\n const initialUrl = await getFrameUrl(frame);\n\n v3Logger({\n category: \"action\",\n message: \"performing understudy method\",\n level: 2,\n auxiliary: {\n xpath: { value: selectorRaw, type: \"string\" },\n method: { value: method, type: \"string\" },\n url: { value: initialUrl, type: \"string\" },\n },\n });\n\n const ctx: UnderstudyMethodHandlerContext = {\n method,\n locator,\n xpath: selectorRaw,\n args: args.map((a) => (a == null ? \"\" : String(a))),\n frame,\n page,\n initialUrl,\n domSettleTimeoutMs,\n };\n\n SessionFileLogger.logUnderstudyActionEvent({\n actionType: `Understudy.${method}`,\n target: selectorRaw,\n args: Array.from(args),\n });\n\n try {\n const handler = METHOD_HANDLER_MAP[method] ?? null;\n\n if (handler) {\n await handler(ctx);\n } else {\n // Accept a few common locator method aliases\n switch (method) {\n case \"click\":\n await clickElement(ctx);\n break;\n case \"fill\":\n await fillOrType(ctx);\n break;\n case \"type\":\n await typeText(ctx);\n break;\n default:\n v3Logger({\n category: \"action\",\n message: \"chosen method is invalid\",\n level: 1,\n auxiliary: { method: { value: method, type: \"string\" } },\n });\n throw new UnderstudyCommandException(\n `Method ${method} not supported`,\n );\n }\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const stack = e instanceof Error ? e.stack : undefined;\n v3Logger({\n category: \"action\",\n message: \"error performing method\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n trace: { value: stack ?? \"\", type: \"string\" },\n method: { value: method, type: \"string\" },\n xpath: { value: selectorRaw, type: \"string\" },\n args: { value: JSON.stringify(args), type: \"object\" },\n },\n });\n if (e instanceof UnderstudyCommandException) {\n throw e;\n }\n throw new UnderstudyCommandException(msg, e);\n } finally {\n SessionFileLogger.logUnderstudyActionCompleted();\n }\n}\n\n/* ===================== Handlers & Map ===================== */\n\nconst METHOD_HANDLER_MAP: Record<\n string,\n (ctx: UnderstudyMethodHandlerContext) => Promise<void>\n> = {\n scrollIntoView,\n scrollByPixelOffset,\n scrollTo: scrollElementToPercentage,\n scroll: scrollElementToPercentage,\n \"mouse.wheel\": wheelScroll,\n fill: fillOrType,\n type: typeText,\n press: pressKey,\n click: clickElement,\n doubleClick,\n dragAndDrop,\n nextChunk: scrollToNextChunk,\n prevChunk: scrollToPreviousChunk,\n selectOptionFromDropdown: selectOption,\n selectOption: selectOption,\n hover: hover,\n};\n\nexport async function selectOption(ctx: UnderstudyMethodHandlerContext) {\n const { locator, xpath, args } = ctx;\n try {\n const text = args[0]?.toString() || \"\";\n await locator.selectOption(text);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const stack = e instanceof Error ? e.stack : undefined;\n v3Logger({\n category: \"action\",\n message: \"error selecting option\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n trace: { value: stack ?? \"\", type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function scrollIntoView(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, xpath } = ctx;\n v3Logger({\n category: \"action\",\n message: \"scrolling element into view\",\n level: 2,\n auxiliary: { xpath: { value: xpath, type: \"string\" } },\n });\n const { objectId } = await locator.resolveNode();\n const ownerSession = locator.getFrame().session;\n await ownerSession.send(\"DOM.scrollIntoViewIfNeeded\", { objectId });\n await ownerSession\n .send(\"Runtime.releaseObject\", { objectId })\n .catch(() => {});\n}\n\nasync function scrollElementToPercentage(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, xpath, args } = ctx;\n v3Logger({\n category: \"action\",\n message: \"scrolling element vertically to specified percentage\",\n level: 2,\n auxiliary: {\n xpath: { value: xpath, type: \"string\" },\n coordinate: { value: JSON.stringify(args), type: \"string\" },\n },\n });\n\n const [yArg = \"0%\"] = args;\n await locator.scrollTo(yArg);\n}\n\n/** Scroll the page by pixel offset, starting from the element's center. */\nasync function scrollByPixelOffset(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, page, args } = ctx;\n const dx = Number(args[0] ?? 0);\n const dy = Number(args[1] ?? 0);\n\n try {\n const { x, y } = await locator.centroid();\n await page.scroll(x, y, dx, dy);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function wheelScroll(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { frame, args } = ctx;\n const deltaY = Number(args[0] ?? 200);\n v3Logger({\n category: \"action\",\n message: \"dispatching mouse wheel\",\n level: 2,\n auxiliary: { deltaY: { value: String(deltaY), type: \"string\" } },\n });\n await frame.session.send<never>(\"Input.dispatchMouseEvent\", {\n type: \"mouseWheel\",\n x: 0,\n y: 0,\n deltaY,\n deltaX: 0,\n } as Protocol.Input.DispatchMouseEventRequest);\n}\n\nasync function fillOrType(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { locator, xpath, args } = ctx;\n try {\n await locator.fill(\"\"); // clear\n await locator.fill(args[0] ?? \"\");\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error filling element\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function typeText(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { locator, xpath, args } = ctx;\n try {\n await locator.type(args[0] ?? \"\");\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error typing into element\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function pressKey(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { args, xpath, page } = ctx;\n const key = args[0] ?? \"\";\n try {\n v3Logger({\n category: \"action\",\n message: \"pressing key\",\n level: 1,\n auxiliary: {\n key: { value: key, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n await page.keyPress(key);\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error pressing key\",\n level: 1,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n key: { value: key, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function clickElement(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n const { locator, xpath, args } = ctx;\n try {\n await locator.click({ button: (args[0] as MouseButton) || undefined });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error performing click\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new StagehandClickError(ctx.xpath, msg);\n }\n}\n\nasync function doubleClick(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { locator, xpath } = ctx;\n try {\n await locator.click({ clickCount: 2 });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error performing doubleClick\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function dragAndDrop(ctx: UnderstudyMethodHandlerContext): Promise<void> {\n const { page, frame, locator, args, xpath } = ctx;\n const toXPath = String(args[0] ?? \"\").trim();\n if (!toXPath)\n throw new UnderstudyCommandException(\n \"dragAndDrop requires a target XPath arg\",\n );\n\n const targetLocator = await resolveLocatorWithHops(page, frame, toXPath);\n\n try {\n // 1) Centers in local (owning-frame) viewport\n const { x: fromLocalX, y: fromLocalY } = await locator.centroid();\n const { x: toLocalX, y: toLocalY } = await targetLocator.centroid();\n\n // 2) Convert to main-viewport absolute coordinates\n const fromAbs = await locator\n .getFrame()\n .evaluate<{ x: number; y: number }, { x: number; y: number }>(\n ({ x, y }: { x: number; y: number }) => {\n let X = x;\n let Y = y;\n let w: Window = window;\n while (w !== w.top) {\n const fe = w.frameElement as HTMLElement | null;\n if (!fe) break;\n const r = fe.getBoundingClientRect();\n X += r.left;\n Y += r.top;\n w = w.parent as Window;\n }\n return { x: Math.round(X), y: Math.round(Y) };\n },\n { x: fromLocalX, y: fromLocalY },\n );\n\n const toAbs = await targetLocator\n .getFrame()\n .evaluate<{ x: number; y: number }, { x: number; y: number }>(\n ({ x, y }: { x: number; y: number }) => {\n let X = x;\n let Y = y;\n let w: Window = window;\n while (w !== w.top) {\n const fe = w.frameElement as HTMLElement | null;\n if (!fe) break;\n const r = fe.getBoundingClientRect();\n X += r.left;\n Y += r.top;\n w = w.parent as Window;\n }\n return { x: Math.round(X), y: Math.round(Y) };\n },\n { x: toLocalX, y: toLocalY },\n );\n\n // 3) Perform drag in main session\n await page.dragAndDrop(fromAbs.x, fromAbs.y, toAbs.x, toAbs.y, {\n steps: 10,\n delay: 5,\n });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n v3Logger({\n category: \"action\",\n message: \"error performing dragAndDrop\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n from: { value: xpath, type: \"string\" },\n to: { value: toXPath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\nasync function scrollToNextChunk(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n await scrollByElementHeight(ctx, /*dir=*/ 1);\n}\n\nasync function scrollToPreviousChunk(\n ctx: UnderstudyMethodHandlerContext,\n): Promise<void> {\n await scrollByElementHeight(ctx, /*dir=*/ -1);\n}\n\nasync function scrollByElementHeight(\n ctx: UnderstudyMethodHandlerContext,\n direction: 1 | -1,\n): Promise<void> {\n const { locator, xpath } = ctx;\n v3Logger({\n category: \"action\",\n message:\n direction > 0 ? \"scrolling to next chunk\" : \"scrolling to previous chunk\",\n level: 2,\n auxiliary: { xpath: { value: xpath, type: \"string\" } },\n });\n\n const { objectId } = await locator.resolveNode();\n try {\n const ownerSession = locator.getFrame().session;\n await ownerSession.send<Protocol.Runtime.CallFunctionOnResponse>(\n \"Runtime.callFunctionOn\",\n {\n objectId,\n functionDeclaration: `\n function(dir) {\n const waitForScrollEnd = (el) => new Promise((resolve) => {\n let last = el.scrollTop ?? 0;\n const check = () => {\n const cur = el.scrollTop ?? 0;\n if (cur === last) return resolve();\n last = cur;\n requestAnimationFrame(check);\n };\n requestAnimationFrame(check);\n });\n\n const tag = this.tagName?.toLowerCase();\n if (tag === \"html\" || tag === \"body\") {\n const h = window.visualViewport?.height ?? window.innerHeight;\n window.scrollBy({ top: h * dir, left: 0, behavior: \"smooth\" });\n const root = document.scrollingElement ?? document.documentElement;\n return waitForScrollEnd(root);\n }\n const h = this.getBoundingClientRect().height;\n this.scrollBy({ top: h * dir, left: 0, behavior: \"smooth\" });\n return waitForScrollEnd(this);\n }\n `,\n arguments: [{ value: direction }],\n awaitPromise: true,\n returnByValue: true,\n },\n );\n } finally {\n const ownerSession = locator.getFrame().session;\n await ownerSession\n .send(\"Runtime.releaseObject\", { objectId })\n .catch(() => {});\n }\n}\n\nexport async function hover(ctx: UnderstudyMethodHandlerContext) {\n const { locator, xpath } = ctx;\n try {\n await locator.hover();\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const stack = e instanceof Error ? e.stack : undefined;\n v3Logger({\n category: \"action\",\n message: \"error attempting to hover\",\n level: 0,\n auxiliary: {\n error: { value: msg, type: \"string\" },\n trace: { value: stack ?? \"\", type: \"string\" },\n xpath: { value: xpath, type: \"string\" },\n },\n });\n throw new UnderstudyCommandException(msg, e);\n }\n}\n\n/* ===================== Helpers ===================== */\n\nasync function getFrameUrl(frame: Frame): Promise<string> {\n // Evaluate from within the frame's isolated world\n const url = await frame.evaluate<string>(\"location.href\");\n return url;\n}\n\n/**\n * More robust DOM settle using Network + Page events to detect network quiet.\n * Closely modeled after the provided snippet, adapted to our Frame/session + logger.\n */\nexport async function waitForDomNetworkQuiet(\n frame: Frame,\n timeoutMs?: number,\n): Promise<void> {\n const overallTimeout =\n typeof timeoutMs === \"number\" && Number.isFinite(timeoutMs)\n ? Math.max(0, timeoutMs)\n : 5_000;\n const client = frame.session;\n const settleStart = Date.now();\n\n // Ensure a document exists; if not, wait for DOMContentLoaded on this frame.\n let hasDoc: boolean;\n try {\n const rs = await frame.evaluate<string>(\"document.readyState\");\n hasDoc = rs === \"interactive\" || rs === \"complete\";\n } catch {\n hasDoc = false;\n }\n if (!hasDoc && overallTimeout > 0) {\n await frame\n .waitForLoadState(\"domcontentloaded\", overallTimeout)\n .catch(() => {});\n }\n\n const elapsed = Date.now() - settleStart;\n const remainingBudget = Math.max(0, overallTimeout - elapsed);\n if (remainingBudget === 0) {\n return;\n }\n\n await client.send(\"Network.enable\").catch(() => {});\n await client.send(\"Page.enable\").catch(() => {});\n // Best-effort; some sessions may not support Target.setAutoAttach here.\n await client\n .send(\"Target.setAutoAttach\", {\n autoAttach: true,\n waitForDebuggerOnStart: false,\n flatten: true,\n filter: [\n { type: \"worker\", exclude: true },\n { type: \"shared_worker\", exclude: true },\n ],\n })\n .catch(() => {});\n\n return new Promise<void>((resolve) => {\n const inflight = new Set<string>();\n const meta = new Map<string, { url: string; start: number }>();\n const docByFrame = new Map<string, string>();\n\n let quietTimer: NodeJS.Timeout | null = null;\n let stalledRequestSweepTimer: NodeJS.Timeout | null = null;\n\n const clearQuiet = () => {\n if (quietTimer) {\n clearTimeout(quietTimer);\n quietTimer = null;\n }\n };\n\n const maybeQuiet = () => {\n if (inflight.size === 0 && !quietTimer)\n quietTimer = setTimeout(() => resolveDone(), 500);\n };\n\n const finishReq = (id: string) => {\n if (!inflight.delete(id)) return;\n meta.delete(id);\n for (const [fid, rid] of docByFrame)\n if (rid === id) docByFrame.delete(fid);\n clearQuiet();\n maybeQuiet();\n };\n\n const onRequest = (p: Protocol.Network.RequestWillBeSentEvent) => {\n // Ignore long-lived streams\n // ResourceType includes: Document, XHR, Fetch, WebSocket, EventSource, etc.\n if (p.type === \"WebSocket\" || p.type === \"EventSource\") return;\n\n inflight.add(p.requestId);\n meta.set(p.requestId, { url: p.request.url, start: Date.now() });\n\n if (p.type === \"Document\" && p.frameId)\n docByFrame.set(p.frameId, p.requestId);\n\n clearQuiet();\n };\n\n const onFinish = (p: { requestId: string }) => finishReq(p.requestId);\n const onCached = (p: { requestId: string }) => finishReq(p.requestId);\n const onDataUrl = (p: Protocol.Network.ResponseReceivedEvent) => {\n if (p.response.url?.startsWith(\"data:\")) finishReq(p.requestId);\n };\n\n const onFrameStop = (f: Protocol.Page.FrameStoppedLoadingEvent) => {\n const id = docByFrame.get(f.frameId);\n if (id) finishReq(id);\n };\n\n client.on(\"Network.requestWillBeSent\", onRequest);\n client.on(\"Network.loadingFinished\", onFinish);\n client.on(\"Network.loadingFailed\", onFinish);\n client.on(\"Network.requestServedFromCache\", onCached);\n client.on(\"Network.responseReceived\", onDataUrl);\n client.on(\"Page.frameStoppedLoading\", onFrameStop);\n\n stalledRequestSweepTimer = setInterval(() => {\n const now = Date.now();\n for (const [id, m] of meta) {\n if (now - m.start > 2_000) {\n inflight.delete(id);\n meta.delete(id);\n v3Logger({\n category: \"dom\",\n message: \"⏳ forcing completion of stalled iframe document\",\n level: 1,\n auxiliary: {\n url: { value: (m.url ?? \"\").slice(0, 120), type: \"string\" },\n },\n });\n }\n }\n maybeQuiet();\n }, 500);\n\n maybeQuiet();\n\n const guard = setTimeout(() => {\n if (inflight.size) {\n v3Logger({\n category: \"dom\",\n message:\n \"⚠️ DOM-settle timeout reached – network requests still pending\",\n level: 1,\n auxiliary: {\n count: { value: String(inflight.size), type: \"integer\" },\n },\n });\n }\n resolveDone();\n }, remainingBudget);\n\n const resolveDone = () => {\n client.off(\"Network.requestWillBeSent\", onRequest);\n client.off(\"Network.loadingFinished\", onFinish);\n client.off(\"Network.loadingFailed\", onFinish);\n client.off(\"Network.requestServedFromCache\", onCached);\n client.off(\"Network.responseReceived\", onDataUrl);\n client.off(\"Page.frameStoppedLoading\", onFrameStop);\n if (quietTimer) clearTimeout(quietTimer);\n if (stalledRequestSweepTimer) clearInterval(stalledRequestSweepTimer);\n clearTimeout(guard);\n resolve();\n };\n });\n}\n"]}
@@ -29,8 +29,7 @@ export class ObserveHandler {
29
29
  async observe(params) {
30
30
  const { instruction, page, timeout, selector, model } = params;
31
31
  const llmClient = this.resolveLlmClient(model);
32
- const effectiveTimeoutMs = typeof timeout === "number" && timeout > 0 ? timeout : undefined;
33
- const ensureTimeRemaining = createTimeoutGuard(effectiveTimeoutMs, (ms) => new ObserveTimeoutError(ms));
32
+ const ensureTimeRemaining = createTimeoutGuard(timeout, (ms) => new ObserveTimeoutError(ms));
34
33
  const effectiveInstruction = instruction ??
35
34
  "Find elements that can be used for any future actions in the page. These may be navigation links, related pages, section/subsection links, buttons, or other interactive elements. Be comprehensive: if there are multiple elements that may be relevant for future actions, return all of them.";
36
35
  v3Logger({
@@ -1 +1 @@
1
- {"version":3,"file":"observeHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/observeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/observeHandler.ts\nimport { observe as runObserve } from \"../../inference.js\";\nimport { trimTrailingTextNode } from \"../../utils.js\";\nimport { v3Logger } from \"../logger.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { captureHybridSnapshot } from \"../understudy/a11y/snapshot/index.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport {\n ObserveHandlerParams,\n SupportedUnderstudyAction,\n} from \"../types/private/handlers.js\";\nimport { EncodedId } from \"../types/private/internal.js\";\nimport { Action } from \"../types/public/methods.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n} from \"../types/public/model.js\";\nimport { ObserveTimeoutError } from \"../types/public/sdkErrors.js\";\nimport { createTimeoutGuard } from \"./handlerUtils/timeoutGuard.js\";\n\nexport class ObserveHandler {\n private readonly llmClient: LLMClient;\n private readonly defaultModelName: AvailableModel;\n private readonly defaultClientOptions: ClientOptions;\n private readonly resolveLlmClient: (model?: ModelConfiguration) => LLMClient;\n private readonly systemPrompt: string;\n private readonly logInferenceToFile: boolean;\n private readonly experimental: boolean;\n private readonly onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n\n constructor(\n llmClient: LLMClient,\n defaultModelName: AvailableModel,\n defaultClientOptions: ClientOptions,\n resolveLlmClient: (model?: ModelConfiguration) => LLMClient,\n systemPrompt?: string,\n logInferenceToFile?: boolean,\n experimental?: boolean,\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void,\n ) {\n this.llmClient = llmClient;\n this.defaultModelName = defaultModelName;\n this.defaultClientOptions = defaultClientOptions;\n this.resolveLlmClient = resolveLlmClient;\n this.systemPrompt = systemPrompt ?? \"\";\n this.logInferenceToFile = logInferenceToFile ?? false;\n this.experimental = experimental ?? false;\n this.onMetrics = onMetrics;\n }\n\n async observe(params: ObserveHandlerParams): Promise<Action[]> {\n const { instruction, page, timeout, selector, model } = params;\n\n const llmClient = this.resolveLlmClient(model);\n\n const effectiveTimeoutMs =\n typeof timeout === \"number\" && timeout > 0 ? timeout : undefined;\n const ensureTimeRemaining = createTimeoutGuard(\n effectiveTimeoutMs,\n (ms) => new ObserveTimeoutError(ms),\n );\n\n const effectiveInstruction =\n instruction ??\n \"Find elements that can be used for any future actions in the page. These may be navigation links, related pages, section/subsection links, buttons, or other interactive elements. Be comprehensive: if there are multiple elements that may be relevant for future actions, return all of them.\";\n\n v3Logger({\n category: \"observation\",\n message: \"starting observation\",\n level: 1,\n auxiliary: {\n instruction: {\n value: effectiveInstruction,\n type: \"string\",\n },\n },\n });\n\n // Build the hybrid snapshot (a11y-centric text tree + lookup maps)\n const focusSelector = selector?.replace(/^xpath=/i, \"\") ?? \"\";\n ensureTimeRemaining();\n const snapshot = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector || undefined,\n });\n\n const combinedTree = snapshot.combinedTree;\n const combinedXpathMap = snapshot.combinedXpathMap ?? {};\n\n v3Logger({\n category: \"observation\",\n message: \"Got accessibility tree data\",\n level: 1,\n });\n\n // Call the LLM to propose actionable elements\n ensureTimeRemaining();\n const observationResponse = await runObserve({\n instruction: effectiveInstruction,\n domElements: combinedTree,\n llmClient,\n userProvidedInstructions: this.systemPrompt,\n logger: v3Logger,\n logInferenceToFile: this.logInferenceToFile,\n supportedActions: Object.values(SupportedUnderstudyAction),\n });\n\n const {\n prompt_tokens = 0,\n completion_tokens = 0,\n reasoning_tokens = 0,\n cached_input_tokens = 0,\n inference_time_ms = 0,\n } = observationResponse;\n\n // Update OBSERVE metrics from the LLM observation call\n this.onMetrics?.(\n V3FunctionName.OBSERVE,\n prompt_tokens,\n completion_tokens,\n reasoning_tokens,\n cached_input_tokens,\n inference_time_ms,\n );\n\n // Map elementIds -> selectors via combinedXpathMap\n const elementsWithSelectors = (\n await Promise.all(\n observationResponse.elements.map(async (element) => {\n const { elementId, ...rest } = element; // rest may or may not have method/arguments\n if (typeof elementId === \"string\" && elementId.includes(\"-\")) {\n const lookUpIndex = elementId as EncodedId;\n const xpath = combinedXpathMap[lookUpIndex];\n const trimmedXpath = trimTrailingTextNode(xpath);\n if (!trimmedXpath) return undefined;\n\n // For dragAndDrop, convert element ID in arguments to xpath (target element)\n let resolvedArgs = rest.arguments;\n if (\n rest.method === \"dragAndDrop\" &&\n Array.isArray(rest.arguments) &&\n rest.arguments.length > 0\n ) {\n const targetArg = rest.arguments[0];\n // Check if argument looks like an element ID (e.g., \"1-67\")\n if (\n typeof targetArg === \"string\" &&\n /^\\d+-\\d+$/.test(targetArg)\n ) {\n const argXpath = combinedXpathMap[targetArg as EncodedId];\n const trimmedArgXpath = trimTrailingTextNode(argXpath);\n if (trimmedArgXpath) {\n resolvedArgs = [\n `xpath=${trimmedArgXpath}`,\n ...rest.arguments.slice(1),\n ];\n } else {\n // Target element lookup failed, filter out this action\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element lookup failed\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n } else {\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element invalid ID format\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n }\n\n return {\n ...rest,\n arguments: resolvedArgs,\n selector: `xpath=${trimmedXpath}`,\n } as {\n description: string;\n method?: string;\n arguments?: string[];\n selector: string;\n };\n }\n // shadow-root fallback:\n return {\n description: \"an element inside a shadow DOM\",\n method: \"not-supported\",\n arguments: [],\n selector: \"not-supported\",\n };\n }),\n )\n ).filter(<T>(e: T | undefined): e is T => e !== undefined);\n\n v3Logger({\n category: \"observation\",\n message: \"found elements\",\n level: 1,\n auxiliary: {\n elements: {\n value: JSON.stringify(elementsWithSelectors),\n type: \"object\",\n },\n },\n });\n\n return elementsWithSelectors;\n }\n}\n"]}
1
+ {"version":3,"file":"observeHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/observeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/observeHandler.ts\nimport { observe as runObserve } from \"../../inference.js\";\nimport { trimTrailingTextNode } from \"../../utils.js\";\nimport { v3Logger } from \"../logger.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { captureHybridSnapshot } from \"../understudy/a11y/snapshot/index.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport {\n ObserveHandlerParams,\n SupportedUnderstudyAction,\n} from \"../types/private/handlers.js\";\nimport { EncodedId } from \"../types/private/internal.js\";\nimport { Action } from \"../types/public/methods.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n} from \"../types/public/model.js\";\nimport { ObserveTimeoutError } from \"../types/public/sdkErrors.js\";\nimport { createTimeoutGuard } from \"./handlerUtils/timeoutGuard.js\";\n\nexport class ObserveHandler {\n private readonly llmClient: LLMClient;\n private readonly defaultModelName: AvailableModel;\n private readonly defaultClientOptions: ClientOptions;\n private readonly resolveLlmClient: (model?: ModelConfiguration) => LLMClient;\n private readonly systemPrompt: string;\n private readonly logInferenceToFile: boolean;\n private readonly experimental: boolean;\n private readonly onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n\n constructor(\n llmClient: LLMClient,\n defaultModelName: AvailableModel,\n defaultClientOptions: ClientOptions,\n resolveLlmClient: (model?: ModelConfiguration) => LLMClient,\n systemPrompt?: string,\n logInferenceToFile?: boolean,\n experimental?: boolean,\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void,\n ) {\n this.llmClient = llmClient;\n this.defaultModelName = defaultModelName;\n this.defaultClientOptions = defaultClientOptions;\n this.resolveLlmClient = resolveLlmClient;\n this.systemPrompt = systemPrompt ?? \"\";\n this.logInferenceToFile = logInferenceToFile ?? false;\n this.experimental = experimental ?? false;\n this.onMetrics = onMetrics;\n }\n\n async observe(params: ObserveHandlerParams): Promise<Action[]> {\n const { instruction, page, timeout, selector, model } = params;\n\n const llmClient = this.resolveLlmClient(model);\n\n const ensureTimeRemaining = createTimeoutGuard(\n timeout,\n (ms) => new ObserveTimeoutError(ms),\n );\n\n const effectiveInstruction =\n instruction ??\n \"Find elements that can be used for any future actions in the page. These may be navigation links, related pages, section/subsection links, buttons, or other interactive elements. Be comprehensive: if there are multiple elements that may be relevant for future actions, return all of them.\";\n\n v3Logger({\n category: \"observation\",\n message: \"starting observation\",\n level: 1,\n auxiliary: {\n instruction: {\n value: effectiveInstruction,\n type: \"string\",\n },\n },\n });\n\n // Build the hybrid snapshot (a11y-centric text tree + lookup maps)\n const focusSelector = selector?.replace(/^xpath=/i, \"\") ?? \"\";\n ensureTimeRemaining();\n const snapshot = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector || undefined,\n });\n\n const combinedTree = snapshot.combinedTree;\n const combinedXpathMap = snapshot.combinedXpathMap ?? {};\n\n v3Logger({\n category: \"observation\",\n message: \"Got accessibility tree data\",\n level: 1,\n });\n\n // Call the LLM to propose actionable elements\n ensureTimeRemaining();\n const observationResponse = await runObserve({\n instruction: effectiveInstruction,\n domElements: combinedTree,\n llmClient,\n userProvidedInstructions: this.systemPrompt,\n logger: v3Logger,\n logInferenceToFile: this.logInferenceToFile,\n supportedActions: Object.values(SupportedUnderstudyAction),\n });\n\n const {\n prompt_tokens = 0,\n completion_tokens = 0,\n reasoning_tokens = 0,\n cached_input_tokens = 0,\n inference_time_ms = 0,\n } = observationResponse;\n\n // Update OBSERVE metrics from the LLM observation call\n this.onMetrics?.(\n V3FunctionName.OBSERVE,\n prompt_tokens,\n completion_tokens,\n reasoning_tokens,\n cached_input_tokens,\n inference_time_ms,\n );\n\n // Map elementIds -> selectors via combinedXpathMap\n const elementsWithSelectors = (\n await Promise.all(\n observationResponse.elements.map(async (element) => {\n const { elementId, ...rest } = element; // rest may or may not have method/arguments\n if (typeof elementId === \"string\" && elementId.includes(\"-\")) {\n const lookUpIndex = elementId as EncodedId;\n const xpath = combinedXpathMap[lookUpIndex];\n const trimmedXpath = trimTrailingTextNode(xpath);\n if (!trimmedXpath) return undefined;\n\n // For dragAndDrop, convert element ID in arguments to xpath (target element)\n let resolvedArgs = rest.arguments;\n if (\n rest.method === \"dragAndDrop\" &&\n Array.isArray(rest.arguments) &&\n rest.arguments.length > 0\n ) {\n const targetArg = rest.arguments[0];\n // Check if argument looks like an element ID (e.g., \"1-67\")\n if (\n typeof targetArg === \"string\" &&\n /^\\d+-\\d+$/.test(targetArg)\n ) {\n const argXpath = combinedXpathMap[targetArg as EncodedId];\n const trimmedArgXpath = trimTrailingTextNode(argXpath);\n if (trimmedArgXpath) {\n resolvedArgs = [\n `xpath=${trimmedArgXpath}`,\n ...rest.arguments.slice(1),\n ];\n } else {\n // Target element lookup failed, filter out this action\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element lookup failed\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n } else {\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element invalid ID format\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n }\n\n return {\n ...rest,\n arguments: resolvedArgs,\n selector: `xpath=${trimmedXpath}`,\n } as {\n description: string;\n method?: string;\n arguments?: string[];\n selector: string;\n };\n }\n // shadow-root fallback:\n return {\n description: \"an element inside a shadow DOM\",\n method: \"not-supported\",\n arguments: [],\n selector: \"not-supported\",\n };\n }),\n )\n ).filter(<T>(e: T | undefined): e is T => e !== undefined);\n\n v3Logger({\n category: \"observation\",\n message: \"found elements\",\n level: 1,\n auxiliary: {\n elements: {\n value: JSON.stringify(elementsWithSelectors),\n type: \"object\",\n },\n },\n });\n\n return elementsWithSelectors;\n }\n}\n"]}
@@ -61,8 +61,9 @@ export class V3AgentHandler {
61
61
  systemInstructions: this.systemInstructions,
62
62
  isBrowserbase: this.v3.isBrowserbase,
63
63
  excludeTools: options.excludeTools,
64
+ variables: options.variables,
64
65
  });
65
- const tools = this.createTools(options.excludeTools);
66
+ const tools = this.createTools(options.excludeTools, options.variables, options.toolTimeout);
66
67
  const allTools = { ...tools, ...this.mcpTools };
67
68
  // Use provided messages for continuation, or start fresh with the instruction
68
69
  const messages = options.messages?.length
@@ -224,13 +225,10 @@ export class V3AgentHandler {
224
225
  prepareStep: this.createPrepareStep(callbacks?.prepareStep),
225
226
  onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),
226
227
  abortSignal: preparedOptions.signal,
227
- providerOptions: wrappedModel.modelId.includes("gemini-3")
228
- ? {
229
- google: {
230
- mediaResolution: "MEDIA_RESOLUTION_HIGH",
231
- },
232
- }
233
- : undefined,
228
+ providerOptions: {
229
+ google: { mediaResolution: "MEDIA_RESOLUTION_HIGH" },
230
+ openai: { store: false },
231
+ },
234
232
  });
235
233
  const allMessages = [...messages, ...(result.response?.messages || [])];
236
234
  const doneResult = await this.ensureDone(state, wrappedModel, allMessages, preparedOptions.instruction, preparedOptions.output, this.logger);
@@ -334,13 +332,10 @@ export class V3AgentHandler {
334
332
  rejectResult(new AgentAbortError(reason));
335
333
  },
336
334
  abortSignal: options.signal,
337
- providerOptions: wrappedModel.modelId.includes("gemini-3")
338
- ? {
339
- google: {
340
- mediaResolution: "MEDIA_RESOLUTION_HIGH",
341
- },
342
- }
343
- : undefined,
335
+ providerOptions: {
336
+ google: { mediaResolution: "MEDIA_RESOLUTION_HIGH" },
337
+ openai: { store: false },
338
+ },
344
339
  });
345
340
  const agentStreamResult = streamResult;
346
341
  agentStreamResult.result = resultPromise;
@@ -384,7 +379,7 @@ export class V3AgentHandler {
384
379
  messages: inputMessages,
385
380
  };
386
381
  }
387
- createTools(excludeTools) {
382
+ createTools(excludeTools, variables, toolTimeout) {
388
383
  const provider = this.llmClient?.getLanguageModel?.()?.provider;
389
384
  return createAgentTools(this.v3, {
390
385
  executionModel: this.executionModel,
@@ -392,6 +387,8 @@ export class V3AgentHandler {
392
387
  mode: this.mode,
393
388
  provider,
394
389
  excludeTools,
390
+ variables,
391
+ toolTimeout,
395
392
  });
396
393
  }
397
394
  handleStop(result, maxSteps) {
@@ -1 +1 @@
1
- {"version":3,"file":"v3AgentHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/v3AgentHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAgentTools } from \"../agent/tools/index.js\";\nimport { buildAgentSystemPrompt } from \"../agent/prompts/agentSystemPrompt.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { V3 } from \"../v3.js\";\nimport {\n ModelMessage,\n ToolSet,\n wrapLanguageModel,\n stepCountIs,\n LanguageModel,\n type LanguageModelUsage,\n type StepResult,\n type GenerateTextOnStepFinishCallback,\n type StreamTextOnStepFinishCallback,\n type PrepareStepFunction,\n} from \"ai\";\nimport { StagehandZodObject } from \"../zodCompat.js\";\nimport { processMessages } from \"../agent/utils/messageProcessing.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { SessionFileLogger } from \"../flowLogger.js\";\nimport {\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentExecuteOptionsBase,\n AgentResult,\n AgentContext,\n AgentState,\n AgentStreamResult,\n AgentStreamCallbacks,\n AgentToolMode,\n AgentModelConfig,\n} from \"../types/public/agent.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { mapToolResultToActions } from \"../agent/utils/actionMapping.js\";\nimport {\n MissingLLMConfigurationError,\n StreamingCallbacksInNonStreamingModeError,\n AgentAbortError,\n} from \"../types/public/sdkErrors.js\";\nimport { handleDoneToolCall } from \"../agent/utils/handleDoneToolCall.js\";\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/**\n * Prepends a system message with cache control to the messages array.\n * The cache control providerOptions are used by Anthropic and ignored by other providers.\n */\nfunction prependSystemMessage(\n systemPrompt: string,\n messages: ModelMessage[],\n): ModelMessage[] {\n return [\n {\n role: \"system\",\n content: systemPrompt,\n providerOptions: {\n anthropic: {\n cacheControl: { type: \"ephemeral\" },\n },\n },\n },\n ...messages,\n ];\n}\n\nexport class V3AgentHandler {\n private v3: V3;\n private logger: (message: LogLine) => void;\n private llmClient: LLMClient;\n private executionModel?: string | AgentModelConfig;\n private systemInstructions?: string;\n private mcpTools?: ToolSet;\n private mode: AgentToolMode;\n\n constructor(\n v3: V3,\n logger: (message: LogLine) => void,\n llmClient: LLMClient,\n executionModel?: string | AgentModelConfig,\n systemInstructions?: string,\n mcpTools?: ToolSet,\n mode?: AgentToolMode,\n ) {\n this.v3 = v3;\n this.logger = logger;\n this.llmClient = llmClient;\n this.executionModel = executionModel;\n this.systemInstructions = systemInstructions;\n this.mcpTools = mcpTools;\n this.mode = mode ?? \"dom\";\n }\n\n private async prepareAgent(\n instructionOrOptions: string | AgentExecuteOptionsBase,\n ): Promise<AgentContext> {\n try {\n const options =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\n\n const maxSteps = options.maxSteps || 20;\n\n // Get the initial page URL first (needed for the system prompt)\n const initialPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Build the system prompt with mode-aware tool guidance\n const systemPrompt = buildAgentSystemPrompt({\n url: initialPageUrl,\n executionInstruction: options.instruction,\n mode: this.mode,\n systemInstructions: this.systemInstructions,\n isBrowserbase: this.v3.isBrowserbase,\n excludeTools: options.excludeTools,\n });\n\n const tools = this.createTools(options.excludeTools);\n const allTools: ToolSet = { ...tools, ...this.mcpTools };\n\n // Use provided messages for continuation, or start fresh with the instruction\n const messages: ModelMessage[] = options.messages?.length\n ? [...options.messages, { role: \"user\", content: options.instruction }]\n : [{ role: \"user\", content: options.instruction }];\n\n if (!this.llmClient?.getLanguageModel) {\n throw new MissingLLMConfigurationError();\n }\n const baseModel = this.llmClient.getLanguageModel();\n //to do - we likely do not need middleware anymore\n const wrappedModel = wrapLanguageModel({\n model: baseModel,\n middleware: {\n ...SessionFileLogger.createLlmLoggingMiddleware(baseModel.modelId),\n },\n });\n\n if (\n this.mode === \"hybrid\" &&\n !baseModel.modelId.includes(\"gemini-3-flash\") &&\n !baseModel.modelId.includes(\"claude\")\n ) {\n this.logger({\n category: \"agent\",\n message: `Warning: \"${baseModel.modelId}\" may not perform well in hybrid mode. See recommended models: https://docs.stagehand.dev/v3/basics/agent#hybrid-mode`,\n level: 0,\n });\n }\n\n return {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n };\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `failed to prepare agent: ${error}`,\n level: 0,\n });\n throw error;\n }\n }\n private createPrepareStep(\n userCallback?: PrepareStepFunction<ToolSet>,\n ): PrepareStepFunction<ToolSet> {\n return async (options) => {\n processMessages(options.messages);\n if (userCallback) {\n return userCallback(options);\n }\n return options;\n };\n }\n\n private createStepHandler(\n state: AgentState,\n userCallback?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>,\n ) {\n return async (event: StepResult<ToolSet>) => {\n this.logger({\n category: \"agent\",\n message: `Step finished: ${event.finishReason}`,\n level: 2,\n });\n\n if (event.toolCalls && event.toolCalls.length > 0) {\n for (let i = 0; i < event.toolCalls.length; i++) {\n const toolCall = event.toolCalls[i];\n const args = toolCall.input;\n const toolResult = event.toolResults?.[i];\n\n if (event.text && event.text.length > 0) {\n state.collectedReasoning.push(event.text);\n this.logger({\n category: \"agent\",\n message: `reasoning: ${event.text}`,\n level: 1,\n });\n }\n\n if (toolCall.toolName === \"done\") {\n state.completed = true;\n if (args?.taskComplete) {\n const doneReasoning = args.reasoning;\n const allReasoning = state.collectedReasoning.join(\" \");\n state.finalMessage = doneReasoning\n ? `${allReasoning} ${doneReasoning}`.trim()\n : allReasoning || \"Task completed successfully\";\n }\n }\n const mappedActions = mapToolResultToActions({\n toolCallName: toolCall.toolName,\n toolResult,\n args,\n reasoning: event.text || undefined,\n });\n\n for (const action of mappedActions) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n }\n state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Capture screenshot after tool execution (only for evals)\n if (process.env.EVALS === \"true\") {\n try {\n await this.captureAndEmitScreenshot();\n } catch (e) {\n this.logger({\n category: \"agent\",\n message: `Warning: Failed to capture screenshot: ${getErrorMessage(e)}`,\n level: 1,\n });\n }\n }\n }\n\n if (userCallback) {\n await userCallback(event);\n }\n };\n }\n\n public async execute(\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> {\n const startTime = Date.now();\n const options =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n const signal = options?.signal;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n options?.highlightCursor ?? this.mode === \"hybrid\";\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: \"\",\n };\n\n let messages: ModelMessage[] = [];\n\n try {\n const {\n options: preparedOptions,\n maxSteps,\n systemPrompt,\n allTools,\n messages: preparedMessages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n messages = preparedMessages;\n state.currentPageUrl = initialPageUrl;\n\n const callbacks = (instructionOrOptions as AgentExecuteOptions).callbacks;\n\n if (callbacks) {\n const streamingOnlyCallbacks = [\n \"onChunk\",\n \"onFinish\",\n \"onError\",\n \"onAbort\",\n ];\n const invalidCallbacks = streamingOnlyCallbacks.filter(\n (name) => callbacks[name as keyof typeof callbacks] != null,\n );\n if (invalidCallbacks.length > 0) {\n throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);\n }\n }\n\n const result = await this.llmClient.generateText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n temperature: 1,\n toolChoice: \"auto\",\n\n prepareStep: this.createPrepareStep(callbacks?.prepareStep),\n onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),\n abortSignal: preparedOptions.signal,\n providerOptions: wrappedModel.modelId.includes(\"gemini-3\")\n ? {\n google: {\n mediaResolution: \"MEDIA_RESOLUTION_HIGH\",\n },\n }\n : undefined,\n });\n\n const allMessages = [...messages, ...(result.response?.messages || [])];\n const doneResult = await this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n preparedOptions.instruction,\n preparedOptions.output,\n this.logger,\n );\n\n return this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n result,\n maxSteps,\n doneResult.output,\n );\n } catch (error) {\n // Re-throw validation errors that should propagate to the caller\n if (error instanceof StreamingCallbacksInNonStreamingModeError) {\n throw error;\n }\n\n // Re-throw abort errors wrapped in AgentAbortError for consistent error typing\n if (signal?.aborted) {\n const reason = signal.reason ? String(signal.reason) : \"aborted\";\n throw new AgentAbortError(reason);\n }\n\n const errorMessage = getErrorMessage(error);\n this.logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n // For non-abort errors, return a failure result instead of throwing\n return {\n success: false,\n actions: state.actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n messages,\n };\n }\n }\n\n public async stream(\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ): Promise<AgentStreamResult> {\n const streamOptions =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n streamOptions?.highlightCursor ?? this.mode === \"hybrid\";\n\n const {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n const callbacks = (instructionOrOptions as AgentStreamExecuteOptions)\n .callbacks as AgentStreamCallbacks | undefined;\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: initialPageUrl,\n };\n const startTime = Date.now();\n\n let resolveResult: (value: AgentResult | PromiseLike<AgentResult>) => void;\n let rejectResult: (reason: unknown) => void;\n const resultPromise = new Promise<AgentResult>((resolve, reject) => {\n resolveResult = resolve;\n rejectResult = reject;\n });\n\n const handleError = (error: unknown) => {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error during streaming: ${errorMessage}`,\n level: 0,\n });\n rejectResult(error);\n };\n\n const streamResult = this.llmClient.streamText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n temperature: 1,\n toolChoice: \"auto\",\n prepareStep: this.createPrepareStep(callbacks?.prepareStep),\n onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),\n onError: (event) => {\n if (callbacks?.onError) {\n callbacks.onError(event);\n }\n handleError(event.error);\n },\n onChunk: callbacks?.onChunk,\n onFinish: (event) => {\n if (callbacks?.onFinish) {\n callbacks.onFinish(event);\n }\n\n const allMessages = [...messages, ...(event.response?.messages || [])];\n this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n options.instruction,\n options.output,\n this.logger,\n ).then((doneResult) => {\n const result = this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n event,\n maxSteps,\n doneResult.output,\n );\n resolveResult(result);\n });\n },\n onAbort: (event) => {\n if (callbacks?.onAbort) {\n callbacks.onAbort(event);\n }\n // Reject the result promise with AgentAbortError when stream is aborted\n const reason = options.signal?.reason\n ? String(options.signal.reason)\n : \"Stream was aborted\";\n rejectResult(new AgentAbortError(reason));\n },\n abortSignal: options.signal,\n providerOptions: wrappedModel.modelId.includes(\"gemini-3\")\n ? {\n google: {\n mediaResolution: \"MEDIA_RESOLUTION_HIGH\",\n },\n }\n : undefined,\n });\n\n const agentStreamResult = streamResult as AgentStreamResult;\n agentStreamResult.result = resultPromise;\n return agentStreamResult;\n }\n\n private consolidateMetricsAndResult(\n startTime: number,\n state: AgentState,\n inputMessages: ModelMessage[],\n result: {\n text?: string;\n totalUsage?: LanguageModelUsage;\n response?: { messages?: ModelMessage[] };\n steps?: StepResult<ToolSet>[];\n },\n maxSteps?: number,\n output?: Record<string, unknown>,\n ): AgentResult {\n if (!state.finalMessage) {\n const allReasoning = state.collectedReasoning.join(\" \").trim();\n\n if (!state.completed && maxSteps && result.steps?.length >= maxSteps) {\n this.logger({\n category: \"agent\",\n message: `Agent stopped: reached maximum steps (${maxSteps})`,\n level: 1,\n });\n state.finalMessage = `Agent stopped: reached maximum steps (${maxSteps})`;\n } else {\n state.finalMessage = allReasoning || result.text || \"\";\n }\n }\n\n const endTime = Date.now();\n const inferenceTimeMs = endTime - startTime;\n if (result.totalUsage) {\n this.v3.updateMetrics(\n V3FunctionName.AGENT,\n result.totalUsage.inputTokens || 0,\n result.totalUsage.outputTokens || 0,\n result.totalUsage.reasoningTokens || 0,\n result.totalUsage.cachedInputTokens || 0,\n inferenceTimeMs,\n );\n }\n\n return {\n success: state.completed,\n message: state.finalMessage || \"Task execution completed\",\n actions: state.actions,\n completed: state.completed,\n output,\n usage: result.totalUsage\n ? {\n input_tokens: result.totalUsage.inputTokens || 0,\n output_tokens: result.totalUsage.outputTokens || 0,\n reasoning_tokens: result.totalUsage.reasoningTokens || 0,\n cached_input_tokens: result.totalUsage.cachedInputTokens || 0,\n inference_time_ms: inferenceTimeMs,\n }\n : undefined,\n messages: inputMessages,\n };\n }\n\n private createTools(excludeTools?: string[]) {\n const provider = this.llmClient?.getLanguageModel?.()?.provider;\n return createAgentTools(this.v3, {\n executionModel: this.executionModel,\n logger: this.logger,\n mode: this.mode,\n provider,\n excludeTools,\n });\n }\n\n private handleStop(\n result: Parameters<ReturnType<typeof stepCountIs>>[0],\n maxSteps: number,\n ): boolean | PromiseLike<boolean> {\n const lastStep = result.steps[result.steps.length - 1];\n if (lastStep?.toolCalls?.some((tc) => tc.toolName === \"done\")) {\n return true;\n }\n return stepCountIs(maxSteps)(result);\n }\n\n /**\n * Ensures the done tool is called at the end of agent execution.\n * Returns the messages and any extracted output from the done call.\n */\n private async ensureDone(\n state: AgentState,\n model: LanguageModel,\n messages: ModelMessage[],\n instruction: string,\n outputSchema?: StagehandZodObject,\n logger?: (message: LogLine) => void,\n ): Promise<{ messages: ModelMessage[]; output?: Record<string, unknown> }> {\n if (state.completed) return { messages };\n\n const doneResult = await handleDoneToolCall({\n model,\n inputMessages: messages,\n instruction,\n outputSchema,\n logger,\n });\n\n state.completed = doneResult.taskComplete;\n state.finalMessage = doneResult.reasoning;\n\n const doneAction = mapToolResultToActions({\n toolCallName: \"done\",\n toolResult: {\n success: true,\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n args: {\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n reasoning: doneResult.reasoning,\n });\n\n for (const action of doneAction) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n return {\n messages: [...messages, ...doneResult.messages],\n output: doneResult.output,\n };\n }\n\n /**\n * Capture a screenshot and emit it via the event bus\n */\n private async captureAndEmitScreenshot(): Promise<void> {\n try {\n const page = await this.v3.context.awaitActivePage();\n const screenshot = await page.screenshot({ fullPage: false });\n this.v3.bus.emit(\"agent_screenshot_taken_event\", screenshot);\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `Error capturing screenshot: ${getErrorMessage(error)}`,\n level: 0,\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"v3AgentHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/v3AgentHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAgentTools } from \"../agent/tools/index.js\";\nimport { buildAgentSystemPrompt } from \"../agent/prompts/agentSystemPrompt.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { V3 } from \"../v3.js\";\nimport {\n ModelMessage,\n ToolSet,\n wrapLanguageModel,\n stepCountIs,\n LanguageModel,\n type LanguageModelUsage,\n type StepResult,\n type GenerateTextOnStepFinishCallback,\n type StreamTextOnStepFinishCallback,\n type PrepareStepFunction,\n} from \"ai\";\nimport { StagehandZodObject } from \"../zodCompat.js\";\nimport { processMessages } from \"../agent/utils/messageProcessing.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { SessionFileLogger } from \"../flowLogger.js\";\nimport {\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentExecuteOptionsBase,\n AgentResult,\n AgentContext,\n AgentState,\n AgentStreamResult,\n AgentStreamCallbacks,\n AgentToolMode,\n AgentModelConfig,\n Variables,\n} from \"../types/public/agent.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { mapToolResultToActions } from \"../agent/utils/actionMapping.js\";\nimport {\n MissingLLMConfigurationError,\n StreamingCallbacksInNonStreamingModeError,\n AgentAbortError,\n} from \"../types/public/sdkErrors.js\";\nimport { handleDoneToolCall } from \"../agent/utils/handleDoneToolCall.js\";\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/**\n * Prepends a system message with cache control to the messages array.\n * The cache control providerOptions are used by Anthropic and ignored by other providers.\n */\nfunction prependSystemMessage(\n systemPrompt: string,\n messages: ModelMessage[],\n): ModelMessage[] {\n return [\n {\n role: \"system\",\n content: systemPrompt,\n providerOptions: {\n anthropic: {\n cacheControl: { type: \"ephemeral\" },\n },\n },\n },\n ...messages,\n ];\n}\n\nexport class V3AgentHandler {\n private v3: V3;\n private logger: (message: LogLine) => void;\n private llmClient: LLMClient;\n private executionModel?: string | AgentModelConfig;\n private systemInstructions?: string;\n private mcpTools?: ToolSet;\n private mode: AgentToolMode;\n\n constructor(\n v3: V3,\n logger: (message: LogLine) => void,\n llmClient: LLMClient,\n executionModel?: string | AgentModelConfig,\n systemInstructions?: string,\n mcpTools?: ToolSet,\n mode?: AgentToolMode,\n ) {\n this.v3 = v3;\n this.logger = logger;\n this.llmClient = llmClient;\n this.executionModel = executionModel;\n this.systemInstructions = systemInstructions;\n this.mcpTools = mcpTools;\n this.mode = mode ?? \"dom\";\n }\n\n private async prepareAgent(\n instructionOrOptions: string | AgentExecuteOptionsBase,\n ): Promise<AgentContext> {\n try {\n const options =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\n\n const maxSteps = options.maxSteps || 20;\n\n // Get the initial page URL first (needed for the system prompt)\n const initialPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Build the system prompt with mode-aware tool guidance\n const systemPrompt = buildAgentSystemPrompt({\n url: initialPageUrl,\n executionInstruction: options.instruction,\n mode: this.mode,\n systemInstructions: this.systemInstructions,\n isBrowserbase: this.v3.isBrowserbase,\n excludeTools: options.excludeTools,\n variables: options.variables,\n });\n\n const tools = this.createTools(\n options.excludeTools,\n options.variables,\n options.toolTimeout,\n );\n const allTools: ToolSet = { ...tools, ...this.mcpTools };\n\n // Use provided messages for continuation, or start fresh with the instruction\n const messages: ModelMessage[] = options.messages?.length\n ? [...options.messages, { role: \"user\", content: options.instruction }]\n : [{ role: \"user\", content: options.instruction }];\n\n if (!this.llmClient?.getLanguageModel) {\n throw new MissingLLMConfigurationError();\n }\n const baseModel = this.llmClient.getLanguageModel();\n //to do - we likely do not need middleware anymore\n const wrappedModel = wrapLanguageModel({\n model: baseModel,\n middleware: {\n ...SessionFileLogger.createLlmLoggingMiddleware(baseModel.modelId),\n },\n });\n\n if (\n this.mode === \"hybrid\" &&\n !baseModel.modelId.includes(\"gemini-3-flash\") &&\n !baseModel.modelId.includes(\"claude\")\n ) {\n this.logger({\n category: \"agent\",\n message: `Warning: \"${baseModel.modelId}\" may not perform well in hybrid mode. See recommended models: https://docs.stagehand.dev/v3/basics/agent#hybrid-mode`,\n level: 0,\n });\n }\n\n return {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n };\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `failed to prepare agent: ${error}`,\n level: 0,\n });\n throw error;\n }\n }\n private createPrepareStep(\n userCallback?: PrepareStepFunction<ToolSet>,\n ): PrepareStepFunction<ToolSet> {\n return async (options) => {\n processMessages(options.messages);\n if (userCallback) {\n return userCallback(options);\n }\n return options;\n };\n }\n\n private createStepHandler(\n state: AgentState,\n userCallback?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>,\n ) {\n return async (event: StepResult<ToolSet>) => {\n this.logger({\n category: \"agent\",\n message: `Step finished: ${event.finishReason}`,\n level: 2,\n });\n\n if (event.toolCalls && event.toolCalls.length > 0) {\n for (let i = 0; i < event.toolCalls.length; i++) {\n const toolCall = event.toolCalls[i];\n const args = toolCall.input;\n const toolResult = event.toolResults?.[i];\n\n if (event.text && event.text.length > 0) {\n state.collectedReasoning.push(event.text);\n this.logger({\n category: \"agent\",\n message: `reasoning: ${event.text}`,\n level: 1,\n });\n }\n\n if (toolCall.toolName === \"done\") {\n state.completed = true;\n if (args?.taskComplete) {\n const doneReasoning = args.reasoning;\n const allReasoning = state.collectedReasoning.join(\" \");\n state.finalMessage = doneReasoning\n ? `${allReasoning} ${doneReasoning}`.trim()\n : allReasoning || \"Task completed successfully\";\n }\n }\n const mappedActions = mapToolResultToActions({\n toolCallName: toolCall.toolName,\n toolResult,\n args,\n reasoning: event.text || undefined,\n });\n\n for (const action of mappedActions) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n }\n state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Capture screenshot after tool execution (only for evals)\n if (process.env.EVALS === \"true\") {\n try {\n await this.captureAndEmitScreenshot();\n } catch (e) {\n this.logger({\n category: \"agent\",\n message: `Warning: Failed to capture screenshot: ${getErrorMessage(e)}`,\n level: 1,\n });\n }\n }\n }\n\n if (userCallback) {\n await userCallback(event);\n }\n };\n }\n\n public async execute(\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> {\n const startTime = Date.now();\n const options =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n const signal = options?.signal;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n options?.highlightCursor ?? this.mode === \"hybrid\";\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: \"\",\n };\n\n let messages: ModelMessage[] = [];\n\n try {\n const {\n options: preparedOptions,\n maxSteps,\n systemPrompt,\n allTools,\n messages: preparedMessages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n messages = preparedMessages;\n state.currentPageUrl = initialPageUrl;\n\n const callbacks = (instructionOrOptions as AgentExecuteOptions).callbacks;\n\n if (callbacks) {\n const streamingOnlyCallbacks = [\n \"onChunk\",\n \"onFinish\",\n \"onError\",\n \"onAbort\",\n ];\n const invalidCallbacks = streamingOnlyCallbacks.filter(\n (name) => callbacks[name as keyof typeof callbacks] != null,\n );\n if (invalidCallbacks.length > 0) {\n throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);\n }\n }\n\n const result = await this.llmClient.generateText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n temperature: 1,\n toolChoice: \"auto\",\n\n prepareStep: this.createPrepareStep(callbacks?.prepareStep),\n onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),\n abortSignal: preparedOptions.signal,\n providerOptions: {\n google: { mediaResolution: \"MEDIA_RESOLUTION_HIGH\" },\n openai: { store: false },\n },\n });\n\n const allMessages = [...messages, ...(result.response?.messages || [])];\n const doneResult = await this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n preparedOptions.instruction,\n preparedOptions.output,\n this.logger,\n );\n\n return this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n result,\n maxSteps,\n doneResult.output,\n );\n } catch (error) {\n // Re-throw validation errors that should propagate to the caller\n if (error instanceof StreamingCallbacksInNonStreamingModeError) {\n throw error;\n }\n\n // Re-throw abort errors wrapped in AgentAbortError for consistent error typing\n if (signal?.aborted) {\n const reason = signal.reason ? String(signal.reason) : \"aborted\";\n throw new AgentAbortError(reason);\n }\n\n const errorMessage = getErrorMessage(error);\n this.logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n // For non-abort errors, return a failure result instead of throwing\n return {\n success: false,\n actions: state.actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n messages,\n };\n }\n }\n\n public async stream(\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ): Promise<AgentStreamResult> {\n const streamOptions =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n streamOptions?.highlightCursor ?? this.mode === \"hybrid\";\n\n const {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n const callbacks = (instructionOrOptions as AgentStreamExecuteOptions)\n .callbacks as AgentStreamCallbacks | undefined;\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: initialPageUrl,\n };\n const startTime = Date.now();\n\n let resolveResult: (value: AgentResult | PromiseLike<AgentResult>) => void;\n let rejectResult: (reason: unknown) => void;\n const resultPromise = new Promise<AgentResult>((resolve, reject) => {\n resolveResult = resolve;\n rejectResult = reject;\n });\n\n const handleError = (error: unknown) => {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error during streaming: ${errorMessage}`,\n level: 0,\n });\n rejectResult(error);\n };\n\n const streamResult = this.llmClient.streamText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n temperature: 1,\n toolChoice: \"auto\",\n prepareStep: this.createPrepareStep(callbacks?.prepareStep),\n onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),\n onError: (event) => {\n if (callbacks?.onError) {\n callbacks.onError(event);\n }\n handleError(event.error);\n },\n onChunk: callbacks?.onChunk,\n onFinish: (event) => {\n if (callbacks?.onFinish) {\n callbacks.onFinish(event);\n }\n\n const allMessages = [...messages, ...(event.response?.messages || [])];\n this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n options.instruction,\n options.output,\n this.logger,\n ).then((doneResult) => {\n const result = this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n event,\n maxSteps,\n doneResult.output,\n );\n resolveResult(result);\n });\n },\n onAbort: (event) => {\n if (callbacks?.onAbort) {\n callbacks.onAbort(event);\n }\n // Reject the result promise with AgentAbortError when stream is aborted\n const reason = options.signal?.reason\n ? String(options.signal.reason)\n : \"Stream was aborted\";\n rejectResult(new AgentAbortError(reason));\n },\n abortSignal: options.signal,\n providerOptions: {\n google: { mediaResolution: \"MEDIA_RESOLUTION_HIGH\" },\n openai: { store: false },\n },\n });\n\n const agentStreamResult = streamResult as AgentStreamResult;\n agentStreamResult.result = resultPromise;\n return agentStreamResult;\n }\n\n private consolidateMetricsAndResult(\n startTime: number,\n state: AgentState,\n inputMessages: ModelMessage[],\n result: {\n text?: string;\n totalUsage?: LanguageModelUsage;\n response?: { messages?: ModelMessage[] };\n steps?: StepResult<ToolSet>[];\n },\n maxSteps?: number,\n output?: Record<string, unknown>,\n ): AgentResult {\n if (!state.finalMessage) {\n const allReasoning = state.collectedReasoning.join(\" \").trim();\n\n if (!state.completed && maxSteps && result.steps?.length >= maxSteps) {\n this.logger({\n category: \"agent\",\n message: `Agent stopped: reached maximum steps (${maxSteps})`,\n level: 1,\n });\n state.finalMessage = `Agent stopped: reached maximum steps (${maxSteps})`;\n } else {\n state.finalMessage = allReasoning || result.text || \"\";\n }\n }\n\n const endTime = Date.now();\n const inferenceTimeMs = endTime - startTime;\n if (result.totalUsage) {\n this.v3.updateMetrics(\n V3FunctionName.AGENT,\n result.totalUsage.inputTokens || 0,\n result.totalUsage.outputTokens || 0,\n result.totalUsage.reasoningTokens || 0,\n result.totalUsage.cachedInputTokens || 0,\n inferenceTimeMs,\n );\n }\n\n return {\n success: state.completed,\n message: state.finalMessage || \"Task execution completed\",\n actions: state.actions,\n completed: state.completed,\n output,\n usage: result.totalUsage\n ? {\n input_tokens: result.totalUsage.inputTokens || 0,\n output_tokens: result.totalUsage.outputTokens || 0,\n reasoning_tokens: result.totalUsage.reasoningTokens || 0,\n cached_input_tokens: result.totalUsage.cachedInputTokens || 0,\n inference_time_ms: inferenceTimeMs,\n }\n : undefined,\n messages: inputMessages,\n };\n }\n\n private createTools(\n excludeTools?: string[],\n variables?: Variables,\n toolTimeout?: number,\n ) {\n const provider = this.llmClient?.getLanguageModel?.()?.provider;\n return createAgentTools(this.v3, {\n executionModel: this.executionModel,\n logger: this.logger,\n mode: this.mode,\n provider,\n excludeTools,\n variables,\n toolTimeout,\n });\n }\n\n private handleStop(\n result: Parameters<ReturnType<typeof stepCountIs>>[0],\n maxSteps: number,\n ): boolean | PromiseLike<boolean> {\n const lastStep = result.steps[result.steps.length - 1];\n if (lastStep?.toolCalls?.some((tc) => tc.toolName === \"done\")) {\n return true;\n }\n return stepCountIs(maxSteps)(result);\n }\n\n /**\n * Ensures the done tool is called at the end of agent execution.\n * Returns the messages and any extracted output from the done call.\n */\n private async ensureDone(\n state: AgentState,\n model: LanguageModel,\n messages: ModelMessage[],\n instruction: string,\n outputSchema?: StagehandZodObject,\n logger?: (message: LogLine) => void,\n ): Promise<{ messages: ModelMessage[]; output?: Record<string, unknown> }> {\n if (state.completed) return { messages };\n\n const doneResult = await handleDoneToolCall({\n model,\n inputMessages: messages,\n instruction,\n outputSchema,\n logger,\n });\n\n state.completed = doneResult.taskComplete;\n state.finalMessage = doneResult.reasoning;\n\n const doneAction = mapToolResultToActions({\n toolCallName: \"done\",\n toolResult: {\n success: true,\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n args: {\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n reasoning: doneResult.reasoning,\n });\n\n for (const action of doneAction) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n return {\n messages: [...messages, ...doneResult.messages],\n output: doneResult.output,\n };\n }\n\n /**\n * Capture a screenshot and emit it via the event bus\n */\n private async captureAndEmitScreenshot(): Promise<void> {\n try {\n const page = await this.v3.context.awaitActivePage();\n const screenshot = await page.screenshot({ fullPage: false });\n this.v3.bus.emit(\"agent_screenshot_taken_event\", screenshot);\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `Error capturing screenshot: ${getErrorMessage(error)}`,\n level: 0,\n });\n }\n }\n}\n"]}