@browserbasehq/orca 3.4.0-preview-3 → 3.4.0-preview-5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (785) hide show
  1. package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +1 -1
  2. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  3. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +10 -0
  4. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  5. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  6. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  7. package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
  8. package/dist/cjs/lib/v3/launch/local.js +47 -7
  9. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  10. package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
  11. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  12. package/dist/cjs/lib/v3/types/private/snapshot.d.ts +2 -0
  13. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -1
  14. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  15. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  16. package/dist/cjs/lib/v3/types/public/api.d.ts +283 -0
  17. package/dist/cjs/lib/v3/types/public/api.js +50 -3
  18. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  19. package/dist/cjs/lib/v3/types/public/model.d.ts +11 -7
  20. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  21. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  22. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  23. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  24. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  25. package/dist/cjs/lib/v3/v3.js +2 -47
  26. package/dist/cjs/lib/v3/v3.js.map +1 -1
  27. package/dist/cjs/lib/version.d.ts +1 -1
  28. package/dist/cjs/lib/version.js +1 -1
  29. package/dist/cjs/lib/version.js.map +1 -1
  30. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
  31. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  32. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -0
  33. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  34. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  35. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  36. package/dist/esm/lib/v3/launch/local.d.ts +2 -7
  37. package/dist/esm/lib/v3/launch/local.js +48 -8
  38. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  39. package/dist/esm/lib/v3/llm/aisdk.js +5 -0
  40. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  41. package/dist/esm/lib/v3/types/private/snapshot.d.ts +2 -0
  42. package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -1
  43. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  44. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  45. package/dist/esm/lib/v3/types/public/api.d.ts +283 -0
  46. package/dist/esm/lib/v3/types/public/api.js +48 -1
  47. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  48. package/dist/esm/lib/v3/types/public/model.d.ts +11 -7
  49. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  50. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  51. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  52. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  53. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  54. package/dist/esm/lib/v3/v3.js +2 -47
  55. package/dist/esm/lib/v3/v3.js.map +1 -1
  56. package/dist/esm/lib/version.d.ts +1 -1
  57. package/dist/esm/lib/version.js +1 -1
  58. package/dist/esm/lib/version.js.map +1 -1
  59. package/package.json +8 -8
  60. package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
  61. package/dist/cjs/tests/cache-variables.test.js +0 -221
  62. package/dist/cjs/tests/cache-variables.test.js.map +0 -1
  63. package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  64. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
  65. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
  66. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  67. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
  68. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  69. package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
  70. package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
  71. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
  72. package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  73. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
  74. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  75. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  76. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
  77. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  78. package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  79. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
  80. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
  81. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
  82. package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
  83. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
  84. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  85. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
  86. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  87. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  88. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
  89. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
  90. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  91. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
  92. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
  93. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  94. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
  95. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  96. package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
  97. package/dist/cjs/tests/integration/click-count.spec.js +0 -163
  98. package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
  99. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  100. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
  101. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  102. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
  103. package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
  104. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
  105. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  106. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
  107. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  108. package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
  109. package/dist/cjs/tests/integration/cookies.spec.js +0 -187
  110. package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
  111. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
  112. package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
  113. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
  114. package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
  115. package/dist/cjs/tests/integration/downloads.spec.js +0 -52
  116. package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
  117. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
  118. package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
  119. package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
  120. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  121. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
  122. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  123. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  124. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
  125. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  126. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  127. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
  128. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  129. package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
  130. package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
  131. package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
  132. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
  133. package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
  134. package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
  135. package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
  136. package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
  137. package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
  138. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  139. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
  140. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  141. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
  142. package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
  143. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
  144. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  145. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
  146. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
  147. package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
  148. package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
  149. package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
  150. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
  151. package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
  152. package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
  153. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
  154. package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
  155. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
  156. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
  157. package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
  158. package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
  159. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
  160. package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
  161. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
  162. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
  163. package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
  164. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
  165. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  166. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
  167. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
  168. package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
  169. package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
  170. package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
  171. package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  172. package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
  173. package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
  174. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
  175. package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
  176. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
  177. package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
  178. package/dist/cjs/tests/integration/page-console.spec.js +0 -47
  179. package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
  180. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  181. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
  182. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  183. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  184. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
  185. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  186. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
  187. package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
  188. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
  189. package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
  190. package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
  191. package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
  192. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
  193. package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
  194. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
  195. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
  196. package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
  197. package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
  198. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
  199. package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
  200. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
  201. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  202. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
  203. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
  204. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
  205. package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
  206. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
  207. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  208. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
  209. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  210. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  211. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
  212. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  213. package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
  214. package/dist/cjs/tests/integration/testUtils.js +0 -188
  215. package/dist/cjs/tests/integration/testUtils.js.map +0 -1
  216. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  217. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
  218. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
  219. package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
  220. package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
  221. package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
  222. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
  223. package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
  224. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
  225. package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
  226. package/dist/cjs/tests/integration/v3.config.js +0 -11
  227. package/dist/cjs/tests/integration/v3.config.js.map +0 -1
  228. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
  229. package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
  230. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
  231. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
  232. package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
  233. package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
  234. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
  235. package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
  236. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
  237. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  238. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
  239. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
  240. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  241. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
  242. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  243. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  244. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
  245. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  246. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
  247. package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
  248. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
  249. package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
  250. package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
  251. package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
  252. package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
  253. package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
  254. package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
  255. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  256. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
  257. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  258. package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
  259. package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
  260. package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
  261. package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
  262. package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
  263. package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
  264. package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
  265. package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
  266. package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
  267. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  268. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
  269. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  270. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  271. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -135
  272. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
  273. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
  274. package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
  275. package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
  276. package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  277. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
  278. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  279. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
  280. package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -69
  281. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
  282. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  283. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
  284. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  285. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  286. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
  287. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
  288. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
  289. package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
  290. package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
  291. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
  292. package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
  293. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
  294. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  295. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
  296. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
  297. package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
  298. package/dist/cjs/tests/unit/cookies.test.js +0 -944
  299. package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
  300. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  301. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
  302. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  303. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  304. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
  305. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  306. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  307. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
  308. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  309. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  310. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
  311. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  312. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  313. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
  314. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
  315. package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
  316. package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
  317. package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
  318. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
  319. package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
  320. package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
  321. package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
  322. package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
  323. package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
  324. package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  325. package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
  326. package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
  327. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
  328. package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
  329. package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
  330. package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
  331. package/dist/cjs/tests/unit/model-utils.test.js +0 -42
  332. package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
  333. package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  334. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
  335. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  336. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
  337. package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
  338. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
  339. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  340. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
  341. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
  342. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
  343. package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
  344. package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
  345. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  346. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
  347. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
  348. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
  349. package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
  350. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
  351. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  352. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
  353. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  354. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  355. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
  356. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
  357. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
  358. package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
  359. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
  360. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  361. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
  362. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  363. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  364. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
  365. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
  366. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  367. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
  368. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  369. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  370. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
  371. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  372. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
  373. package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
  374. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
  375. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
  376. package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
  377. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
  378. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  379. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
  380. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  381. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  382. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -306
  383. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  384. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  385. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
  386. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  387. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
  388. package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
  389. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
  390. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  391. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
  392. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  393. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  394. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
  395. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  396. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  397. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
  398. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  399. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  400. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
  401. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  402. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  403. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -84
  404. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  405. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  406. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
  407. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  408. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
  409. package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -933
  410. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
  411. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
  412. package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
  413. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
  414. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
  415. package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
  416. package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
  417. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
  418. package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
  419. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
  420. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  421. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
  422. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
  423. package/dist/esm/tests/cache-variables.test.d.ts +0 -1
  424. package/dist/esm/tests/cache-variables.test.js +0 -219
  425. package/dist/esm/tests/cache-variables.test.js.map +0 -1
  426. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  427. package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
  428. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
  429. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  430. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
  431. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  432. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
  433. package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
  434. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
  435. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  436. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
  437. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  438. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  439. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
  440. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  441. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  442. package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
  443. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
  444. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
  445. package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
  446. package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
  447. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  448. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
  449. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  450. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  451. package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
  452. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
  453. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  454. package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
  455. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
  456. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  457. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
  458. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  459. package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
  460. package/dist/esm/tests/integration/click-count.spec.js +0 -161
  461. package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
  462. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  463. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
  464. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  465. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
  466. package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
  467. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
  468. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  469. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
  470. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  471. package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
  472. package/dist/esm/tests/integration/cookies.spec.js +0 -185
  473. package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
  474. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
  475. package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
  476. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
  477. package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
  478. package/dist/esm/tests/integration/downloads.spec.js +0 -47
  479. package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
  480. package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
  481. package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
  482. package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
  483. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  484. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
  485. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  486. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  487. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
  488. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  489. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  490. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
  491. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  492. package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
  493. package/dist/esm/tests/integration/keep-alive.child.js +0 -83
  494. package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
  495. package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
  496. package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
  497. package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
  498. package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
  499. package/dist/esm/tests/integration/keyboard.spec.js +0 -257
  500. package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
  501. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  502. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
  503. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  504. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
  505. package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
  506. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
  507. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  508. package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
  509. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
  510. package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
  511. package/dist/esm/tests/integration/locator-count.spec.js +0 -66
  512. package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
  513. package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
  514. package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
  515. package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
  516. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
  517. package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
  518. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
  519. package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
  520. package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
  521. package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
  522. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
  523. package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
  524. package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
  525. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
  526. package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
  527. package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
  528. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  529. package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
  530. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
  531. package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
  532. package/dist/esm/tests/integration/nested-div.spec.js +0 -20
  533. package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
  534. package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  535. package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
  536. package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
  537. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
  538. package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
  539. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
  540. package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
  541. package/dist/esm/tests/integration/page-console.spec.js +0 -45
  542. package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
  543. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  544. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
  545. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  546. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  547. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
  548. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  549. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
  550. package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
  551. package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
  552. package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
  553. package/dist/esm/tests/integration/page-hover.spec.js +0 -163
  554. package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
  555. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
  556. package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
  557. package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
  558. package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
  559. package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
  560. package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
  561. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
  562. package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
  563. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
  564. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  565. package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
  566. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
  567. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
  568. package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
  569. package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
  570. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  571. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
  572. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  573. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  574. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
  575. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  576. package/dist/esm/tests/integration/testUtils.d.ts +0 -40
  577. package/dist/esm/tests/integration/testUtils.js +0 -178
  578. package/dist/esm/tests/integration/testUtils.js.map +0 -1
  579. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  580. package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
  581. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
  582. package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
  583. package/dist/esm/tests/integration/timeouts.spec.js +0 -307
  584. package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
  585. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
  586. package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
  587. package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
  588. package/dist/esm/tests/integration/v3.config.d.ts +0 -4
  589. package/dist/esm/tests/integration/v3.config.js +0 -7
  590. package/dist/esm/tests/integration/v3.config.js.map +0 -1
  591. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
  592. package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
  593. package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
  594. package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
  595. package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
  596. package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
  597. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
  598. package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
  599. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
  600. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  601. package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
  602. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
  603. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  604. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
  605. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  606. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  607. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
  608. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  609. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
  610. package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
  611. package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
  612. package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
  613. package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
  614. package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
  615. package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
  616. package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
  617. package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
  618. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  619. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
  620. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  621. package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
  622. package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
  623. package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
  624. package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
  625. package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
  626. package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
  627. package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
  628. package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
  629. package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
  630. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  631. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
  632. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  633. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  634. package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -133
  635. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
  636. package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
  637. package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
  638. package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
  639. package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  640. package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
  641. package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  642. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
  643. package/dist/esm/tests/unit/api-variables-schema.test.js +0 -67
  644. package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
  645. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  646. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
  647. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  648. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  649. package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
  650. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
  651. package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
  652. package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
  653. package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
  654. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
  655. package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
  656. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
  657. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  658. package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
  659. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
  660. package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
  661. package/dist/esm/tests/unit/cookies.test.js +0 -909
  662. package/dist/esm/tests/unit/cookies.test.js.map +0 -1
  663. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  664. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
  665. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  666. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  667. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
  668. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  669. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  670. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
  671. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  672. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  673. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
  674. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  675. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  676. package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
  677. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
  678. package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
  679. package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
  680. package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
  681. package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
  682. package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
  683. package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
  684. package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
  685. package/dist/esm/tests/unit/llm-provider.test.js +0 -62
  686. package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
  687. package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  688. package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
  689. package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
  690. package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
  691. package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
  692. package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
  693. package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
  694. package/dist/esm/tests/unit/model-utils.test.js +0 -40
  695. package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
  696. package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  697. package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
  698. package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  699. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
  700. package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
  701. package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
  702. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  703. package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
  704. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
  705. package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
  706. package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
  707. package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
  708. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  709. package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
  710. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
  711. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
  712. package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
  713. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
  714. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  715. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
  716. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  717. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  718. package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
  719. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
  720. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
  721. package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
  722. package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
  723. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  724. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
  725. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  726. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  727. package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
  728. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
  729. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  730. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
  731. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  732. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  733. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
  734. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  735. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
  736. package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
  737. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
  738. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
  739. package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
  740. package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
  741. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  742. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
  743. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  744. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  745. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -304
  746. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  747. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  748. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
  749. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  750. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
  751. package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
  752. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
  753. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  754. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
  755. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  756. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  757. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
  758. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  759. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  760. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
  761. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  762. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  763. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
  764. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  765. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  766. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -82
  767. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  768. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  769. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
  770. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  771. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
  772. package/dist/esm/tests/unit/timeout-handlers.test.js +0 -898
  773. package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
  774. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
  775. package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
  776. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
  777. package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
  778. package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
  779. package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
  780. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
  781. package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
  782. package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
  783. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  784. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
  785. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
@@ -2,4 +2,4 @@
2
2
  * AUTO-GENERATED — DO NOT EDIT BY HAND
3
3
  * Run `pnpm run gen-version` to refresh.
4
4
  */
5
- export declare const STAGEHAND_VERSION: "3.3.0";
5
+ export declare const STAGEHAND_VERSION: "3.4.0";
@@ -2,5 +2,5 @@
2
2
  * AUTO-GENERATED — DO NOT EDIT BY HAND
3
3
  * Run `pnpm run gen-version` to refresh.
4
4
  */
5
- export const STAGEHAND_VERSION = "3.3.0";
5
+ export const STAGEHAND_VERSION = "3.4.0";
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAgB,CAAC","sourcesContent":["/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n * Run `pnpm run gen-version` to refresh.\n */\nexport const STAGEHAND_VERSION = \"3.3.0\" as const;\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAgB,CAAC","sourcesContent":["/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n * Run `pnpm run gen-version` to refresh.\n */\nexport const STAGEHAND_VERSION = \"3.4.0\" as const;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@browserbasehq/orca",
3
- "version": "3.4.0-preview-3",
3
+ "version": "3.4.0-preview-5",
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,7 +61,6 @@
59
61
  "author": "Browserbase",
60
62
  "license": "MIT",
61
63
  "peerDependencies": {
62
- "deepmerge": "^4.3.1",
63
64
  "patchright-core": "^1.55.2",
64
65
  "playwright-core": "^1.55.1",
65
66
  "puppeteer-core": "^24.43.0",
@@ -81,15 +82,14 @@
81
82
  "@anthropic-ai/sdk": "0.39.0",
82
83
  "@browserbasehq/sdk": "^2.10.0",
83
84
  "@google/genai": "^1.22.0",
84
- "@langchain/openai": "^0.4.9",
85
- "@modelcontextprotocol/sdk": "^1.17.2",
85
+ "@modelcontextprotocol/sdk": "^1.29.0",
86
86
  "ai": "^5.0.133",
87
87
  "devtools-protocol": "^0.0.1464554",
88
88
  "fetch-cookie": "^3.1.0",
89
89
  "openai": "^4.104.0",
90
90
  "pino": "^9.6.0",
91
91
  "pino-pretty": "^13.0.0",
92
- "uuid": "^11.1.0",
92
+ "uuid": "^11.1.1",
93
93
  "ws": "^8.18.0",
94
94
  "zod-to-json-schema": "^3.25.0"
95
95
  },
@@ -107,7 +107,6 @@
107
107
  "@ai-sdk/perplexity": "^2.0.13",
108
108
  "@ai-sdk/togetherai": "^1.0.23",
109
109
  "@ai-sdk/xai": "^2.0.26",
110
- "@langchain/core": "^0.3.80",
111
110
  "bufferutil": "^4.0.9",
112
111
  "chrome-launcher": "^1.2.0",
113
112
  "ollama-ai-provider-v2": "^1.5.0"
@@ -129,7 +128,8 @@
129
128
  "prettier": "^3.2.5",
130
129
  "puppeteer-core": "^24.43.0",
131
130
  "tsx": "*",
132
- "vitest": "^4.0.8",
131
+ "vite": "^7.3.3",
132
+ "vitest": "^4.1.6",
133
133
  "zod": "^3.25.76 || ^4.2.0"
134
134
  },
135
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":"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","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 {};