@browserbasehq/orca 3.4.0-preview.0 → 3.5.0-vertex-test

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 (841) hide show
  1. package/dist/cjs/lib/inference.d.ts +2 -1
  2. package/dist/cjs/lib/inference.js +10 -3
  3. package/dist/cjs/lib/inference.js.map +1 -1
  4. package/dist/cjs/lib/prompt.d.ts +2 -2
  5. package/dist/cjs/lib/prompt.js +19 -4
  6. package/dist/cjs/lib/prompt.js.map +1 -1
  7. package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +1 -1
  8. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  9. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +10 -0
  10. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  11. package/dist/cjs/lib/v3/api.d.ts +6 -1
  12. package/dist/cjs/lib/v3/api.js +57 -12
  13. package/dist/cjs/lib/v3/api.js.map +1 -1
  14. package/dist/cjs/lib/v3/handlers/extractHandler.js +19 -2
  15. package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -1
  16. package/dist/cjs/lib/v3/handlers/observeHandler.js +2 -1
  17. package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -1
  18. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  19. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  20. package/dist/cjs/lib/v3/index.d.ts +1 -0
  21. package/dist/cjs/lib/v3/index.js.map +1 -1
  22. package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
  23. package/dist/cjs/lib/v3/launch/local.js +47 -7
  24. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  25. package/dist/cjs/lib/v3/llm/LLMProvider.js +0 -5
  26. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  27. package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
  28. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  29. package/dist/cjs/lib/v3/types/private/handlers.d.ts +2 -0
  30. package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -1
  31. package/dist/cjs/lib/v3/types/private/snapshot.d.ts +2 -0
  32. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -1
  33. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  34. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  35. package/dist/cjs/lib/v3/types/public/api.d.ts +287 -0
  36. package/dist/cjs/lib/v3/types/public/api.js +61 -3
  37. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  38. package/dist/cjs/lib/v3/types/public/methods.d.ts +2 -0
  39. package/dist/cjs/lib/v3/types/public/methods.js.map +1 -1
  40. package/dist/cjs/lib/v3/types/public/model.d.ts +11 -7
  41. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  42. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  43. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  44. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  45. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  46. package/dist/cjs/lib/v3/v3.d.ts +1 -0
  47. package/dist/cjs/lib/v3/v3.js +21 -47
  48. package/dist/cjs/lib/v3/v3.js.map +1 -1
  49. package/dist/cjs/lib/v3Evaluator.d.ts +20 -12
  50. package/dist/cjs/lib/v3Evaluator.js +41 -199
  51. package/dist/cjs/lib/v3Evaluator.js.map +1 -1
  52. package/dist/cjs/lib/v3LegacyEvaluator.d.ts +20 -0
  53. package/dist/cjs/lib/v3LegacyEvaluator.js +215 -0
  54. package/dist/cjs/lib/v3LegacyEvaluator.js.map +1 -0
  55. package/dist/cjs/lib/version.d.ts +1 -1
  56. package/dist/cjs/lib/version.js +1 -1
  57. package/dist/cjs/lib/version.js.map +1 -1
  58. package/dist/esm/lib/inference.d.ts +2 -1
  59. package/dist/esm/lib/inference.js +10 -3
  60. package/dist/esm/lib/inference.js.map +1 -1
  61. package/dist/esm/lib/prompt.d.ts +2 -2
  62. package/dist/esm/lib/prompt.js +19 -4
  63. package/dist/esm/lib/prompt.js.map +1 -1
  64. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
  65. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  66. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -0
  67. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  68. package/dist/esm/lib/v3/api.d.ts +6 -1
  69. package/dist/esm/lib/v3/api.js +57 -12
  70. package/dist/esm/lib/v3/api.js.map +1 -1
  71. package/dist/esm/lib/v3/handlers/extractHandler.js +19 -2
  72. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
  73. package/dist/esm/lib/v3/handlers/observeHandler.js +2 -1
  74. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
  75. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  76. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  77. package/dist/esm/lib/v3/index.d.ts +1 -0
  78. package/dist/esm/lib/v3/index.js.map +1 -1
  79. package/dist/esm/lib/v3/launch/local.d.ts +2 -7
  80. package/dist/esm/lib/v3/launch/local.js +48 -8
  81. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  82. package/dist/esm/lib/v3/llm/LLMProvider.js +1 -6
  83. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  84. package/dist/esm/lib/v3/llm/aisdk.js +5 -0
  85. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  86. package/dist/esm/lib/v3/types/private/handlers.d.ts +2 -0
  87. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
  88. package/dist/esm/lib/v3/types/private/snapshot.d.ts +2 -0
  89. package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -1
  90. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  91. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  92. package/dist/esm/lib/v3/types/public/api.d.ts +287 -0
  93. package/dist/esm/lib/v3/types/public/api.js +59 -1
  94. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  95. package/dist/esm/lib/v3/types/public/methods.d.ts +2 -0
  96. package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
  97. package/dist/esm/lib/v3/types/public/model.d.ts +11 -7
  98. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  99. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  100. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  101. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  102. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  103. package/dist/esm/lib/v3/v3.d.ts +1 -0
  104. package/dist/esm/lib/v3/v3.js +21 -47
  105. package/dist/esm/lib/v3/v3.js.map +1 -1
  106. package/dist/esm/lib/v3Evaluator.d.ts +20 -12
  107. package/dist/esm/lib/v3Evaluator.js +41 -199
  108. package/dist/esm/lib/v3Evaluator.js.map +1 -1
  109. package/dist/esm/lib/v3LegacyEvaluator.d.ts +20 -0
  110. package/dist/esm/lib/v3LegacyEvaluator.js +211 -0
  111. package/dist/esm/lib/v3LegacyEvaluator.js.map +1 -0
  112. package/dist/esm/lib/version.d.ts +1 -1
  113. package/dist/esm/lib/version.js +1 -1
  114. package/dist/esm/lib/version.js.map +1 -1
  115. package/package.json +30 -18
  116. package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
  117. package/dist/cjs/tests/cache-variables.test.js +0 -221
  118. package/dist/cjs/tests/cache-variables.test.js.map +0 -1
  119. package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  120. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
  121. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
  122. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  123. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
  124. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  125. package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
  126. package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
  127. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
  128. package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  129. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
  130. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  131. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  132. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
  133. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  134. package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  135. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
  136. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
  137. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
  138. package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
  139. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
  140. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  141. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
  142. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  143. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  144. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
  145. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
  146. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  147. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
  148. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
  149. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  150. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
  151. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  152. package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
  153. package/dist/cjs/tests/integration/click-count.spec.js +0 -163
  154. package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
  155. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  156. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
  157. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  158. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
  159. package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
  160. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
  161. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  162. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
  163. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  164. package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
  165. package/dist/cjs/tests/integration/cookies.spec.js +0 -187
  166. package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
  167. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
  168. package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
  169. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
  170. package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
  171. package/dist/cjs/tests/integration/downloads.spec.js +0 -52
  172. package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
  173. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
  174. package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
  175. package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
  176. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  177. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
  178. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  179. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  180. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
  181. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  182. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  183. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
  184. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  185. package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
  186. package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
  187. package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
  188. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
  189. package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
  190. package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
  191. package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
  192. package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
  193. package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
  194. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  195. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
  196. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  197. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
  198. package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
  199. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
  200. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  201. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
  202. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
  203. package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
  204. package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
  205. package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
  206. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
  207. package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
  208. package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
  209. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
  210. package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
  211. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
  212. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
  213. package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
  214. package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
  215. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
  216. package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
  217. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
  218. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
  219. package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
  220. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
  221. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  222. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
  223. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
  224. package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
  225. package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
  226. package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
  227. package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  228. package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
  229. package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
  230. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
  231. package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
  232. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
  233. package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
  234. package/dist/cjs/tests/integration/page-console.spec.js +0 -47
  235. package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
  236. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  237. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
  238. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  239. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  240. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
  241. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  242. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
  243. package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
  244. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
  245. package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
  246. package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
  247. package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
  248. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
  249. package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
  250. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
  251. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
  252. package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
  253. package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
  254. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
  255. package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
  256. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
  257. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  258. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
  259. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
  260. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
  261. package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
  262. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
  263. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  264. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
  265. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  266. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  267. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
  268. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  269. package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
  270. package/dist/cjs/tests/integration/testUtils.js +0 -188
  271. package/dist/cjs/tests/integration/testUtils.js.map +0 -1
  272. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  273. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
  274. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
  275. package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
  276. package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
  277. package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
  278. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
  279. package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
  280. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
  281. package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
  282. package/dist/cjs/tests/integration/v3.config.js +0 -11
  283. package/dist/cjs/tests/integration/v3.config.js.map +0 -1
  284. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
  285. package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
  286. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
  287. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
  288. package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
  289. package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
  290. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
  291. package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
  292. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
  293. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  294. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
  295. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
  296. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  297. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
  298. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  299. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  300. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
  301. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  302. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
  303. package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
  304. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
  305. package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
  306. package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
  307. package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
  308. package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
  309. package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
  310. package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
  311. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  312. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
  313. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  314. package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
  315. package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
  316. package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
  317. package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
  318. package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
  319. package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
  320. package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
  321. package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
  322. package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
  323. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  324. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
  325. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  326. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  327. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -133
  328. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
  329. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
  330. package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
  331. package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
  332. package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  333. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
  334. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  335. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
  336. package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -62
  337. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
  338. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  339. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
  340. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  341. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  342. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
  343. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
  344. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
  345. package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
  346. package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
  347. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
  348. package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
  349. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
  350. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  351. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
  352. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
  353. package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
  354. package/dist/cjs/tests/unit/cookies.test.js +0 -944
  355. package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
  356. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  357. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
  358. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  359. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  360. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
  361. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  362. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  363. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
  364. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  365. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  366. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
  367. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  368. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  369. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
  370. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
  371. package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
  372. package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
  373. package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
  374. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
  375. package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
  376. package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
  377. package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
  378. package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
  379. package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
  380. package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  381. package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
  382. package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
  383. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
  384. package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
  385. package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
  386. package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
  387. package/dist/cjs/tests/unit/model-utils.test.js +0 -42
  388. package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
  389. package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  390. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
  391. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  392. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
  393. package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
  394. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
  395. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  396. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
  397. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
  398. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
  399. package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
  400. package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
  401. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  402. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
  403. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
  404. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
  405. package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
  406. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
  407. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  408. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
  409. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  410. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  411. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
  412. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
  413. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
  414. package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
  415. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
  416. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  417. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
  418. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  419. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  420. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
  421. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
  422. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  423. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
  424. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  425. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  426. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
  427. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  428. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
  429. package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
  430. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
  431. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
  432. package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
  433. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
  434. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  435. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
  436. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  437. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  438. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -306
  439. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  440. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  441. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
  442. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  443. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
  444. package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
  445. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
  446. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  447. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
  448. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  449. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  450. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
  451. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  452. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  453. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
  454. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  455. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  456. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
  457. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  458. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  459. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -84
  460. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  461. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  462. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
  463. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  464. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
  465. package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -897
  466. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
  467. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
  468. package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
  469. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
  470. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
  471. package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
  472. package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
  473. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
  474. package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
  475. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
  476. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  477. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
  478. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
  479. package/dist/esm/tests/cache-variables.test.d.ts +0 -1
  480. package/dist/esm/tests/cache-variables.test.js +0 -219
  481. package/dist/esm/tests/cache-variables.test.js.map +0 -1
  482. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  483. package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
  484. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
  485. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  486. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
  487. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  488. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
  489. package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
  490. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
  491. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  492. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
  493. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  494. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  495. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
  496. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  497. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  498. package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
  499. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
  500. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
  501. package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
  502. package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
  503. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  504. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
  505. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  506. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  507. package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
  508. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
  509. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  510. package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
  511. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
  512. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  513. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
  514. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  515. package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
  516. package/dist/esm/tests/integration/click-count.spec.js +0 -161
  517. package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
  518. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  519. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
  520. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  521. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
  522. package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
  523. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
  524. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  525. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
  526. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  527. package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
  528. package/dist/esm/tests/integration/cookies.spec.js +0 -185
  529. package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
  530. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
  531. package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
  532. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
  533. package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
  534. package/dist/esm/tests/integration/downloads.spec.js +0 -47
  535. package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
  536. package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
  537. package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
  538. package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
  539. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  540. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
  541. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  542. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  543. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
  544. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  545. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  546. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
  547. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  548. package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
  549. package/dist/esm/tests/integration/keep-alive.child.js +0 -83
  550. package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
  551. package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
  552. package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
  553. package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
  554. package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
  555. package/dist/esm/tests/integration/keyboard.spec.js +0 -257
  556. package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
  557. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  558. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
  559. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  560. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
  561. package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
  562. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
  563. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  564. package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
  565. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
  566. package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
  567. package/dist/esm/tests/integration/locator-count.spec.js +0 -66
  568. package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
  569. package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
  570. package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
  571. package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
  572. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
  573. package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
  574. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
  575. package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
  576. package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
  577. package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
  578. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
  579. package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
  580. package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
  581. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
  582. package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
  583. package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
  584. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  585. package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
  586. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
  587. package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
  588. package/dist/esm/tests/integration/nested-div.spec.js +0 -20
  589. package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
  590. package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  591. package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
  592. package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
  593. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
  594. package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
  595. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
  596. package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
  597. package/dist/esm/tests/integration/page-console.spec.js +0 -45
  598. package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
  599. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  600. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
  601. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  602. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  603. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
  604. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  605. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
  606. package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
  607. package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
  608. package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
  609. package/dist/esm/tests/integration/page-hover.spec.js +0 -163
  610. package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
  611. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
  612. package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
  613. package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
  614. package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
  615. package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
  616. package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
  617. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
  618. package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
  619. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
  620. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  621. package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
  622. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
  623. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
  624. package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
  625. package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
  626. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  627. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
  628. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  629. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  630. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
  631. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  632. package/dist/esm/tests/integration/testUtils.d.ts +0 -40
  633. package/dist/esm/tests/integration/testUtils.js +0 -178
  634. package/dist/esm/tests/integration/testUtils.js.map +0 -1
  635. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  636. package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
  637. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
  638. package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
  639. package/dist/esm/tests/integration/timeouts.spec.js +0 -307
  640. package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
  641. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
  642. package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
  643. package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
  644. package/dist/esm/tests/integration/v3.config.d.ts +0 -4
  645. package/dist/esm/tests/integration/v3.config.js +0 -7
  646. package/dist/esm/tests/integration/v3.config.js.map +0 -1
  647. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
  648. package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
  649. package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
  650. package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
  651. package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
  652. package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
  653. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
  654. package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
  655. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
  656. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  657. package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
  658. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
  659. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  660. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
  661. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  662. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  663. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
  664. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  665. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
  666. package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
  667. package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
  668. package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
  669. package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
  670. package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
  671. package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
  672. package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
  673. package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
  674. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  675. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
  676. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  677. package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
  678. package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
  679. package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
  680. package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
  681. package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
  682. package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
  683. package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
  684. package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
  685. package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
  686. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  687. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
  688. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  689. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  690. package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -131
  691. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
  692. package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
  693. package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
  694. package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
  695. package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  696. package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
  697. package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  698. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
  699. package/dist/esm/tests/unit/api-variables-schema.test.js +0 -60
  700. package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
  701. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  702. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
  703. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  704. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  705. package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
  706. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
  707. package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
  708. package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
  709. package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
  710. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
  711. package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
  712. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
  713. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  714. package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
  715. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
  716. package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
  717. package/dist/esm/tests/unit/cookies.test.js +0 -909
  718. package/dist/esm/tests/unit/cookies.test.js.map +0 -1
  719. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  720. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
  721. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  722. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  723. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
  724. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  725. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  726. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
  727. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  728. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  729. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
  730. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  731. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  732. package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
  733. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
  734. package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
  735. package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
  736. package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
  737. package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
  738. package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
  739. package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
  740. package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
  741. package/dist/esm/tests/unit/llm-provider.test.js +0 -62
  742. package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
  743. package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  744. package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
  745. package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
  746. package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
  747. package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
  748. package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
  749. package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
  750. package/dist/esm/tests/unit/model-utils.test.js +0 -40
  751. package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
  752. package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  753. package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
  754. package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  755. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
  756. package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
  757. package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
  758. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  759. package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
  760. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
  761. package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
  762. package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
  763. package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
  764. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  765. package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
  766. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
  767. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
  768. package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
  769. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
  770. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  771. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
  772. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  773. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  774. package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
  775. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
  776. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
  777. package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
  778. package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
  779. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  780. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
  781. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  782. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  783. package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
  784. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
  785. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  786. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
  787. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  788. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  789. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
  790. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  791. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
  792. package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
  793. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
  794. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
  795. package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
  796. package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
  797. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  798. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
  799. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  800. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  801. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -304
  802. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  803. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  804. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
  805. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  806. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
  807. package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
  808. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
  809. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  810. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
  811. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  812. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  813. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
  814. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  815. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  816. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
  817. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  818. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  819. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
  820. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  821. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  822. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -82
  823. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  824. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  825. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
  826. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  827. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
  828. package/dist/esm/tests/unit/timeout-handlers.test.js +0 -862
  829. package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
  830. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
  831. package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
  832. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
  833. package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
  834. package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
  835. package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
  836. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
  837. package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
  838. package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
  839. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  840. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
  841. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@browserbasehq/orca",
3
- "version": "3.4.0-preview.0",
3
+ "version": "3.5.0-vertex-test",
4
4
  "description": "An AI web browsing framework focused on simplicity and extensibility.",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -47,7 +47,9 @@
47
47
  },
48
48
  "files": [
49
49
  "dist/esm",
50
- "dist/cjs"
50
+ "dist/cjs",
51
+ "!dist/esm/tests",
52
+ "!dist/cjs/tests"
51
53
  ],
52
54
  "keywords": [
53
55
  "ai",
@@ -59,23 +61,35 @@
59
61
  "author": "Browserbase",
60
62
  "license": "MIT",
61
63
  "peerDependencies": {
62
- "deepmerge": "^4.3.1",
64
+ "patchright-core": "^1.55.2",
65
+ "playwright-core": "^1.55.1",
66
+ "puppeteer-core": "^24.43.0",
63
67
  "zod": "^3.25.76 || ^4.2.0"
64
68
  },
69
+ "peerDependenciesMeta": {
70
+ "patchright-core": {
71
+ "optional": true
72
+ },
73
+ "playwright-core": {
74
+ "optional": true
75
+ },
76
+ "puppeteer-core": {
77
+ "optional": true
78
+ }
79
+ },
65
80
  "dependencies": {
66
81
  "@ai-sdk/provider": "^2.0.0",
67
82
  "@anthropic-ai/sdk": "0.39.0",
68
83
  "@browserbasehq/sdk": "^2.10.0",
69
84
  "@google/genai": "^1.22.0",
70
- "@langchain/openai": "^0.4.4",
71
- "@modelcontextprotocol/sdk": "^1.17.2",
85
+ "@modelcontextprotocol/sdk": "^1.29.0",
72
86
  "ai": "^5.0.133",
73
87
  "devtools-protocol": "^0.0.1464554",
74
88
  "fetch-cookie": "^3.1.0",
75
- "openai": "^4.87.1",
89
+ "openai": "^4.104.0",
76
90
  "pino": "^9.6.0",
77
91
  "pino-pretty": "^13.0.0",
78
- "uuid": "^11.1.0",
92
+ "uuid": "^11.1.1",
79
93
  "ws": "^8.18.0",
80
94
  "zod-to-json-schema": "^3.25.0"
81
95
  },
@@ -93,17 +107,12 @@
93
107
  "@ai-sdk/perplexity": "^2.0.13",
94
108
  "@ai-sdk/togetherai": "^1.0.23",
95
109
  "@ai-sdk/xai": "^2.0.26",
96
- "@langchain/core": "^0.3.80",
97
110
  "bufferutil": "^4.0.9",
98
111
  "chrome-launcher": "^1.2.0",
99
- "ollama-ai-provider-v2": "^1.5.0",
100
- "patchright-core": "^1.55.2",
101
- "playwright": "^1.52.0",
102
- "playwright-core": "^1.54.1",
103
- "puppeteer-core": "^22.8.0"
112
+ "ollama-ai-provider-v2": "^1.5.0"
104
113
  },
105
114
  "devDependencies": {
106
- "@playwright/test": "^1.42.1",
115
+ "@playwright/test": "^1.55.1",
107
116
  "@types/adm-zip": "^0.5.7",
108
117
  "@types/jsdom": "^27.0.0",
109
118
  "@types/node": "^20.11.30",
@@ -112,12 +121,15 @@
112
121
  "adm-zip": "^0.5.16",
113
122
  "chalk": "^5.4.1",
114
123
  "eslint": "10.0.2",
115
- "jsdom": "^24.0.0",
116
- "playwright": "^1.52.0",
117
- "playwright-core": "^1.54.1",
124
+ "jsdom": "^29.1.1",
125
+ "patchright-core": "^1.55.2",
126
+ "playwright": "^1.55.1",
127
+ "playwright-core": "^1.55.1",
118
128
  "prettier": "^3.2.5",
129
+ "puppeteer-core": "^24.43.0",
119
130
  "tsx": "*",
120
- "vitest": "^4.0.8",
131
+ "vite": "^7.3.3",
132
+ "vitest": "^4.1.6",
121
133
  "zod": "^3.25.76 || ^4.2.0"
122
134
  },
123
135
  "repository": {
@@ -1 +0,0 @@
1
- export {};
@@ -1,221 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const ActCache_1 = require("../lib/v3/cache/ActCache");
5
- function createFakeStorage(entry) {
6
- return {
7
- enabled: true,
8
- readJson: vitest_1.vi.fn().mockResolvedValue({ value: entry }),
9
- writeJson: vitest_1.vi.fn().mockResolvedValue({}),
10
- directory: "/tmp/cache",
11
- };
12
- }
13
- (0, vitest_1.describe)("ActCache variable handling", () => {
14
- (0, vitest_1.it)("cache key includes variable keys but not values", async () => {
15
- const storage = {
16
- enabled: true,
17
- readJson: vitest_1.vi.fn(),
18
- writeJson: vitest_1.vi.fn().mockResolvedValue({}),
19
- directory: "/tmp/cache",
20
- };
21
- const cache = new ActCache_1.ActCache({
22
- storage,
23
- logger: vitest_1.vi.fn(),
24
- getActHandler: () => null,
25
- getDefaultLlmClient: () => ({}),
26
- domSettleTimeoutMs: undefined,
27
- });
28
- const fakePage = {
29
- url: vitest_1.vi.fn().mockResolvedValue("https://example.com"),
30
- };
31
- // First context with username="user1@example.com"
32
- const context1 = await cache.prepareContext("type %username% into the email field", fakePage, { username: "user1@example.com" });
33
- // Second context with username="user2@example.com"
34
- const context2 = await cache.prepareContext("type %username% into the email field", fakePage, { username: "user2@example.com" });
35
- // Third context with different variable key name
36
- const context3 = await cache.prepareContext("type %email% into the email field", fakePage, { email: "user3@example.com" });
37
- // Same instruction + same variable keys = same cache key
38
- (0, vitest_1.expect)(context1?.cacheKey).toBe(context2?.cacheKey);
39
- // Different variable keys = different cache key
40
- (0, vitest_1.expect)(context1?.cacheKey).not.toBe(context3?.cacheKey);
41
- // Verify variable keys are sorted and stored
42
- (0, vitest_1.expect)(context1?.variableKeys).toEqual(["username"]);
43
- (0, vitest_1.expect)(context2?.variableKeys).toEqual(["username"]);
44
- (0, vitest_1.expect)(context3?.variableKeys).toEqual(["email"]);
45
- // Verify variable values are preserved in context
46
- (0, vitest_1.expect)(context1?.variables).toEqual({ username: "user1@example.com" });
47
- (0, vitest_1.expect)(context2?.variables).toEqual({ username: "user2@example.com" });
48
- });
49
- (0, vitest_1.it)("replays cached actions with variable substitution", async () => {
50
- // Cached action contains variable placeholder %username%
51
- const action = {
52
- selector: "xpath=/html/body/input[@type='email']",
53
- description: "type username into email field",
54
- method: "type",
55
- arguments: ["%username%"], // Variable placeholder
56
- };
57
- const entry = {
58
- version: 1,
59
- instruction: "type %username% into the email field",
60
- url: "https://example.com",
61
- variableKeys: ["username"],
62
- actions: [action],
63
- actionDescription: "type username",
64
- message: "done",
65
- };
66
- const storage = createFakeStorage(entry);
67
- // Track what variables are passed to takeDeterministicAction
68
- const capturedVariables = [];
69
- const handler = {
70
- takeDeterministicAction: vitest_1.vi
71
- .fn()
72
- .mockImplementation(async (_action, _page, _timeout, _client, _ensure, variables) => {
73
- capturedVariables.push(variables || {});
74
- return {
75
- success: true,
76
- message: "ok",
77
- actionDescription: "type username",
78
- actions: [action],
79
- };
80
- }),
81
- };
82
- const defaultClient = {};
83
- const cache = new ActCache_1.ActCache({
84
- storage,
85
- logger: vitest_1.vi.fn(),
86
- getActHandler: () => handler,
87
- getDefaultLlmClient: () => defaultClient,
88
- domSettleTimeoutMs: undefined,
89
- });
90
- // First replay with username="user1@example.com"
91
- const context1 = {
92
- instruction: "type %username% into the email field",
93
- cacheKey: "test-key",
94
- pageUrl: "https://example.com",
95
- variableKeys: ["username"],
96
- variables: { username: "user1@example.com" },
97
- };
98
- const result1 = await cache.tryReplay(context1, {});
99
- (0, vitest_1.expect)(result1?.success).toBe(true);
100
- (0, vitest_1.expect)(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);
101
- (0, vitest_1.expect)(capturedVariables[0]).toEqual({ username: "user1@example.com" });
102
- // Reset
103
- vitest_1.vi.clearAllMocks();
104
- capturedVariables.length = 0;
105
- // Second replay with username="user2@example.com"
106
- const context2 = {
107
- instruction: "type %username% into the email field",
108
- cacheKey: "test-key", // Same cache key!
109
- pageUrl: "https://example.com",
110
- variableKeys: ["username"],
111
- variables: { username: "user2@example.com" },
112
- };
113
- const result2 = await cache.tryReplay(context2, {});
114
- (0, vitest_1.expect)(result2?.success).toBe(true);
115
- (0, vitest_1.expect)(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);
116
- (0, vitest_1.expect)(capturedVariables[0]).toEqual({ username: "user2@example.com" });
117
- });
118
- (0, vitest_1.it)("cache miss when variable keys don't match", async () => {
119
- const action = {
120
- selector: "xpath=/html/body/input",
121
- description: "type username",
122
- method: "type",
123
- arguments: ["%username%"],
124
- };
125
- // Cached entry expects "username" variable
126
- const entry = {
127
- version: 1,
128
- instruction: "type %username% into the field",
129
- url: "https://example.com",
130
- variableKeys: ["username"],
131
- actions: [action],
132
- };
133
- const storage = createFakeStorage(entry);
134
- const cache = new ActCache_1.ActCache({
135
- storage,
136
- logger: vitest_1.vi.fn(),
137
- getActHandler: () => null,
138
- getDefaultLlmClient: () => ({}),
139
- domSettleTimeoutMs: undefined,
140
- });
141
- // Context has different variable key "email"
142
- const context = {
143
- instruction: "type %email% into the field",
144
- cacheKey: "test-key",
145
- pageUrl: "https://example.com",
146
- variableKeys: ["email"],
147
- variables: { email: "test@example.com" },
148
- };
149
- const result = await cache.tryReplay(context, {});
150
- // Should return null (cache miss) due to variable key mismatch
151
- (0, vitest_1.expect)(result).toBeNull();
152
- });
153
- (0, vitest_1.it)("cache miss when required variables are missing", async () => {
154
- const action = {
155
- selector: "xpath=/html/body/input",
156
- description: "type username",
157
- method: "type",
158
- arguments: ["%username%"],
159
- };
160
- const entry = {
161
- version: 1,
162
- instruction: "type %username% into the field",
163
- url: "https://example.com",
164
- variableKeys: ["username"],
165
- actions: [action],
166
- };
167
- const storage = createFakeStorage(entry);
168
- const logger = vitest_1.vi.fn();
169
- const cache = new ActCache_1.ActCache({
170
- storage,
171
- logger,
172
- getActHandler: () => null,
173
- getDefaultLlmClient: () => ({}),
174
- domSettleTimeoutMs: undefined,
175
- });
176
- // Context missing the username variable value
177
- const context = {
178
- instruction: "type %username% into the field",
179
- cacheKey: "test-key",
180
- pageUrl: "https://example.com",
181
- variableKeys: ["username"],
182
- variables: {}, // Missing username value!
183
- };
184
- const result = await cache.tryReplay(context, {});
185
- // Should return null (cache miss)
186
- (0, vitest_1.expect)(result).toBeNull();
187
- // Should log the miss reason
188
- (0, vitest_1.expect)(logger).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
189
- category: "cache",
190
- message: "act cache miss: missing variables for replay",
191
- level: 2,
192
- }));
193
- });
194
- (0, vitest_1.it)("handles multiple variables correctly", async () => {
195
- const storage = {
196
- enabled: true,
197
- readJson: vitest_1.vi.fn(),
198
- writeJson: vitest_1.vi.fn().mockResolvedValue({}),
199
- directory: "/tmp/cache",
200
- };
201
- const cache = new ActCache_1.ActCache({
202
- storage,
203
- logger: vitest_1.vi.fn(),
204
- getActHandler: () => null,
205
- getDefaultLlmClient: () => ({}),
206
- domSettleTimeoutMs: undefined,
207
- });
208
- const fakePage = {
209
- url: vitest_1.vi.fn().mockResolvedValue("https://example.com"),
210
- };
211
- // Context with multiple variables
212
- const context1 = await cache.prepareContext("fill %username% and %password%", fakePage, { username: "user1", password: "pass1" });
213
- const context2 = await cache.prepareContext("fill %username% and %password%", fakePage, { username: "user2", password: "pass2" });
214
- // Same cache key despite different values
215
- (0, vitest_1.expect)(context1?.cacheKey).toBe(context2?.cacheKey);
216
- // Variable keys should be sorted
217
- (0, vitest_1.expect)(context1?.variableKeys).toEqual(["password", "username"]);
218
- (0, vitest_1.expect)(context2?.variableKeys).toEqual(["password", "username"]);
219
- });
220
- });
221
- //# sourceMappingURL=cache-variables.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-variables.test.js","sourceRoot":"","sources":["../../../tests/cache-variables.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it, vi } from \"vitest\";\nimport { ActCache } from \"../lib/v3/cache/ActCache\";\nimport type { CacheStorage } from \"../lib/v3/cache/CacheStorage\";\nimport type { ActHandler } from \"../lib/v3/handlers/actHandler\";\nimport type { LLMClient } from \"../lib/v3/llm/LLMClient\";\nimport type { Page } from \"../lib/v3/understudy/page\";\nimport type { ActCacheContext, CachedActEntry } from \"../lib/v3/types/private\";\nimport type { Action } from \"../lib/v3/types/public\";\n\nfunction createFakeStorage<T>(entry: T): CacheStorage {\n return {\n enabled: true,\n readJson: vi.fn().mockResolvedValue({ value: entry }),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n}\n\ndescribe(\"ActCache variable handling\", () => {\n it(\"cache key includes variable keys but not values\", async () => {\n const storage = {\n enabled: true,\n readJson: vi.fn(),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n const fakePage = {\n url: vi.fn().mockResolvedValue(\"https://example.com\"),\n } as unknown as Page;\n\n // First context with username=\"user1@example.com\"\n const context1 = await cache.prepareContext(\n \"type %username% into the email field\",\n fakePage,\n { username: \"user1@example.com\" },\n );\n\n // Second context with username=\"user2@example.com\"\n const context2 = await cache.prepareContext(\n \"type %username% into the email field\",\n fakePage,\n { username: \"user2@example.com\" },\n );\n\n // Third context with different variable key name\n const context3 = await cache.prepareContext(\n \"type %email% into the email field\",\n fakePage,\n { email: \"user3@example.com\" },\n );\n\n // Same instruction + same variable keys = same cache key\n expect(context1?.cacheKey).toBe(context2?.cacheKey);\n\n // Different variable keys = different cache key\n expect(context1?.cacheKey).not.toBe(context3?.cacheKey);\n\n // Verify variable keys are sorted and stored\n expect(context1?.variableKeys).toEqual([\"username\"]);\n expect(context2?.variableKeys).toEqual([\"username\"]);\n expect(context3?.variableKeys).toEqual([\"email\"]);\n\n // Verify variable values are preserved in context\n expect(context1?.variables).toEqual({ username: \"user1@example.com\" });\n expect(context2?.variables).toEqual({ username: \"user2@example.com\" });\n });\n\n it(\"replays cached actions with variable substitution\", async () => {\n // Cached action contains variable placeholder %username%\n const action: Action = {\n selector: \"xpath=/html/body/input[@type='email']\",\n description: \"type username into email field\",\n method: \"type\",\n arguments: [\"%username%\"], // Variable placeholder\n };\n\n const entry: CachedActEntry = {\n version: 1,\n instruction: \"type %username% into the email field\",\n url: \"https://example.com\",\n variableKeys: [\"username\"],\n actions: [action],\n actionDescription: \"type username\",\n message: \"done\",\n };\n\n const storage = createFakeStorage(entry);\n\n // Track what variables are passed to takeDeterministicAction\n const capturedVariables: Record<string, string>[] = [];\n const handler = {\n takeDeterministicAction: vi\n .fn()\n .mockImplementation(\n async (_action, _page, _timeout, _client, _ensure, variables) => {\n capturedVariables.push(variables || {});\n return {\n success: true,\n message: \"ok\",\n actionDescription: \"type username\",\n actions: [action],\n };\n },\n ),\n } as unknown as ActHandler;\n\n const defaultClient = {} as LLMClient;\n\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => handler,\n getDefaultLlmClient: () => defaultClient,\n domSettleTimeoutMs: undefined,\n });\n\n // First replay with username=\"user1@example.com\"\n const context1: ActCacheContext = {\n instruction: \"type %username% into the email field\",\n cacheKey: \"test-key\",\n pageUrl: \"https://example.com\",\n variableKeys: [\"username\"],\n variables: { username: \"user1@example.com\" },\n };\n\n const result1 = await cache.tryReplay(context1, {} as Page);\n\n expect(result1?.success).toBe(true);\n expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);\n expect(capturedVariables[0]).toEqual({ username: \"user1@example.com\" });\n\n // Reset\n vi.clearAllMocks();\n capturedVariables.length = 0;\n\n // Second replay with username=\"user2@example.com\"\n const context2: ActCacheContext = {\n instruction: \"type %username% into the email field\",\n cacheKey: \"test-key\", // Same cache key!\n pageUrl: \"https://example.com\",\n variableKeys: [\"username\"],\n variables: { username: \"user2@example.com\" },\n };\n\n const result2 = await cache.tryReplay(context2, {} as Page);\n\n expect(result2?.success).toBe(true);\n expect(handler.takeDeterministicAction).toHaveBeenCalledTimes(1);\n expect(capturedVariables[0]).toEqual({ username: \"user2@example.com\" });\n });\n\n it(\"cache miss when variable keys don't match\", async () => {\n const action: Action = {\n selector: \"xpath=/html/body/input\",\n description: \"type username\",\n method: \"type\",\n arguments: [\"%username%\"],\n };\n\n // Cached entry expects \"username\" variable\n const entry: CachedActEntry = {\n version: 1,\n instruction: \"type %username% into the field\",\n url: \"https://example.com\",\n variableKeys: [\"username\"],\n actions: [action],\n };\n\n const storage = createFakeStorage(entry);\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n // Context has different variable key \"email\"\n const context: ActCacheContext = {\n instruction: \"type %email% into the field\",\n cacheKey: \"test-key\",\n pageUrl: \"https://example.com\",\n variableKeys: [\"email\"],\n variables: { email: \"test@example.com\" },\n };\n\n const result = await cache.tryReplay(context, {} as Page);\n\n // Should return null (cache miss) due to variable key mismatch\n expect(result).toBeNull();\n });\n\n it(\"cache miss when required variables are missing\", async () => {\n const action: Action = {\n selector: \"xpath=/html/body/input\",\n description: \"type username\",\n method: \"type\",\n arguments: [\"%username%\"],\n };\n\n const entry: CachedActEntry = {\n version: 1,\n instruction: \"type %username% into the field\",\n url: \"https://example.com\",\n variableKeys: [\"username\"],\n actions: [action],\n };\n\n const storage = createFakeStorage(entry);\n const logger = vi.fn();\n const cache = new ActCache({\n storage,\n logger,\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n // Context missing the username variable value\n const context: ActCacheContext = {\n instruction: \"type %username% into the field\",\n cacheKey: \"test-key\",\n pageUrl: \"https://example.com\",\n variableKeys: [\"username\"],\n variables: {}, // Missing username value!\n };\n\n const result = await cache.tryReplay(context, {} as Page);\n\n // Should return null (cache miss)\n expect(result).toBeNull();\n\n // Should log the miss reason\n expect(logger).toHaveBeenCalledWith(\n expect.objectContaining({\n category: \"cache\",\n message: \"act cache miss: missing variables for replay\",\n level: 2,\n }),\n );\n });\n\n it(\"handles multiple variables correctly\", async () => {\n const storage = {\n enabled: true,\n readJson: vi.fn(),\n writeJson: vi.fn().mockResolvedValue({}),\n directory: \"/tmp/cache\",\n } as unknown as CacheStorage;\n\n const cache = new ActCache({\n storage,\n logger: vi.fn(),\n getActHandler: () => null as unknown as ActHandler,\n getDefaultLlmClient: () => ({}) as LLMClient,\n domSettleTimeoutMs: undefined,\n });\n\n const fakePage = {\n url: vi.fn().mockResolvedValue(\"https://example.com\"),\n } as unknown as Page;\n\n // Context with multiple variables\n const context1 = await cache.prepareContext(\n \"fill %username% and %password%\",\n fakePage,\n { username: \"user1\", password: \"pass1\" },\n );\n\n const context2 = await cache.prepareContext(\n \"fill %username% and %password%\",\n fakePage,\n { username: \"user2\", password: \"pass2\" },\n );\n\n // Same cache key despite different values\n expect(context1?.cacheKey).toBe(context2?.cacheKey);\n\n // Variable keys should be sorted\n expect(context1?.variableKeys).toEqual([\"password\", \"username\"]);\n expect(context2?.variableKeys).toEqual([\"password\", \"username\"]);\n });\n});\n"]}
@@ -1,123 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const test_1 = require("@playwright/test");
4
- const v3_js_1 = require("../../lib/v3/v3.js");
5
- const v3_config_js_1 = require("./v3.config.js");
6
- const sdkErrors_js_1 = require("../../lib/v3/types/public/sdkErrors.js");
7
- test_1.test.describe("Stagehand agent abort signal", () => {
8
- let v3;
9
- test_1.test.beforeEach(async () => {
10
- v3 = new v3_js_1.V3({
11
- ...v3_config_js_1.v3TestConfig,
12
- experimental: true,
13
- });
14
- await v3.init();
15
- });
16
- test_1.test.afterEach(async () => {
17
- await v3?.close?.().catch(() => { });
18
- });
19
- (0, test_1.test)("non-streaming: abort signal stops execution and throws AgentAbortError", async () => {
20
- test_1.test.setTimeout(60000);
21
- const agent = v3.agent({
22
- model: "anthropic/claude-haiku-4-5-20251001",
23
- });
24
- const page = v3.context.pages()[0];
25
- await page.goto("https://example.com");
26
- const controller = new AbortController();
27
- // Abort after 500ms - should be enough for the LLM to start but not finish
28
- setTimeout(() => controller.abort(), 500);
29
- await (0, test_1.expect)(agent.execute({
30
- instruction: "Describe every visual element on this page in extreme detail. Describe at least 100 different elements.",
31
- maxSteps: 50,
32
- signal: controller.signal,
33
- })).rejects.toThrow(sdkErrors_js_1.AgentAbortError);
34
- });
35
- (0, test_1.test)("streaming: abort signal stops stream and rejects result with AgentAbortError", async () => {
36
- test_1.test.setTimeout(60000);
37
- const agent = v3.agent({
38
- stream: true,
39
- model: "anthropic/claude-haiku-4-5-20251001",
40
- });
41
- const page = v3.context.pages()[0];
42
- await page.goto("https://example.com");
43
- const controller = new AbortController();
44
- // Abort after 500ms
45
- setTimeout(() => controller.abort(), 500);
46
- const streamResult = await agent.execute({
47
- instruction: "Describe every visual element on this page in extreme detail. Describe at least 100 different elements.",
48
- maxSteps: 50,
49
- signal: controller.signal,
50
- });
51
- // Handle both stream consumption and result promise together
52
- // The result promise will reject with AgentAbortError when aborted
53
- const consumeStream = async () => {
54
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
55
- for await (const _ of streamResult.textStream) {
56
- // Just consume chunks until stream ends
57
- }
58
- };
59
- // Both should complete - stream ends and result rejects
60
- const [, resultError] = await Promise.allSettled([
61
- consumeStream(),
62
- streamResult.result,
63
- ]);
64
- // The result should have rejected with AgentAbortError
65
- (0, test_1.expect)(resultError.status).toBe("rejected");
66
- (0, test_1.expect)(resultError.reason).toBeInstanceOf(sdkErrors_js_1.AgentAbortError);
67
- });
68
- (0, test_1.test)("non-streaming: already aborted signal throws AgentAbortError immediately", async () => {
69
- test_1.test.setTimeout(20000);
70
- const agent = v3.agent({
71
- model: "anthropic/claude-haiku-4-5-20251001",
72
- });
73
- const page = v3.context.pages()[0];
74
- await page.goto("https://example.com");
75
- // Create an already aborted controller
76
- const controller = new AbortController();
77
- controller.abort();
78
- await (0, test_1.expect)(agent.execute({
79
- instruction: "This should not run.",
80
- maxSteps: 3,
81
- signal: controller.signal,
82
- })).rejects.toThrow(sdkErrors_js_1.AgentAbortError);
83
- });
84
- (0, test_1.test)("non-streaming: execution completes normally without abort signal", async () => {
85
- test_1.test.setTimeout(60000);
86
- const agent = v3.agent({
87
- model: "anthropic/claude-haiku-4-5-20251001",
88
- });
89
- const page = v3.context.pages()[0];
90
- await page.goto("https://example.com");
91
- // No signal provided - should complete normally
92
- const result = await agent.execute({
93
- instruction: "Describe this page briefly.",
94
- maxSteps: 3,
95
- });
96
- (0, test_1.expect)(result.success).toBe(true);
97
- (0, test_1.expect)(result.completed).toBe(true);
98
- });
99
- (0, test_1.test)("streaming: execution completes normally without abort signal", async () => {
100
- test_1.test.setTimeout(60000);
101
- const agent = v3.agent({
102
- stream: true,
103
- model: "anthropic/claude-haiku-4-5-20251001",
104
- });
105
- const page = v3.context.pages()[0];
106
- await page.goto("https://example.com");
107
- // No signal provided - should complete normally
108
- const streamResult = await agent.execute({
109
- instruction: "Describe this page briefly.",
110
- maxSteps: 3,
111
- });
112
- // Consume the stream first
113
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
114
- for await (const _ of streamResult.textStream) {
115
- // Just consume
116
- }
117
- // Now get the final result
118
- const result = await streamResult.result;
119
- (0, test_1.expect)(result.success).toBe(true);
120
- (0, test_1.expect)(result.completed).toBe(true);
121
- });
122
- });
123
- //# sourceMappingURL=agent-abort-signal.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-abort-signal.spec.js","sourceRoot":"","sources":["../../../../tests/integration/agent-abort-signal.spec.ts"],"names":[],"mappings":";;AAAA,2CAAgD;AAChD,8CAAwC;AACxC,iDAA8C;AAC9C,yEAAyE;AAEzE,WAAI,CAAC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACjD,IAAI,EAAM,CAAC;IAEX,WAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QACzB,EAAE,GAAG,IAAI,UAAE,CAAC;YACV,GAAG,2BAAY;YACf,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,WAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACxF,WAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,KAAK,EAAE,qCAAqC;SAC7C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,2EAA2E;QAC3E,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,IAAA,aAAM,EACV,KAAK,CAAC,OAAO,CAAC;YACZ,WAAW,EACT,yGAAyG;YAC3G,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,8BAAe,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC9F,WAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,qCAAqC;SAC7C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,oBAAoB;QACpB,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACvC,WAAW,EACT,yGAAyG;YAC3G,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,6DAA6D;QAC7D,mEAAmE;QACnE,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;YAC/B,6DAA6D;YAC7D,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC9C,wCAAwC;YAC1C,CAAC;QACH,CAAC,CAAC;QAEF,wDAAwD;QACxD,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YAC/C,aAAa,EAAE;YACf,YAAY,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,uDAAuD;QACvD,IAAA,aAAM,EAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAE,WAAqC,CAAC,MAAM,CAAC,CAAC,cAAc,CAClE,8BAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QAC1F,WAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,KAAK,EAAE,qCAAqC;SAC7C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEvC,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,IAAA,aAAM,EACV,KAAK,CAAC,OAAO,CAAC;YACZ,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,8BAAe,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAClF,WAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,KAAK,EAAE,qCAAqC;SAC7C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEvC,gDAAgD;QAChD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACjC,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QAEH,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAA,aAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC9E,WAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,qCAAqC;SAC7C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEvC,gDAAgD;QAChD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACvC,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QAEH,2BAA2B;QAC3B,6DAA6D;QAC7D,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC9C,eAAe;QACjB,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;QAEzC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAA,aAAM,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport { AgentAbortError } from \"../../lib/v3/types/public/sdkErrors.js\";\n\ntest.describe(\"Stagehand agent abort signal\", () => {\n let v3: V3;\n\n test.beforeEach(async () => {\n v3 = new V3({\n ...v3TestConfig,\n experimental: true,\n });\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"non-streaming: abort signal stops execution and throws AgentAbortError\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const controller = new AbortController();\n\n // Abort after 500ms - should be enough for the LLM to start but not finish\n setTimeout(() => controller.abort(), 500);\n\n await expect(\n agent.execute({\n instruction:\n \"Describe every visual element on this page in extreme detail. Describe at least 100 different elements.\",\n maxSteps: 50,\n signal: controller.signal,\n }),\n ).rejects.toThrow(AgentAbortError);\n });\n\n test(\"streaming: abort signal stops stream and rejects result with AgentAbortError\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n const controller = new AbortController();\n\n // Abort after 500ms\n setTimeout(() => controller.abort(), 500);\n\n const streamResult = await agent.execute({\n instruction:\n \"Describe every visual element on this page in extreme detail. Describe at least 100 different elements.\",\n maxSteps: 50,\n signal: controller.signal,\n });\n\n // Handle both stream consumption and result promise together\n // The result promise will reject with AgentAbortError when aborted\n const consumeStream = async () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of streamResult.textStream) {\n // Just consume chunks until stream ends\n }\n };\n\n // Both should complete - stream ends and result rejects\n const [, resultError] = await Promise.allSettled([\n consumeStream(),\n streamResult.result,\n ]);\n\n // The result should have rejected with AgentAbortError\n expect(resultError.status).toBe(\"rejected\");\n expect((resultError as PromiseRejectedResult).reason).toBeInstanceOf(\n AgentAbortError,\n );\n });\n\n test(\"non-streaming: already aborted signal throws AgentAbortError immediately\", async () => {\n test.setTimeout(20000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n // Create an already aborted controller\n const controller = new AbortController();\n controller.abort();\n\n await expect(\n agent.execute({\n instruction: \"This should not run.\",\n maxSteps: 3,\n signal: controller.signal,\n }),\n ).rejects.toThrow(AgentAbortError);\n });\n\n test(\"non-streaming: execution completes normally without abort signal\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n // No signal provided - should complete normally\n const result = await agent.execute({\n instruction: \"Describe this page briefly.\",\n maxSteps: 3,\n });\n\n expect(result.success).toBe(true);\n expect(result.completed).toBe(true);\n });\n\n test(\"streaming: execution completes normally without abort signal\", async () => {\n test.setTimeout(60000);\n\n const agent = v3.agent({\n stream: true,\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n\n const page = v3.context.pages()[0];\n await page.goto(\"https://example.com\");\n\n // No signal provided - should complete normally\n const streamResult = await agent.execute({\n instruction: \"Describe this page briefly.\",\n maxSteps: 3,\n });\n\n // Consume the stream first\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for await (const _ of streamResult.textStream) {\n // Just consume\n }\n\n // Now get the final result\n const result = await streamResult.result;\n\n expect(result.success).toBe(true);\n expect(result.completed).toBe(true);\n });\n});\n"]}
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const test_1 = require("@playwright/test");
7
- const promises_1 = __importDefault(require("fs/promises"));
8
- const path_1 = __importDefault(require("path"));
9
- const v3_js_1 = require("../../lib/v3/v3.js");
10
- const v3_config_js_1 = require("./v3.config.js");
11
- test_1.test.describe("Agent cache self-heal (e2e)", () => {
12
- let v3;
13
- let cacheDir;
14
- // eslint-disable-next-line no-empty-pattern
15
- test_1.test.beforeEach(async ({}, testInfo) => {
16
- await promises_1.default.mkdir(testInfo.outputDir, { recursive: true });
17
- cacheDir = await promises_1.default.mkdtemp(path_1.default.join(testInfo.outputDir, "agent-cache-"));
18
- v3 = new v3_js_1.V3({
19
- ...v3_config_js_1.v3TestConfig,
20
- cacheDir,
21
- selfHeal: true,
22
- });
23
- await v3.init();
24
- });
25
- test_1.test.afterEach(async () => {
26
- await v3?.close?.().catch(() => { });
27
- });
28
- (0, test_1.test)("replays heal corrupted selectors", async () => {
29
- test_1.test.setTimeout(120_000);
30
- const agent = v3.agent({
31
- model: "anthropic/claude-haiku-4-5-20251001",
32
- });
33
- const page = v3.context.pages()[0];
34
- const url = "https://browserbase.github.io/stagehand-eval-sites/sites/shadow-dom/";
35
- const instruction = "click the button";
36
- await page.goto(url, { waitUntil: "networkidle" });
37
- const firstResult = await agent.execute({ instruction, maxSteps: 20 });
38
- (0, test_1.expect)(firstResult.success).toBe(true);
39
- const cachePath = await locateAgentCacheFile(cacheDir);
40
- const originalEntry = await readCacheEntry(cachePath);
41
- const originalActionStep = findFirstActionStep(originalEntry);
42
- (0, test_1.expect)(originalActionStep).toBeDefined();
43
- const originalSelector = originalActionStep?.actions?.[0]?.selector;
44
- (0, test_1.expect)(typeof originalSelector).toBe("string");
45
- // Corrupt the cached selector so the replay needs to self-heal.
46
- if (originalActionStep?.actions?.[0]) {
47
- originalActionStep.actions[0].selector = "xpath=/yeee";
48
- }
49
- await promises_1.default.writeFile(cachePath, JSON.stringify(originalEntry, null, 2), "utf8");
50
- // Second run should replay from cache, self-heal, and update the file.
51
- await page.goto(url, { waitUntil: "networkidle" });
52
- const replayResult = await agent.execute({ instruction, maxSteps: 20 });
53
- (0, test_1.expect)(replayResult.success).toBe(true);
54
- const healedEntry = await readCacheEntry(cachePath);
55
- const healedActionStep = findFirstActionStep(healedEntry);
56
- (0, test_1.expect)(healedActionStep?.actions?.[0]?.selector).toBe(originalSelector);
57
- (0, test_1.expect)(healedActionStep?.actions?.[0]?.selector).not.toBe("xpath=/yeee");
58
- (0, test_1.expect)(healedEntry.timestamp).not.toBe(originalEntry.timestamp);
59
- });
60
- });
61
- async function locateAgentCacheFile(cacheDir) {
62
- const deadline = Date.now() + 10_000;
63
- while (Date.now() < deadline) {
64
- const entries = await promises_1.default.readdir(cacheDir);
65
- const agentFiles = entries.filter((file) => file.startsWith("agent-"));
66
- if (agentFiles.length > 0) {
67
- return path_1.default.join(cacheDir, agentFiles[0]);
68
- }
69
- await new Promise((resolve) => setTimeout(resolve, 200));
70
- }
71
- throw new Error("Timed out waiting for agent cache entry to be written");
72
- }
73
- async function readCacheEntry(cachePath) {
74
- const raw = await promises_1.default.readFile(cachePath, "utf8");
75
- return JSON.parse(raw);
76
- }
77
- function findFirstActionStep(entry) {
78
- return entry.steps.find((step) => {
79
- const actions = step.actions;
80
- return Array.isArray(actions) && actions.length > 0;
81
- });
82
- }
83
- //# sourceMappingURL=agent-cache-self-heal.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-cache-self-heal.spec.js","sourceRoot":"","sources":["../../../../tests/integration/agent-cache-self-heal.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from \"@playwright/test\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport { V3 } from \"../../lib/v3/v3.js\";\nimport { v3TestConfig } from \"./v3.config.js\";\nimport type {\n AgentReplayActStep,\n AgentReplayFillFormStep,\n CachedAgentEntry,\n} from \"../../lib/v3/types/private/cache.js\";\n\ntest.describe(\"Agent cache self-heal (e2e)\", () => {\n let v3: V3;\n let cacheDir: string;\n\n // eslint-disable-next-line no-empty-pattern\n test.beforeEach(async ({}, testInfo) => {\n await fs.mkdir(testInfo.outputDir, { recursive: true });\n cacheDir = await fs.mkdtemp(path.join(testInfo.outputDir, \"agent-cache-\"));\n v3 = new V3({\n ...v3TestConfig,\n cacheDir,\n selfHeal: true,\n });\n await v3.init();\n });\n\n test.afterEach(async () => {\n await v3?.close?.().catch(() => {});\n });\n\n test(\"replays heal corrupted selectors\", async () => {\n test.setTimeout(120_000);\n\n const agent = v3.agent({\n model: \"anthropic/claude-haiku-4-5-20251001\",\n });\n const page = v3.context.pages()[0];\n const url =\n \"https://browserbase.github.io/stagehand-eval-sites/sites/shadow-dom/\";\n const instruction = \"click the button\";\n\n await page.goto(url, { waitUntil: \"networkidle\" });\n const firstResult = await agent.execute({ instruction, maxSteps: 20 });\n expect(firstResult.success).toBe(true);\n\n const cachePath = await locateAgentCacheFile(cacheDir);\n const originalEntry = await readCacheEntry(cachePath);\n const originalActionStep = findFirstActionStep(originalEntry);\n expect(originalActionStep).toBeDefined();\n const originalSelector = originalActionStep?.actions?.[0]?.selector;\n expect(typeof originalSelector).toBe(\"string\");\n\n // Corrupt the cached selector so the replay needs to self-heal.\n if (originalActionStep?.actions?.[0]) {\n originalActionStep.actions[0].selector = \"xpath=/yeee\";\n }\n await fs.writeFile(\n cachePath,\n JSON.stringify(originalEntry, null, 2),\n \"utf8\",\n );\n\n // Second run should replay from cache, self-heal, and update the file.\n await page.goto(url, { waitUntil: \"networkidle\" });\n const replayResult = await agent.execute({ instruction, maxSteps: 20 });\n expect(replayResult.success).toBe(true);\n\n const healedEntry = await readCacheEntry(cachePath);\n const healedActionStep = findFirstActionStep(healedEntry);\n expect(healedActionStep?.actions?.[0]?.selector).toBe(originalSelector);\n expect(healedActionStep?.actions?.[0]?.selector).not.toBe(\"xpath=/yeee\");\n expect(healedEntry.timestamp).not.toBe(originalEntry.timestamp);\n });\n});\n\nasync function locateAgentCacheFile(cacheDir: string): Promise<string> {\n const deadline = Date.now() + 10_000;\n while (Date.now() < deadline) {\n const entries = await fs.readdir(cacheDir);\n const agentFiles = entries.filter((file) => file.startsWith(\"agent-\"));\n if (agentFiles.length > 0) {\n return path.join(cacheDir, agentFiles[0]!);\n }\n await new Promise((resolve) => setTimeout(resolve, 200));\n }\n throw new Error(\"Timed out waiting for agent cache entry to be written\");\n}\n\nasync function readCacheEntry(cachePath: string): Promise<CachedAgentEntry> {\n const raw = await fs.readFile(cachePath, \"utf8\");\n return JSON.parse(raw) as CachedAgentEntry;\n}\n\ntype StepWithActions = AgentReplayActStep | AgentReplayFillFormStep;\n\nfunction findFirstActionStep(\n entry: CachedAgentEntry,\n): StepWithActions | undefined {\n return entry.steps.find((step) => {\n const actions = (step as StepWithActions).actions;\n return Array.isArray(actions) && actions.length > 0;\n }) as StepWithActions | undefined;\n}\n"]}
@@ -1 +0,0 @@
1
- export {};