@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
@@ -1 +1 @@
1
- {"version":3,"file":"v3.js","sourceRoot":"","sources":["../../../../lib/v3/v3.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LanguageModelV2Middleware } from \"@ai-sdk/provider\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport process from \"process\";\nimport { v7 as uuidv7 } from \"uuid\";\nimport { z } from \"zod\";\nimport {\n InferStagehandSchema,\n StagehandZodSchema,\n toJsonSchema,\n} from \"./zodCompat.js\";\nimport { loadApiKeyFromEnv } from \"../utils.js\";\nimport { extractModelName } from \"../modelUtils.js\";\nimport { StagehandLogger, LoggerOptions } from \"../logger.js\";\nimport { ActCache } from \"./cache/ActCache.js\";\nimport { AgentCache } from \"./cache/AgentCache.js\";\nimport { CacheStorage } from \"./cache/CacheStorage.js\";\nimport { ActHandler } from \"./handlers/actHandler.js\";\nimport { ExtractHandler } from \"./handlers/extractHandler.js\";\nimport { ObserveHandler } from \"./handlers/observeHandler.js\";\nimport { V3AgentHandler } from \"./handlers/v3AgentHandler.js\";\nimport { V3CuaAgentHandler } from \"./handlers/v3CuaAgentHandler.js\";\nimport { CAPTCHA_CUA_SYSTEM_PROMPT_NOTE } from \"./agent/utils/captchaSolver.js\";\nimport { createBrowserbaseSession } from \"./launch/browserbase.js\";\nimport { launchLocalChrome } from \"./launch/local.js\";\nimport { LLMClient } from \"./llm/LLMClient.js\";\nimport { LLMProvider } from \"./llm/LLMProvider.js\";\nimport {\n bindInstanceLogger,\n unbindInstanceLogger,\n withInstanceLogContext,\n} from \"./logger.js\";\nimport { cleanupLocalBrowser } from \"./shutdown/cleanupLocal.js\";\nimport { startShutdownSupervisor } from \"./shutdown/supervisorClient.js\";\nimport { resolveTools } from \"./mcp/utils.js\";\nimport {\n ActHandlerParams,\n ExtractHandlerParams,\n ObserveHandlerParams,\n AgentReplayStep,\n InitState,\n AgentCacheContext,\n} from \"./types/private/index.js\";\nimport type {\n ShutdownSupervisorConfig,\n ShutdownSupervisorHandle,\n} from \"./types/private/shutdown.js\";\nimport { HYBRID_CAPABLE_MODEL_PATTERNS } from \"./types/private/agent.js\";\nimport {\n AgentConfig,\n AgentExecuteCallbacks,\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentResult,\n AgentToolMode,\n AVAILABLE_CUA_MODELS,\n LogLine,\n StagehandMetrics,\n Action,\n ActOptions,\n ActResult,\n defaultExtractSchema,\n ExtractOptions,\n HistoryEntry,\n ObserveOptions,\n pageTextSchema,\n V3FunctionName,\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n LocalBrowserLaunchOptions,\n V3Options,\n AnyPage,\n PatchrightPage,\n PlaywrightPage,\n PuppeteerPage,\n CuaModelRequiredError,\n StagehandInvalidArgumentError,\n StagehandNotInitializedError,\n MissingEnvironmentVariableError,\n StagehandInitError,\n AgentStreamResult,\n} from \"./types/public/index.js\";\nimport { V3Context } from \"./understudy/context.js\";\nimport { Page } from \"./understudy/page.js\";\nimport { resolveModel } from \"../modelUtils.js\";\nimport { StagehandAPIClient } from \"./api.js\";\nimport { validateExperimentalFeatures } from \"./agent/utils/validateExperimentalFeatures.js\";\nimport { flattenVariables } from \"./agent/utils/variables.js\";\nimport { FlowLogger, type FlowLoggerContext } from \"./flowlogger/FlowLogger.js\";\nimport { EventEmitterWithWildcardSupport } from \"./flowlogger/EventEmitter.js\";\nimport { EventStore } from \"./flowlogger/EventStore.js\";\nimport { createTimeoutGuard } from \"./handlers/handlerUtils/timeoutGuard.js\";\nimport { ActTimeoutError } from \"./types/public/sdkErrors.js\";\n\nconst DEFAULT_MODEL_NAME = \"openai/gpt-4.1-mini\";\nconst DEFAULT_VIEWPORT = { width: 1288, height: 711 };\nconst DEFAULT_AGENT_TOOL_TIMEOUT_MS = 45000;\n\ntype ResolvedModelConfiguration = {\n modelName: AvailableModel;\n clientOptions?: ClientOptions;\n middleware?: LanguageModelV2Middleware;\n};\n\nexport function resolveModelConfiguration(\n model?: V3Options[\"model\"],\n): ResolvedModelConfiguration {\n if (!model) {\n return { modelName: DEFAULT_MODEL_NAME };\n }\n\n if (typeof model === \"string\") {\n return { modelName: model as AvailableModel };\n }\n\n if (model && typeof model === \"object\") {\n const { modelName, middleware, ...clientOptions } = model;\n if (!modelName) {\n throw new StagehandInvalidArgumentError(\n \"model.modelName is required when providing client options.\",\n );\n }\n return {\n modelName,\n clientOptions: clientOptions as ClientOptions,\n middleware,\n };\n }\n\n return { modelName: DEFAULT_MODEL_NAME };\n}\n\n/**\n * V3\n *\n * Purpose:\n * A high-level orchestrator for Stagehand V3. Abstracts away whether the browser\n * runs **locally via Chrome** or remotely on **Browserbase**, and exposes simple\n * entrypoints (`act`, `extract`, `observe`) that delegate to the corresponding\n * handler classes.\n *\n * Responsibilities:\n * - Bootstraps Chrome or Browserbase, ensures a working CDP WebSocket, and builds a `V3Context`.\n * - Manages lifecycle: init, context access, cleanup.\n * - Bridges external page objects (Playwright/Puppeteer) into internal frameIds for handlers.\n * - Provides a stable API surface for downstream code regardless of runtime environment.\n */\nexport class V3 {\n private readonly opts: V3Options;\n private state: InitState = { kind: \"UNINITIALIZED\" };\n private actHandler: ActHandler | null = null;\n private extractHandler: ExtractHandler | null = null;\n private observeHandler: ObserveHandler | null = null;\n private ctx: V3Context | null = null;\n public llmClient!: LLMClient;\n\n /**\n * Event bus for internal communication.\n * Emits events like 'screenshot' when screenshots are captured during agent execution.\n */\n public readonly bus: EventEmitterWithWildcardSupport =\n new EventEmitterWithWildcardSupport();\n private modelName: AvailableModel;\n private modelClientOptions: ClientOptions;\n private llmProvider: LLMProvider;\n private overrideLlmClients: Map<string, LLMClient> = new Map();\n private readonly domSettleTimeoutMs?: number;\n private _isClosing = false;\n public browserbaseSessionId?: string;\n private browserbaseSessionUrl?: string;\n private browserbaseDebugUrl?: string;\n public get browserbaseSessionID(): string | undefined {\n return this.browserbaseSessionId;\n }\n public get browserbaseSessionURL(): string | undefined {\n return this.browserbaseSessionUrl;\n }\n public get browserbaseDebugURL(): string | undefined {\n return this.browserbaseDebugUrl;\n }\n /**\n * Returns true if the browser is running on Browserbase.\n */\n public get isBrowserbase(): boolean {\n return this.state.kind === \"BROWSERBASE\";\n }\n\n /**\n * Returns true if captcha auto-solving is enabled on Browserbase.\n * Defaults to true when not explicitly set to false.\n */\n public get isCaptchaAutoSolveEnabled(): boolean {\n return (\n this.isBrowserbase &&\n this.opts.browserbaseSessionCreateParams?.browserSettings\n ?.solveCaptchas !== false\n );\n }\n\n /**\n * Returns true if Browserbase Verified mode is enabled in settings.\n * Legacy `advancedStealth` is treated as equivalent for backwards compatibility.\n */\n public get isVerified(): boolean {\n const browserSettings =\n this.opts.browserbaseSessionCreateParams?.browserSettings;\n return (\n browserSettings?.verified === true ||\n browserSettings?.advancedStealth === true\n );\n }\n\n /**\n * Backwards-compatible alias for Browserbase managed fingerprinting mode.\n * @deprecated Use `isVerified` instead. This alias will be removed in a future version.\n */\n public get isAdvancedStealth(): boolean {\n return this.isVerified;\n }\n\n /**\n * Returns the configured viewport dimensions from launch options.\n * Falls back to default 1288x711 if not configured.\n */\n public get configuredViewport(): { width: number; height: number } {\n const defaultWidth = 1288;\n const defaultHeight = 711;\n\n if (this.opts.env === \"BROWSERBASE\") {\n const vp =\n this.opts.browserbaseSessionCreateParams?.browserSettings?.viewport;\n return {\n width: vp?.width ?? defaultWidth,\n height: vp?.height ?? defaultHeight,\n };\n }\n\n // LOCAL env\n const vp = this.opts.localBrowserLaunchOptions?.viewport;\n return {\n width: vp?.width ?? defaultWidth,\n height: vp?.height ?? defaultHeight,\n };\n }\n\n private _onCdpClosed = (why: string) => {\n if (this.state.kind === \"BROWSERBASE\") {\n void this._logBrowserbaseSessionStatus();\n }\n\n // Single place to react to the transport closing\n this._immediateShutdown(`CDP transport closed: ${why}`).catch(() => {});\n };\n public readonly experimental: boolean = false;\n public readonly logInferenceToFile: boolean = false;\n public readonly disableAPI: boolean = false;\n private externalLogger?: (logLine: LogLine) => void;\n public verbose: 0 | 1 | 2 = 1;\n private stagehandLogger: StagehandLogger;\n private _history: Array<HistoryEntry> = [];\n private readonly instanceId: string;\n private readonly sessionId: string;\n public readonly eventStore: EventStore;\n public readonly flowLoggerContext: FlowLoggerContext;\n private static _processGuardsInstalled = false;\n private static _instances: Set<V3> = new Set();\n private cacheStorage: CacheStorage;\n private actCache: ActCache;\n private agentCache: AgentCache;\n private apiClient: StagehandAPIClient | null = null;\n private keepAlive?: boolean;\n private shutdownSupervisor: ShutdownSupervisorHandle | null = null;\n\n public stagehandMetrics: StagehandMetrics = {\n actPromptTokens: 0,\n actCompletionTokens: 0,\n actReasoningTokens: 0,\n actCachedInputTokens: 0,\n actInferenceTimeMs: 0,\n extractPromptTokens: 0,\n extractCompletionTokens: 0,\n extractReasoningTokens: 0,\n extractCachedInputTokens: 0,\n extractInferenceTimeMs: 0,\n observePromptTokens: 0,\n observeCompletionTokens: 0,\n observeReasoningTokens: 0,\n observeCachedInputTokens: 0,\n observeInferenceTimeMs: 0,\n agentPromptTokens: 0,\n agentCompletionTokens: 0,\n agentReasoningTokens: 0,\n agentCachedInputTokens: 0,\n agentInferenceTimeMs: 0,\n totalPromptTokens: 0,\n totalCompletionTokens: 0,\n totalReasoningTokens: 0,\n totalCachedInputTokens: 0,\n totalInferenceTimeMs: 0,\n };\n\n constructor(opts: V3Options) {\n this.externalLogger = opts.logger;\n this.verbose = opts.verbose ?? 1;\n this.instanceId = uuidv7();\n this.sessionId = opts.sessionId ?? this.instanceId;\n this.keepAlive =\n opts.keepAlive ?? opts.browserbaseSessionCreateParams?.keepAlive;\n\n // Create per-instance StagehandLogger (handles usePino, verbose, externalLogger)\n // This gives each V3 instance independent logger configuration\n // while still sharing the underlying Pino worker thread via StagehandLogger.sharedPinoLogger\n const loggerOptions: LoggerOptions = {\n pretty: true,\n level: \"info\", // Most permissive - filtering happens at instance level\n };\n\n if (opts.disablePino !== undefined) {\n loggerOptions.usePino = !opts.disablePino;\n }\n\n this.stagehandLogger = new StagehandLogger(loggerOptions, opts.logger);\n this.stagehandLogger.setVerbosity(this.verbose);\n\n // Also bind to AsyncLocalStorage for v3Logger() calls from handlers\n // This maintains backward compatibility with code that uses v3Logger() directly\n try {\n if (this.externalLogger) {\n // Use external logger directly when provided\n bindInstanceLogger(this.instanceId, this.externalLogger);\n } else {\n // Fall back to stagehandLogger when no external logger\n bindInstanceLogger(this.instanceId, (line) => {\n this.stagehandLogger.log(line);\n });\n }\n } catch {\n // ignore\n }\n const { modelName, clientOptions, middleware } = resolveModelConfiguration(\n opts.model,\n );\n this.modelName = modelName;\n this.experimental = opts.experimental ?? false;\n this.logInferenceToFile = opts.logInferenceToFile ?? false;\n this.llmProvider = new LLMProvider(this.logger, middleware);\n this.domSettleTimeoutMs = opts.domSettleTimeout;\n this.disableAPI = opts.disableAPI ?? false;\n\n const baseClientOptions: ClientOptions = clientOptions\n ? ({ ...clientOptions } as ClientOptions)\n : ({} as ClientOptions);\n if (opts.llmClient) {\n this.llmClient = opts.llmClient;\n this.modelClientOptions = baseClientOptions;\n this.disableAPI = true;\n } else {\n // Ensure API key is set\n let apiKey = (baseClientOptions as { apiKey?: string }).apiKey;\n if (!apiKey) {\n try {\n apiKey = loadApiKeyFromEnv(\n this.modelName.split(\"/\")[0], // \"openai\", \"anthropic\", etc\n this.logger,\n );\n } catch (error) {\n this.logger({\n category: \"init\",\n message: `Error loading API key for model ${this.modelName}: ${error}. Continuing without LLM client.`,\n level: 0,\n });\n throw error;\n }\n }\n this.modelClientOptions = {\n ...baseClientOptions,\n apiKey,\n } as ClientOptions;\n\n // Get the default client for this model\n this.llmClient = this.llmProvider.getClient(\n this.modelName,\n this.modelClientOptions,\n { experimental: this.experimental, disableAPI: this.disableAPI },\n );\n }\n\n this.cacheStorage = CacheStorage.create(opts.cacheDir, this.logger, {\n label: \"cache directory\",\n });\n this.actCache = new ActCache({\n storage: this.cacheStorage,\n logger: this.logger,\n getActHandler: () => this.actHandler,\n getDefaultLlmClient: () => this.resolveLlmClient(),\n domSettleTimeoutMs: this.domSettleTimeoutMs,\n });\n this.agentCache = new AgentCache({\n storage: this.cacheStorage,\n logger: this.logger,\n getActHandler: () => this.actHandler,\n getContext: () => this.ctx,\n getDefaultLlmClient: () => this.resolveLlmClient(),\n getBaseModelName: () => this.modelName,\n getSystemPrompt: () => opts.systemPrompt,\n domSettleTimeoutMs: this.domSettleTimeoutMs,\n act: this.act.bind(this),\n });\n\n this.opts = opts;\n\n // FlowLogger always gets a per-instance session context and shared event\n // bus. The attached EventStore decides which sinks are active:\n // `BROWSERBASE_FLOW_LOGS=1` enables pretty stderr output,\n // and `BROWSERBASE_CONFIG_DIR` enables the pretty/jsonl file sinks for this session.\n this.eventStore = new EventStore(this.sessionId, opts);\n this.flowLoggerContext = FlowLogger.init(this.sessionId, this.bus);\n // Flow event pipeline:\n // FlowLogger -> this.bus -> this.eventStore -> configured sinks/query history.\n // V3 owns the bus for this session. EventStore is not another bus; it just\n // receives already-emitted FlowEvents here, then fans them out to sinks and\n // keeps the queryable per-session history used by /v4/log, parent/ancestor lookups, and tests.\n // `on()` stores a strong reference to the handler, so the EventStore\n // stays alive until this bus is garbage-collected with the rest of the V3\n // object graph.\n this.bus.on(\"*\", this.eventStore.emit);\n\n // Track instance for global process guard handling\n V3._instances.add(this);\n }\n /**\n * Async property for metrics so callers can `await v3.metrics`.\n * When using API mode, fetches metrics from the API. Otherwise returns local metrics.\n */\n public get metrics(): Promise<StagehandMetrics> {\n if (this.apiClient) {\n // Fetch metrics from the API\n return this.apiClient\n .getReplayMetrics()\n .then((metrics) => this.mergeAgentMetricsWithLocalFallback(metrics))\n .catch((error) => {\n this.logger({\n category: \"metrics\",\n message: `Failed to fetch metrics from API: ${error}`,\n level: 0,\n });\n // Fall back to local metrics on error\n return this.stagehandMetrics;\n });\n }\n // Return local metrics wrapped in a Promise for consistency\n return Promise.resolve(this.stagehandMetrics);\n }\n\n private mergeAgentMetricsWithLocalFallback(\n remoteMetrics: StagehandMetrics,\n ): StagehandMetrics {\n // In API mode, agent.execute() is the only path that returns trusted inline\n // usage today, so only repair the agent bucket from local state.\n const agentPromptTokens = Math.max(\n remoteMetrics.agentPromptTokens,\n this.stagehandMetrics.agentPromptTokens,\n );\n const agentCompletionTokens = Math.max(\n remoteMetrics.agentCompletionTokens,\n this.stagehandMetrics.agentCompletionTokens,\n );\n const agentReasoningTokens = Math.max(\n remoteMetrics.agentReasoningTokens,\n this.stagehandMetrics.agentReasoningTokens,\n );\n const agentCachedInputTokens = Math.max(\n remoteMetrics.agentCachedInputTokens,\n this.stagehandMetrics.agentCachedInputTokens,\n );\n const agentInferenceTimeMs = Math.max(\n remoteMetrics.agentInferenceTimeMs,\n this.stagehandMetrics.agentInferenceTimeMs,\n );\n\n const metrics: StagehandMetrics = {\n ...remoteMetrics,\n agentPromptTokens,\n agentCompletionTokens,\n agentReasoningTokens,\n agentCachedInputTokens,\n agentInferenceTimeMs,\n totalPromptTokens: 0,\n totalCompletionTokens: 0,\n totalReasoningTokens: 0,\n totalCachedInputTokens: 0,\n totalInferenceTimeMs: 0,\n };\n\n metrics.totalPromptTokens =\n metrics.actPromptTokens +\n metrics.extractPromptTokens +\n metrics.observePromptTokens +\n metrics.agentPromptTokens;\n metrics.totalCompletionTokens =\n metrics.actCompletionTokens +\n metrics.extractCompletionTokens +\n metrics.observeCompletionTokens +\n metrics.agentCompletionTokens;\n metrics.totalReasoningTokens =\n metrics.actReasoningTokens +\n metrics.extractReasoningTokens +\n metrics.observeReasoningTokens +\n metrics.agentReasoningTokens;\n metrics.totalCachedInputTokens =\n metrics.actCachedInputTokens +\n metrics.extractCachedInputTokens +\n metrics.observeCachedInputTokens +\n metrics.agentCachedInputTokens;\n metrics.totalInferenceTimeMs =\n metrics.actInferenceTimeMs +\n metrics.extractInferenceTimeMs +\n metrics.observeInferenceTimeMs +\n metrics.agentInferenceTimeMs;\n\n return metrics;\n }\n\n private updateAgentMetricsFromUsage(usage?: AgentResult[\"usage\"]): void {\n if (!usage) {\n return;\n }\n\n this.updateMetrics(\n V3FunctionName.AGENT,\n usage.input_tokens,\n usage.output_tokens,\n usage.reasoning_tokens ?? 0,\n usage.cached_input_tokens ?? 0,\n usage.inference_time_ms,\n );\n }\n\n private resolveLlmClient(model?: ModelConfiguration): LLMClient {\n if (!model) {\n return this.llmClient;\n }\n\n let modelName: AvailableModel | string;\n let clientOptions: ClientOptions | undefined;\n let perCallMiddleware: LanguageModelV2Middleware | undefined;\n\n if (typeof model === \"string\") {\n modelName = model;\n } else {\n const { modelName: overrideModelName, middleware, ...rest } = model;\n modelName = overrideModelName;\n clientOptions = rest as ClientOptions;\n perCallMiddleware = middleware;\n }\n\n if (\n modelName === this.modelName &&\n !perCallMiddleware &&\n (!clientOptions || Object.keys(clientOptions).length === 0)\n ) {\n return this.llmClient;\n }\n\n const overrideProvider = String(modelName).split(\"/\")[0];\n const baseProvider = String(this.modelName).split(\"/\")[0];\n\n const mergedOptions = {\n ...(overrideProvider === baseProvider ? this.modelClientOptions : {}),\n ...(clientOptions ?? {}),\n } as ClientOptions;\n\n const providerKey = overrideProvider;\n if (!(mergedOptions as { apiKey?: string }).apiKey) {\n const apiKey = loadApiKeyFromEnv(providerKey, this.logger);\n if (apiKey) {\n (mergedOptions as { apiKey?: string }).apiKey = apiKey;\n }\n }\n\n if (perCallMiddleware) {\n return this.llmProvider.getClient(\n modelName as AvailableModel,\n mergedOptions,\n {\n experimental: this.experimental,\n disableAPI: this.disableAPI,\n middleware: perCallMiddleware,\n },\n );\n }\n\n const cacheKey = JSON.stringify({\n modelName,\n clientOptions: mergedOptions,\n });\n\n const cached = this.overrideLlmClients.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n const client = this.llmProvider.getClient(\n modelName as AvailableModel,\n mergedOptions,\n {\n experimental: this.experimental,\n disableAPI: this.disableAPI,\n },\n );\n\n this.overrideLlmClients.set(cacheKey, client);\n return client;\n }\n\n private resolveDefaultAgentMode(\n model?: string | { modelName: string; [key: string]: unknown },\n ): AgentToolMode {\n const modelName = extractModelName(model) ?? this.modelName;\n const matchedPattern = HYBRID_CAPABLE_MODEL_PATTERNS.find((pattern) =>\n modelName.includes(pattern),\n );\n return matchedPattern ? \"hybrid\" : \"dom\";\n }\n\n private beginAgentReplayRecording(): void {\n this.agentCache.beginRecording();\n }\n\n private endAgentReplayRecording(): AgentReplayStep[] {\n return this.agentCache.endRecording();\n }\n\n private discardAgentReplayRecording(): void {\n this.agentCache.discardRecording();\n }\n\n private isAgentReplayRecording(): boolean {\n return this.agentCache.isRecording();\n }\n\n public isAgentReplayActive(): boolean {\n return this.agentCache.isReplayActive();\n }\n\n public recordAgentReplayStep(step: AgentReplayStep): void {\n this.agentCache.recordStep(step);\n }\n\n /**\n * Async property for history so callers can `await v3.history`.\n * Returns a frozen copy to avoid external mutation.\n */\n public get history(): Promise<ReadonlyArray<HistoryEntry>> {\n return Promise.resolve(Object.freeze([...this._history]));\n }\n\n public addToHistory(\n method: HistoryEntry[\"method\"],\n parameters: unknown,\n result?: unknown,\n ): void {\n this._history.push({\n method,\n parameters,\n result: result ?? null,\n timestamp: new Date().toISOString(),\n });\n }\n\n public updateMetrics(\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ): void {\n switch (functionName) {\n case V3FunctionName.ACT:\n this.stagehandMetrics.actPromptTokens += promptTokens;\n this.stagehandMetrics.actCompletionTokens += completionTokens;\n this.stagehandMetrics.actReasoningTokens += reasoningTokens;\n this.stagehandMetrics.actCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.actInferenceTimeMs += inferenceTimeMs;\n break;\n\n case V3FunctionName.EXTRACT:\n this.stagehandMetrics.extractPromptTokens += promptTokens;\n this.stagehandMetrics.extractCompletionTokens += completionTokens;\n this.stagehandMetrics.extractReasoningTokens += reasoningTokens;\n this.stagehandMetrics.extractCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.extractInferenceTimeMs += inferenceTimeMs;\n break;\n\n case V3FunctionName.OBSERVE:\n this.stagehandMetrics.observePromptTokens += promptTokens;\n this.stagehandMetrics.observeCompletionTokens += completionTokens;\n this.stagehandMetrics.observeReasoningTokens += reasoningTokens;\n this.stagehandMetrics.observeCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.observeInferenceTimeMs += inferenceTimeMs;\n break;\n\n case V3FunctionName.AGENT:\n this.stagehandMetrics.agentPromptTokens += promptTokens;\n this.stagehandMetrics.agentCompletionTokens += completionTokens;\n this.stagehandMetrics.agentReasoningTokens += reasoningTokens;\n this.stagehandMetrics.agentCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.agentInferenceTimeMs += inferenceTimeMs;\n break;\n }\n this.updateTotalMetrics(\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n );\n }\n\n private updateTotalMetrics(\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ): void {\n this.stagehandMetrics.totalPromptTokens += promptTokens;\n this.stagehandMetrics.totalCompletionTokens += completionTokens;\n this.stagehandMetrics.totalReasoningTokens += reasoningTokens;\n this.stagehandMetrics.totalCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.totalInferenceTimeMs += inferenceTimeMs;\n }\n\n private async _immediateShutdown(reason: string): Promise<void> {\n try {\n this.logger({\n category: \"v3\",\n message: `initiating shutdown → ${reason}`,\n level: 0,\n });\n } catch {\n //\n }\n\n try {\n this.logger({\n category: \"v3\",\n message: `closing resources → ${reason}`,\n level: 0,\n });\n await this.close({ force: true });\n } catch {\n // swallow — already shutting down\n }\n }\n\n /** Spawn a crash-only supervisor that cleans up when this process dies. */\n private startShutdownSupervisor(\n config: ShutdownSupervisorConfig,\n ): ShutdownSupervisorHandle | null {\n if (this.shutdownSupervisor) return this.shutdownSupervisor;\n this.shutdownSupervisor = startShutdownSupervisor(config, {\n onError: (error, context) => {\n try {\n this.logger({\n category: \"v3\",\n message:\n \"Shutdown supervisor unavailable; crash cleanup disabled. \" +\n \"If this process exits unexpectedly, local Chrome or Browserbase \" +\n \"sessions may remain running even with keepAlive=false.\",\n level: 0,\n auxiliary: {\n context: { value: context, type: \"string\" },\n error: { value: error.message, type: \"string\" },\n },\n });\n } catch {\n // ignore logging failures\n }\n },\n });\n return this.shutdownSupervisor;\n }\n\n /** Stop the supervisor during a normal shutdown. */\n private stopShutdownSupervisor(): void {\n if (!this.shutdownSupervisor) return;\n try {\n this.shutdownSupervisor.stop();\n } catch {\n // best-effort\n }\n this.shutdownSupervisor = null;\n }\n\n /**\n * Entrypoint: initializes handlers, launches Chrome or Browserbase,\n * and sets up a CDP context.\n */\n async init(): Promise<void> {\n try {\n return await withInstanceLogContext(this.instanceId, async () => {\n this.actHandler = new ActHandler(\n this.llmClient,\n this.modelName,\n this.modelClientOptions,\n (model) => this.resolveLlmClient(model),\n this.opts.systemPrompt ?? \"\",\n this.logInferenceToFile,\n this.opts.selfHeal ?? true,\n (\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ) =>\n this.updateMetrics(\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ),\n this.domSettleTimeoutMs,\n );\n this.extractHandler = new ExtractHandler(\n this.llmClient,\n this.modelName,\n this.modelClientOptions,\n (model) => this.resolveLlmClient(model),\n this.opts.systemPrompt ?? \"\",\n this.logInferenceToFile,\n this.experimental,\n (\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ) =>\n this.updateMetrics(\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ),\n );\n this.observeHandler = new ObserveHandler(\n this.llmClient,\n this.modelName,\n this.modelClientOptions,\n (model) => this.resolveLlmClient(model),\n this.opts.systemPrompt ?? \"\",\n this.logInferenceToFile,\n this.experimental,\n (\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ) =>\n this.updateMetrics(\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ),\n );\n if (this.opts.env === \"LOCAL\") {\n // chrome-launcher conditionally adds --headless when the environment variable\n // HEADLESS is set, without parsing its value.\n // if it is not equal to true, then we delete it from the process\n const envHeadless = process.env.HEADLESS;\n if (envHeadless !== undefined) {\n const normalized = envHeadless.trim().toLowerCase();\n if (normalized !== \"true\") {\n delete process.env.HEADLESS;\n }\n }\n const lbo: LocalBrowserLaunchOptions =\n this.opts.localBrowserLaunchOptions ?? {};\n\n if (lbo.cdpHeaders && !lbo.cdpUrl) {\n this.logger({\n category: \"init\",\n message:\n \"`cdpHeaders` was provided but `cdpUrl` is not set — cdpHeaders will be ignored. Set `cdpUrl` to connect to an existing browser via CDP.\",\n level: 2,\n });\n }\n\n // If a CDP URL is provided, attach instead of launching.\n if (lbo.cdpUrl) {\n this.logger({\n category: \"init\",\n message: \"Connecting to local browser\",\n level: 1,\n });\n this.ctx = await V3Context.create(lbo.cdpUrl, {\n env: \"LOCAL\",\n cdpHeaders: lbo.cdpHeaders,\n });\n this.ctx.conn.flowLoggerContext = this.flowLoggerContext;\n this.ctx.conn.onTransportClosed(this._onCdpClosed);\n this.state = {\n kind: \"LOCAL\",\n // no LaunchedChrome when attaching externally; create a stub kill\n chrome: {\n kill: async () => {},\n } as unknown as import(\"chrome-launcher\").LaunchedChrome,\n ws: lbo.cdpUrl,\n };\n this.resetBrowserbaseSessionMetadata();\n // Post-connect settings (downloads and viewport) if provided\n await this._applyPostConnectLocalOptions(lbo);\n return;\n }\n this.logger({\n category: \"init\",\n message: \"Launching local browser\",\n level: 1,\n });\n\n // Determine or create user data dir\n let userDataDir = lbo.userDataDir;\n let createdTemp = false;\n if (!userDataDir) {\n const base = path.join(os.tmpdir(), \"stagehand-v3\");\n fs.mkdirSync(base, { recursive: true });\n userDataDir = fs.mkdtempSync(path.join(base, \"profile-\"));\n createdTemp = true;\n }\n\n // Build chrome flags\n const defaults = [\n \"--remote-allow-origins=*\",\n \"--no-first-run\",\n \"--no-default-browser-check\",\n \"--disable-dev-shm-usage\",\n \"--site-per-process\",\n ];\n let chromeFlags: string[];\n const ignore = lbo.ignoreDefaultArgs;\n if (ignore === true) {\n // drop defaults\n chromeFlags = [];\n } else if (Array.isArray(ignore)) {\n chromeFlags = defaults.filter(\n (f) => !ignore.some((ex) => f.includes(ex)),\n );\n } else {\n chromeFlags = [...defaults];\n }\n\n // headless handled by launchLocalChrome\n if (lbo.devtools) chromeFlags.push(\"--auto-open-devtools-for-tabs\");\n if (lbo.locale) chromeFlags.push(`--lang=${lbo.locale}`);\n if (!lbo.viewport) {\n lbo.viewport = DEFAULT_VIEWPORT;\n }\n if (lbo.viewport?.width && lbo.viewport?.height) {\n chromeFlags.push(\n `--window-size=${lbo.viewport.width},${lbo.viewport.height + 87}`, // Added pixels to the window to account for the address bar\n );\n }\n if (typeof lbo.deviceScaleFactor === \"number\") {\n chromeFlags.push(\n `--force-device-scale-factor=${Math.max(0.1, lbo.deviceScaleFactor)}`,\n );\n }\n if (lbo.hasTouch) chromeFlags.push(\"--touch-events=enabled\");\n if (lbo.ignoreHTTPSErrors)\n chromeFlags.push(\"--ignore-certificate-errors\");\n if (lbo.proxy?.server)\n chromeFlags.push(`--proxy-server=${lbo.proxy.server}`);\n if (lbo.proxy?.bypass)\n chromeFlags.push(`--proxy-bypass-list=${lbo.proxy.bypass}`);\n\n // add user-supplied args last\n if (Array.isArray(lbo.args)) chromeFlags.push(...lbo.args);\n\n const keepAlive = this.keepAlive === true;\n const { ws, chrome } = await launchLocalChrome({\n chromePath: lbo.executablePath,\n chromeFlags,\n port: lbo.port,\n headless: lbo.headless,\n userDataDir,\n connectTimeoutMs: lbo.connectTimeoutMs,\n handleSIGINT: !keepAlive,\n });\n if (keepAlive) {\n try {\n chrome.process?.unref?.();\n } catch {\n // best-effort: avoid keeping the event loop alive\n }\n }\n this.ctx = await V3Context.create(ws, {\n env: \"LOCAL\",\n localBrowserLaunchOptions: lbo,\n });\n this.ctx.conn.flowLoggerContext = this.flowLoggerContext;\n this.ctx.conn.onTransportClosed(this._onCdpClosed);\n this.state = {\n kind: \"LOCAL\",\n chrome,\n ws,\n userDataDir,\n createdTempProfile: createdTemp,\n preserveUserDataDir: !!lbo.preserveUserDataDir,\n };\n this.resetBrowserbaseSessionMetadata();\n const chromePid = chrome.process?.pid ?? chrome.pid;\n if (!keepAlive && chromePid) {\n this.startShutdownSupervisor({\n kind: \"LOCAL\",\n pid: chromePid,\n userDataDir,\n createdTempProfile: createdTemp,\n preserveUserDataDir: !!lbo.preserveUserDataDir,\n });\n }\n\n // Post-connect settings (downloads and viewport) if provided\n await this._applyPostConnectLocalOptions(lbo);\n return;\n }\n\n if (this.opts.env === \"BROWSERBASE\") {\n const { apiKey, projectId } = this.requireBrowserbaseCreds();\n this.logger({\n category: \"init\",\n message: \"Starting browserbase session\",\n level: 1,\n });\n const baseSessionParams =\n this.opts.browserbaseSessionCreateParams ?? {};\n const resolvedKeepAlive = this.keepAlive;\n const keepAlive = this.keepAlive === true;\n let effectiveSessionParams = baseSessionParams;\n if (resolvedKeepAlive !== undefined) {\n effectiveSessionParams = {\n ...baseSessionParams,\n keepAlive: resolvedKeepAlive,\n };\n }\n if (!this.disableAPI && !this.experimental) {\n this.apiClient = new StagehandAPIClient({\n apiKey,\n projectId,\n logger: this.logger,\n serverCache: this.opts.serverCache,\n });\n const {\n projectId: overrideProjectId,\n browserSettings,\n userMetadata,\n ...restSessionParams\n } = effectiveSessionParams;\n const resolvedProjectId = overrideProjectId ?? projectId;\n const createSessionPayload = {\n ...(resolvedProjectId ? { projectId: resolvedProjectId } : {}),\n ...restSessionParams,\n browserSettings: {\n ...(browserSettings ?? {}),\n viewport: browserSettings?.viewport ?? {\n width: 1288,\n height: 711,\n },\n },\n userMetadata: {\n ...(userMetadata ?? {}),\n stagehand: \"true\",\n },\n };\n const { sessionId, available } = await this.apiClient.init({\n modelName: this.modelName,\n modelApiKey: this.modelClientOptions.apiKey,\n domSettleTimeoutMs: this.domSettleTimeoutMs,\n verbose: this.verbose,\n systemPrompt: this.opts.systemPrompt,\n selfHeal: this.opts.selfHeal,\n browserbaseSessionCreateParams: createSessionPayload,\n browserbaseSessionID: this.opts.browserbaseSessionID,\n });\n if (!available) {\n this.apiClient = null;\n }\n this.opts.browserbaseSessionID = sessionId;\n }\n const { ws, sessionId, bb } = await createBrowserbaseSession(\n apiKey,\n projectId,\n effectiveSessionParams,\n this.opts.browserbaseSessionID,\n );\n this.ctx = await V3Context.create(ws, {\n env: \"BROWSERBASE\",\n apiClient: this.apiClient,\n });\n this.ctx.conn.flowLoggerContext = this.flowLoggerContext;\n this.ctx.conn.onTransportClosed(this._onCdpClosed);\n this.state = { kind: \"BROWSERBASE\", sessionId, ws, bb };\n this.browserbaseSessionId = sessionId;\n if (!keepAlive && !this.disableAPI) {\n this.startShutdownSupervisor({\n kind: \"STAGEHAND_API\",\n sessionId,\n apiKey,\n projectId,\n });\n }\n\n await this._ensureBrowserbaseDownloadsEnabled();\n\n const resumed = !!this.opts.browserbaseSessionID;\n let debugUrl: string | undefined;\n try {\n const dbg = (await bb.sessions.debug(sessionId)) as unknown as {\n debuggerUrl?: string;\n };\n debugUrl = dbg?.debuggerUrl;\n } catch {\n // Ignore debug fetch failures; continue with sessionUrl only\n }\n const sessionUrl = `https://www.browserbase.com/sessions/${sessionId}`;\n this.browserbaseSessionUrl = sessionUrl;\n this.browserbaseDebugUrl = debugUrl;\n\n try {\n this.logger({\n category: \"init\",\n message: resumed\n ? this.apiClient\n ? \"Browserbase session started\"\n : \"Browserbase session resumed\"\n : \"Browserbase session started\",\n level: 1,\n auxiliary: {\n sessionUrl: { value: sessionUrl, type: \"string\" },\n ...(debugUrl && {\n debugUrl: { value: debugUrl, type: \"string\" },\n }),\n sessionId: { value: sessionId, type: \"string\" },\n },\n });\n } catch {\n // best-effort logging — ignore failures\n }\n return;\n }\n\n const neverEnv: never = this.opts.env;\n throw new StagehandInitError(`Unsupported env: ${neverEnv}`);\n });\n } catch (error) {\n // Cleanup instanceLoggers map on init failure to prevent memory leak\n if (this.externalLogger) {\n try {\n unbindInstanceLogger(this.instanceId);\n } catch {\n // ignore cleanup errors\n }\n }\n throw error;\n }\n }\n\n /** Apply post-connect local browser options that require CDP. */\n private async _applyPostConnectLocalOptions(\n lbo: LocalBrowserLaunchOptions,\n ): Promise<void> {\n try {\n // Downloads behavior\n if (lbo.downloadsPath || lbo.acceptDownloads !== undefined) {\n const behavior = lbo.acceptDownloads === false ? \"deny\" : \"allow\";\n await this.ctx?.conn\n .send(\"Browser.setDownloadBehavior\", {\n behavior,\n downloadPath: lbo.downloadsPath,\n eventsEnabled: true,\n })\n .catch(() => {});\n }\n } catch {\n // best-effort only\n }\n }\n\n private async _ensureBrowserbaseDownloadsEnabled(): Promise<void> {\n const conn = this.ctx?.conn;\n if (!conn) return;\n try {\n await conn.send(\"Browser.setDownloadBehavior\", {\n behavior: \"allow\",\n downloadPath: \"downloads\",\n eventsEnabled: true,\n });\n } catch {\n // best-effort only\n }\n }\n\n private resetBrowserbaseSessionMetadata(): void {\n this.browserbaseSessionId = undefined;\n this.browserbaseSessionUrl = undefined;\n this.browserbaseDebugUrl = undefined;\n }\n\n /**\n * Run an \"act\" instruction through the ActHandler.\n *\n * New API:\n * - act(instruction: string, options?: ActOptions)\n * - act(action: Action, options?: ActOptions)\n */\n async act(instruction: string, options?: ActOptions): Promise<ActResult>;\n async act(action: Action, options?: ActOptions): Promise<ActResult>;\n\n @FlowLogger.wrapWithLogging({\n eventType: \"StagehandAct\",\n })\n async act(input: string | Action, options?: ActOptions): Promise<ActResult> {\n return await withInstanceLogContext(this.instanceId, async () => {\n if (!this.actHandler) throw new StagehandNotInitializedError(\"act()\");\n\n let actResult: ActResult;\n\n if (isObserveResult(input)) {\n // Resolve page: use provided page if any, otherwise default active page\n const v3Page = await this.resolvePage(options?.page);\n\n // Use selector as provided to support XPath, CSS, and other engines\n const selector = input.selector;\n if (this.apiClient) {\n actResult = await this.apiClient.act({\n input,\n options,\n frameId: v3Page.mainFrameId(),\n });\n } else {\n const ensureTimeRemaining = createTimeoutGuard(\n options?.timeout,\n (ms) => new ActTimeoutError(ms),\n );\n actResult = await this.actHandler.takeDeterministicAction(\n { ...input, selector },\n v3Page,\n this.domSettleTimeoutMs,\n this.resolveLlmClient(options?.model),\n ensureTimeRemaining,\n options?.variables,\n );\n }\n\n // history: record ObserveResult-based act call\n this.addToHistory(\n \"act\",\n {\n observeResult: input,\n },\n actResult,\n );\n return actResult;\n }\n // instruction path\n if (typeof input !== \"string\" || !input.trim()) {\n throw new StagehandInvalidArgumentError(\n \"act(): instruction string is required unless passing an Action\",\n );\n }\n\n // Resolve page from options or default\n const page = await this.resolvePage(options?.page);\n const actCacheLlmClient = options?.model\n ? this.resolveLlmClient(options.model)\n : undefined;\n\n let actCacheContext: Awaited<\n ReturnType<typeof this.actCache.prepareContext>\n > | null = null;\n const canUseCache =\n typeof input === \"string\" &&\n !this.isAgentReplayRecording() &&\n this.actCache.enabled;\n if (canUseCache) {\n actCacheContext = await this.actCache.prepareContext(\n input,\n page,\n flattenVariables(options?.variables),\n );\n if (actCacheContext) {\n const cachedResult = await this.actCache.tryReplay(\n actCacheContext,\n page,\n options?.timeout,\n actCacheLlmClient,\n );\n if (cachedResult) {\n this.addToHistory(\n \"act\",\n {\n instruction: input,\n variables: options?.variables,\n timeout: options?.timeout,\n cacheHit: true,\n },\n cachedResult,\n );\n return cachedResult;\n }\n }\n }\n\n const handlerParams: ActHandlerParams = {\n instruction: input,\n page,\n variables: options?.variables,\n timeout: options?.timeout,\n model: options?.model,\n };\n if (this.apiClient) {\n const frameId = page.mainFrameId();\n actResult = await this.apiClient.act({ input, options, frameId });\n } else {\n actResult = await this.actHandler.act(handlerParams);\n }\n // history: record instruction-based act call (omit page object)\n this.addToHistory(\n \"act\",\n {\n instruction: input,\n variables: options?.variables,\n timeout: options?.timeout,\n },\n actResult,\n );\n\n if (\n actCacheContext &&\n actResult.success &&\n Array.isArray(actResult.actions) &&\n actResult.actions.length > 0\n ) {\n await this.actCache.store(actCacheContext, actResult);\n }\n return actResult;\n });\n }\n\n /**\n * Run an \"extract\" instruction through the ExtractHandler.\n *\n * Accepted forms:\n * - extract() → pageText\n * - extract(options) → pageText\n * - extract(instruction) → defaultExtractSchema\n * - extract(instruction, schema) → schema-inferred\n * - extract(instruction, schema, options)\n */\n\n async extract(): Promise<z.infer<typeof pageTextSchema>>;\n async extract(\n options: ExtractOptions,\n ): Promise<z.infer<typeof pageTextSchema>>;\n async extract(\n instruction: string,\n options?: ExtractOptions,\n ): Promise<z.infer<typeof defaultExtractSchema>>;\n async extract<T extends StagehandZodSchema>(\n instruction: string,\n schema: T,\n options?: ExtractOptions,\n ): Promise<InferStagehandSchema<T>>;\n\n @FlowLogger.wrapWithLogging({\n eventType: \"StagehandExtract\",\n })\n async extract(\n a?: string | ExtractOptions,\n b?: StagehandZodSchema | ExtractOptions,\n c?: ExtractOptions,\n ): Promise<unknown> {\n return await withInstanceLogContext(this.instanceId, async () => {\n if (!this.extractHandler) {\n throw new StagehandNotInitializedError(\"extract()\");\n }\n\n // Normalize args\n let instruction: string | undefined;\n let schema: StagehandZodSchema | undefined;\n let options: ExtractOptions | undefined;\n\n if (typeof a === \"string\") {\n instruction = a;\n const isZodSchema = (val: unknown): val is StagehandZodSchema =>\n !!val &&\n typeof val === \"object\" &&\n \"parse\" in val &&\n \"safeParse\" in val;\n if (isZodSchema(b)) {\n schema = b as StagehandZodSchema;\n options = c as ExtractOptions | undefined;\n } else {\n options = b as ExtractOptions | undefined;\n }\n } else {\n // a is options or undefined\n options = (a as ExtractOptions) || undefined;\n }\n\n if (!instruction && schema) {\n throw new StagehandInvalidArgumentError(\n \"extract(): schema provided without instruction\",\n );\n }\n\n // If instruction without schema → defaultExtractSchema\n const effectiveSchema =\n instruction && !schema ? defaultExtractSchema : schema;\n\n // Resolve page from options or use active page\n const page = await this.resolvePage(options?.page);\n\n const handlerParams: ExtractHandlerParams<StagehandZodSchema> = {\n instruction,\n schema: effectiveSchema as StagehandZodSchema | undefined,\n model: options?.model,\n timeout: options?.timeout,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n page,\n };\n let result: z.infer<typeof effectiveSchema> | { pageText: string };\n if (this.apiClient) {\n const frameId = page.mainFrameId();\n result = await this.apiClient.extract({\n instruction: handlerParams.instruction,\n schema: handlerParams.schema,\n options,\n frameId,\n });\n } else {\n result =\n await this.extractHandler.extract<StagehandZodSchema>(handlerParams);\n }\n const historySchemaDescriptor = effectiveSchema\n ? toJsonSchema(effectiveSchema)\n : undefined;\n this.addToHistory(\n \"extract\",\n {\n instruction,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n timeout: options?.timeout,\n schema: historySchemaDescriptor,\n },\n result,\n );\n return result;\n });\n }\n\n /**\n * Run an \"observe\" instruction through the ObserveHandler.\n */\n async observe(): Promise<Action[]>;\n async observe(options: ObserveOptions): Promise<Action[]>;\n async observe(\n instruction: string,\n options?: ObserveOptions,\n ): Promise<Action[]>;\n @FlowLogger.wrapWithLogging({\n eventType: \"StagehandObserve\",\n })\n async observe(\n a?: string | ObserveOptions,\n b?: ObserveOptions,\n ): Promise<Action[]> {\n return await withInstanceLogContext(this.instanceId, async () => {\n if (!this.observeHandler) {\n throw new StagehandNotInitializedError(\"observe()\");\n }\n\n // Normalize args\n let instruction: string | undefined;\n let options: ObserveOptions | undefined;\n if (typeof a === \"string\") {\n instruction = a;\n options = b;\n } else {\n options = a as ObserveOptions | undefined;\n }\n\n // Resolve to our internal Page type\n const page = await this.resolvePage(options?.page);\n\n const handlerParams: ObserveHandlerParams = {\n instruction,\n model: options?.model,\n variables: options?.variables,\n timeout: options?.timeout,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n page: page!,\n };\n\n let results: Action[];\n if (this.apiClient) {\n const frameId = page.mainFrameId();\n results = await this.apiClient.observe({\n instruction,\n options,\n frameId,\n });\n } else {\n results = await this.observeHandler.observe(handlerParams);\n }\n\n // history: record observe call (omit page object)\n this.addToHistory(\n \"observe\",\n {\n instruction,\n variables: options?.variables,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n timeout: options?.timeout,\n },\n results,\n );\n return results;\n });\n }\n\n /** Return the browser-level CDP WebSocket endpoint. */\n connectURL(): string {\n if (this.state.kind === \"UNINITIALIZED\") {\n throw new StagehandNotInitializedError(\"connectURL()\");\n }\n return this.state.ws;\n }\n\n /** Expose the current CDP-backed context. */\n public get context(): V3Context {\n return this.ctx;\n }\n\n /** Best-effort cleanup of context and launched resources. */\n async close(opts?: { force?: boolean }): Promise<void> {\n // If we're already closing and this isn't a forced close, no-op.\n if (this._isClosing && !opts?.force) return;\n this._isClosing = true;\n\n const keepAlive = this.keepAlive === true;\n\n // Unhook CDP transport close handler BEFORE ending the API session.\n // apiClient.end() can cause the hosted API to terminate the Browserbase\n // session, which closes the CDP WebSocket. If the handler is still\n // registered, _onCdpClosed fires and re-enters close() with force=true,\n // causing a double-close cascade.\n try {\n if (this.ctx?.conn && this._onCdpClosed) {\n this.ctx.conn.offTransportClosed?.(this._onCdpClosed);\n }\n } catch {\n // ignore\n }\n\n // End Browserbase session via API when keepAlive is not enabled\n if (!keepAlive && this.apiClient) {\n try {\n await this.apiClient.end();\n } catch {\n // best-effort cleanup\n }\n }\n\n try {\n // Close session file logger\n try {\n await FlowLogger.close(this.flowLoggerContext);\n } catch {\n // ignore\n }\n\n // Close CDP context\n try {\n await this.ctx?.close();\n } catch {\n // ignore\n }\n\n // Kill local Chrome and clean up temp profile when keepAlive is not enabled\n if (!keepAlive && this.state.kind === \"LOCAL\") {\n const localState = this.state;\n await cleanupLocalBrowser({\n killChrome: () => localState.chrome.kill(),\n userDataDir: localState.userDataDir,\n createdTempProfile: localState.createdTempProfile,\n preserveUserDataDir: localState.preserveUserDataDir,\n });\n }\n } finally {\n this.stopShutdownSupervisor();\n\n // Reset internal state\n this.state = { kind: \"UNINITIALIZED\" };\n this.ctx = null;\n this._isClosing = false;\n this.resetBrowserbaseSessionMetadata();\n try {\n unbindInstanceLogger(this.instanceId);\n } catch {\n // ignore\n }\n try {\n await this.eventStore.destroy();\n } catch {\n // ignore\n }\n try {\n this.bus.removeAllListeners();\n } catch {\n // ignore\n }\n this._history = [];\n this.actHandler = null;\n this.extractHandler = null;\n this.observeHandler = null;\n V3._instances.delete(this);\n }\n }\n\n /**\n * Resolves the Browserbase API key from options or environment variables.\n * Returns undefined if no key is found (does not throw).\n */\n public get browserbaseApiKey(): string | undefined {\n return this.opts.apiKey || process.env.BROWSERBASE_API_KEY;\n }\n\n /** Guard: ensure Browserbase credentials exist in options. */\n private requireBrowserbaseCreds(): {\n apiKey: string;\n projectId?: string;\n } {\n let { apiKey, projectId } = this.opts;\n\n // Fall back to environment variables if not explicitly provided\n if (!apiKey)\n apiKey = process.env.BROWSERBASE_API_KEY ?? process.env.BB_API_KEY;\n if (!projectId)\n projectId =\n process.env.BROWSERBASE_PROJECT_ID ?? process.env.BB_PROJECT_ID;\n\n if (!apiKey) {\n throw new MissingEnvironmentVariableError(\n \"BROWSERBASE_API_KEY\",\n \"Browserbase\",\n );\n }\n\n // Cache resolved values back into opts for consistency\n this.opts.apiKey = apiKey;\n if (projectId) this.opts.projectId = projectId;\n\n // Informational log\n this.logger({\n category: \"init\",\n message: \"Using Browserbase credentials\",\n level: 1,\n });\n\n return { apiKey, projectId };\n }\n\n public get logger(): (logLine: LogLine) => void {\n // Delegate to per-instance StagehandLogger\n // StagehandLogger handles: verbosity filtering, usePino selection, external logger routing\n // This provides per-instance configuration while maintaining shared Pino optimization\n return (logLine: LogLine) => {\n const line = { ...logLine, level: logLine.level ?? 1 };\n this.stagehandLogger.log(line);\n };\n }\n\n /**\n * Normalize a Playwright/Puppeteer page object into its top frame id,\n * so handlers can resolve it to a `Page` within our V3Context.\n */\n private async resolveTopFrameId(\n page: PlaywrightPage | PuppeteerPage | PatchrightPage,\n ): Promise<string> {\n if (this.isPlaywrightPage(page)) {\n const cdp = await page.context().newCDPSession(page);\n const { frameTree } = await cdp.send(\"Page.getFrameTree\");\n return frameTree.frame.id;\n }\n\n if (this.isPatchrightPage(page)) {\n const cdp = await page.context().newCDPSession(page);\n const { frameTree } = await cdp.send(\"Page.getFrameTree\");\n return frameTree.frame.id;\n }\n\n if (this.isPuppeteerPage(page)) {\n const cdp = await page.createCDPSession();\n const { frameTree } = await cdp.send(\"Page.getFrameTree\");\n this.logger({\n category: \"v3\",\n message: \"Puppeteer frame id\",\n level: 2,\n auxiliary: { frameId: { value: frameTree.frame.id, type: \"string\" } },\n });\n return frameTree.frame.id;\n }\n\n throw new StagehandInvalidArgumentError(\n \"Unsupported page object passed to V3.act()\",\n );\n }\n\n private isPlaywrightPage(p: unknown): p is PlaywrightPage {\n return (\n typeof p === \"object\" &&\n p !== null &&\n typeof (p as PlaywrightPage).context === \"function\"\n );\n }\n\n private isPatchrightPage(p: unknown): p is PatchrightPage {\n return (\n typeof p === \"object\" &&\n p !== null &&\n typeof (p as PatchrightPage).context === \"function\"\n );\n }\n\n private isPuppeteerPage(p: unknown): p is PuppeteerPage {\n return (\n typeof p === \"object\" &&\n p !== null &&\n typeof (p as PuppeteerPage).target === \"function\"\n );\n }\n\n /** Resolve an external page reference or fall back to the active V3 page. */\n private async resolvePage(page?: AnyPage): Promise<Page> {\n if (page) {\n return await this.normalizeToV3Page(page);\n }\n const ctx = this.ctx;\n if (!ctx) {\n throw new StagehandNotInitializedError(\"resolvePage()\");\n }\n return await ctx.awaitActivePage();\n }\n\n private async normalizeToV3Page(input: AnyPage): Promise<Page> {\n if (input instanceof (await import(\"./understudy/page.js\")).Page) {\n return input as Page;\n }\n if (this.isPlaywrightPage(input)) {\n const frameId = await this.resolveTopFrameId(input);\n const page = this.ctx!.resolvePageByMainFrameId(frameId);\n if (!page)\n throw new StagehandInitError(\n \"Failed to resolve V3 Page from Playwright page.\",\n );\n return page;\n }\n if (this.isPatchrightPage(input)) {\n const frameId = await this.resolveTopFrameId(input);\n const page = this.ctx!.resolvePageByMainFrameId(frameId);\n if (!page)\n throw new StagehandInitError(\n \"Failed to resolve V3 Page from Patchright page.\",\n );\n return page;\n }\n if (this.isPuppeteerPage(input)) {\n const frameId = await this.resolveTopFrameId(input);\n const page = this.ctx!.resolvePageByMainFrameId(frameId);\n if (!page)\n throw new StagehandInitError(\n \"Failed to resolve V3 Page from Puppeteer page.\",\n );\n return page;\n }\n throw new StagehandInvalidArgumentError(\"Unsupported page object.\");\n }\n\n private async _logBrowserbaseSessionStatus(): Promise<void> {\n if (this.state.kind !== \"BROWSERBASE\") {\n return;\n }\n\n try {\n const snapshot = (await this.state.bb.sessions.retrieve(\n this.state.sessionId,\n )) as { id?: string; status?: string };\n if (!snapshot?.status) return;\n\n const sessionId = snapshot.id ?? this.state.sessionId;\n const message =\n snapshot.status === \"TIMED_OUT\"\n ? `Browserbase session timed out (sessionId: ${sessionId})`\n : `Browserbase session status: ${snapshot.status}`;\n\n this.logger({\n category: \"v3\",\n message,\n level: 0,\n });\n } catch {\n // Ignore failures; nothing to log\n }\n }\n\n /**\n * Prepares shared context for agent execution (both execute and stream).\n * Extracts duplicated setup logic into a single helper.\n */\n private async prepareAgentExecution(\n options: AgentConfig | undefined,\n instructionOrOptions:\n | string\n | AgentExecuteOptions\n | AgentStreamExecuteOptions,\n agentConfigSignature: string,\n ): Promise<{\n handler: V3AgentHandler;\n resolvedOptions: AgentExecuteOptions | AgentStreamExecuteOptions;\n instruction: string;\n cacheContext: AgentCacheContext | null;\n llmClient: LLMClient;\n }> {\n // Note: experimental validation is done at the call site before this method\n const tools = options?.integrations\n ? await resolveTools(options.integrations, options.tools)\n : (options?.tools ?? {});\n\n const agentLlmClient = options?.model\n ? this.resolveLlmClient(options.model)\n : this.llmClient;\n\n const resolvedExecutionModel = options?.executionModel ?? options?.model;\n\n const resolvedMode =\n options?.mode ?? this.resolveDefaultAgentMode(options?.model);\n\n const handler = new V3AgentHandler(\n this,\n this.logger,\n agentLlmClient,\n resolvedExecutionModel,\n options?.systemPrompt,\n tools,\n resolvedMode,\n this.isCaptchaAutoSolveEnabled,\n );\n\n const resolvedOptions: AgentExecuteOptions | AgentStreamExecuteOptions =\n typeof instructionOrOptions === \"string\"\n ? {\n instruction: instructionOrOptions,\n toolTimeout: DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n }\n : {\n ...instructionOrOptions,\n toolTimeout:\n instructionOrOptions.toolTimeout ?? DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n };\n\n const callbacksWithSafety = resolvedOptions.callbacks as\n | AgentExecuteCallbacks\n | undefined;\n if (callbacksWithSafety?.onSafetyConfirmation) {\n throw new StagehandInvalidArgumentError(\n 'onSafetyConfirmation callback is only supported when using mode: \"cua\" agents.',\n );\n }\n\n if (resolvedOptions.page) {\n const normalizedPage = await this.normalizeToV3Page(resolvedOptions.page);\n this.ctx!.setActivePage(normalizedPage);\n }\n\n const instruction = resolvedOptions.instruction.trim();\n const sanitizedOptions =\n this.agentCache.sanitizeExecuteOptions(resolvedOptions);\n\n const cacheVariables = flattenVariables(resolvedOptions.variables);\n\n const cacheContext = this.agentCache.shouldAttemptCache(instruction)\n ? await this.agentCache.prepareContext({\n instruction,\n options: sanitizedOptions,\n configSignature: agentConfigSignature,\n page: await this.ctx!.awaitActivePage(),\n variables: cacheVariables,\n })\n : null;\n\n return {\n handler,\n resolvedOptions,\n instruction,\n cacheContext,\n llmClient: agentLlmClient,\n };\n }\n\n /**\n * Create a v3 agent instance (AISDK tool-based) with execute().\n * Mirrors the v2 Stagehand.agent() tool mode (no CUA provider here).\n *\n * @overload When stream: true, returns a streaming agent where execute() returns AgentStreamResult\n * @overload When stream is false/undefined, returns a non-streaming agent where execute() returns AgentResult\n */\n agent(options: AgentConfig & { stream: true }): {\n execute: (\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ) => Promise<AgentStreamResult>;\n };\n agent(options?: AgentConfig & { stream?: false }): {\n execute: (\n instructionOrOptions: string | AgentExecuteOptions,\n ) => Promise<AgentResult>;\n };\n agent(options?: AgentConfig): {\n execute: (\n instructionOrOptions:\n | string\n | AgentExecuteOptions\n | AgentStreamExecuteOptions,\n ) => Promise<AgentResult | AgentStreamResult>;\n } {\n const isCuaMode =\n options?.mode === \"cua\" ||\n (options?.mode === undefined && options?.cua === true);\n\n // Emit deprecation warning for cua: true\n if (options?.cua === true) {\n this.logger({\n category: \"agent\",\n message:\n '[DEPRECATED] The \"cua: true\" option is deprecated. Use \"mode: \\'cua\\'\" instead. This option will be removed in a future version.',\n level: 0,\n });\n console.warn(\n '[Stagehand] DEPRECATED: The \"cua: true\" option is deprecated. Use \"mode: \\'cua\\'\" instead.',\n );\n }\n\n const loggedMode =\n options?.mode ??\n (isCuaMode ? \"cua\" : this.resolveDefaultAgentMode(options?.model));\n\n this.logger({\n category: \"agent\",\n message: \"Creating v3 agent instance\",\n level: 1,\n auxiliary: {\n cua: { value: isCuaMode ? \"true\" : \"false\", type: \"boolean\" },\n mode: { value: loggedMode, type: \"string\" },\n model: {\n value: extractModelName(options?.model) ?? this.llmClient.modelName,\n type: \"string\",\n },\n systemPrompt: { value: options?.systemPrompt ?? \"\", type: \"string\" },\n tools: { value: JSON.stringify(options?.tools ?? {}), type: \"object\" },\n ...(options?.integrations && {\n integrations: {\n value: JSON.stringify(options.integrations),\n type: \"object\",\n },\n }),\n },\n });\n\n // If CUA mode is enabled (via mode: \"cua\" or deprecated cua: true), use the computer-use agent path\n if (isCuaMode) {\n // Validate agent config at creation time (includes CUA+streaming conflict check)\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n });\n\n const modelToUse = options?.model || {\n modelName: this.modelName,\n ...this.modelClientOptions,\n };\n\n const { modelName, isCua, clientOptions } = resolveModel(modelToUse);\n\n if (!isCua) {\n throw new CuaModelRequiredError(AVAILABLE_CUA_MODELS);\n }\n\n const agentConfigSignature =\n this.agentCache.buildConfigSignature(options);\n const execute = async (\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> =>\n withInstanceLogContext(\n this.instanceId,\n async (): Promise<AgentResult> => {\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n executeOptions:\n typeof instructionOrOptions === \"object\"\n ? instructionOrOptions\n : null,\n });\n\n const tools = options?.integrations\n ? await resolveTools(options.integrations, options.tools)\n : (options?.tools ?? {});\n\n const handler = new V3CuaAgentHandler(\n this,\n this.logger,\n {\n modelName,\n clientOptions,\n userProvidedInstructions:\n (options.systemPrompt ??\n `You are a helpful assistant that can use a web browser.\\nDo not ask follow up questions, the user will trust your judgement.`) +\n (this.isCaptchaAutoSolveEnabled\n ? CAPTCHA_CUA_SYSTEM_PROMPT_NOTE\n : \"\"),\n },\n tools,\n );\n\n const resolvedOptions: AgentExecuteOptions =\n typeof instructionOrOptions === \"string\"\n ? {\n instruction: instructionOrOptions,\n toolTimeout: DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n }\n : {\n ...instructionOrOptions,\n toolTimeout:\n instructionOrOptions.toolTimeout ??\n DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n };\n if (resolvedOptions.page) {\n const normalizedPage = await this.normalizeToV3Page(\n resolvedOptions.page,\n );\n this.ctx!.setActivePage(normalizedPage);\n }\n const instruction = resolvedOptions.instruction.trim();\n const sanitizedOptions =\n this.agentCache.sanitizeExecuteOptions(resolvedOptions);\n\n const cacheVariables = flattenVariables(resolvedOptions.variables);\n\n let cacheContext: AgentCacheContext | null = null;\n if (this.agentCache.shouldAttemptCache(instruction)) {\n const startPage = await this.ctx!.awaitActivePage();\n cacheContext = await this.agentCache.prepareContext({\n instruction,\n options: sanitizedOptions,\n configSignature: agentConfigSignature,\n page: startPage,\n variables: cacheVariables,\n });\n if (cacheContext) {\n const replayed = await this.agentCache.tryReplay(cacheContext);\n if (replayed) {\n return replayed;\n }\n }\n }\n\n let agentSteps: AgentReplayStep[] = [];\n const shouldRecordLocally =\n !!cacheContext && (!this.apiClient || this.experimental);\n if (shouldRecordLocally) {\n this.beginAgentReplayRecording();\n }\n\n let result: AgentResult;\n try {\n if (this.apiClient && !this.experimental) {\n const page = await this.ctx!.awaitActivePage();\n result = await this.apiClient.agentExecute(\n options,\n resolvedOptions,\n page.mainFrameId(),\n !!cacheContext,\n );\n this.updateAgentMetricsFromUsage(result.usage);\n if (cacheContext) {\n const transferredEntry =\n this.apiClient.consumeLatestAgentCacheEntry();\n await this.agentCache.storeTransferredEntry(transferredEntry);\n }\n } else {\n result = await handler.execute(instructionOrOptions);\n }\n if (shouldRecordLocally) {\n agentSteps = this.endAgentReplayRecording();\n }\n\n if (\n shouldRecordLocally &&\n cacheContext &&\n result.success &&\n agentSteps.length > 0\n ) {\n await this.agentCache.store(cacheContext, agentSteps, result);\n }\n\n return result;\n } catch (err) {\n if (shouldRecordLocally) this.discardAgentReplayRecording();\n throw err;\n } finally {\n if (shouldRecordLocally) {\n this.discardAgentReplayRecording();\n }\n }\n },\n );\n return {\n execute: FlowLogger.wrapWithLogging({\n eventType: \"AgentExecute\",\n context: this.flowLoggerContext,\n })(execute),\n };\n }\n\n // Default: AISDK tools-based agent\n const agentConfigSignature = this.agentCache.buildConfigSignature(options);\n const isStreaming = options?.stream ?? false;\n const execute = async (\n instructionOrOptions:\n | string\n | AgentExecuteOptions\n | AgentStreamExecuteOptions,\n ): Promise<AgentResult | AgentStreamResult> =>\n withInstanceLogContext(\n this.instanceId,\n async (): Promise<AgentResult | AgentStreamResult> => {\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n executeOptions:\n typeof instructionOrOptions === \"object\"\n ? instructionOrOptions\n : null,\n isStreaming,\n });\n\n // Streaming mode\n if (isStreaming) {\n const { handler, resolvedOptions, cacheContext, llmClient } =\n await this.prepareAgentExecution(\n options,\n instructionOrOptions,\n agentConfigSignature,\n );\n\n if (cacheContext) {\n const replayed = await this.agentCache.tryReplayAsStream(\n cacheContext,\n llmClient,\n );\n if (replayed) {\n return replayed;\n }\n }\n\n const streamResult = await handler.stream(\n resolvedOptions as AgentStreamExecuteOptions,\n );\n\n if (cacheContext) {\n const wrappedStream = this.agentCache.wrapStreamForCaching(\n cacheContext,\n streamResult,\n () => this.beginAgentReplayRecording(),\n () => this.endAgentReplayRecording(),\n () => this.discardAgentReplayRecording(),\n );\n return wrappedStream;\n }\n\n return streamResult;\n }\n\n // Non-streaming mode (default)\n const { handler, resolvedOptions, cacheContext, llmClient } =\n await this.prepareAgentExecution(\n options,\n instructionOrOptions,\n agentConfigSignature,\n );\n\n if (cacheContext) {\n const replayed = await this.agentCache.tryReplay(\n cacheContext,\n llmClient,\n );\n if (replayed) {\n return replayed;\n }\n }\n\n let agentSteps: AgentReplayStep[] = [];\n const shouldRecordLocally =\n !!cacheContext && (!this.apiClient || this.experimental);\n if (shouldRecordLocally) {\n this.beginAgentReplayRecording();\n }\n let result: AgentResult;\n\n try {\n if (this.apiClient && !this.experimental) {\n const page = await this.ctx!.awaitActivePage();\n result = await this.apiClient.agentExecute(\n options ?? {},\n resolvedOptions as AgentExecuteOptions,\n page.mainFrameId(),\n !!cacheContext,\n );\n this.updateAgentMetricsFromUsage(result.usage);\n if (cacheContext) {\n const transferredEntry =\n this.apiClient.consumeLatestAgentCacheEntry();\n await this.agentCache.storeTransferredEntry(transferredEntry);\n }\n } else {\n result = await handler.execute(\n resolvedOptions as AgentExecuteOptions,\n );\n }\n if (shouldRecordLocally) {\n agentSteps = this.endAgentReplayRecording();\n }\n\n if (\n shouldRecordLocally &&\n cacheContext &&\n result.success &&\n agentSteps.length > 0\n ) {\n await this.agentCache.store(cacheContext, agentSteps, result);\n }\n\n return result;\n } catch (err) {\n if (shouldRecordLocally) this.discardAgentReplayRecording();\n throw err;\n } finally {\n if (shouldRecordLocally) {\n this.discardAgentReplayRecording();\n }\n }\n },\n );\n return {\n execute: FlowLogger.wrapWithLogging({\n eventType: \"AgentExecute\",\n context: this.flowLoggerContext,\n })(execute),\n };\n }\n}\n\nfunction isObserveResult(v: unknown): v is Action {\n return (\n !!v && typeof v === \"object\" && \"selector\" in (v as Record<string, unknown>)\n );\n}\n"]}
1
+ {"version":3,"file":"v3.js","sourceRoot":"","sources":["../../../../lib/v3/v3.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LanguageModelV2Middleware } from \"@ai-sdk/provider\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport process from \"process\";\nimport { v7 as uuidv7 } from \"uuid\";\nimport { z } from \"zod\";\nimport {\n InferStagehandSchema,\n StagehandZodSchema,\n toJsonSchema,\n} from \"./zodCompat.js\";\nimport { loadApiKeyFromEnv } from \"../utils.js\";\nimport { extractModelName } from \"../modelUtils.js\";\nimport { StagehandLogger, LoggerOptions } from \"../logger.js\";\nimport { ActCache } from \"./cache/ActCache.js\";\nimport { AgentCache } from \"./cache/AgentCache.js\";\nimport { CacheStorage } from \"./cache/CacheStorage.js\";\nimport { ActHandler } from \"./handlers/actHandler.js\";\nimport { ExtractHandler } from \"./handlers/extractHandler.js\";\nimport { ObserveHandler } from \"./handlers/observeHandler.js\";\nimport { V3AgentHandler } from \"./handlers/v3AgentHandler.js\";\nimport { V3CuaAgentHandler } from \"./handlers/v3CuaAgentHandler.js\";\nimport { CAPTCHA_CUA_SYSTEM_PROMPT_NOTE } from \"./agent/utils/captchaSolver.js\";\nimport { createBrowserbaseSession } from \"./launch/browserbase.js\";\nimport { launchLocalChrome } from \"./launch/local.js\";\nimport { LLMClient } from \"./llm/LLMClient.js\";\nimport { LLMProvider } from \"./llm/LLMProvider.js\";\nimport {\n bindInstanceLogger,\n unbindInstanceLogger,\n withInstanceLogContext,\n} from \"./logger.js\";\nimport { cleanupLocalBrowser } from \"./shutdown/cleanupLocal.js\";\nimport { startShutdownSupervisor } from \"./shutdown/supervisorClient.js\";\nimport { resolveTools } from \"./mcp/utils.js\";\nimport {\n ActHandlerParams,\n ExtractHandlerParams,\n ObserveHandlerParams,\n AgentReplayStep,\n InitState,\n AgentCacheContext,\n} from \"./types/private/index.js\";\nimport type {\n ShutdownSupervisorConfig,\n ShutdownSupervisorHandle,\n} from \"./types/private/shutdown.js\";\nimport { HYBRID_CAPABLE_MODEL_PATTERNS } from \"./types/private/agent.js\";\nimport {\n AgentConfig,\n AgentExecuteCallbacks,\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentResult,\n AgentToolMode,\n AVAILABLE_CUA_MODELS,\n LogLine,\n StagehandMetrics,\n Action,\n ActOptions,\n ActResult,\n defaultExtractSchema,\n ExtractOptions,\n HistoryEntry,\n ObserveOptions,\n pageTextSchema,\n V3FunctionName,\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n LocalBrowserLaunchOptions,\n V3Options,\n AnyPage,\n PatchrightPage,\n PlaywrightPage,\n PuppeteerPage,\n CuaModelRequiredError,\n StagehandInvalidArgumentError,\n StagehandNotInitializedError,\n MissingEnvironmentVariableError,\n StagehandInitError,\n AgentStreamResult,\n} from \"./types/public/index.js\";\nimport { V3Context } from \"./understudy/context.js\";\nimport { Page } from \"./understudy/page.js\";\nimport { resolveModel } from \"../modelUtils.js\";\nimport { StagehandAPIClient } from \"./api.js\";\nimport { validateExperimentalFeatures } from \"./agent/utils/validateExperimentalFeatures.js\";\nimport { flattenVariables } from \"./agent/utils/variables.js\";\nimport { FlowLogger, type FlowLoggerContext } from \"./flowlogger/FlowLogger.js\";\nimport { EventEmitterWithWildcardSupport } from \"./flowlogger/EventEmitter.js\";\nimport { EventStore } from \"./flowlogger/EventStore.js\";\nimport { createTimeoutGuard } from \"./handlers/handlerUtils/timeoutGuard.js\";\nimport { ActTimeoutError } from \"./types/public/sdkErrors.js\";\n\nconst DEFAULT_MODEL_NAME = \"openai/gpt-4.1-mini\";\nconst DEFAULT_VIEWPORT = { width: 1288, height: 711 };\nconst DEFAULT_AGENT_TOOL_TIMEOUT_MS = 45000;\n\ntype ResolvedModelConfiguration = {\n modelName: AvailableModel;\n clientOptions?: ClientOptions;\n middleware?: LanguageModelV2Middleware;\n};\n\nexport function resolveModelConfiguration(\n model?: V3Options[\"model\"],\n): ResolvedModelConfiguration {\n if (!model) {\n return { modelName: DEFAULT_MODEL_NAME };\n }\n\n if (typeof model === \"string\") {\n return { modelName: model as AvailableModel };\n }\n\n if (model && typeof model === \"object\") {\n const { modelName, middleware, ...clientOptions } = model;\n if (!modelName) {\n throw new StagehandInvalidArgumentError(\n \"model.modelName is required when providing client options.\",\n );\n }\n return {\n modelName,\n clientOptions: clientOptions as ClientOptions,\n middleware,\n };\n }\n\n return { modelName: DEFAULT_MODEL_NAME };\n}\n\n/**\n * V3\n *\n * Purpose:\n * A high-level orchestrator for Stagehand V3. Abstracts away whether the browser\n * runs **locally via Chrome** or remotely on **Browserbase**, and exposes simple\n * entrypoints (`act`, `extract`, `observe`) that delegate to the corresponding\n * handler classes.\n *\n * Responsibilities:\n * - Bootstraps Chrome or Browserbase, ensures a working CDP WebSocket, and builds a `V3Context`.\n * - Manages lifecycle: init, context access, cleanup.\n * - Bridges external page objects (Playwright/Puppeteer) into internal frameIds for handlers.\n * - Provides a stable API surface for downstream code regardless of runtime environment.\n */\nexport class V3 {\n private readonly opts: V3Options;\n private state: InitState = { kind: \"UNINITIALIZED\" };\n private actHandler: ActHandler | null = null;\n private extractHandler: ExtractHandler | null = null;\n private observeHandler: ObserveHandler | null = null;\n private ctx: V3Context | null = null;\n public llmClient!: LLMClient;\n\n /**\n * Event bus for internal communication.\n * Emits events like 'screenshot' when screenshots are captured during agent execution.\n */\n public readonly bus: EventEmitterWithWildcardSupport =\n new EventEmitterWithWildcardSupport();\n private modelName: AvailableModel;\n private modelClientOptions: ClientOptions;\n private llmProvider: LLMProvider;\n private overrideLlmClients: Map<string, LLMClient> = new Map();\n private readonly domSettleTimeoutMs?: number;\n private _isClosing = false;\n public browserbaseSessionId?: string;\n private browserbaseSessionUrl?: string;\n private browserbaseDebugUrl?: string;\n public get browserbaseSessionID(): string | undefined {\n return this.browserbaseSessionId;\n }\n public get browserbaseSessionURL(): string | undefined {\n return this.browserbaseSessionUrl;\n }\n public get browserbaseDebugURL(): string | undefined {\n return this.browserbaseDebugUrl;\n }\n /**\n * Returns true if the browser is running on Browserbase.\n */\n public get isBrowserbase(): boolean {\n return this.state.kind === \"BROWSERBASE\";\n }\n\n /**\n * Returns true if captcha auto-solving is enabled on Browserbase.\n * Defaults to true when not explicitly set to false.\n */\n public get isCaptchaAutoSolveEnabled(): boolean {\n return (\n this.isBrowserbase &&\n this.opts.browserbaseSessionCreateParams?.browserSettings\n ?.solveCaptchas !== false\n );\n }\n\n /**\n * Returns true if Browserbase Verified mode is enabled in settings.\n * Legacy `advancedStealth` is treated as equivalent for backwards compatibility.\n */\n public get isVerified(): boolean {\n const browserSettings =\n this.opts.browserbaseSessionCreateParams?.browserSettings;\n return (\n browserSettings?.verified === true ||\n browserSettings?.advancedStealth === true\n );\n }\n\n /**\n * Backwards-compatible alias for Browserbase managed fingerprinting mode.\n * @deprecated Use `isVerified` instead. This alias will be removed in a future version.\n */\n public get isAdvancedStealth(): boolean {\n return this.isVerified;\n }\n\n /**\n * Returns the configured viewport dimensions from launch options.\n * Falls back to default 1288x711 if not configured.\n */\n public get configuredViewport(): { width: number; height: number } {\n const defaultWidth = 1288;\n const defaultHeight = 711;\n\n if (this.opts.env === \"BROWSERBASE\") {\n const vp =\n this.opts.browserbaseSessionCreateParams?.browserSettings?.viewport;\n return {\n width: vp?.width ?? defaultWidth,\n height: vp?.height ?? defaultHeight,\n };\n }\n\n // LOCAL env\n const vp = this.opts.localBrowserLaunchOptions?.viewport;\n return {\n width: vp?.width ?? defaultWidth,\n height: vp?.height ?? defaultHeight,\n };\n }\n\n private _onCdpClosed = (why: string) => {\n if (this.state.kind === \"BROWSERBASE\") {\n void this._logBrowserbaseSessionStatus();\n }\n\n // Single place to react to the transport closing\n this._immediateShutdown(`CDP transport closed: ${why}`).catch(() => {});\n };\n public readonly experimental: boolean = false;\n public readonly logInferenceToFile: boolean = false;\n public readonly disableAPI: boolean = false;\n private externalLogger?: (logLine: LogLine) => void;\n public verbose: 0 | 1 | 2 = 1;\n private stagehandLogger: StagehandLogger;\n private _history: Array<HistoryEntry> = [];\n private readonly instanceId: string;\n private readonly sessionId: string;\n public readonly eventStore: EventStore;\n public readonly flowLoggerContext: FlowLoggerContext;\n private static _processGuardsInstalled = false;\n private static _instances: Set<V3> = new Set();\n private cacheStorage: CacheStorage;\n private actCache: ActCache;\n private agentCache: AgentCache;\n private apiClient: StagehandAPIClient | null = null;\n private keepAlive?: boolean;\n private shutdownSupervisor: ShutdownSupervisorHandle | null = null;\n\n public stagehandMetrics: StagehandMetrics = {\n actPromptTokens: 0,\n actCompletionTokens: 0,\n actReasoningTokens: 0,\n actCachedInputTokens: 0,\n actInferenceTimeMs: 0,\n extractPromptTokens: 0,\n extractCompletionTokens: 0,\n extractReasoningTokens: 0,\n extractCachedInputTokens: 0,\n extractInferenceTimeMs: 0,\n observePromptTokens: 0,\n observeCompletionTokens: 0,\n observeReasoningTokens: 0,\n observeCachedInputTokens: 0,\n observeInferenceTimeMs: 0,\n agentPromptTokens: 0,\n agentCompletionTokens: 0,\n agentReasoningTokens: 0,\n agentCachedInputTokens: 0,\n agentInferenceTimeMs: 0,\n totalPromptTokens: 0,\n totalCompletionTokens: 0,\n totalReasoningTokens: 0,\n totalCachedInputTokens: 0,\n totalInferenceTimeMs: 0,\n };\n\n constructor(opts: V3Options) {\n this.externalLogger = opts.logger;\n this.verbose = opts.verbose ?? 1;\n this.instanceId = uuidv7();\n this.sessionId = opts.sessionId ?? this.instanceId;\n this.keepAlive =\n opts.keepAlive ?? opts.browserbaseSessionCreateParams?.keepAlive;\n\n // Create per-instance StagehandLogger (handles usePino, verbose, externalLogger)\n // This gives each V3 instance independent logger configuration\n // while still sharing the underlying Pino worker thread via StagehandLogger.sharedPinoLogger\n const loggerOptions: LoggerOptions = {\n pretty: true,\n level: \"info\", // Most permissive - filtering happens at instance level\n };\n\n if (opts.disablePino !== undefined) {\n loggerOptions.usePino = !opts.disablePino;\n }\n\n this.stagehandLogger = new StagehandLogger(loggerOptions, opts.logger);\n this.stagehandLogger.setVerbosity(this.verbose);\n\n // Also bind to AsyncLocalStorage for v3Logger() calls from handlers\n // This maintains backward compatibility with code that uses v3Logger() directly\n try {\n if (this.externalLogger) {\n // Use external logger directly when provided\n bindInstanceLogger(this.instanceId, this.externalLogger);\n } else {\n // Fall back to stagehandLogger when no external logger\n bindInstanceLogger(this.instanceId, (line) => {\n this.stagehandLogger.log(line);\n });\n }\n } catch {\n // ignore\n }\n const { modelName, clientOptions, middleware } = resolveModelConfiguration(\n opts.model,\n );\n this.modelName = modelName;\n this.experimental = opts.experimental ?? false;\n this.logInferenceToFile = opts.logInferenceToFile ?? false;\n this.llmProvider = new LLMProvider(this.logger, middleware);\n this.domSettleTimeoutMs = opts.domSettleTimeout;\n this.disableAPI = opts.disableAPI ?? false;\n\n const baseClientOptions: ClientOptions = clientOptions\n ? ({ ...clientOptions } as ClientOptions)\n : ({} as ClientOptions);\n if (opts.llmClient) {\n this.llmClient = opts.llmClient;\n this.modelClientOptions = baseClientOptions;\n this.disableAPI = true;\n } else {\n // Ensure API key is set\n let apiKey = (baseClientOptions as { apiKey?: string }).apiKey;\n if (!apiKey) {\n try {\n apiKey = loadApiKeyFromEnv(\n this.modelName.split(\"/\")[0], // \"openai\", \"anthropic\", etc\n this.logger,\n );\n } catch (error) {\n this.logger({\n category: \"init\",\n message: `Error loading API key for model ${this.modelName}: ${error}. Continuing without LLM client.`,\n level: 0,\n });\n throw error;\n }\n }\n this.modelClientOptions = {\n ...baseClientOptions,\n apiKey,\n } as ClientOptions;\n\n // Get the default client for this model\n this.llmClient = this.llmProvider.getClient(\n this.modelName,\n this.modelClientOptions,\n { experimental: this.experimental, disableAPI: this.disableAPI },\n );\n }\n\n this.cacheStorage = CacheStorage.create(opts.cacheDir, this.logger, {\n label: \"cache directory\",\n });\n this.actCache = new ActCache({\n storage: this.cacheStorage,\n logger: this.logger,\n getActHandler: () => this.actHandler,\n getDefaultLlmClient: () => this.resolveLlmClient(),\n domSettleTimeoutMs: this.domSettleTimeoutMs,\n });\n this.agentCache = new AgentCache({\n storage: this.cacheStorage,\n logger: this.logger,\n getActHandler: () => this.actHandler,\n getContext: () => this.ctx,\n getDefaultLlmClient: () => this.resolveLlmClient(),\n getBaseModelName: () => this.modelName,\n getSystemPrompt: () => opts.systemPrompt,\n domSettleTimeoutMs: this.domSettleTimeoutMs,\n act: this.act.bind(this),\n });\n\n this.opts = opts;\n\n // FlowLogger always gets a per-instance session context and shared event\n // bus. The attached EventStore decides which sinks are active:\n // `BROWSERBASE_FLOW_LOGS=1` enables pretty stderr output,\n // and `BROWSERBASE_CONFIG_DIR` enables the pretty/jsonl file sinks for this session.\n this.eventStore = new EventStore(this.sessionId, opts);\n this.flowLoggerContext = FlowLogger.init(this.sessionId, this.bus);\n // Flow event pipeline:\n // FlowLogger -> this.bus -> this.eventStore -> configured sinks/query history.\n // V3 owns the bus for this session. EventStore is not another bus; it just\n // receives already-emitted FlowEvents here, then fans them out to sinks and\n // keeps the queryable per-session history used by /v4/log, parent/ancestor lookups, and tests.\n // `on()` stores a strong reference to the handler, so the EventStore\n // stays alive until this bus is garbage-collected with the rest of the V3\n // object graph.\n this.bus.on(\"*\", this.eventStore.emit);\n\n // Track instance for global process guard handling\n V3._instances.add(this);\n }\n /**\n * Async property for metrics so callers can `await v3.metrics`.\n * When using API mode, fetches metrics from the API. Otherwise returns local metrics.\n */\n public get metrics(): Promise<StagehandMetrics> {\n if (this.apiClient) {\n // Fetch metrics from the API\n return this.apiClient\n .getReplayMetrics()\n .then((metrics) => this.mergeAgentMetricsWithLocalFallback(metrics))\n .catch((error) => {\n this.logger({\n category: \"metrics\",\n message: `Failed to fetch metrics from API: ${error}`,\n level: 0,\n });\n // Fall back to local metrics on error\n return this.stagehandMetrics;\n });\n }\n // Return local metrics wrapped in a Promise for consistency\n return Promise.resolve(this.stagehandMetrics);\n }\n\n private mergeAgentMetricsWithLocalFallback(\n remoteMetrics: StagehandMetrics,\n ): StagehandMetrics {\n // In API mode, agent.execute() is the only path that returns trusted inline\n // usage today, so only repair the agent bucket from local state.\n const agentPromptTokens = Math.max(\n remoteMetrics.agentPromptTokens,\n this.stagehandMetrics.agentPromptTokens,\n );\n const agentCompletionTokens = Math.max(\n remoteMetrics.agentCompletionTokens,\n this.stagehandMetrics.agentCompletionTokens,\n );\n const agentReasoningTokens = Math.max(\n remoteMetrics.agentReasoningTokens,\n this.stagehandMetrics.agentReasoningTokens,\n );\n const agentCachedInputTokens = Math.max(\n remoteMetrics.agentCachedInputTokens,\n this.stagehandMetrics.agentCachedInputTokens,\n );\n const agentInferenceTimeMs = Math.max(\n remoteMetrics.agentInferenceTimeMs,\n this.stagehandMetrics.agentInferenceTimeMs,\n );\n\n const metrics: StagehandMetrics = {\n ...remoteMetrics,\n agentPromptTokens,\n agentCompletionTokens,\n agentReasoningTokens,\n agentCachedInputTokens,\n agentInferenceTimeMs,\n totalPromptTokens: 0,\n totalCompletionTokens: 0,\n totalReasoningTokens: 0,\n totalCachedInputTokens: 0,\n totalInferenceTimeMs: 0,\n };\n\n metrics.totalPromptTokens =\n metrics.actPromptTokens +\n metrics.extractPromptTokens +\n metrics.observePromptTokens +\n metrics.agentPromptTokens;\n metrics.totalCompletionTokens =\n metrics.actCompletionTokens +\n metrics.extractCompletionTokens +\n metrics.observeCompletionTokens +\n metrics.agentCompletionTokens;\n metrics.totalReasoningTokens =\n metrics.actReasoningTokens +\n metrics.extractReasoningTokens +\n metrics.observeReasoningTokens +\n metrics.agentReasoningTokens;\n metrics.totalCachedInputTokens =\n metrics.actCachedInputTokens +\n metrics.extractCachedInputTokens +\n metrics.observeCachedInputTokens +\n metrics.agentCachedInputTokens;\n metrics.totalInferenceTimeMs =\n metrics.actInferenceTimeMs +\n metrics.extractInferenceTimeMs +\n metrics.observeInferenceTimeMs +\n metrics.agentInferenceTimeMs;\n\n return metrics;\n }\n\n private updateAgentMetricsFromUsage(usage?: AgentResult[\"usage\"]): void {\n if (!usage) {\n return;\n }\n\n this.updateMetrics(\n V3FunctionName.AGENT,\n usage.input_tokens,\n usage.output_tokens,\n usage.reasoning_tokens ?? 0,\n usage.cached_input_tokens ?? 0,\n usage.inference_time_ms,\n );\n }\n\n private resolveLlmClient(model?: ModelConfiguration): LLMClient {\n if (!model) {\n return this.llmClient;\n }\n\n let modelName: AvailableModel | string;\n let clientOptions: ClientOptions | undefined;\n let perCallMiddleware: LanguageModelV2Middleware | undefined;\n\n if (typeof model === \"string\") {\n modelName = model;\n } else {\n const { modelName: overrideModelName, middleware, ...rest } = model;\n modelName = overrideModelName;\n clientOptions = rest as ClientOptions;\n perCallMiddleware = middleware;\n }\n\n if (\n modelName === this.modelName &&\n !perCallMiddleware &&\n (!clientOptions || Object.keys(clientOptions).length === 0)\n ) {\n return this.llmClient;\n }\n\n const overrideProvider = String(modelName).split(\"/\")[0];\n const baseProvider = String(this.modelName).split(\"/\")[0];\n\n const mergedOptions = {\n ...(overrideProvider === baseProvider ? this.modelClientOptions : {}),\n ...(clientOptions ?? {}),\n } as ClientOptions;\n\n const providerKey = overrideProvider;\n if (!(mergedOptions as { apiKey?: string }).apiKey) {\n const apiKey = loadApiKeyFromEnv(providerKey, this.logger);\n if (apiKey) {\n (mergedOptions as { apiKey?: string }).apiKey = apiKey;\n }\n }\n\n if (perCallMiddleware) {\n return this.llmProvider.getClient(\n modelName as AvailableModel,\n mergedOptions,\n {\n experimental: this.experimental,\n disableAPI: this.disableAPI,\n middleware: perCallMiddleware,\n },\n );\n }\n\n const cacheKey = JSON.stringify({\n modelName,\n clientOptions: mergedOptions,\n });\n\n const cached = this.overrideLlmClients.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n const client = this.llmProvider.getClient(\n modelName as AvailableModel,\n mergedOptions,\n {\n experimental: this.experimental,\n disableAPI: this.disableAPI,\n },\n );\n\n this.overrideLlmClients.set(cacheKey, client);\n return client;\n }\n\n private resolveDefaultAgentMode(\n model?: string | { modelName: string; [key: string]: unknown },\n ): AgentToolMode {\n const modelName = extractModelName(model) ?? this.modelName;\n const matchedPattern = HYBRID_CAPABLE_MODEL_PATTERNS.find((pattern) =>\n modelName.includes(pattern),\n );\n return matchedPattern ? \"hybrid\" : \"dom\";\n }\n\n private beginAgentReplayRecording(): void {\n this.agentCache.beginRecording();\n }\n\n private endAgentReplayRecording(): AgentReplayStep[] {\n return this.agentCache.endRecording();\n }\n\n private discardAgentReplayRecording(): void {\n this.agentCache.discardRecording();\n }\n\n private isAgentReplayRecording(): boolean {\n return this.agentCache.isRecording();\n }\n\n public isAgentReplayActive(): boolean {\n return this.agentCache.isReplayActive();\n }\n\n public recordAgentReplayStep(step: AgentReplayStep): void {\n this.agentCache.recordStep(step);\n }\n\n /**\n * Async property for history so callers can `await v3.history`.\n * Returns a frozen copy to avoid external mutation.\n */\n public get history(): Promise<ReadonlyArray<HistoryEntry>> {\n return Promise.resolve(Object.freeze([...this._history]));\n }\n\n public addToHistory(\n method: HistoryEntry[\"method\"],\n parameters: unknown,\n result?: unknown,\n ): void {\n this._history.push({\n method,\n parameters,\n result: result ?? null,\n timestamp: new Date().toISOString(),\n });\n }\n\n public updateMetrics(\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ): void {\n switch (functionName) {\n case V3FunctionName.ACT:\n this.stagehandMetrics.actPromptTokens += promptTokens;\n this.stagehandMetrics.actCompletionTokens += completionTokens;\n this.stagehandMetrics.actReasoningTokens += reasoningTokens;\n this.stagehandMetrics.actCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.actInferenceTimeMs += inferenceTimeMs;\n break;\n\n case V3FunctionName.EXTRACT:\n this.stagehandMetrics.extractPromptTokens += promptTokens;\n this.stagehandMetrics.extractCompletionTokens += completionTokens;\n this.stagehandMetrics.extractReasoningTokens += reasoningTokens;\n this.stagehandMetrics.extractCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.extractInferenceTimeMs += inferenceTimeMs;\n break;\n\n case V3FunctionName.OBSERVE:\n this.stagehandMetrics.observePromptTokens += promptTokens;\n this.stagehandMetrics.observeCompletionTokens += completionTokens;\n this.stagehandMetrics.observeReasoningTokens += reasoningTokens;\n this.stagehandMetrics.observeCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.observeInferenceTimeMs += inferenceTimeMs;\n break;\n\n case V3FunctionName.AGENT:\n this.stagehandMetrics.agentPromptTokens += promptTokens;\n this.stagehandMetrics.agentCompletionTokens += completionTokens;\n this.stagehandMetrics.agentReasoningTokens += reasoningTokens;\n this.stagehandMetrics.agentCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.agentInferenceTimeMs += inferenceTimeMs;\n break;\n }\n this.updateTotalMetrics(\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n );\n }\n\n private updateTotalMetrics(\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ): void {\n this.stagehandMetrics.totalPromptTokens += promptTokens;\n this.stagehandMetrics.totalCompletionTokens += completionTokens;\n this.stagehandMetrics.totalReasoningTokens += reasoningTokens;\n this.stagehandMetrics.totalCachedInputTokens += cachedInputTokens;\n this.stagehandMetrics.totalInferenceTimeMs += inferenceTimeMs;\n }\n\n private async _immediateShutdown(reason: string): Promise<void> {\n try {\n this.logger({\n category: \"v3\",\n message: `initiating shutdown → ${reason}`,\n level: 0,\n });\n } catch {\n //\n }\n\n try {\n this.logger({\n category: \"v3\",\n message: `closing resources → ${reason}`,\n level: 0,\n });\n await this.close({ force: true });\n } catch {\n // swallow — already shutting down\n }\n }\n\n /** Spawn a crash-only supervisor that cleans up when this process dies. */\n private startShutdownSupervisor(\n config: ShutdownSupervisorConfig,\n ): ShutdownSupervisorHandle | null {\n if (this.shutdownSupervisor) return this.shutdownSupervisor;\n this.shutdownSupervisor = startShutdownSupervisor(config, {\n onError: (error, context) => {\n try {\n this.logger({\n category: \"v3\",\n message:\n \"Shutdown supervisor unavailable; crash cleanup disabled. \" +\n \"If this process exits unexpectedly, local Chrome or Browserbase \" +\n \"sessions may remain running even with keepAlive=false.\",\n level: 0,\n auxiliary: {\n context: { value: context, type: \"string\" },\n error: { value: error.message, type: \"string\" },\n },\n });\n } catch {\n // ignore logging failures\n }\n },\n });\n return this.shutdownSupervisor;\n }\n\n /** Stop the supervisor during a normal shutdown. */\n private stopShutdownSupervisor(): void {\n if (!this.shutdownSupervisor) return;\n try {\n this.shutdownSupervisor.stop();\n } catch {\n // best-effort\n }\n this.shutdownSupervisor = null;\n }\n\n /**\n * Entrypoint: initializes handlers, launches Chrome or Browserbase,\n * and sets up a CDP context.\n */\n async init(): Promise<void> {\n try {\n return await withInstanceLogContext(this.instanceId, async () => {\n this.actHandler = new ActHandler(\n this.llmClient,\n this.modelName,\n this.modelClientOptions,\n (model) => this.resolveLlmClient(model),\n this.opts.systemPrompt ?? \"\",\n this.logInferenceToFile,\n this.opts.selfHeal ?? true,\n (\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ) =>\n this.updateMetrics(\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ),\n this.domSettleTimeoutMs,\n );\n this.extractHandler = new ExtractHandler(\n this.llmClient,\n this.modelName,\n this.modelClientOptions,\n (model) => this.resolveLlmClient(model),\n this.opts.systemPrompt ?? \"\",\n this.logInferenceToFile,\n this.experimental,\n (\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ) =>\n this.updateMetrics(\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ),\n );\n this.observeHandler = new ObserveHandler(\n this.llmClient,\n this.modelName,\n this.modelClientOptions,\n (model) => this.resolveLlmClient(model),\n this.opts.systemPrompt ?? \"\",\n this.logInferenceToFile,\n this.experimental,\n (\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ) =>\n this.updateMetrics(\n functionName,\n promptTokens,\n completionTokens,\n reasoningTokens,\n cachedInputTokens,\n inferenceTimeMs,\n ),\n );\n if (this.opts.env === \"LOCAL\") {\n // chrome-launcher conditionally adds --headless when the environment variable\n // HEADLESS is set, without parsing its value.\n // if it is not equal to true, then we delete it from the process\n const envHeadless = process.env.HEADLESS;\n if (envHeadless !== undefined) {\n const normalized = envHeadless.trim().toLowerCase();\n if (normalized !== \"true\") {\n delete process.env.HEADLESS;\n }\n }\n const lbo: LocalBrowserLaunchOptions =\n this.opts.localBrowserLaunchOptions ?? {};\n\n if (lbo.cdpHeaders && !lbo.cdpUrl) {\n this.logger({\n category: \"init\",\n message:\n \"`cdpHeaders` was provided but `cdpUrl` is not set — cdpHeaders will be ignored. Set `cdpUrl` to connect to an existing browser via CDP.\",\n level: 2,\n });\n }\n\n // If a CDP URL is provided, attach instead of launching.\n if (lbo.cdpUrl) {\n this.logger({\n category: \"init\",\n message: \"Connecting to local browser\",\n level: 1,\n });\n this.ctx = await V3Context.create(lbo.cdpUrl, {\n env: \"LOCAL\",\n cdpHeaders: lbo.cdpHeaders,\n localBrowserLaunchOptions: lbo,\n });\n this.ctx.conn.flowLoggerContext = this.flowLoggerContext;\n this.ctx.conn.onTransportClosed(this._onCdpClosed);\n this.state = {\n kind: \"LOCAL\",\n // no LaunchedChrome when attaching externally; create a stub kill\n chrome: {\n kill: async () => {},\n } as unknown as import(\"chrome-launcher\").LaunchedChrome,\n ws: lbo.cdpUrl,\n };\n this.resetBrowserbaseSessionMetadata();\n // Post-connect settings (downloads and viewport) if provided\n await this._applyPostConnectLocalOptions(lbo);\n return;\n }\n this.logger({\n category: \"init\",\n message: \"Launching local browser\",\n level: 1,\n });\n\n // Determine or create user data dir\n let userDataDir = lbo.userDataDir;\n let createdTemp = false;\n if (!userDataDir) {\n const base = path.join(os.tmpdir(), \"stagehand-v3\");\n fs.mkdirSync(base, { recursive: true });\n userDataDir = fs.mkdtempSync(path.join(base, \"profile-\"));\n createdTemp = true;\n }\n\n if (!lbo.viewport) {\n lbo.viewport = DEFAULT_VIEWPORT;\n }\n\n const keepAlive = this.keepAlive === true;\n const { ws, chrome } = await launchLocalChrome({\n ...lbo,\n userDataDir,\n handleSIGINT: !keepAlive,\n });\n if (keepAlive) {\n try {\n chrome.process?.unref?.();\n } catch {\n // best-effort: avoid keeping the event loop alive\n }\n }\n this.ctx = await V3Context.create(ws, {\n env: \"LOCAL\",\n localBrowserLaunchOptions: lbo,\n });\n this.ctx.conn.flowLoggerContext = this.flowLoggerContext;\n this.ctx.conn.onTransportClosed(this._onCdpClosed);\n this.state = {\n kind: \"LOCAL\",\n chrome,\n ws,\n userDataDir,\n createdTempProfile: createdTemp,\n preserveUserDataDir: !!lbo.preserveUserDataDir,\n };\n this.resetBrowserbaseSessionMetadata();\n const chromePid = chrome.process?.pid ?? chrome.pid;\n if (!keepAlive && chromePid) {\n this.startShutdownSupervisor({\n kind: \"LOCAL\",\n pid: chromePid,\n userDataDir,\n createdTempProfile: createdTemp,\n preserveUserDataDir: !!lbo.preserveUserDataDir,\n });\n }\n\n // Post-connect settings (downloads and viewport) if provided\n await this._applyPostConnectLocalOptions(lbo);\n return;\n }\n\n if (this.opts.env === \"BROWSERBASE\") {\n const { apiKey, projectId } = this.requireBrowserbaseCreds();\n this.logger({\n category: \"init\",\n message: \"Starting browserbase session\",\n level: 1,\n });\n const baseSessionParams =\n this.opts.browserbaseSessionCreateParams ?? {};\n const resolvedKeepAlive = this.keepAlive;\n const keepAlive = this.keepAlive === true;\n let effectiveSessionParams = baseSessionParams;\n if (resolvedKeepAlive !== undefined) {\n effectiveSessionParams = {\n ...baseSessionParams,\n keepAlive: resolvedKeepAlive,\n };\n }\n if (!this.disableAPI && !this.experimental) {\n this.apiClient = new StagehandAPIClient({\n apiKey,\n projectId,\n logger: this.logger,\n serverCache: this.opts.serverCache,\n });\n const {\n projectId: overrideProjectId,\n browserSettings,\n userMetadata,\n ...restSessionParams\n } = effectiveSessionParams;\n const resolvedProjectId = overrideProjectId ?? projectId;\n const createSessionPayload = {\n ...(resolvedProjectId ? { projectId: resolvedProjectId } : {}),\n ...restSessionParams,\n browserSettings: {\n ...(browserSettings ?? {}),\n viewport: browserSettings?.viewport ?? {\n width: 1288,\n height: 711,\n },\n },\n userMetadata: {\n ...(userMetadata ?? {}),\n stagehand: \"true\",\n },\n };\n const { sessionId, available } = await this.apiClient.init({\n modelName: this.modelName,\n modelApiKey: this.modelClientOptions.apiKey,\n domSettleTimeoutMs: this.domSettleTimeoutMs,\n verbose: this.verbose,\n systemPrompt: this.opts.systemPrompt,\n selfHeal: this.opts.selfHeal,\n browserbaseSessionCreateParams: createSessionPayload,\n browserbaseSessionID: this.opts.browserbaseSessionID,\n });\n if (!available) {\n this.apiClient = null;\n }\n this.opts.browserbaseSessionID = sessionId;\n }\n const { ws, sessionId, bb } = await createBrowserbaseSession(\n apiKey,\n projectId,\n effectiveSessionParams,\n this.opts.browserbaseSessionID,\n );\n this.ctx = await V3Context.create(ws, {\n env: \"BROWSERBASE\",\n apiClient: this.apiClient,\n });\n this.ctx.conn.flowLoggerContext = this.flowLoggerContext;\n this.ctx.conn.onTransportClosed(this._onCdpClosed);\n this.state = { kind: \"BROWSERBASE\", sessionId, ws, bb };\n this.browserbaseSessionId = sessionId;\n if (!keepAlive && !this.disableAPI) {\n this.startShutdownSupervisor({\n kind: \"STAGEHAND_API\",\n sessionId,\n apiKey,\n projectId,\n });\n }\n\n await this._ensureBrowserbaseDownloadsEnabled();\n\n const resumed = !!this.opts.browserbaseSessionID;\n let debugUrl: string | undefined;\n try {\n const dbg = (await bb.sessions.debug(sessionId)) as unknown as {\n debuggerUrl?: string;\n };\n debugUrl = dbg?.debuggerUrl;\n } catch {\n // Ignore debug fetch failures; continue with sessionUrl only\n }\n const sessionUrl = `https://www.browserbase.com/sessions/${sessionId}`;\n this.browserbaseSessionUrl = sessionUrl;\n this.browserbaseDebugUrl = debugUrl;\n\n try {\n this.logger({\n category: \"init\",\n message: resumed\n ? this.apiClient\n ? \"Browserbase session started\"\n : \"Browserbase session resumed\"\n : \"Browserbase session started\",\n level: 1,\n auxiliary: {\n sessionUrl: { value: sessionUrl, type: \"string\" },\n ...(debugUrl && {\n debugUrl: { value: debugUrl, type: \"string\" },\n }),\n sessionId: { value: sessionId, type: \"string\" },\n },\n });\n } catch {\n // best-effort logging — ignore failures\n }\n return;\n }\n\n const neverEnv: never = this.opts.env;\n throw new StagehandInitError(`Unsupported env: ${neverEnv}`);\n });\n } catch (error) {\n // Cleanup instanceLoggers map on init failure to prevent memory leak\n if (this.externalLogger) {\n try {\n unbindInstanceLogger(this.instanceId);\n } catch {\n // ignore cleanup errors\n }\n }\n throw error;\n }\n }\n\n /** Apply post-connect local browser options that require CDP. */\n private async _applyPostConnectLocalOptions(\n lbo: LocalBrowserLaunchOptions,\n ): Promise<void> {\n try {\n // Downloads behavior\n if (lbo.downloadsPath || lbo.acceptDownloads !== undefined) {\n const behavior = lbo.acceptDownloads === false ? \"deny\" : \"allow\";\n await this.ctx?.conn\n .send(\"Browser.setDownloadBehavior\", {\n behavior,\n downloadPath: lbo.downloadsPath,\n eventsEnabled: true,\n })\n .catch(() => {});\n }\n } catch {\n // best-effort only\n }\n }\n\n private async _ensureBrowserbaseDownloadsEnabled(): Promise<void> {\n const conn = this.ctx?.conn;\n if (!conn) return;\n try {\n await conn.send(\"Browser.setDownloadBehavior\", {\n behavior: \"allow\",\n downloadPath: \"downloads\",\n eventsEnabled: true,\n });\n } catch {\n // best-effort only\n }\n }\n\n private resetBrowserbaseSessionMetadata(): void {\n this.browserbaseSessionId = undefined;\n this.browserbaseSessionUrl = undefined;\n this.browserbaseDebugUrl = undefined;\n }\n\n /**\n * Run an \"act\" instruction through the ActHandler.\n *\n * New API:\n * - act(instruction: string, options?: ActOptions)\n * - act(action: Action, options?: ActOptions)\n */\n async act(instruction: string, options?: ActOptions): Promise<ActResult>;\n async act(action: Action, options?: ActOptions): Promise<ActResult>;\n\n @FlowLogger.wrapWithLogging({\n eventType: \"StagehandAct\",\n })\n async act(input: string | Action, options?: ActOptions): Promise<ActResult> {\n return await withInstanceLogContext(this.instanceId, async () => {\n if (!this.actHandler) throw new StagehandNotInitializedError(\"act()\");\n\n let actResult: ActResult;\n\n if (isObserveResult(input)) {\n // Resolve page: use provided page if any, otherwise default active page\n const v3Page = await this.resolvePage(options?.page);\n\n // Use selector as provided to support XPath, CSS, and other engines\n const selector = input.selector;\n if (this.apiClient) {\n actResult = await this.apiClient.act({\n input,\n options,\n frameId: v3Page.mainFrameId(),\n });\n } else {\n const ensureTimeRemaining = createTimeoutGuard(\n options?.timeout,\n (ms) => new ActTimeoutError(ms),\n );\n actResult = await this.actHandler.takeDeterministicAction(\n { ...input, selector },\n v3Page,\n this.domSettleTimeoutMs,\n this.resolveLlmClient(options?.model),\n ensureTimeRemaining,\n options?.variables,\n );\n }\n\n // history: record ObserveResult-based act call\n this.addToHistory(\n \"act\",\n {\n observeResult: input,\n },\n actResult,\n );\n return actResult;\n }\n // instruction path\n if (typeof input !== \"string\" || !input.trim()) {\n throw new StagehandInvalidArgumentError(\n \"act(): instruction string is required unless passing an Action\",\n );\n }\n\n // Resolve page from options or default\n const page = await this.resolvePage(options?.page);\n const actCacheLlmClient = options?.model\n ? this.resolveLlmClient(options.model)\n : undefined;\n\n let actCacheContext: Awaited<\n ReturnType<typeof this.actCache.prepareContext>\n > | null = null;\n const canUseCache =\n typeof input === \"string\" &&\n !this.isAgentReplayRecording() &&\n this.actCache.enabled;\n if (canUseCache) {\n actCacheContext = await this.actCache.prepareContext(\n input,\n page,\n flattenVariables(options?.variables),\n );\n if (actCacheContext) {\n const cachedResult = await this.actCache.tryReplay(\n actCacheContext,\n page,\n options?.timeout,\n actCacheLlmClient,\n );\n if (cachedResult) {\n this.addToHistory(\n \"act\",\n {\n instruction: input,\n variables: options?.variables,\n timeout: options?.timeout,\n cacheHit: true,\n },\n cachedResult,\n );\n return cachedResult;\n }\n }\n }\n\n const handlerParams: ActHandlerParams = {\n instruction: input,\n page,\n variables: options?.variables,\n timeout: options?.timeout,\n model: options?.model,\n };\n if (this.apiClient) {\n const frameId = page.mainFrameId();\n actResult = await this.apiClient.act({ input, options, frameId });\n } else {\n actResult = await this.actHandler.act(handlerParams);\n }\n // history: record instruction-based act call (omit page object)\n this.addToHistory(\n \"act\",\n {\n instruction: input,\n variables: options?.variables,\n timeout: options?.timeout,\n },\n actResult,\n );\n\n if (\n actCacheContext &&\n actResult.success &&\n Array.isArray(actResult.actions) &&\n actResult.actions.length > 0\n ) {\n await this.actCache.store(actCacheContext, actResult);\n }\n return actResult;\n });\n }\n\n /**\n * Run an \"extract\" instruction through the ExtractHandler.\n *\n * Accepted forms:\n * - extract() → pageText\n * - extract(options) → pageText\n * - extract(instruction) → defaultExtractSchema\n * - extract(instruction, schema) → schema-inferred\n * - extract(instruction, schema, options)\n */\n\n async extract(): Promise<z.infer<typeof pageTextSchema>>;\n async extract(\n options: ExtractOptions,\n ): Promise<z.infer<typeof pageTextSchema>>;\n async extract(\n instruction: string,\n options?: ExtractOptions,\n ): Promise<z.infer<typeof defaultExtractSchema>>;\n async extract<T extends StagehandZodSchema>(\n instruction: string,\n schema: T,\n options?: ExtractOptions,\n ): Promise<InferStagehandSchema<T>>;\n\n @FlowLogger.wrapWithLogging({\n eventType: \"StagehandExtract\",\n })\n async extract(\n a?: string | ExtractOptions,\n b?: StagehandZodSchema | ExtractOptions,\n c?: ExtractOptions,\n ): Promise<unknown> {\n return await withInstanceLogContext(this.instanceId, async () => {\n if (!this.extractHandler) {\n throw new StagehandNotInitializedError(\"extract()\");\n }\n\n // Normalize args\n let instruction: string | undefined;\n let schema: StagehandZodSchema | undefined;\n let options: ExtractOptions | undefined;\n\n if (typeof a === \"string\") {\n instruction = a;\n const isZodSchema = (val: unknown): val is StagehandZodSchema =>\n !!val &&\n typeof val === \"object\" &&\n \"parse\" in val &&\n \"safeParse\" in val;\n if (isZodSchema(b)) {\n schema = b as StagehandZodSchema;\n options = c as ExtractOptions | undefined;\n } else {\n options = b as ExtractOptions | undefined;\n }\n } else {\n // a is options or undefined\n options = (a as ExtractOptions) || undefined;\n }\n\n if (!instruction && schema) {\n throw new StagehandInvalidArgumentError(\n \"extract(): schema provided without instruction\",\n );\n }\n\n // If instruction without schema → defaultExtractSchema\n const effectiveSchema =\n instruction && !schema ? defaultExtractSchema : schema;\n\n // Resolve page from options or use active page\n const page = await this.resolvePage(options?.page);\n\n const handlerParams: ExtractHandlerParams<StagehandZodSchema> = {\n instruction,\n schema: effectiveSchema as StagehandZodSchema | undefined,\n model: options?.model,\n timeout: options?.timeout,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n page,\n };\n let result: z.infer<typeof effectiveSchema> | { pageText: string };\n if (this.apiClient) {\n const frameId = page.mainFrameId();\n result = await this.apiClient.extract({\n instruction: handlerParams.instruction,\n schema: handlerParams.schema,\n options,\n frameId,\n });\n } else {\n result =\n await this.extractHandler.extract<StagehandZodSchema>(handlerParams);\n }\n const historySchemaDescriptor = effectiveSchema\n ? toJsonSchema(effectiveSchema)\n : undefined;\n this.addToHistory(\n \"extract\",\n {\n instruction,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n timeout: options?.timeout,\n schema: historySchemaDescriptor,\n },\n result,\n );\n return result;\n });\n }\n\n /**\n * Run an \"observe\" instruction through the ObserveHandler.\n */\n async observe(): Promise<Action[]>;\n async observe(options: ObserveOptions): Promise<Action[]>;\n async observe(\n instruction: string,\n options?: ObserveOptions,\n ): Promise<Action[]>;\n @FlowLogger.wrapWithLogging({\n eventType: \"StagehandObserve\",\n })\n async observe(\n a?: string | ObserveOptions,\n b?: ObserveOptions,\n ): Promise<Action[]> {\n return await withInstanceLogContext(this.instanceId, async () => {\n if (!this.observeHandler) {\n throw new StagehandNotInitializedError(\"observe()\");\n }\n\n // Normalize args\n let instruction: string | undefined;\n let options: ObserveOptions | undefined;\n if (typeof a === \"string\") {\n instruction = a;\n options = b;\n } else {\n options = a as ObserveOptions | undefined;\n }\n\n // Resolve to our internal Page type\n const page = await this.resolvePage(options?.page);\n\n const handlerParams: ObserveHandlerParams = {\n instruction,\n model: options?.model,\n variables: options?.variables,\n timeout: options?.timeout,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n page: page!,\n };\n\n let results: Action[];\n if (this.apiClient) {\n const frameId = page.mainFrameId();\n results = await this.apiClient.observe({\n instruction,\n options,\n frameId,\n });\n } else {\n results = await this.observeHandler.observe(handlerParams);\n }\n\n // history: record observe call (omit page object)\n this.addToHistory(\n \"observe\",\n {\n instruction,\n variables: options?.variables,\n selector: options?.selector,\n ignoreSelectors: options?.ignoreSelectors,\n timeout: options?.timeout,\n },\n results,\n );\n return results;\n });\n }\n\n /** Return the browser-level CDP WebSocket endpoint. */\n connectURL(): string {\n if (this.state.kind === \"UNINITIALIZED\") {\n throw new StagehandNotInitializedError(\"connectURL()\");\n }\n return this.state.ws;\n }\n\n /** Expose the current CDP-backed context. */\n public get context(): V3Context {\n return this.ctx;\n }\n\n /** Best-effort cleanup of context and launched resources. */\n async close(opts?: { force?: boolean }): Promise<void> {\n // If we're already closing and this isn't a forced close, no-op.\n if (this._isClosing && !opts?.force) return;\n this._isClosing = true;\n\n const keepAlive = this.keepAlive === true;\n\n // Unhook CDP transport close handler BEFORE ending the API session.\n // apiClient.end() can cause the hosted API to terminate the Browserbase\n // session, which closes the CDP WebSocket. If the handler is still\n // registered, _onCdpClosed fires and re-enters close() with force=true,\n // causing a double-close cascade.\n try {\n if (this.ctx?.conn && this._onCdpClosed) {\n this.ctx.conn.offTransportClosed?.(this._onCdpClosed);\n }\n } catch {\n // ignore\n }\n\n // End Browserbase session via API when keepAlive is not enabled\n if (!keepAlive && this.apiClient) {\n try {\n await this.apiClient.end();\n } catch {\n // best-effort cleanup\n }\n }\n\n try {\n // Close session file logger\n try {\n await FlowLogger.close(this.flowLoggerContext);\n } catch {\n // ignore\n }\n\n // Close CDP context\n try {\n await this.ctx?.close();\n } catch {\n // ignore\n }\n\n // Kill local Chrome and clean up temp profile when keepAlive is not enabled\n if (!keepAlive && this.state.kind === \"LOCAL\") {\n const localState = this.state;\n await cleanupLocalBrowser({\n killChrome: () => localState.chrome.kill(),\n userDataDir: localState.userDataDir,\n createdTempProfile: localState.createdTempProfile,\n preserveUserDataDir: localState.preserveUserDataDir,\n });\n }\n } finally {\n this.stopShutdownSupervisor();\n\n // Reset internal state\n this.state = { kind: \"UNINITIALIZED\" };\n this.ctx = null;\n this._isClosing = false;\n this.resetBrowserbaseSessionMetadata();\n try {\n unbindInstanceLogger(this.instanceId);\n } catch {\n // ignore\n }\n try {\n await this.eventStore.destroy();\n } catch {\n // ignore\n }\n try {\n this.bus.removeAllListeners();\n } catch {\n // ignore\n }\n this._history = [];\n this.actHandler = null;\n this.extractHandler = null;\n this.observeHandler = null;\n V3._instances.delete(this);\n }\n }\n\n /**\n * Resolves the Browserbase API key from options or environment variables.\n * Returns undefined if no key is found (does not throw).\n */\n public get browserbaseApiKey(): string | undefined {\n return this.opts.apiKey || process.env.BROWSERBASE_API_KEY;\n }\n\n /** Guard: ensure Browserbase credentials exist in options. */\n private requireBrowserbaseCreds(): {\n apiKey: string;\n projectId?: string;\n } {\n let { apiKey, projectId } = this.opts;\n\n // Fall back to environment variables if not explicitly provided\n if (!apiKey)\n apiKey = process.env.BROWSERBASE_API_KEY ?? process.env.BB_API_KEY;\n if (!projectId)\n projectId =\n process.env.BROWSERBASE_PROJECT_ID ?? process.env.BB_PROJECT_ID;\n\n if (!apiKey) {\n throw new MissingEnvironmentVariableError(\n \"BROWSERBASE_API_KEY\",\n \"Browserbase\",\n );\n }\n\n // Cache resolved values back into opts for consistency\n this.opts.apiKey = apiKey;\n if (projectId) this.opts.projectId = projectId;\n\n // Informational log\n this.logger({\n category: \"init\",\n message: \"Using Browserbase credentials\",\n level: 1,\n });\n\n return { apiKey, projectId };\n }\n\n public get logger(): (logLine: LogLine) => void {\n // Delegate to per-instance StagehandLogger\n // StagehandLogger handles: verbosity filtering, usePino selection, external logger routing\n // This provides per-instance configuration while maintaining shared Pino optimization\n return (logLine: LogLine) => {\n const line = { ...logLine, level: logLine.level ?? 1 };\n this.stagehandLogger.log(line);\n };\n }\n\n /**\n * Normalize a Playwright/Puppeteer page object into its top frame id,\n * so handlers can resolve it to a `Page` within our V3Context.\n */\n private async resolveTopFrameId(\n page: PlaywrightPage | PuppeteerPage | PatchrightPage,\n ): Promise<string> {\n if (this.isPlaywrightPage(page)) {\n const cdp = await page.context().newCDPSession(page);\n const { frameTree } = await cdp.send(\"Page.getFrameTree\");\n return frameTree.frame.id;\n }\n\n if (this.isPatchrightPage(page)) {\n const cdp = await page.context().newCDPSession(page);\n const { frameTree } = await cdp.send(\"Page.getFrameTree\");\n return frameTree.frame.id;\n }\n\n if (this.isPuppeteerPage(page)) {\n const cdp = await page.createCDPSession();\n const { frameTree } = await cdp.send(\"Page.getFrameTree\");\n this.logger({\n category: \"v3\",\n message: \"Puppeteer frame id\",\n level: 2,\n auxiliary: { frameId: { value: frameTree.frame.id, type: \"string\" } },\n });\n return frameTree.frame.id;\n }\n\n throw new StagehandInvalidArgumentError(\n \"Unsupported page object passed to V3.act()\",\n );\n }\n\n private isPlaywrightPage(p: unknown): p is PlaywrightPage {\n return (\n typeof p === \"object\" &&\n p !== null &&\n typeof (p as PlaywrightPage).context === \"function\"\n );\n }\n\n private isPatchrightPage(p: unknown): p is PatchrightPage {\n return (\n typeof p === \"object\" &&\n p !== null &&\n typeof (p as PatchrightPage).context === \"function\"\n );\n }\n\n private isPuppeteerPage(p: unknown): p is PuppeteerPage {\n return (\n typeof p === \"object\" &&\n p !== null &&\n typeof (p as PuppeteerPage).target === \"function\"\n );\n }\n\n /** Resolve an external page reference or fall back to the active V3 page. */\n private async resolvePage(page?: AnyPage): Promise<Page> {\n if (page) {\n return await this.normalizeToV3Page(page);\n }\n const ctx = this.ctx;\n if (!ctx) {\n throw new StagehandNotInitializedError(\"resolvePage()\");\n }\n return await ctx.awaitActivePage();\n }\n\n private async normalizeToV3Page(input: AnyPage): Promise<Page> {\n if (input instanceof (await import(\"./understudy/page.js\")).Page) {\n return input as Page;\n }\n if (this.isPlaywrightPage(input)) {\n const frameId = await this.resolveTopFrameId(input);\n const page = this.ctx!.resolvePageByMainFrameId(frameId);\n if (!page)\n throw new StagehandInitError(\n \"Failed to resolve V3 Page from Playwright page.\",\n );\n return page;\n }\n if (this.isPatchrightPage(input)) {\n const frameId = await this.resolveTopFrameId(input);\n const page = this.ctx!.resolvePageByMainFrameId(frameId);\n if (!page)\n throw new StagehandInitError(\n \"Failed to resolve V3 Page from Patchright page.\",\n );\n return page;\n }\n if (this.isPuppeteerPage(input)) {\n const frameId = await this.resolveTopFrameId(input);\n const page = this.ctx!.resolvePageByMainFrameId(frameId);\n if (!page)\n throw new StagehandInitError(\n \"Failed to resolve V3 Page from Puppeteer page.\",\n );\n return page;\n }\n throw new StagehandInvalidArgumentError(\"Unsupported page object.\");\n }\n\n private async _logBrowserbaseSessionStatus(): Promise<void> {\n if (this.state.kind !== \"BROWSERBASE\") {\n return;\n }\n\n try {\n const snapshot = (await this.state.bb.sessions.retrieve(\n this.state.sessionId,\n )) as { id?: string; status?: string };\n if (!snapshot?.status) return;\n\n const sessionId = snapshot.id ?? this.state.sessionId;\n const message =\n snapshot.status === \"TIMED_OUT\"\n ? `Browserbase session timed out (sessionId: ${sessionId})`\n : `Browserbase session status: ${snapshot.status}`;\n\n this.logger({\n category: \"v3\",\n message,\n level: 0,\n });\n } catch {\n // Ignore failures; nothing to log\n }\n }\n\n /**\n * Prepares shared context for agent execution (both execute and stream).\n * Extracts duplicated setup logic into a single helper.\n */\n private async prepareAgentExecution(\n options: AgentConfig | undefined,\n instructionOrOptions:\n | string\n | AgentExecuteOptions\n | AgentStreamExecuteOptions,\n agentConfigSignature: string,\n ): Promise<{\n handler: V3AgentHandler;\n resolvedOptions: AgentExecuteOptions | AgentStreamExecuteOptions;\n instruction: string;\n cacheContext: AgentCacheContext | null;\n llmClient: LLMClient;\n }> {\n // Note: experimental validation is done at the call site before this method\n const tools = options?.integrations\n ? await resolveTools(options.integrations, options.tools)\n : (options?.tools ?? {});\n\n const agentLlmClient = options?.model\n ? this.resolveLlmClient(options.model)\n : this.llmClient;\n\n const resolvedExecutionModel = options?.executionModel ?? options?.model;\n\n const resolvedMode =\n options?.mode ?? this.resolveDefaultAgentMode(options?.model);\n\n const handler = new V3AgentHandler(\n this,\n this.logger,\n agentLlmClient,\n resolvedExecutionModel,\n options?.systemPrompt,\n tools,\n resolvedMode,\n this.isCaptchaAutoSolveEnabled,\n );\n\n const resolvedOptions: AgentExecuteOptions | AgentStreamExecuteOptions =\n typeof instructionOrOptions === \"string\"\n ? {\n instruction: instructionOrOptions,\n toolTimeout: DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n }\n : {\n ...instructionOrOptions,\n toolTimeout:\n instructionOrOptions.toolTimeout ?? DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n };\n\n const callbacksWithSafety = resolvedOptions.callbacks as\n | AgentExecuteCallbacks\n | undefined;\n if (callbacksWithSafety?.onSafetyConfirmation) {\n throw new StagehandInvalidArgumentError(\n 'onSafetyConfirmation callback is only supported when using mode: \"cua\" agents.',\n );\n }\n\n if (resolvedOptions.page) {\n const normalizedPage = await this.normalizeToV3Page(resolvedOptions.page);\n this.ctx!.setActivePage(normalizedPage);\n }\n\n const instruction = resolvedOptions.instruction.trim();\n const sanitizedOptions =\n this.agentCache.sanitizeExecuteOptions(resolvedOptions);\n\n const cacheVariables = flattenVariables(resolvedOptions.variables);\n\n const cacheContext = this.agentCache.shouldAttemptCache(instruction)\n ? await this.agentCache.prepareContext({\n instruction,\n options: sanitizedOptions,\n configSignature: agentConfigSignature,\n page: await this.ctx!.awaitActivePage(),\n variables: cacheVariables,\n })\n : null;\n\n return {\n handler,\n resolvedOptions,\n instruction,\n cacheContext,\n llmClient: agentLlmClient,\n };\n }\n\n /**\n * Create a v3 agent instance (AISDK tool-based) with execute().\n * Mirrors the v2 Stagehand.agent() tool mode (no CUA provider here).\n *\n * @overload When stream: true, returns a streaming agent where execute() returns AgentStreamResult\n * @overload When stream is false/undefined, returns a non-streaming agent where execute() returns AgentResult\n */\n agent(options: AgentConfig & { stream: true }): {\n execute: (\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ) => Promise<AgentStreamResult>;\n };\n agent(options?: AgentConfig & { stream?: false }): {\n execute: (\n instructionOrOptions: string | AgentExecuteOptions,\n ) => Promise<AgentResult>;\n };\n agent(options?: AgentConfig): {\n execute: (\n instructionOrOptions:\n | string\n | AgentExecuteOptions\n | AgentStreamExecuteOptions,\n ) => Promise<AgentResult | AgentStreamResult>;\n } {\n const isCuaMode =\n options?.mode === \"cua\" ||\n (options?.mode === undefined && options?.cua === true);\n\n // Emit deprecation warning for cua: true\n if (options?.cua === true) {\n this.logger({\n category: \"agent\",\n message:\n '[DEPRECATED] The \"cua: true\" option is deprecated. Use \"mode: \\'cua\\'\" instead. This option will be removed in a future version.',\n level: 0,\n });\n console.warn(\n '[Stagehand] DEPRECATED: The \"cua: true\" option is deprecated. Use \"mode: \\'cua\\'\" instead.',\n );\n }\n\n const loggedMode =\n options?.mode ??\n (isCuaMode ? \"cua\" : this.resolveDefaultAgentMode(options?.model));\n\n this.logger({\n category: \"agent\",\n message: \"Creating v3 agent instance\",\n level: 1,\n auxiliary: {\n cua: { value: isCuaMode ? \"true\" : \"false\", type: \"boolean\" },\n mode: { value: loggedMode, type: \"string\" },\n model: {\n value: extractModelName(options?.model) ?? this.llmClient.modelName,\n type: \"string\",\n },\n systemPrompt: { value: options?.systemPrompt ?? \"\", type: \"string\" },\n tools: { value: JSON.stringify(options?.tools ?? {}), type: \"object\" },\n ...(options?.integrations && {\n integrations: {\n value: JSON.stringify(options.integrations),\n type: \"object\",\n },\n }),\n },\n });\n\n // If CUA mode is enabled (via mode: \"cua\" or deprecated cua: true), use the computer-use agent path\n if (isCuaMode) {\n // Validate agent config at creation time (includes CUA+streaming conflict check)\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n });\n\n const modelToUse = options?.model || {\n modelName: this.modelName,\n ...this.modelClientOptions,\n };\n\n const { modelName, isCua, clientOptions } = resolveModel(modelToUse);\n\n if (!isCua) {\n throw new CuaModelRequiredError(AVAILABLE_CUA_MODELS);\n }\n\n const agentConfigSignature =\n this.agentCache.buildConfigSignature(options);\n const execute = async (\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> =>\n withInstanceLogContext(\n this.instanceId,\n async (): Promise<AgentResult> => {\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n executeOptions:\n typeof instructionOrOptions === \"object\"\n ? instructionOrOptions\n : null,\n });\n\n const tools = options?.integrations\n ? await resolveTools(options.integrations, options.tools)\n : (options?.tools ?? {});\n\n const handler = new V3CuaAgentHandler(\n this,\n this.logger,\n {\n modelName,\n clientOptions,\n userProvidedInstructions:\n (options.systemPrompt ??\n `You are a helpful assistant that can use a web browser.\\nDo not ask follow up questions, the user will trust your judgement.`) +\n (this.isCaptchaAutoSolveEnabled\n ? CAPTCHA_CUA_SYSTEM_PROMPT_NOTE\n : \"\"),\n },\n tools,\n );\n\n const resolvedOptions: AgentExecuteOptions =\n typeof instructionOrOptions === \"string\"\n ? {\n instruction: instructionOrOptions,\n toolTimeout: DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n }\n : {\n ...instructionOrOptions,\n toolTimeout:\n instructionOrOptions.toolTimeout ??\n DEFAULT_AGENT_TOOL_TIMEOUT_MS,\n };\n if (resolvedOptions.page) {\n const normalizedPage = await this.normalizeToV3Page(\n resolvedOptions.page,\n );\n this.ctx!.setActivePage(normalizedPage);\n }\n const instruction = resolvedOptions.instruction.trim();\n const sanitizedOptions =\n this.agentCache.sanitizeExecuteOptions(resolvedOptions);\n\n const cacheVariables = flattenVariables(resolvedOptions.variables);\n\n let cacheContext: AgentCacheContext | null = null;\n if (this.agentCache.shouldAttemptCache(instruction)) {\n const startPage = await this.ctx!.awaitActivePage();\n cacheContext = await this.agentCache.prepareContext({\n instruction,\n options: sanitizedOptions,\n configSignature: agentConfigSignature,\n page: startPage,\n variables: cacheVariables,\n });\n if (cacheContext) {\n const replayed = await this.agentCache.tryReplay(cacheContext);\n if (replayed) {\n return replayed;\n }\n }\n }\n\n let agentSteps: AgentReplayStep[] = [];\n const shouldRecordLocally =\n !!cacheContext && (!this.apiClient || this.experimental);\n if (shouldRecordLocally) {\n this.beginAgentReplayRecording();\n }\n\n let result: AgentResult;\n try {\n if (this.apiClient && !this.experimental) {\n const page = await this.ctx!.awaitActivePage();\n result = await this.apiClient.agentExecute(\n options,\n resolvedOptions,\n page.mainFrameId(),\n !!cacheContext,\n );\n this.updateAgentMetricsFromUsage(result.usage);\n if (cacheContext) {\n const transferredEntry =\n this.apiClient.consumeLatestAgentCacheEntry();\n await this.agentCache.storeTransferredEntry(transferredEntry);\n }\n } else {\n result = await handler.execute(instructionOrOptions);\n }\n if (shouldRecordLocally) {\n agentSteps = this.endAgentReplayRecording();\n }\n\n if (\n shouldRecordLocally &&\n cacheContext &&\n result.success &&\n agentSteps.length > 0\n ) {\n await this.agentCache.store(cacheContext, agentSteps, result);\n }\n\n return result;\n } catch (err) {\n if (shouldRecordLocally) this.discardAgentReplayRecording();\n throw err;\n } finally {\n if (shouldRecordLocally) {\n this.discardAgentReplayRecording();\n }\n }\n },\n );\n return {\n execute: FlowLogger.wrapWithLogging({\n eventType: \"AgentExecute\",\n context: this.flowLoggerContext,\n })(execute),\n };\n }\n\n // Default: AISDK tools-based agent\n const agentConfigSignature = this.agentCache.buildConfigSignature(options);\n const isStreaming = options?.stream ?? false;\n const execute = async (\n instructionOrOptions:\n | string\n | AgentExecuteOptions\n | AgentStreamExecuteOptions,\n ): Promise<AgentResult | AgentStreamResult> =>\n withInstanceLogContext(\n this.instanceId,\n async (): Promise<AgentResult | AgentStreamResult> => {\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n executeOptions:\n typeof instructionOrOptions === \"object\"\n ? instructionOrOptions\n : null,\n isStreaming,\n });\n\n // Streaming mode\n if (isStreaming) {\n const { handler, resolvedOptions, cacheContext, llmClient } =\n await this.prepareAgentExecution(\n options,\n instructionOrOptions,\n agentConfigSignature,\n );\n\n if (cacheContext) {\n const replayed = await this.agentCache.tryReplayAsStream(\n cacheContext,\n llmClient,\n );\n if (replayed) {\n return replayed;\n }\n }\n\n const streamResult = await handler.stream(\n resolvedOptions as AgentStreamExecuteOptions,\n );\n\n if (cacheContext) {\n const wrappedStream = this.agentCache.wrapStreamForCaching(\n cacheContext,\n streamResult,\n () => this.beginAgentReplayRecording(),\n () => this.endAgentReplayRecording(),\n () => this.discardAgentReplayRecording(),\n );\n return wrappedStream;\n }\n\n return streamResult;\n }\n\n // Non-streaming mode (default)\n const { handler, resolvedOptions, cacheContext, llmClient } =\n await this.prepareAgentExecution(\n options,\n instructionOrOptions,\n agentConfigSignature,\n );\n\n if (cacheContext) {\n const replayed = await this.agentCache.tryReplay(\n cacheContext,\n llmClient,\n );\n if (replayed) {\n return replayed;\n }\n }\n\n let agentSteps: AgentReplayStep[] = [];\n const shouldRecordLocally =\n !!cacheContext && (!this.apiClient || this.experimental);\n if (shouldRecordLocally) {\n this.beginAgentReplayRecording();\n }\n let result: AgentResult;\n\n try {\n if (this.apiClient && !this.experimental) {\n const page = await this.ctx!.awaitActivePage();\n result = await this.apiClient.agentExecute(\n options ?? {},\n resolvedOptions as AgentExecuteOptions,\n page.mainFrameId(),\n !!cacheContext,\n );\n this.updateAgentMetricsFromUsage(result.usage);\n if (cacheContext) {\n const transferredEntry =\n this.apiClient.consumeLatestAgentCacheEntry();\n await this.agentCache.storeTransferredEntry(transferredEntry);\n }\n } else {\n result = await handler.execute(\n resolvedOptions as AgentExecuteOptions,\n );\n }\n if (shouldRecordLocally) {\n agentSteps = this.endAgentReplayRecording();\n }\n\n if (\n shouldRecordLocally &&\n cacheContext &&\n result.success &&\n agentSteps.length > 0\n ) {\n await this.agentCache.store(cacheContext, agentSteps, result);\n }\n\n return result;\n } catch (err) {\n if (shouldRecordLocally) this.discardAgentReplayRecording();\n throw err;\n } finally {\n if (shouldRecordLocally) {\n this.discardAgentReplayRecording();\n }\n }\n },\n );\n return {\n execute: FlowLogger.wrapWithLogging({\n eventType: \"AgentExecute\",\n context: this.flowLoggerContext,\n })(execute),\n };\n }\n}\n\nfunction isObserveResult(v: unknown): v is Action {\n return (\n !!v && typeof v === \"object\" && \"selector\" in (v as Record<string, unknown>)\n );\n}\n"]}