@browserbasehq/orca 3.1.0-patch.0 → 3.1.0-patch.2

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 (358) hide show
  1. package/dist/cjs/cli.js +183 -0
  2. package/dist/cjs/cli.js.map +7 -0
  3. package/dist/cjs/index.d.ts +1 -0
  4. package/dist/cjs/index.js +24956 -0
  5. package/dist/cjs/index.js.map +7 -0
  6. package/dist/cjs/lib/inference.d.ts +65 -0
  7. package/dist/cjs/lib/inferenceLogUtils.d.ts +12 -0
  8. package/dist/cjs/lib/logger.d.ts +69 -0
  9. package/dist/cjs/lib/modelUtils.d.ts +11 -0
  10. package/dist/cjs/lib/prompt.d.ts +14 -0
  11. package/dist/cjs/lib/utils.d.ts +68 -0
  12. package/dist/cjs/lib/v3/agent/AgentClient.d.ts +19 -0
  13. package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +20 -0
  14. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.d.ts +57 -0
  15. package/dist/cjs/lib/v3/agent/GoogleCUAClient.d.ts +74 -0
  16. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.d.ts +71 -0
  17. package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +69 -0
  18. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +12 -0
  19. package/dist/cjs/lib/v3/agent/tools/act.d.ts +12 -0
  20. package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +5 -0
  21. package/dist/cjs/lib/v3/agent/tools/click.d.ts +6 -0
  22. package/dist/cjs/lib/v3/agent/tools/clickAndHold.d.ts +14 -0
  23. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.d.ts +7 -0
  24. package/dist/cjs/lib/v3/agent/tools/extract.d.ts +20 -0
  25. package/dist/cjs/lib/v3/agent/tools/fillFormVision.d.ts +12 -0
  26. package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +12 -0
  27. package/dist/cjs/lib/v3/agent/tools/goto.d.ts +12 -0
  28. package/dist/cjs/lib/v3/agent/tools/index.d.ts +92 -0
  29. package/dist/cjs/lib/v3/agent/tools/keys.d.ts +24 -0
  30. package/dist/cjs/lib/v3/agent/tools/navback.d.ts +6 -0
  31. package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +6 -0
  32. package/dist/cjs/lib/v3/agent/tools/scroll.d.ts +19 -0
  33. package/dist/cjs/lib/v3/agent/tools/search.d.ts +15 -0
  34. package/dist/cjs/lib/v3/agent/tools/think.d.ts +6 -0
  35. package/dist/cjs/lib/v3/agent/tools/type.d.ts +7 -0
  36. package/dist/cjs/lib/v3/agent/tools/wait.d.ts +5 -0
  37. package/dist/cjs/lib/v3/agent/utils/actionMapping.d.ts +3 -0
  38. package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.d.ts +13 -0
  39. package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.d.ts +10 -0
  40. package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.d.ts +25 -0
  41. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.d.ts +22 -0
  42. package/dist/cjs/lib/v3/agent/utils/imageCompression.d.ts +53 -0
  43. package/dist/cjs/lib/v3/agent/utils/messageProcessing.d.ts +12 -0
  44. package/dist/cjs/lib/v3/agent/utils/screenshotHandler.d.ts +10 -0
  45. package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.d.ts +26 -0
  46. package/dist/cjs/lib/v3/agent/utils/xpath.d.ts +11 -0
  47. package/dist/cjs/lib/v3/api.d.ts +86 -0
  48. package/dist/cjs/lib/v3/cache/ActCache.d.ts +23 -0
  49. package/dist/cjs/lib/v3/cache/AgentCache.d.ts +109 -0
  50. package/dist/cjs/lib/v3/cache/CacheStorage.d.ts +17 -0
  51. package/dist/cjs/lib/v3/cache/serverAgentCache.d.ts +7 -0
  52. package/dist/cjs/lib/v3/cache/utils.d.ts +15 -0
  53. package/dist/cjs/lib/v3/cli.d.ts +2 -0
  54. package/dist/cjs/lib/v3/dom/a11yScripts/index.d.ts +11 -0
  55. package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.d.ts +16 -0
  56. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.d.ts +52 -0
  57. package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.d.ts +1 -0
  58. package/dist/cjs/lib/v3/dom/build/rerender-index.d.ts +0 -0
  59. package/dist/cjs/lib/v3/dom/build/rerender-index.js +1 -0
  60. package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.d.ts +4 -0
  61. package/dist/cjs/lib/v3/dom/build/scriptV3Content.d.ts +1 -0
  62. package/dist/cjs/lib/v3/dom/build/v3-index.d.ts +0 -0
  63. package/dist/cjs/lib/v3/dom/build/v3-index.js +1 -0
  64. package/dist/cjs/lib/v3/dom/genA11yScripts.d.ts +1 -0
  65. package/dist/cjs/lib/v3/dom/genDomScripts.d.ts +1 -0
  66. package/dist/cjs/lib/v3/dom/genLocatorScripts.d.ts +1 -0
  67. package/dist/cjs/lib/v3/dom/genScreenshotScripts.d.ts +1 -0
  68. package/dist/cjs/lib/v3/dom/index.d.ts +1 -0
  69. package/dist/cjs/lib/v3/dom/locatorScripts/counts.d.ts +15 -0
  70. package/dist/cjs/lib/v3/dom/locatorScripts/index.d.ts +4 -0
  71. package/dist/cjs/lib/v3/dom/locatorScripts/scripts.d.ts +37 -0
  72. package/dist/cjs/lib/v3/dom/locatorScripts/selectors.d.ts +4 -0
  73. package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.d.ts +19 -0
  74. package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.d.ts +76 -0
  75. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.d.ts +9 -0
  76. package/dist/cjs/lib/v3/dom/piercer.entry.d.ts +1 -0
  77. package/dist/cjs/lib/v3/dom/piercer.runtime.d.ts +23 -0
  78. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.d.ts +1 -0
  79. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.d.ts +1 -0
  80. package/dist/cjs/lib/v3/dom/screenshotScripts/index.d.ts +1 -0
  81. package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.d.ts +8 -0
  82. package/dist/cjs/lib/v3/external_clients/aisdk.d.ts +11 -0
  83. package/dist/cjs/lib/v3/external_clients/customOpenAI.d.ts +18 -0
  84. package/dist/cjs/lib/v3/flowLogger.d.ts +139 -0
  85. package/dist/cjs/lib/v3/handlers/actHandler.d.ts +21 -0
  86. package/dist/cjs/lib/v3/handlers/extractHandler.d.ts +31 -0
  87. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +24 -0
  88. package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.d.ts +2 -0
  89. package/dist/cjs/lib/v3/handlers/observeHandler.d.ts +17 -0
  90. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +32 -0
  91. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +33 -0
  92. package/dist/cjs/lib/v3/index.d.ts +18 -0
  93. package/dist/cjs/lib/v3/launch/browserbase.d.ts +7 -0
  94. package/dist/cjs/lib/v3/launch/local.d.ts +15 -0
  95. package/dist/cjs/lib/v3/llm/AnthropicClient.d.ts +16 -0
  96. package/dist/cjs/lib/v3/llm/CerebrasClient.d.ts +17 -0
  97. package/dist/cjs/lib/v3/llm/GoogleClient.d.ts +19 -0
  98. package/dist/cjs/lib/v3/llm/GroqClient.d.ts +17 -0
  99. package/dist/cjs/lib/v3/llm/LLMClient.d.ts +121 -0
  100. package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +13 -0
  101. package/dist/cjs/lib/v3/llm/OpenAIClient.d.ts +15 -0
  102. package/dist/cjs/lib/v3/llm/aisdk.d.ts +15 -0
  103. package/dist/cjs/lib/v3/logger.d.ts +9 -0
  104. package/dist/cjs/lib/v3/mcp/connection.d.ts +11 -0
  105. package/dist/cjs/lib/v3/mcp/utils.d.ts +3 -0
  106. package/dist/cjs/lib/v3/shutdown/cleanupLocal.d.ts +14 -0
  107. package/dist/cjs/lib/v3/shutdown/supervisor.d.ts +11 -0
  108. package/dist/cjs/lib/v3/shutdown/supervisorClient.d.ts +15 -0
  109. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js +113 -0
  110. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js.map +7 -0
  111. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js +102 -0
  112. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js.map +7 -0
  113. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js +374 -0
  114. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js.map +7 -0
  115. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js +354 -0
  116. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js.map +7 -0
  117. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js +247 -0
  118. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js.map +7 -0
  119. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js +105 -0
  120. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js.map +7 -0
  121. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js +126 -0
  122. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js.map +7 -0
  123. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js +44 -0
  124. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js.map +7 -0
  125. package/dist/cjs/lib/v3/tests/click-count.spec.js +147 -0
  126. package/dist/cjs/lib/v3/tests/click-count.spec.js.map +7 -0
  127. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js +54 -0
  128. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js.map +7 -0
  129. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js +176 -0
  130. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js.map +7 -0
  131. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js +53 -0
  132. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js.map +7 -0
  133. package/dist/cjs/lib/v3/tests/downloads.spec.js +80 -0
  134. package/dist/cjs/lib/v3/tests/downloads.spec.js.map +7 -0
  135. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js +53 -0
  136. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js.map +7 -0
  137. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js +493 -0
  138. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +7 -0
  139. package/dist/cjs/lib/v3/tests/keep-alive.child.js +92 -0
  140. package/dist/cjs/lib/v3/tests/keep-alive.child.js.map +7 -0
  141. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js +568 -0
  142. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js.map +7 -0
  143. package/dist/cjs/lib/v3/tests/keep-alive.spec.js +15 -0
  144. package/dist/cjs/lib/v3/tests/keep-alive.spec.js.map +7 -0
  145. package/dist/cjs/lib/v3/tests/keyboard.spec.js +296 -0
  146. package/dist/cjs/lib/v3/tests/keyboard.spec.js.map +7 -0
  147. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js +159 -0
  148. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js.map +7 -0
  149. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js +191 -0
  150. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js.map +7 -0
  151. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js +108 -0
  152. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js.map +7 -0
  153. package/dist/cjs/lib/v3/tests/locator-count.spec.js +71 -0
  154. package/dist/cjs/lib/v3/tests/locator-count.spec.js.map +7 -0
  155. package/dist/cjs/lib/v3/tests/locator-fill.spec.js +118 -0
  156. package/dist/cjs/lib/v3/tests/locator-fill.spec.js.map +7 -0
  157. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js +136 -0
  158. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js.map +7 -0
  159. package/dist/cjs/lib/v3/tests/locator-nth.spec.js +157 -0
  160. package/dist/cjs/lib/v3/tests/locator-nth.spec.js.map +7 -0
  161. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js +242 -0
  162. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js.map +7 -0
  163. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js +547 -0
  164. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js.map +7 -0
  165. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js +269 -0
  166. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js.map +7 -0
  167. package/dist/cjs/lib/v3/tests/nested-div.spec.js +23 -0
  168. package/dist/cjs/lib/v3/tests/nested-div.spec.js.map +7 -0
  169. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js +90 -0
  170. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js.map +7 -0
  171. package/dist/cjs/lib/v3/tests/page-console.spec.js +56 -0
  172. package/dist/cjs/lib/v3/tests/page-console.spec.js.map +7 -0
  173. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js +418 -0
  174. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js.map +7 -0
  175. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js +35 -0
  176. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js.map +7 -0
  177. package/dist/cjs/lib/v3/tests/page-hover.spec.js +167 -0
  178. package/dist/cjs/lib/v3/tests/page-hover.spec.js.map +7 -0
  179. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js +295 -0
  180. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js.map +7 -0
  181. package/dist/cjs/lib/v3/tests/page-scroll.spec.js +182 -0
  182. package/dist/cjs/lib/v3/tests/page-scroll.spec.js.map +7 -0
  183. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js +46 -0
  184. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js.map +7 -0
  185. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js +98 -0
  186. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js.map +7 -0
  187. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js +148 -0
  188. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js.map +7 -0
  189. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js +156 -0
  190. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js.map +7 -0
  191. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js +156 -0
  192. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js.map +7 -0
  193. package/dist/cjs/lib/v3/tests/testUtils.js +54 -0
  194. package/dist/cjs/lib/v3/tests/testUtils.js.map +7 -0
  195. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js +100 -0
  196. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js.map +7 -0
  197. package/dist/cjs/lib/v3/tests/timeouts.spec.js +32 -0
  198. package/dist/cjs/lib/v3/tests/timeouts.spec.js.map +7 -0
  199. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js +65 -0
  200. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js.map +7 -0
  201. package/dist/cjs/lib/v3/tests/v3.config.js +36 -0
  202. package/dist/cjs/lib/v3/tests/v3.config.js.map +7 -0
  203. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js +67 -0
  204. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js.map +7 -0
  205. package/dist/cjs/lib/v3/tests/v3.playwright.config.js +61 -0
  206. package/dist/cjs/lib/v3/tests/v3.playwright.config.js.map +7 -0
  207. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js +593 -0
  208. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js.map +7 -0
  209. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js +97 -0
  210. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js.map +7 -0
  211. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js +77 -0
  212. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js.map +7 -0
  213. package/dist/cjs/lib/v3/timeoutConfig.d.ts +2 -0
  214. package/dist/cjs/lib/v3/types/private/agent.d.ts +6 -0
  215. package/dist/cjs/lib/v3/types/private/api.d.ts +11 -0
  216. package/dist/cjs/lib/v3/types/private/cache.d.ts +128 -0
  217. package/dist/cjs/lib/v3/types/private/evaluator.d.ts +40 -0
  218. package/dist/cjs/lib/v3/types/private/handlers.d.ts +38 -0
  219. package/dist/cjs/lib/v3/types/private/index.d.ts +7 -0
  220. package/dist/cjs/lib/v3/types/private/internal.d.ts +39 -0
  221. package/dist/cjs/lib/v3/types/private/locator.d.ts +9 -0
  222. package/dist/cjs/lib/v3/types/private/network.d.ts +34 -0
  223. package/dist/cjs/lib/v3/types/private/shutdown.d.ts +19 -0
  224. package/dist/cjs/lib/v3/types/private/shutdownErrors.d.ts +12 -0
  225. package/dist/cjs/lib/v3/types/private/snapshot.d.ts +117 -0
  226. package/dist/cjs/lib/v3/types/public/agent.d.ts +595 -0
  227. package/dist/cjs/lib/v3/types/public/api.d.ts +1211 -0
  228. package/dist/cjs/lib/v3/types/public/apiErrors.d.ts +18 -0
  229. package/dist/cjs/lib/v3/types/public/index.d.ts +12 -0
  230. package/dist/cjs/lib/v3/types/public/locator.d.ts +9 -0
  231. package/dist/cjs/lib/v3/types/public/logs.d.ts +23 -0
  232. package/dist/cjs/lib/v3/types/public/methods.d.ts +56 -0
  233. package/dist/cjs/lib/v3/types/public/metrics.d.ts +27 -0
  234. package/dist/cjs/lib/v3/types/public/model.d.ts +65 -0
  235. package/dist/cjs/lib/v3/types/public/options.d.ts +70 -0
  236. package/dist/cjs/lib/v3/types/public/page.d.ts +18 -0
  237. package/dist/cjs/lib/v3/types/public/screenshotTypes.d.ts +25 -0
  238. package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +152 -0
  239. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.d.ts +15 -0
  240. package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.d.ts +8 -0
  241. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.d.ts +77 -0
  242. package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.d.ts +7 -0
  243. package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.d.ts +46 -0
  244. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +24 -0
  245. package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.d.ts +4 -0
  246. package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.d.ts +16 -0
  247. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.d.ts +28 -0
  248. package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.d.ts +26 -0
  249. package/dist/cjs/lib/v3/understudy/a11yInvocation.d.ts +8 -0
  250. package/dist/cjs/lib/v3/understudy/cdp.d.ts +69 -0
  251. package/dist/cjs/lib/v3/understudy/consoleMessage.d.ts +22 -0
  252. package/dist/cjs/lib/v3/understudy/context.d.ts +132 -0
  253. package/dist/cjs/lib/v3/understudy/deepLocator.d.ts +87 -0
  254. package/dist/cjs/lib/v3/understudy/executionContextRegistry.d.ts +15 -0
  255. package/dist/cjs/lib/v3/understudy/fileUploadUtils.d.ts +13 -0
  256. package/dist/cjs/lib/v3/understudy/frame.d.ts +69 -0
  257. package/dist/cjs/lib/v3/understudy/frameLocator.d.ts +50 -0
  258. package/dist/cjs/lib/v3/understudy/frameRegistry.d.ts +101 -0
  259. package/dist/cjs/lib/v3/understudy/initScripts.d.ts +2 -0
  260. package/dist/cjs/lib/v3/understudy/lifecycleWatcher.d.ts +64 -0
  261. package/dist/cjs/lib/v3/understudy/locator.d.ts +194 -0
  262. package/dist/cjs/lib/v3/understudy/locatorInvocation.d.ts +8 -0
  263. package/dist/cjs/lib/v3/understudy/navigationResponseTracker.d.ts +84 -0
  264. package/dist/cjs/lib/v3/understudy/networkManager.d.ts +53 -0
  265. package/dist/cjs/lib/v3/understudy/page.d.ts +354 -0
  266. package/dist/cjs/lib/v3/understudy/piercer.d.ts +4 -0
  267. package/dist/cjs/lib/v3/understudy/response.d.ts +137 -0
  268. package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +16 -0
  269. package/dist/cjs/lib/v3/understudy/selectorResolver.d.ts +38 -0
  270. package/dist/cjs/lib/v3/v3.d.ts +191 -0
  271. package/dist/cjs/lib/v3/zodCompat.d.ts +12 -0
  272. package/dist/cjs/lib/v3Evaluator.d.ts +19 -0
  273. package/dist/cjs/lib/version.d.ts +5 -0
  274. package/dist/cjs/package.json +3 -0
  275. package/dist/cjs/tests/browserbase-session-accessors.test.js +101 -0
  276. package/dist/cjs/tests/browserbase-session-accessors.test.js.map +7 -0
  277. package/dist/cjs/tests/cache-llm-resolution.test.js +187 -0
  278. package/dist/cjs/tests/cache-llm-resolution.test.js.map +7 -0
  279. package/dist/cjs/tests/helpers/mockCDPSession.js +50 -0
  280. package/dist/cjs/tests/helpers/mockCDPSession.js.map +7 -0
  281. package/dist/cjs/tests/llm-provider.test.js +57 -0
  282. package/dist/cjs/tests/llm-provider.test.js.map +7 -0
  283. package/dist/cjs/tests/model-deprecation.test.js +132 -0
  284. package/dist/cjs/tests/model-deprecation.test.js.map +7 -0
  285. package/dist/cjs/tests/page-snapshot.test.js +58 -0
  286. package/dist/cjs/tests/page-snapshot.test.js.map +7 -0
  287. package/dist/cjs/tests/public-api/export-surface.test.js +76 -0
  288. package/dist/cjs/tests/public-api/export-surface.test.js.map +7 -0
  289. package/dist/cjs/tests/public-api/llm-and-agents.test.js +150 -0
  290. package/dist/cjs/tests/public-api/llm-and-agents.test.js.map +7 -0
  291. package/dist/cjs/tests/public-api/public-error-types.test.js +104 -0
  292. package/dist/cjs/tests/public-api/public-error-types.test.js.map +7 -0
  293. package/dist/cjs/tests/public-api/public-types.test.js +74 -0
  294. package/dist/cjs/tests/public-api/public-types.test.js.map +7 -0
  295. package/dist/cjs/tests/public-api/runtime-utils.test.js +53 -0
  296. package/dist/cjs/tests/public-api/runtime-utils.test.js.map +7 -0
  297. package/dist/cjs/tests/public-api/schema-utils.test.js +100 -0
  298. package/dist/cjs/tests/public-api/schema-utils.test.js.map +7 -0
  299. package/dist/cjs/tests/public-api/timeout-error-types.test.js +103 -0
  300. package/dist/cjs/tests/public-api/timeout-error-types.test.js.map +7 -0
  301. package/dist/cjs/tests/public-api/tool-type-export.test.js +47 -0
  302. package/dist/cjs/tests/public-api/tool-type-export.test.js.map +7 -0
  303. package/dist/cjs/tests/public-api/v3-core.test.js +104 -0
  304. package/dist/cjs/tests/public-api/v3-core.test.js.map +7 -0
  305. package/dist/cjs/tests/safety-confirmation.test.js +134 -0
  306. package/dist/cjs/tests/safety-confirmation.test.js.map +7 -0
  307. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js +370 -0
  308. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js.map +7 -0
  309. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js +294 -0
  310. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js.map +7 -0
  311. package/dist/cjs/tests/snapshot-capture-orchestration.test.js +403 -0
  312. package/dist/cjs/tests/snapshot-capture-orchestration.test.js.map +7 -0
  313. package/dist/cjs/tests/snapshot-cbor.test.js +197 -0
  314. package/dist/cjs/tests/snapshot-cbor.test.js.map +7 -0
  315. package/dist/cjs/tests/snapshot-dom-session-builders.test.js +246 -0
  316. package/dist/cjs/tests/snapshot-dom-session-builders.test.js.map +7 -0
  317. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js +104 -0
  318. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js.map +7 -0
  319. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js +45 -0
  320. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js.map +7 -0
  321. package/dist/cjs/tests/snapshot-frame-merge.test.js +388 -0
  322. package/dist/cjs/tests/snapshot-frame-merge.test.js.map +7 -0
  323. package/dist/cjs/tests/snapshot-tree-format-utils.test.js +106 -0
  324. package/dist/cjs/tests/snapshot-tree-format-utils.test.js.map +7 -0
  325. package/dist/cjs/tests/snapshot-xpath-utils.test.js +74 -0
  326. package/dist/cjs/tests/snapshot-xpath-utils.test.js.map +7 -0
  327. package/dist/cjs/tests/timeout-handlers.test.js +864 -0
  328. package/dist/cjs/tests/timeout-handlers.test.js.map +7 -0
  329. package/dist/cjs/tests/xpath-parser.test.js +314 -0
  330. package/dist/cjs/tests/xpath-parser.test.js.map +7 -0
  331. package/dist/cjs/tests/xpath-resolver.test.js +70 -0
  332. package/dist/cjs/tests/xpath-resolver.test.js.map +7 -0
  333. package/dist/cjs/tests/zod-enum-compatibility.test.js +119 -0
  334. package/dist/cjs/tests/zod-enum-compatibility.test.js.map +7 -0
  335. package/dist/esm/index.d.ts +2 -2
  336. package/dist/esm/lib/v3/api.d.ts +16 -1
  337. package/dist/esm/lib/v3/api.js +41 -5
  338. package/dist/esm/lib/v3/api.js.map +1 -1
  339. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +0 -3
  340. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +22 -20
  341. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  342. package/dist/esm/lib/v3/llm/aisdk.js +5 -2
  343. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  344. package/dist/esm/lib/v3/types/public/api.d.ts +8 -0
  345. package/dist/esm/lib/v3/types/public/api.js +5 -3
  346. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  347. package/dist/esm/lib/v3/types/public/index.d.ts +1 -0
  348. package/dist/esm/lib/v3/types/public/index.js.map +1 -1
  349. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +3 -0
  350. package/dist/esm/lib/v3/types/public/sdkErrors.js +12 -6
  351. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
  352. package/dist/esm/tests/api-multiregion.test.js +73 -0
  353. package/dist/esm/tests/api-multiregion.test.js.map +7 -0
  354. package/dist/esm/tests/public-api/public-error-types.test.js +2 -1
  355. package/dist/esm/tests/public-api/public-error-types.test.js.map +2 -2
  356. package/dist/esm/tests/understudy-command-exception.test.js +55 -0
  357. package/dist/esm/tests/understudy-command-exception.test.js.map +7 -0
  358. package/package.json +1 -1
@@ -0,0 +1,57 @@
1
+ var import_vitest = require("vitest");
2
+ var import_LLMProvider = require("../lib/v3/llm/LLMProvider.js");
3
+ (0, import_vitest.describe)("getAISDKLanguageModel", () => {
4
+ (0, import_vitest.describe)("ollama provider", () => {
5
+ (0, import_vitest.it)("works without clientOptions", () => {
6
+ const model = (0, import_LLMProvider.getAISDKLanguageModel)("ollama", "llama3.2");
7
+ (0, import_vitest.expect)(model).toBeDefined();
8
+ });
9
+ (0, import_vitest.it)("works with empty clientOptions", () => {
10
+ const model = (0, import_LLMProvider.getAISDKLanguageModel)("ollama", "llama3.2", {});
11
+ (0, import_vitest.expect)(model).toBeDefined();
12
+ });
13
+ (0, import_vitest.it)("works with clientOptions containing only undefined values", () => {
14
+ const model = (0, import_LLMProvider.getAISDKLanguageModel)("ollama", "llama3.2", {
15
+ apiKey: void 0
16
+ });
17
+ (0, import_vitest.expect)(model).toBeDefined();
18
+ });
19
+ (0, import_vitest.it)("works with clientOptions containing only null values", () => {
20
+ const model = (0, import_LLMProvider.getAISDKLanguageModel)("ollama", "llama3.2", {
21
+ apiKey: null
22
+ });
23
+ (0, import_vitest.expect)(model).toBeDefined();
24
+ });
25
+ (0, import_vitest.it)("works with custom baseURL", () => {
26
+ const model = (0, import_LLMProvider.getAISDKLanguageModel)("ollama", "llama3.2", {
27
+ baseURL: "http://custom-ollama:11434"
28
+ });
29
+ (0, import_vitest.expect)(model).toBeDefined();
30
+ });
31
+ (0, import_vitest.it)("works even when apiKey is mistakenly provided", () => {
32
+ const model = (0, import_LLMProvider.getAISDKLanguageModel)("ollama", "llama3.2", {
33
+ apiKey: "unnecessary-key"
34
+ });
35
+ (0, import_vitest.expect)(model).toBeDefined();
36
+ });
37
+ });
38
+ (0, import_vitest.describe)("providers with API keys", () => {
39
+ (0, import_vitest.it)("openai requires valid clientOptions for custom configuration", () => {
40
+ const defaultModel = (0, import_LLMProvider.getAISDKLanguageModel)("openai", "gpt-4o");
41
+ (0, import_vitest.expect)(defaultModel).toBeDefined();
42
+ const customModel = (0, import_LLMProvider.getAISDKLanguageModel)("openai", "gpt-4o", {
43
+ apiKey: "test-key"
44
+ });
45
+ (0, import_vitest.expect)(customModel).toBeDefined();
46
+ });
47
+ });
48
+ (0, import_vitest.describe)("hasValidOptions logic", () => {
49
+ (0, import_vitest.it)("treats undefined apiKey as no options", () => {
50
+ const model = (0, import_LLMProvider.getAISDKLanguageModel)("ollama", "llama3.2", {
51
+ apiKey: void 0
52
+ });
53
+ (0, import_vitest.expect)(model).toBeDefined();
54
+ });
55
+ });
56
+ });
57
+ //# sourceMappingURL=llm-provider.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../tests/llm-provider.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from \"vitest\";\nimport { getAISDKLanguageModel } from \"../lib/v3/llm/LLMProvider.js\";\n\ndescribe(\"getAISDKLanguageModel\", () => {\n describe(\"ollama provider\", () => {\n it(\"works without clientOptions\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\");\n expect(model).toBeDefined();\n });\n\n it(\"works with empty clientOptions\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {});\n expect(model).toBeDefined();\n });\n\n it(\"works with clientOptions containing only undefined values\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: undefined,\n });\n expect(model).toBeDefined();\n });\n\n it(\"works with clientOptions containing only null values\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: null as unknown as string,\n });\n expect(model).toBeDefined();\n });\n\n it(\"works with custom baseURL\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n baseURL: \"http://custom-ollama:11434\",\n });\n expect(model).toBeDefined();\n });\n\n it(\"works even when apiKey is mistakenly provided\", () => {\n // Ollama doesn't need an API key, but users might set one anyway\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: \"unnecessary-key\",\n });\n expect(model).toBeDefined();\n });\n });\n\n describe(\"providers with API keys\", () => {\n it(\"openai requires valid clientOptions for custom configuration\", () => {\n // Without clientOptions, uses default provider\n const defaultModel = getAISDKLanguageModel(\"openai\", \"gpt-4o\");\n expect(defaultModel).toBeDefined();\n\n // With valid apiKey, uses custom provider\n const customModel = getAISDKLanguageModel(\"openai\", \"gpt-4o\", {\n apiKey: \"test-key\",\n });\n expect(customModel).toBeDefined();\n });\n });\n\n describe(\"hasValidOptions logic\", () => {\n it(\"treats undefined apiKey as no options\", () => {\n // This should use the default provider path (AISDKProviders)\n // not the custom provider path (AISDKProvidersWithAPIKey)\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: undefined,\n });\n expect(model).toBeDefined();\n });\n });\n});\n"],
5
+ "mappings": "AAAA,oBAAqC;AACrC,yBAAsC;AAAA,IAEtC,wBAAS,yBAAyB,MAAM;AACtC,8BAAS,mBAAmB,MAAM;AAChC,0BAAG,+BAA+B,MAAM;AACtC,YAAM,YAAQ,0CAAsB,UAAU,UAAU;AACxD,gCAAO,KAAK,EAAE,YAAY;AAAA,IAC5B,CAAC;AAED,0BAAG,kCAAkC,MAAM;AACzC,YAAM,YAAQ,0CAAsB,UAAU,YAAY,CAAC,CAAC;AAC5D,gCAAO,KAAK,EAAE,YAAY;AAAA,IAC5B,CAAC;AAED,0BAAG,6DAA6D,MAAM;AACpE,YAAM,YAAQ,0CAAsB,UAAU,YAAY;AAAA,QACxD,QAAQ;AAAA,MACV,CAAC;AACD,gCAAO,KAAK,EAAE,YAAY;AAAA,IAC5B,CAAC;AAED,0BAAG,wDAAwD,MAAM;AAC/D,YAAM,YAAQ,0CAAsB,UAAU,YAAY;AAAA,QACxD,QAAQ;AAAA,MACV,CAAC;AACD,gCAAO,KAAK,EAAE,YAAY;AAAA,IAC5B,CAAC;AAED,0BAAG,6BAA6B,MAAM;AACpC,YAAM,YAAQ,0CAAsB,UAAU,YAAY;AAAA,QACxD,SAAS;AAAA,MACX,CAAC;AACD,gCAAO,KAAK,EAAE,YAAY;AAAA,IAC5B,CAAC;AAED,0BAAG,iDAAiD,MAAM;AAExD,YAAM,YAAQ,0CAAsB,UAAU,YAAY;AAAA,QACxD,QAAQ;AAAA,MACV,CAAC;AACD,gCAAO,KAAK,EAAE,YAAY;AAAA,IAC5B,CAAC;AAAA,EACH,CAAC;AAED,8BAAS,2BAA2B,MAAM;AACxC,0BAAG,gEAAgE,MAAM;AAEvE,YAAM,mBAAe,0CAAsB,UAAU,QAAQ;AAC7D,gCAAO,YAAY,EAAE,YAAY;AAGjC,YAAM,kBAAc,0CAAsB,UAAU,UAAU;AAAA,QAC5D,QAAQ;AAAA,MACV,CAAC;AACD,gCAAO,WAAW,EAAE,YAAY;AAAA,IAClC,CAAC;AAAA,EACH,CAAC;AAED,8BAAS,yBAAyB,MAAM;AACtC,0BAAG,yCAAyC,MAAM;AAGhD,YAAM,YAAQ,0CAAsB,UAAU,YAAY;AAAA,QACxD,QAAQ;AAAA,MACV,CAAC;AACD,gCAAO,KAAK,EAAE,YAAY;AAAA,IAC5B,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,132 @@
1
+ var import_vitest = require("vitest");
2
+ var import_LLMProvider = require("../lib/v3/llm/LLMProvider.js");
3
+ var import_sdkErrors = require("../lib/v3/types/public/sdkErrors.js");
4
+ const mockClientOptions = { apiKey: "test-api-key-for-testing" };
5
+ (0, import_vitest.describe)("Model format deprecation", () => {
6
+ (0, import_vitest.describe)("UnsupportedModelError", () => {
7
+ (0, import_vitest.it)("includes guidance to use provider/model format for unknown model names", () => {
8
+ const error = new import_sdkErrors.UnsupportedModelError([
9
+ "gpt-4o",
10
+ "claude-3-5-sonnet-latest"
11
+ ]);
12
+ (0, import_vitest.expect)(error.message).toContain("provider/model");
13
+ (0, import_vitest.expect)(error.message).toContain(
14
+ "https://docs.stagehand.dev/v3/configuration/models"
15
+ );
16
+ });
17
+ (0, import_vitest.it)("includes example of provider/model format", () => {
18
+ const error = new import_sdkErrors.UnsupportedModelError(["gpt-4o"]);
19
+ (0, import_vitest.expect)(error.message).toContain("openai/gpt-4o");
20
+ (0, import_vitest.expect)(error.message).toContain("anthropic/claude-sonnet-4");
21
+ });
22
+ (0, import_vitest.it)("works with feature parameter", () => {
23
+ const error = new import_sdkErrors.UnsupportedModelError(["gpt-4o"], "extract");
24
+ (0, import_vitest.expect)(error.message).toContain("extract");
25
+ (0, import_vitest.expect)(error.message).toContain("provider/model");
26
+ (0, import_vitest.expect)(error.message).toContain(
27
+ "https://docs.stagehand.dev/v3/configuration/models"
28
+ );
29
+ });
30
+ });
31
+ (0, import_vitest.describe)("LLMProvider.getClient deprecation warning", () => {
32
+ (0, import_vitest.it)("logs deprecation warning for legacy model names", () => {
33
+ const logs = [];
34
+ const logger = (line) => logs.push(line);
35
+ const provider = new import_LLMProvider.LLMProvider(logger);
36
+ const client = provider.getClient("gpt-4o", mockClientOptions);
37
+ (0, import_vitest.expect)(client).toBeDefined();
38
+ const deprecationWarning = logs.find(
39
+ (log) => log.message.toLowerCase().includes("deprecated") || log.message.toLowerCase().includes("deprecation")
40
+ );
41
+ (0, import_vitest.expect)(deprecationWarning).toBeDefined();
42
+ (0, import_vitest.expect)(deprecationWarning.level).toBe(0);
43
+ });
44
+ (0, import_vitest.it)("deprecation warning mentions provider/model format", () => {
45
+ const logs = [];
46
+ const logger = (line) => logs.push(line);
47
+ const provider = new import_LLMProvider.LLMProvider(logger);
48
+ provider.getClient("gpt-4o", mockClientOptions);
49
+ const deprecationWarning = logs.find(
50
+ (log) => log.message.toLowerCase().includes("deprecated") || log.message.toLowerCase().includes("deprecation")
51
+ );
52
+ (0, import_vitest.expect)(deprecationWarning).toBeDefined();
53
+ const message = deprecationWarning.message;
54
+ (0, import_vitest.expect)(message).toContain("provider/model");
55
+ (0, import_vitest.expect)(message).toContain("openai/gpt-5");
56
+ });
57
+ (0, import_vitest.it)("returns OpenAIClient for legacy OpenAI model names", () => {
58
+ const logs = [];
59
+ const logger = (line) => logs.push(line);
60
+ const provider = new import_LLMProvider.LLMProvider(logger);
61
+ const client = provider.getClient("gpt-4o", mockClientOptions);
62
+ (0, import_vitest.expect)(client).toBeDefined();
63
+ (0, import_vitest.expect)(client.constructor.name).toBe("OpenAIClient");
64
+ });
65
+ (0, import_vitest.it)("returns AnthropicClient for legacy Anthropic model names", () => {
66
+ const logs = [];
67
+ const logger = (line) => logs.push(line);
68
+ const provider = new import_LLMProvider.LLMProvider(logger);
69
+ const client = provider.getClient(
70
+ "claude-3-5-sonnet-latest",
71
+ mockClientOptions
72
+ );
73
+ (0, import_vitest.expect)(client).toBeDefined();
74
+ (0, import_vitest.expect)(client.constructor.name).toBe("AnthropicClient");
75
+ });
76
+ });
77
+ (0, import_vitest.describe)("LLMProvider.getClient error handling", () => {
78
+ (0, import_vitest.it)("throws UnsupportedModelError for unknown model without slash", () => {
79
+ const logs = [];
80
+ const logger = (line) => logs.push(line);
81
+ const provider = new import_LLMProvider.LLMProvider(logger);
82
+ (0, import_vitest.expect)(() => {
83
+ provider.getClient("some-unknown-model", mockClientOptions);
84
+ }).toThrow(import_sdkErrors.UnsupportedModelError);
85
+ });
86
+ (0, import_vitest.it)("UnsupportedModelError includes provider/model format guidance", () => {
87
+ const logs = [];
88
+ const logger = (line) => logs.push(line);
89
+ const provider = new import_LLMProvider.LLMProvider(logger);
90
+ try {
91
+ provider.getClient("some-unknown-model", mockClientOptions);
92
+ } catch (error) {
93
+ (0, import_vitest.expect)(error.message).toContain("provider/model");
94
+ }
95
+ });
96
+ (0, import_vitest.it)("throws UnsupportedAISDKModelProviderError for invalid provider in provider/model format", () => {
97
+ const logs = [];
98
+ const logger = (line) => logs.push(line);
99
+ const provider = new import_LLMProvider.LLMProvider(logger);
100
+ (0, import_vitest.expect)(() => {
101
+ provider.getClient("invalid-provider/some-model", mockClientOptions);
102
+ }).toThrow(import_sdkErrors.UnsupportedAISDKModelProviderError);
103
+ });
104
+ (0, import_vitest.it)("UnsupportedAISDKModelProviderError lists valid providers", () => {
105
+ const logs = [];
106
+ const logger = (line) => logs.push(line);
107
+ const provider = new import_LLMProvider.LLMProvider(logger);
108
+ try {
109
+ provider.getClient("invalid-provider/some-model", mockClientOptions);
110
+ } catch (error) {
111
+ const message = error.message;
112
+ (0, import_vitest.expect)(message).toContain("openai");
113
+ (0, import_vitest.expect)(message).toContain("anthropic");
114
+ (0, import_vitest.expect)(message).toContain("google");
115
+ }
116
+ });
117
+ });
118
+ (0, import_vitest.describe)("new provider/model format", () => {
119
+ (0, import_vitest.it)("does not log deprecation warning for provider/model format", () => {
120
+ const logs = [];
121
+ const logger = (line) => logs.push(line);
122
+ const provider = new import_LLMProvider.LLMProvider(logger);
123
+ const client = provider.getClient("openai/gpt-4o", mockClientOptions);
124
+ (0, import_vitest.expect)(client).toBeDefined();
125
+ const deprecationWarning = logs.find(
126
+ (log) => log.message.toLowerCase().includes("deprecated") || log.message.toLowerCase().includes("deprecation")
127
+ );
128
+ (0, import_vitest.expect)(deprecationWarning).toBeUndefined();
129
+ });
130
+ });
131
+ });
132
+ //# sourceMappingURL=model-deprecation.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../tests/model-deprecation.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from \"vitest\";\nimport { LLMProvider } from \"../lib/v3/llm/LLMProvider.js\";\nimport {\n UnsupportedModelError,\n UnsupportedAISDKModelProviderError,\n} from \"../lib/v3/types/public/sdkErrors.js\";\nimport type { LogLine } from \"../lib/v3/types/public/logs.js\";\n\n// Mock client options with fake API keys for testing\nconst mockClientOptions = { apiKey: \"test-api-key-for-testing\" };\n\ndescribe(\"Model format deprecation\", () => {\n describe(\"UnsupportedModelError\", () => {\n it(\"includes guidance to use provider/model format for unknown model names\", () => {\n const error = new UnsupportedModelError([\n \"gpt-4o\",\n \"claude-3-5-sonnet-latest\",\n ]);\n\n // Should mention the new format\n expect(error.message).toContain(\"provider/model\");\n // Should include link to docs\n expect(error.message).toContain(\n \"https://docs.stagehand.dev/v3/configuration/models\",\n );\n });\n\n it(\"includes example of provider/model format\", () => {\n const error = new UnsupportedModelError([\"gpt-4o\"]);\n\n // Should provide examples like openai/gpt-4o\n expect(error.message).toContain(\"openai/gpt-4o\");\n expect(error.message).toContain(\"anthropic/claude-sonnet-4\");\n });\n\n it(\"works with feature parameter\", () => {\n const error = new UnsupportedModelError([\"gpt-4o\"], \"extract\");\n\n expect(error.message).toContain(\"extract\");\n expect(error.message).toContain(\"provider/model\");\n expect(error.message).toContain(\n \"https://docs.stagehand.dev/v3/configuration/models\",\n );\n });\n });\n\n describe(\"LLMProvider.getClient deprecation warning\", () => {\n it(\"logs deprecation warning for legacy model names\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n // Using a legacy model name like \"gpt-4o\" instead of \"openai/gpt-4o\"\n // Should not throw, but should log a deprecation warning\n const client = provider.getClient(\"gpt-4o\", mockClientOptions);\n\n // Should return a client (not throw)\n expect(client).toBeDefined();\n\n // Should have logged a deprecation warning at level 0\n const deprecationWarning = logs.find(\n (log) =>\n log.message.toLowerCase().includes(\"deprecated\") ||\n log.message.toLowerCase().includes(\"deprecation\"),\n );\n expect(deprecationWarning).toBeDefined();\n expect(deprecationWarning!.level).toBe(0);\n });\n\n it(\"deprecation warning mentions provider/model format\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n provider.getClient(\"gpt-4o\", mockClientOptions);\n\n const deprecationWarning = logs.find(\n (log) =>\n log.message.toLowerCase().includes(\"deprecated\") ||\n log.message.toLowerCase().includes(\"deprecation\"),\n );\n\n expect(deprecationWarning).toBeDefined();\n const message = deprecationWarning!.message;\n // Should mention the provider/model format\n expect(message).toContain(\"provider/model\");\n // Should give an example\n expect(message).toContain(\"openai/gpt-5\");\n });\n\n it(\"returns OpenAIClient for legacy OpenAI model names\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n const client = provider.getClient(\"gpt-4o\", mockClientOptions);\n\n // Should return a client\n expect(client).toBeDefined();\n // The client should be an OpenAIClient (check constructor name)\n expect(client.constructor.name).toBe(\"OpenAIClient\");\n });\n\n it(\"returns AnthropicClient for legacy Anthropic model names\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n const client = provider.getClient(\n \"claude-3-5-sonnet-latest\",\n mockClientOptions,\n );\n\n // Should return a client\n expect(client).toBeDefined();\n // The client should be an AnthropicClient\n expect(client.constructor.name).toBe(\"AnthropicClient\");\n });\n });\n\n describe(\"LLMProvider.getClient error handling\", () => {\n it(\"throws UnsupportedModelError for unknown model without slash\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n // Unknown model without slash should throw UnsupportedModelError\n expect(() => {\n provider.getClient(\"some-unknown-model\", mockClientOptions);\n }).toThrow(UnsupportedModelError);\n });\n\n it(\"UnsupportedModelError includes provider/model format guidance\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n try {\n provider.getClient(\"some-unknown-model\", mockClientOptions);\n } catch (error) {\n expect((error as Error).message).toContain(\"provider/model\");\n }\n });\n\n it(\"throws UnsupportedAISDKModelProviderError for invalid provider in provider/model format\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n // Invalid provider but correct format\n expect(() => {\n provider.getClient(\"invalid-provider/some-model\", mockClientOptions);\n }).toThrow(UnsupportedAISDKModelProviderError);\n });\n\n it(\"UnsupportedAISDKModelProviderError lists valid providers\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n try {\n provider.getClient(\"invalid-provider/some-model\", mockClientOptions);\n } catch (error) {\n const message = (error as Error).message;\n // Should list valid providers\n expect(message).toContain(\"openai\");\n expect(message).toContain(\"anthropic\");\n expect(message).toContain(\"google\");\n }\n });\n });\n\n describe(\"new provider/model format\", () => {\n it(\"does not log deprecation warning for provider/model format\", () => {\n const logs: LogLine[] = [];\n const logger = (line: LogLine) => logs.push(line);\n const provider = new LLMProvider(logger);\n\n // Using the new format\n const client = provider.getClient(\"openai/gpt-4o\", mockClientOptions);\n\n expect(client).toBeDefined();\n\n // Should NOT have a deprecation warning\n const deprecationWarning = logs.find(\n (log) =>\n log.message.toLowerCase().includes(\"deprecated\") ||\n log.message.toLowerCase().includes(\"deprecation\"),\n );\n expect(deprecationWarning).toBeUndefined();\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,58 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from))
10
+ if (!__hasOwnProp.call(to, key) && key !== except)
11
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ }
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var import_vitest = require("vitest");
24
+ var import_fs = require("fs");
25
+ var import_page = require("../lib/v3/understudy/page.js");
26
+ var snapshotModule = __toESM(require("../lib/v3/understudy/a11y/snapshot/index.js"), 1);
27
+ const baseSnapshot = {
28
+ combinedTree: "tree",
29
+ combinedXpathMap: {},
30
+ combinedUrlMap: {},
31
+ perFrame: []
32
+ };
33
+ (0, import_vitest.describe)("Page.snapshot", () => {
34
+ (0, import_vitest.afterEach)(() => {
35
+ import_vitest.vi.restoreAllMocks();
36
+ });
37
+ (0, import_vitest.it)("forwards the includeIframes flag to captureHybridSnapshot", async () => {
38
+ import_vitest.vi.spyOn(import_fs.promises, "writeFile").mockResolvedValue();
39
+ const captureSpy = import_vitest.vi.spyOn(snapshotModule, "captureHybridSnapshot").mockResolvedValue(baseSnapshot);
40
+ const fakePage = {};
41
+ await import_page.Page.prototype.snapshot.call(fakePage, { includeIframes: false });
42
+ (0, import_vitest.expect)(captureSpy).toHaveBeenCalledWith(fakePage, {
43
+ pierceShadow: true,
44
+ includeIframes: false
45
+ });
46
+ });
47
+ (0, import_vitest.it)("falls back to default iframe inclusion when option is omitted", async () => {
48
+ import_vitest.vi.spyOn(import_fs.promises, "writeFile").mockResolvedValue();
49
+ const captureSpy = import_vitest.vi.spyOn(snapshotModule, "captureHybridSnapshot").mockResolvedValue(baseSnapshot);
50
+ const fakePage = {};
51
+ await import_page.Page.prototype.snapshot.call(fakePage);
52
+ (0, import_vitest.expect)(captureSpy).toHaveBeenCalledWith(fakePage, {
53
+ pierceShadow: true,
54
+ includeIframes: void 0
55
+ });
56
+ });
57
+ });
58
+ //# sourceMappingURL=page-snapshot.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../tests/page-snapshot.test.ts"],
4
+ "sourcesContent": ["import { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { promises as fs } from \"fs\";\nimport { Page } from \"../lib/v3/understudy/page.js\";\nimport * as snapshotModule from \"../lib/v3/understudy/a11y/snapshot/index.js\";\nimport type { HybridSnapshot } from \"../lib/v3/types/private/index.js\";\n\nconst baseSnapshot: HybridSnapshot = {\n combinedTree: \"tree\",\n combinedXpathMap: {},\n combinedUrlMap: {},\n perFrame: [],\n};\n\ndescribe(\"Page.snapshot\", () => {\n afterEach(() => {\n vi.restoreAllMocks();\n });\n\n it(\"forwards the includeIframes flag to captureHybridSnapshot\", async () => {\n vi.spyOn(fs, \"writeFile\").mockResolvedValue();\n const captureSpy = vi\n .spyOn(snapshotModule, \"captureHybridSnapshot\")\n .mockResolvedValue(baseSnapshot);\n\n const fakePage = {} as Page;\n await Page.prototype.snapshot.call(fakePage, { includeIframes: false });\n\n expect(captureSpy).toHaveBeenCalledWith(fakePage, {\n pierceShadow: true,\n includeIframes: false,\n });\n });\n\n it(\"falls back to default iframe inclusion when option is omitted\", async () => {\n vi.spyOn(fs, \"writeFile\").mockResolvedValue();\n const captureSpy = vi\n .spyOn(snapshotModule, \"captureHybridSnapshot\")\n .mockResolvedValue(baseSnapshot);\n\n const fakePage = {} as Page;\n await Page.prototype.snapshot.call(fakePage);\n\n expect(captureSpy).toHaveBeenCalledWith(fakePage, {\n pierceShadow: true,\n includeIframes: undefined,\n });\n });\n});\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA,oBAAoD;AACpD,gBAA+B;AAC/B,kBAAqB;AACrB,qBAAgC;AAGhC,MAAM,eAA+B;AAAA,EACnC,cAAc;AAAA,EACd,kBAAkB,CAAC;AAAA,EACnB,gBAAgB,CAAC;AAAA,EACjB,UAAU,CAAC;AACb;AAAA,IAEA,wBAAS,iBAAiB,MAAM;AAC9B,+BAAU,MAAM;AACd,qBAAG,gBAAgB;AAAA,EACrB,CAAC;AAED,wBAAG,6DAA6D,YAAY;AAC1E,qBAAG,MAAM,UAAAA,UAAI,WAAW,EAAE,kBAAkB;AAC5C,UAAM,aAAa,iBAChB,MAAM,gBAAgB,uBAAuB,EAC7C,kBAAkB,YAAY;AAEjC,UAAM,WAAW,CAAC;AAClB,UAAM,iBAAK,UAAU,SAAS,KAAK,UAAU,EAAE,gBAAgB,MAAM,CAAC;AAEtE,8BAAO,UAAU,EAAE,qBAAqB,UAAU;AAAA,MAChD,cAAc;AAAA,MACd,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH,CAAC;AAED,wBAAG,iEAAiE,YAAY;AAC9E,qBAAG,MAAM,UAAAA,UAAI,WAAW,EAAE,kBAAkB;AAC5C,UAAM,aAAa,iBAChB,MAAM,gBAAgB,uBAAuB,EAC7C,kBAAkB,YAAY;AAEjC,UAAM,WAAW,CAAC;AAClB,UAAM,iBAAK,UAAU,SAAS,KAAK,QAAQ;AAE3C,8BAAO,UAAU,EAAE,qBAAqB,UAAU;AAAA,MAChD,cAAc;AAAA,MACd,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
6
+ "names": ["fs"]
7
+ }
@@ -0,0 +1,76 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from))
10
+ if (!__hasOwnProp.call(to, key) && key !== except)
11
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ }
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var import_vitest = require("vitest");
24
+ var Stagehand = __toESM(require("@browserbasehq/stagehand"), 1);
25
+ var import_public_error_types_test = require("./public-error-types.test.js");
26
+ const publicApiShape = {
27
+ __internalMaybeRunShutdownSupervisorFromArgv: Stagehand.__internalMaybeRunShutdownSupervisorFromArgv,
28
+ __internalCreateInMemoryAgentCacheHandle: Stagehand.__internalCreateInMemoryAgentCacheHandle,
29
+ AISdkClient: Stagehand.AISdkClient,
30
+ Api: Stagehand.Api,
31
+ AVAILABLE_CUA_MODELS: Stagehand.AVAILABLE_CUA_MODELS,
32
+ AgentProvider: Stagehand.AgentProvider,
33
+ AnnotatedScreenshotText: Stagehand.AnnotatedScreenshotText,
34
+ ConsoleMessage: Stagehand.ConsoleMessage,
35
+ CustomOpenAIClient: Stagehand.CustomOpenAIClient,
36
+ LLMClient: Stagehand.LLMClient,
37
+ LOG_LEVEL_NAMES: Stagehand.LOG_LEVEL_NAMES,
38
+ Response: Stagehand.Response,
39
+ Stagehand: Stagehand.Stagehand,
40
+ V3: Stagehand.V3,
41
+ V3Evaluator: Stagehand.V3Evaluator,
42
+ V3FunctionName: Stagehand.V3FunctionName,
43
+ connectToMCPServer: Stagehand.connectToMCPServer,
44
+ default: Stagehand.default,
45
+ defaultExtractSchema: Stagehand.defaultExtractSchema,
46
+ getAISDKLanguageModel: Stagehand.getAISDKLanguageModel,
47
+ getZodType: Stagehand.getZodType,
48
+ injectUrls: Stagehand.injectUrls,
49
+ isRunningInBun: Stagehand.isRunningInBun,
50
+ isZod3Schema: Stagehand.isZod3Schema,
51
+ isZod4Schema: Stagehand.isZod4Schema,
52
+ jsonSchemaToZod: Stagehand.jsonSchemaToZod,
53
+ loadApiKeyFromEnv: Stagehand.loadApiKeyFromEnv,
54
+ localBrowserLaunchOptionsSchema: Stagehand.localBrowserLaunchOptionsSchema,
55
+ modelToAgentProviderMap: Stagehand.modelToAgentProviderMap,
56
+ pageTextSchema: Stagehand.pageTextSchema,
57
+ providerEnvVarMap: Stagehand.providerEnvVarMap,
58
+ toGeminiSchema: Stagehand.toGeminiSchema,
59
+ toJsonSchema: Stagehand.toJsonSchema,
60
+ tool: Stagehand.tool,
61
+ transformSchema: Stagehand.transformSchema,
62
+ trimTrailingTextNode: Stagehand.trimTrailingTextNode,
63
+ validateZodSchema: Stagehand.validateZodSchema,
64
+ ...import_public_error_types_test.publicErrorTypes
65
+ };
66
+ (0, import_vitest.describe)("Stagehand public API export surface", () => {
67
+ (0, import_vitest.it)("public API shape matches module exports", () => {
68
+ const _check = publicApiShape;
69
+ });
70
+ (0, import_vitest.it)("does not expose unexpected top-level exports", () => {
71
+ const expected = Object.keys(publicApiShape).sort();
72
+ const actual = Object.keys(Stagehand).sort();
73
+ (0, import_vitest.expect)(actual).toStrictEqual(expected);
74
+ });
75
+ });
76
+ //# sourceMappingURL=export-surface.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../tests/public-api/export-surface.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from \"vitest\";\nimport StagehandDefaultExport, * as Stagehand from \"@browserbasehq/stagehand\";\nimport { publicErrorTypes } from \"./public-error-types.test.js\";\n\n// Type matcher guidelines:\n//\n// toEqualTypeOf \u2013 Default. Assert full, deep type equality; any type change should fail.\n// e.g. expectTypeOf<ReturnType<typeof foo>>().toEqualTypeOf<FooResult>()\n//\n// toMatchObjectType \u2013 Assert (part of) an object's shape while allowing extra fields.\n// e.g. expectTypeOf(user).toMatchObjectType<{ id: string; email: string }>()\n//\n// toExtend \u2013 Assert that a type is compatible with a broader contract (assignable/extends).\n// e.g. expectTypeOf<User>().toExtend<BaseUser>()\n\nconst publicApiShape = {\n __internalMaybeRunShutdownSupervisorFromArgv:\n Stagehand.__internalMaybeRunShutdownSupervisorFromArgv,\n __internalCreateInMemoryAgentCacheHandle:\n Stagehand.__internalCreateInMemoryAgentCacheHandle,\n AISdkClient: Stagehand.AISdkClient,\n Api: Stagehand.Api,\n AVAILABLE_CUA_MODELS: Stagehand.AVAILABLE_CUA_MODELS,\n AgentProvider: Stagehand.AgentProvider,\n AnnotatedScreenshotText: Stagehand.AnnotatedScreenshotText,\n ConsoleMessage: Stagehand.ConsoleMessage,\n CustomOpenAIClient: Stagehand.CustomOpenAIClient,\n LLMClient: Stagehand.LLMClient,\n LOG_LEVEL_NAMES: Stagehand.LOG_LEVEL_NAMES,\n Response: Stagehand.Response,\n Stagehand: Stagehand.Stagehand,\n V3: Stagehand.V3,\n V3Evaluator: Stagehand.V3Evaluator,\n V3FunctionName: Stagehand.V3FunctionName,\n connectToMCPServer: Stagehand.connectToMCPServer,\n default: StagehandDefaultExport,\n defaultExtractSchema: Stagehand.defaultExtractSchema,\n getAISDKLanguageModel: Stagehand.getAISDKLanguageModel,\n getZodType: Stagehand.getZodType,\n injectUrls: Stagehand.injectUrls,\n isRunningInBun: Stagehand.isRunningInBun,\n isZod3Schema: Stagehand.isZod3Schema,\n isZod4Schema: Stagehand.isZod4Schema,\n jsonSchemaToZod: Stagehand.jsonSchemaToZod,\n loadApiKeyFromEnv: Stagehand.loadApiKeyFromEnv,\n localBrowserLaunchOptionsSchema: Stagehand.localBrowserLaunchOptionsSchema,\n modelToAgentProviderMap: Stagehand.modelToAgentProviderMap,\n pageTextSchema: Stagehand.pageTextSchema,\n providerEnvVarMap: Stagehand.providerEnvVarMap,\n toGeminiSchema: Stagehand.toGeminiSchema,\n toJsonSchema: Stagehand.toJsonSchema,\n tool: Stagehand.tool,\n transformSchema: Stagehand.transformSchema,\n trimTrailingTextNode: Stagehand.trimTrailingTextNode,\n validateZodSchema: Stagehand.validateZodSchema,\n ...publicErrorTypes,\n} as const;\n\ntype StagehandExports = typeof Stagehand & {\n default: typeof StagehandDefaultExport;\n};\n\ntype PublicAPI = {\n [K in keyof typeof publicApiShape]: StagehandExports[K];\n};\n\ndescribe(\"Stagehand public API export surface\", () => {\n it(\"public API shape matches module exports\", () => {\n const _check: PublicAPI = publicApiShape;\n void _check;\n });\n\n it(\"does not expose unexpected top-level exports\", () => {\n const expected = Object.keys(publicApiShape).sort();\n const actual = Object.keys(Stagehand).sort();\n expect(actual).toStrictEqual(expected);\n });\n});\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA,oBAAqC;AACrC,gBAAmD;AACnD,qCAAiC;AAajC,MAAM,iBAAiB;AAAA,EACrB,8CACE,UAAU;AAAA,EACZ,0CACE,UAAU;AAAA,EACZ,aAAa,UAAU;AAAA,EACvB,KAAK,UAAU;AAAA,EACf,sBAAsB,UAAU;AAAA,EAChC,eAAe,UAAU;AAAA,EACzB,yBAAyB,UAAU;AAAA,EACnC,gBAAgB,UAAU;AAAA,EAC1B,oBAAoB,UAAU;AAAA,EAC9B,WAAW,UAAU;AAAA,EACrB,iBAAiB,UAAU;AAAA,EAC3B,UAAU,UAAU;AAAA,EACpB,WAAW,UAAU;AAAA,EACrB,IAAI,UAAU;AAAA,EACd,aAAa,UAAU;AAAA,EACvB,gBAAgB,UAAU;AAAA,EAC1B,oBAAoB,UAAU;AAAA,EAC9B,SAAS,UAAAA;AAAA,EACT,sBAAsB,UAAU;AAAA,EAChC,uBAAuB,UAAU;AAAA,EACjC,YAAY,UAAU;AAAA,EACtB,YAAY,UAAU;AAAA,EACtB,gBAAgB,UAAU;AAAA,EAC1B,cAAc,UAAU;AAAA,EACxB,cAAc,UAAU;AAAA,EACxB,iBAAiB,UAAU;AAAA,EAC3B,mBAAmB,UAAU;AAAA,EAC7B,iCAAiC,UAAU;AAAA,EAC3C,yBAAyB,UAAU;AAAA,EACnC,gBAAgB,UAAU;AAAA,EAC1B,mBAAmB,UAAU;AAAA,EAC7B,gBAAgB,UAAU;AAAA,EAC1B,cAAc,UAAU;AAAA,EACxB,MAAM,UAAU;AAAA,EAChB,iBAAiB,UAAU;AAAA,EAC3B,sBAAsB,UAAU;AAAA,EAChC,mBAAmB,UAAU;AAAA,EAC7B,GAAG;AACL;AAAA,IAUA,wBAAS,uCAAuC,MAAM;AACpD,wBAAG,2CAA2C,MAAM;AAClD,UAAM,SAAoB;AAAA,EAE5B,CAAC;AAED,wBAAG,gDAAgD,MAAM;AACvD,UAAM,WAAW,OAAO,KAAK,cAAc,EAAE,KAAK;AAClD,UAAM,SAAS,OAAO,KAAK,SAAS,EAAE,KAAK;AAC3C,8BAAO,MAAM,EAAE,cAAc,QAAQ;AAAA,EACvC,CAAC;AACH,CAAC;",
6
+ "names": ["StagehandDefaultExport"]
7
+ }
@@ -0,0 +1,150 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") {
9
+ for (let key of __getOwnPropNames(from))
10
+ if (!__hasOwnProp.call(to, key) && key !== except)
11
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ }
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var import_vitest = require("vitest");
24
+ var Stagehand = __toESM(require("@browserbasehq/stagehand"), 1);
25
+ (0, import_vitest.describe)("LLM and Agents public API types", () => {
26
+ (0, import_vitest.describe)("AISdkClient", () => {
27
+ (0, import_vitest.it)("is exported", () => {
28
+ (0, import_vitest.expect)(Stagehand.AISdkClient).toBeDefined();
29
+ });
30
+ (0, import_vitest.it)("extends LLMClient", () => {
31
+ (0, import_vitest.expectTypeOf)().toExtend();
32
+ });
33
+ (0, import_vitest.it)("constructor accepts model parameter", () => {
34
+ (0, import_vitest.expectTypeOf)().toEqualTypeOf();
35
+ });
36
+ });
37
+ (0, import_vitest.describe)("AVAILABLE_CUA_MODELS", () => {
38
+ const expectedModels = [
39
+ "openai/computer-use-preview",
40
+ "openai/computer-use-preview-2025-03-11",
41
+ "anthropic/claude-3-7-sonnet-latest",
42
+ "anthropic/claude-opus-4-5-20251101",
43
+ "anthropic/claude-opus-4-6",
44
+ "anthropic/claude-haiku-4-5-20251001",
45
+ "anthropic/claude-sonnet-4-20250514",
46
+ "anthropic/claude-sonnet-4-5-20250929",
47
+ "google/gemini-2.5-computer-use-preview-10-2025",
48
+ "google/gemini-3-flash-preview",
49
+ "google/gemini-3-pro-preview",
50
+ "microsoft/fara-7b"
51
+ ];
52
+ (0, import_vitest.it)("AvailableCuaModel matches the known literals", () => {
53
+ (0, import_vitest.expectTypeOf)().toEqualTypeOf();
54
+ });
55
+ });
56
+ (0, import_vitest.describe)("AgentProvider", () => {
57
+ (0, import_vitest.it)("is exported", () => {
58
+ (0, import_vitest.expect)(Stagehand.AgentProvider).toBeDefined();
59
+ });
60
+ (0, import_vitest.it)("has getClient method", () => {
61
+ (0, import_vitest.expectTypeOf)().toBeCallableWith(
62
+ "test-model"
63
+ );
64
+ });
65
+ (0, import_vitest.it)("constructor accepts logger parameter", () => {
66
+ (0, import_vitest.expectTypeOf)().toEqualTypeOf();
67
+ });
68
+ });
69
+ (0, import_vitest.describe)("AnnotatedScreenshotText", () => {
70
+ (0, import_vitest.it)("is a string literal", () => {
71
+ (0, import_vitest.expectTypeOf)().toExtend();
72
+ });
73
+ });
74
+ (0, import_vitest.describe)("ConsoleMessage", () => {
75
+ (0, import_vitest.it)("has correct public interface shape", () => {
76
+ (0, import_vitest.expectTypeOf)().toExtend();
77
+ });
78
+ });
79
+ (0, import_vitest.describe)("AgentClient", () => {
80
+ (0, import_vitest.it)("getClient returns object with expected methods", () => {
81
+ (0, import_vitest.expectTypeOf)().toExtend();
82
+ });
83
+ });
84
+ (0, import_vitest.describe)("LLMClient", () => {
85
+ (0, import_vitest.it)("has correct public interface shape", () => {
86
+ (0, import_vitest.expectTypeOf)().toExtend();
87
+ });
88
+ (0, import_vitest.it)("constructor parameters match expected signature", () => {
89
+ (0, import_vitest.expectTypeOf)().toEqualTypeOf();
90
+ });
91
+ (0, import_vitest.it)("createChatCompletion can be called with basic options", () => {
92
+ (0, import_vitest.expectTypeOf)().toBeCallableWith({
93
+ options: {
94
+ messages: [
95
+ {
96
+ role: "user",
97
+ content: "Hello"
98
+ }
99
+ ]
100
+ },
101
+ logger: () => {
102
+ }
103
+ });
104
+ });
105
+ (0, import_vitest.it)("createChatCompletion can be called with response_model", () => {
106
+ const mockSchema = {};
107
+ (0, import_vitest.expectTypeOf)().toBeCallableWith({
108
+ options: {
109
+ messages: [
110
+ {
111
+ role: "user",
112
+ content: "Extract data"
113
+ }
114
+ ],
115
+ response_model: {
116
+ name: "extracted",
117
+ schema: mockSchema
118
+ }
119
+ },
120
+ logger: () => {
121
+ }
122
+ });
123
+ });
124
+ (0, import_vitest.it)("createChatCompletion supports generic return type", () => {
125
+ (0, import_vitest.expectTypeOf)().toExtend();
126
+ });
127
+ (0, import_vitest.it)("has additional methods", () => {
128
+ (0, import_vitest.expectTypeOf)().toExtend();
129
+ (0, import_vitest.expectTypeOf)().toExtend();
130
+ (0, import_vitest.expectTypeOf)().toExtend();
131
+ (0, import_vitest.expectTypeOf)().toExtend();
132
+ (0, import_vitest.expectTypeOf)().toExtend();
133
+ (0, import_vitest.expectTypeOf)().toExtend();
134
+ (0, import_vitest.expectTypeOf)().toExtend();
135
+ (0, import_vitest.expectTypeOf)().toExtend();
136
+ (0, import_vitest.expectTypeOf)().toExtend();
137
+ });
138
+ });
139
+ (0, import_vitest.describe)("modelToAgentProviderMap", () => {
140
+ (0, import_vitest.it)("only stores valid provider types", () => {
141
+ (0, import_vitest.expectTypeOf)().toExtend();
142
+ });
143
+ });
144
+ (0, import_vitest.describe)("Response", () => {
145
+ (0, import_vitest.it)("has correct public interface shape", () => {
146
+ (0, import_vitest.expectTypeOf)().toExtend();
147
+ });
148
+ });
149
+ });
150
+ //# sourceMappingURL=llm-and-agents.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../tests/public-api/llm-and-agents.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, expectTypeOf, it } from \"vitest\";\nimport * as Stagehand from \"@browserbasehq/stagehand\";\n\ndescribe(\"LLM and Agents public API types\", () => {\n describe(\"AISdkClient\", () => {\n type AISdkClientInstance = InstanceType<typeof Stagehand.AISdkClient>;\n\n it(\"is exported\", () => {\n expect(Stagehand.AISdkClient).toBeDefined();\n });\n\n it(\"extends LLMClient\", () => {\n expectTypeOf<AISdkClientInstance>().toExtend<Stagehand.LLMClient>();\n });\n\n it(\"constructor accepts model parameter\", () => {\n // AISdkClient constructor takes { model: LanguageModelV2 }\n type CtorParams = ConstructorParameters<typeof Stagehand.AISdkClient>;\n expectTypeOf<CtorParams[\"length\"]>().toEqualTypeOf<1>();\n });\n });\n\n describe(\"AVAILABLE_CUA_MODELS\", () => {\n const expectedModels = [\n \"openai/computer-use-preview\",\n \"openai/computer-use-preview-2025-03-11\",\n \"anthropic/claude-3-7-sonnet-latest\",\n \"anthropic/claude-opus-4-5-20251101\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-haiku-4-5-20251001\",\n \"anthropic/claude-sonnet-4-20250514\",\n \"anthropic/claude-sonnet-4-5-20250929\",\n \"google/gemini-2.5-computer-use-preview-10-2025\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-preview\",\n \"microsoft/fara-7b\",\n ] as const;\n\n it(\"AvailableCuaModel matches the known literals\", () => {\n expectTypeOf<Stagehand.AvailableCuaModel>().toEqualTypeOf<\n (typeof expectedModels)[number]\n >();\n void expectedModels; // Mark as used to satisfy ESLint\n });\n });\n\n describe(\"AgentProvider\", () => {\n type AgentProviderInstance = InstanceType<typeof Stagehand.AgentProvider>;\n\n it(\"is exported\", () => {\n expect(Stagehand.AgentProvider).toBeDefined();\n });\n\n it(\"has getClient method\", () => {\n expectTypeOf<AgentProviderInstance[\"getClient\"]>().toBeCallableWith(\n \"test-model\",\n );\n });\n\n it(\"constructor accepts logger parameter\", () => {\n expectTypeOf<\n ConstructorParameters<typeof Stagehand.AgentProvider>\n >().toEqualTypeOf<[(message: Stagehand.LogLine) => void]>();\n });\n });\n\n describe(\"AnnotatedScreenshotText\", () => {\n type ExpectedAnnotatedScreenshotText = string;\n\n it(\"is a string literal\", () => {\n expectTypeOf<\n typeof Stagehand.AnnotatedScreenshotText\n >().toExtend<ExpectedAnnotatedScreenshotText>();\n });\n });\n\n describe(\"ConsoleMessage\", () => {\n type ExpectedShape = {\n type: () => string;\n text: () => string;\n args: () => unknown[];\n location: () => {\n url?: string;\n lineNumber?: number;\n columnNumber?: number;\n };\n page: () => unknown;\n timestamp: () => number | undefined;\n raw: () => unknown;\n toString: () => string;\n };\n\n type ConsoleMessageInstance = InstanceType<typeof Stagehand.ConsoleMessage>;\n\n it(\"has correct public interface shape\", () => {\n expectTypeOf<ConsoleMessageInstance>().toExtend<ExpectedShape>();\n });\n });\n\n describe(\"AgentClient\", () => {\n type AgentProviderInstance = InstanceType<typeof Stagehand.AgentProvider>;\n type GetClientReturn = ReturnType<AgentProviderInstance[\"getClient\"]>;\n\n it(\"getClient returns object with expected methods\", () => {\n type ExpectedShape = {\n execute: (\n options: Stagehand.AgentExecutionOptions,\n ) => Promise<Stagehand.AgentResult>;\n captureScreenshot: (\n options?: Record<string, unknown>,\n ) => Promise<unknown>;\n setViewport: (width: number, height: number) => void;\n setCurrentUrl: (url: string) => void;\n setScreenshotProvider: (provider: () => Promise<string>) => void;\n setActionHandler: (\n handler: (action: Stagehand.AgentAction) => Promise<void>,\n ) => void;\n };\n expectTypeOf<GetClientReturn>().toExtend<ExpectedShape>();\n });\n });\n\n describe(\"LLMClient\", () => {\n type ExpectedShape = {\n type: \"openai\" | \"anthropic\" | \"cerebras\" | \"groq\" | (string & {});\n modelName: Stagehand.AvailableModel | (string & {});\n hasVision: boolean;\n clientOptions: Stagehand.ClientOptions;\n userProvidedInstructions?: string;\n };\n\n type ExpectedCtorParams = [Stagehand.AvailableModel, string?];\n\n type ExpectedBasicOptions = {\n options: {\n messages: Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string | Array<unknown>;\n }>;\n };\n logger: (message: unknown) => void;\n retries?: number;\n };\n\n type ExpectedWithResponseModel = ExpectedBasicOptions & {\n options: ExpectedBasicOptions[\"options\"] & {\n response_model: {\n name: string;\n schema: Stagehand.StagehandZodSchema;\n };\n };\n };\n\n type LLMClientInstance = InstanceType<typeof Stagehand.LLMClient>;\n\n it(\"has correct public interface shape\", () => {\n expectTypeOf<LLMClientInstance>().toExtend<ExpectedShape>();\n });\n\n it(\"constructor parameters match expected signature\", () => {\n expectTypeOf<\n ConstructorParameters<typeof Stagehand.LLMClient>\n >().toEqualTypeOf<ExpectedCtorParams>();\n });\n\n it(\"createChatCompletion can be called with basic options\", () => {\n expectTypeOf<\n LLMClientInstance[\"createChatCompletion\"]\n >().toBeCallableWith({\n options: {\n messages: [\n {\n role: \"user\",\n content: \"Hello\",\n },\n ],\n },\n logger: () => {},\n } satisfies ExpectedBasicOptions);\n });\n\n it(\"createChatCompletion can be called with response_model\", () => {\n const mockSchema = {} as Stagehand.StagehandZodSchema;\n expectTypeOf<\n LLMClientInstance[\"createChatCompletion\"]\n >().toBeCallableWith({\n options: {\n messages: [\n {\n role: \"user\",\n content: \"Extract data\",\n },\n ],\n response_model: {\n name: \"extracted\",\n schema: mockSchema,\n },\n },\n logger: () => {},\n } satisfies ExpectedWithResponseModel);\n });\n\n it(\"createChatCompletion supports generic return type\", () => {\n type Result = { custom: string };\n type ExpectedSignature = (\n options: Stagehand.CreateChatCompletionOptions,\n ) => Promise<Result>;\n\n expectTypeOf<\n LLMClientInstance[\"createChatCompletion\"]\n >().toExtend<ExpectedSignature>();\n });\n\n it(\"has additional methods\", () => {\n // These methods exist on LLMClient but have complex signatures from the 'ai' library\n // We verify they exist by checking they're functions\n expectTypeOf<LLMClientInstance[\"generateText\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"generateObject\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"streamText\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"streamObject\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"generateImage\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"embed\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"embedMany\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"transcribe\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n expectTypeOf<LLMClientInstance[\"generateSpeech\"]>().toExtend<\n (...args: unknown[]) => unknown\n >();\n });\n });\n\n describe(\"modelToAgentProviderMap\", () => {\n type ExpectedModelToAgentProviderMap = Record<\n string,\n Stagehand.AgentProviderType\n >;\n\n it(\"only stores valid provider types\", () => {\n expectTypeOf<\n typeof Stagehand.modelToAgentProviderMap\n >().toExtend<ExpectedModelToAgentProviderMap>();\n });\n });\n\n describe(\"Response\", () => {\n type ExpectedShape = {\n url: () => string;\n status: () => number;\n statusText: () => string;\n ok: () => boolean;\n frame: () => unknown;\n fromServiceWorker: () => boolean;\n securityDetails: () => Promise<unknown>;\n serverAddr: () => Promise<unknown>;\n headers: () => Record<string, string>;\n allHeaders: () => Promise<Record<string, string>>;\n headerValue: (name: string) => Promise<string | null>;\n headerValues: (name: string) => Promise<string[]>;\n headersArray: () => Promise<Array<{ name: string; value: string }>>;\n body: () => Promise<Buffer>;\n text: () => Promise<string>;\n json: <T = unknown>() => Promise<T>;\n finished: () => Promise<null | Error>;\n markFinished: (error: Error | null) => void;\n applyExtraInfo: (info: unknown) => void;\n };\n\n type ResponseInstance = InstanceType<typeof Stagehand.Response>;\n\n it(\"has correct public interface shape\", () => {\n expectTypeOf<ResponseInstance>().toExtend<ExpectedShape>();\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }