@browserbasehq/orca 3.0.9-alpha-4 → 3.1.0-patch.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli.js +183 -0
- package/dist/cjs/cli.js.map +7 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +24956 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/lib/inference.d.ts +65 -0
- package/dist/cjs/lib/inferenceLogUtils.d.ts +12 -0
- package/dist/cjs/lib/logger.d.ts +69 -0
- package/dist/cjs/lib/modelUtils.d.ts +11 -0
- package/dist/cjs/lib/prompt.d.ts +14 -0
- package/dist/cjs/lib/utils.d.ts +68 -0
- package/dist/cjs/lib/v3/agent/AgentClient.d.ts +19 -0
- package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +20 -0
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.d.ts +57 -0
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.d.ts +74 -0
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.d.ts +71 -0
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +69 -0
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/act.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +5 -0
- package/dist/cjs/lib/v3/agent/tools/click.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/clickAndHold.d.ts +14 -0
- package/dist/cjs/lib/v3/agent/tools/dragAndDrop.d.ts +7 -0
- package/dist/cjs/lib/v3/agent/tools/extract.d.ts +20 -0
- package/dist/cjs/lib/v3/agent/tools/fillFormVision.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/goto.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/tools/index.d.ts +92 -0
- package/dist/cjs/lib/v3/agent/tools/keys.d.ts +24 -0
- package/dist/cjs/lib/v3/agent/tools/navback.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/scroll.d.ts +19 -0
- package/dist/cjs/lib/v3/agent/tools/search.d.ts +15 -0
- package/dist/cjs/lib/v3/agent/tools/think.d.ts +6 -0
- package/dist/cjs/lib/v3/agent/tools/type.d.ts +7 -0
- package/dist/cjs/lib/v3/agent/tools/wait.d.ts +5 -0
- package/dist/cjs/lib/v3/agent/utils/actionMapping.d.ts +3 -0
- package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.d.ts +13 -0
- package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.d.ts +10 -0
- package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.d.ts +25 -0
- package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.d.ts +22 -0
- package/dist/cjs/lib/v3/agent/utils/imageCompression.d.ts +53 -0
- package/dist/cjs/lib/v3/agent/utils/messageProcessing.d.ts +12 -0
- package/dist/cjs/lib/v3/agent/utils/screenshotHandler.d.ts +10 -0
- package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.d.ts +26 -0
- package/dist/cjs/lib/v3/agent/utils/xpath.d.ts +11 -0
- package/dist/cjs/lib/v3/api.d.ts +86 -0
- package/dist/cjs/lib/v3/cache/ActCache.d.ts +23 -0
- package/dist/cjs/lib/v3/cache/AgentCache.d.ts +109 -0
- package/dist/cjs/lib/v3/cache/CacheStorage.d.ts +17 -0
- package/dist/cjs/lib/v3/cache/serverAgentCache.d.ts +7 -0
- package/dist/cjs/lib/v3/cache/utils.d.ts +15 -0
- package/dist/cjs/lib/v3/cli.d.ts +2 -0
- package/dist/cjs/lib/v3/dom/a11yScripts/index.d.ts +11 -0
- package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.d.ts +16 -0
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.d.ts +52 -0
- package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/build/rerender-index.d.ts +0 -0
- package/dist/cjs/lib/v3/dom/build/rerender-index.js +1 -0
- package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.d.ts +4 -0
- package/dist/cjs/lib/v3/dom/build/scriptV3Content.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/build/v3-index.d.ts +0 -0
- package/dist/cjs/lib/v3/dom/build/v3-index.js +1 -0
- package/dist/cjs/lib/v3/dom/genA11yScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/genDomScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/genLocatorScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/genScreenshotScripts.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/index.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/counts.d.ts +15 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/index.d.ts +4 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/scripts.d.ts +37 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/selectors.d.ts +4 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.d.ts +19 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.d.ts +76 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.d.ts +9 -0
- package/dist/cjs/lib/v3/dom/piercer.entry.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/piercer.runtime.d.ts +23 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/index.d.ts +1 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.d.ts +8 -0
- package/dist/cjs/lib/v3/external_clients/aisdk.d.ts +11 -0
- package/dist/cjs/lib/v3/external_clients/customOpenAI.d.ts +18 -0
- package/dist/cjs/lib/v3/flowLogger.d.ts +139 -0
- package/dist/cjs/lib/v3/handlers/actHandler.d.ts +21 -0
- package/dist/cjs/lib/v3/handlers/extractHandler.d.ts +31 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +24 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.d.ts +2 -0
- package/dist/cjs/lib/v3/handlers/observeHandler.d.ts +17 -0
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +32 -0
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +33 -0
- package/dist/cjs/lib/v3/index.d.ts +18 -0
- package/dist/cjs/lib/v3/launch/browserbase.d.ts +7 -0
- package/dist/cjs/lib/v3/launch/local.d.ts +15 -0
- package/dist/cjs/lib/v3/llm/AnthropicClient.d.ts +16 -0
- package/dist/cjs/lib/v3/llm/CerebrasClient.d.ts +17 -0
- package/dist/cjs/lib/v3/llm/GoogleClient.d.ts +19 -0
- package/dist/cjs/lib/v3/llm/GroqClient.d.ts +17 -0
- package/dist/cjs/lib/v3/llm/LLMClient.d.ts +121 -0
- package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +13 -0
- package/dist/cjs/lib/v3/llm/OpenAIClient.d.ts +15 -0
- package/dist/cjs/lib/v3/llm/aisdk.d.ts +15 -0
- package/dist/cjs/lib/v3/logger.d.ts +9 -0
- package/dist/cjs/lib/v3/mcp/connection.d.ts +11 -0
- package/dist/cjs/lib/v3/mcp/utils.d.ts +3 -0
- package/dist/cjs/lib/v3/shutdown/cleanupLocal.d.ts +14 -0
- package/dist/cjs/lib/v3/shutdown/supervisor.d.ts +11 -0
- package/dist/cjs/lib/v3/shutdown/supervisorClient.d.ts +15 -0
- package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js +113 -0
- package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js +102 -0
- package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js +374 -0
- package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js +354 -0
- package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js +247 -0
- package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js +105 -0
- package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/agent-streaming.spec.js +126 -0
- package/dist/cjs/lib/v3/tests/agent-streaming.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js +44 -0
- package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/click-count.spec.js +147 -0
- package/dist/cjs/lib/v3/tests/click-count.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js +54 -0
- package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js +176 -0
- package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js +53 -0
- package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/downloads.spec.js +80 -0
- package/dist/cjs/lib/v3/tests/downloads.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js +53 -0
- package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js +493 -0
- package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keep-alive.child.js +92 -0
- package/dist/cjs/lib/v3/tests/keep-alive.child.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keep-alive.helpers.js +568 -0
- package/dist/cjs/lib/v3/tests/keep-alive.helpers.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keep-alive.spec.js +15 -0
- package/dist/cjs/lib/v3/tests/keep-alive.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/keyboard.spec.js +296 -0
- package/dist/cjs/lib/v3/tests/keyboard.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js +159 -0
- package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js +191 -0
- package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js +108 -0
- package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-count.spec.js +71 -0
- package/dist/cjs/lib/v3/tests/locator-count.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-fill.spec.js +118 -0
- package/dist/cjs/lib/v3/tests/locator-fill.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js +136 -0
- package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-nth.spec.js +157 -0
- package/dist/cjs/lib/v3/tests/locator-nth.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/locator-select-option.spec.js +242 -0
- package/dist/cjs/lib/v3/tests/locator-select-option.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/logger-initialization.spec.js +547 -0
- package/dist/cjs/lib/v3/tests/logger-initialization.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js +269 -0
- package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/nested-div.spec.js +23 -0
- package/dist/cjs/lib/v3/tests/nested-div.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js +90 -0
- package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-console.spec.js +56 -0
- package/dist/cjs/lib/v3/tests/page-console.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js +418 -0
- package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-goto-response.spec.js +35 -0
- package/dist/cjs/lib/v3/tests/page-goto-response.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-hover.spec.js +167 -0
- package/dist/cjs/lib/v3/tests/page-hover.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-screenshot.spec.js +295 -0
- package/dist/cjs/lib/v3/tests/page-screenshot.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-scroll.spec.js +182 -0
- package/dist/cjs/lib/v3/tests/page-scroll.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js +46 -0
- package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js +98 -0
- package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/setinputfiles.spec.js +148 -0
- package/dist/cjs/lib/v3/tests/setinputfiles.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js +156 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js +156 -0
- package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/testUtils.js +54 -0
- package/dist/cjs/lib/v3/tests/testUtils.js.map +7 -0
- package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js +100 -0
- package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/timeouts.spec.js +32 -0
- package/dist/cjs/lib/v3/tests/timeouts.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/user-data-dir.spec.js +65 -0
- package/dist/cjs/lib/v3/tests/user-data-dir.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/v3.config.js +36 -0
- package/dist/cjs/lib/v3/tests/v3.config.js.map +7 -0
- package/dist/cjs/lib/v3/tests/v3.dynamic.config.js +67 -0
- package/dist/cjs/lib/v3/tests/v3.dynamic.config.js.map +7 -0
- package/dist/cjs/lib/v3/tests/v3.playwright.config.js +61 -0
- package/dist/cjs/lib/v3/tests/v3.playwright.config.js.map +7 -0
- package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js +593 -0
- package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js +97 -0
- package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js.map +7 -0
- package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js +77 -0
- package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js.map +7 -0
- package/dist/cjs/lib/v3/timeoutConfig.d.ts +2 -0
- package/dist/cjs/lib/v3/types/private/agent.d.ts +6 -0
- package/dist/cjs/lib/v3/types/private/api.d.ts +11 -0
- package/dist/cjs/lib/v3/types/private/cache.d.ts +128 -0
- package/dist/cjs/lib/v3/types/private/evaluator.d.ts +40 -0
- package/dist/cjs/lib/v3/types/private/handlers.d.ts +38 -0
- package/dist/cjs/lib/v3/types/private/index.d.ts +7 -0
- package/dist/cjs/lib/v3/types/private/internal.d.ts +39 -0
- package/dist/cjs/lib/v3/types/private/locator.d.ts +9 -0
- package/dist/cjs/lib/v3/types/private/network.d.ts +34 -0
- package/dist/cjs/lib/v3/types/private/shutdown.d.ts +19 -0
- package/dist/cjs/lib/v3/types/private/shutdownErrors.d.ts +12 -0
- package/dist/cjs/lib/v3/types/private/snapshot.d.ts +117 -0
- package/dist/cjs/lib/v3/types/public/agent.d.ts +595 -0
- package/dist/cjs/lib/v3/types/public/api.d.ts +1211 -0
- package/dist/cjs/lib/v3/types/public/apiErrors.d.ts +18 -0
- package/dist/cjs/lib/v3/types/public/index.d.ts +12 -0
- package/dist/cjs/lib/v3/types/public/locator.d.ts +9 -0
- package/dist/cjs/lib/v3/types/public/logs.d.ts +23 -0
- package/dist/cjs/lib/v3/types/public/methods.d.ts +56 -0
- package/dist/cjs/lib/v3/types/public/metrics.d.ts +27 -0
- package/dist/cjs/lib/v3/types/public/model.d.ts +65 -0
- package/dist/cjs/lib/v3/types/public/options.d.ts +70 -0
- package/dist/cjs/lib/v3/types/public/page.d.ts +18 -0
- package/dist/cjs/lib/v3/types/public/screenshotTypes.d.ts +25 -0
- package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +152 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.d.ts +15 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.d.ts +8 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.d.ts +77 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.d.ts +7 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.d.ts +46 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +24 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.d.ts +4 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.d.ts +16 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.d.ts +28 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.d.ts +26 -0
- package/dist/cjs/lib/v3/understudy/a11yInvocation.d.ts +8 -0
- package/dist/cjs/lib/v3/understudy/cdp.d.ts +69 -0
- package/dist/cjs/lib/v3/understudy/consoleMessage.d.ts +22 -0
- package/dist/cjs/lib/v3/understudy/context.d.ts +132 -0
- package/dist/cjs/lib/v3/understudy/deepLocator.d.ts +87 -0
- package/dist/cjs/lib/v3/understudy/executionContextRegistry.d.ts +15 -0
- package/dist/cjs/lib/v3/understudy/fileUploadUtils.d.ts +13 -0
- package/dist/cjs/lib/v3/understudy/frame.d.ts +69 -0
- package/dist/cjs/lib/v3/understudy/frameLocator.d.ts +50 -0
- package/dist/cjs/lib/v3/understudy/frameRegistry.d.ts +101 -0
- package/dist/cjs/lib/v3/understudy/initScripts.d.ts +2 -0
- package/dist/cjs/lib/v3/understudy/lifecycleWatcher.d.ts +64 -0
- package/dist/cjs/lib/v3/understudy/locator.d.ts +194 -0
- package/dist/cjs/lib/v3/understudy/locatorInvocation.d.ts +8 -0
- package/dist/cjs/lib/v3/understudy/navigationResponseTracker.d.ts +84 -0
- package/dist/cjs/lib/v3/understudy/networkManager.d.ts +53 -0
- package/dist/cjs/lib/v3/understudy/page.d.ts +354 -0
- package/dist/cjs/lib/v3/understudy/piercer.d.ts +4 -0
- package/dist/cjs/lib/v3/understudy/response.d.ts +137 -0
- package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +16 -0
- package/dist/cjs/lib/v3/understudy/selectorResolver.d.ts +38 -0
- package/dist/cjs/lib/v3/v3.d.ts +191 -0
- package/dist/cjs/lib/v3/zodCompat.d.ts +12 -0
- package/dist/cjs/lib/v3Evaluator.d.ts +19 -0
- package/dist/cjs/lib/version.d.ts +5 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/tests/browserbase-session-accessors.test.js +101 -0
- package/dist/cjs/tests/browserbase-session-accessors.test.js.map +7 -0
- package/dist/cjs/tests/cache-llm-resolution.test.js +187 -0
- package/dist/cjs/tests/cache-llm-resolution.test.js.map +7 -0
- package/dist/cjs/tests/helpers/mockCDPSession.js +50 -0
- package/dist/cjs/tests/helpers/mockCDPSession.js.map +7 -0
- package/dist/cjs/tests/llm-provider.test.js +57 -0
- package/dist/cjs/tests/llm-provider.test.js.map +7 -0
- package/dist/cjs/tests/model-deprecation.test.js +132 -0
- package/dist/cjs/tests/model-deprecation.test.js.map +7 -0
- package/dist/cjs/tests/page-snapshot.test.js +58 -0
- package/dist/cjs/tests/page-snapshot.test.js.map +7 -0
- package/dist/cjs/tests/public-api/export-surface.test.js +76 -0
- package/dist/cjs/tests/public-api/export-surface.test.js.map +7 -0
- package/dist/cjs/tests/public-api/llm-and-agents.test.js +150 -0
- package/dist/cjs/tests/public-api/llm-and-agents.test.js.map +7 -0
- package/dist/cjs/tests/public-api/public-error-types.test.js +104 -0
- package/dist/cjs/tests/public-api/public-error-types.test.js.map +7 -0
- package/dist/cjs/tests/public-api/public-types.test.js +74 -0
- package/dist/cjs/tests/public-api/public-types.test.js.map +7 -0
- package/dist/cjs/tests/public-api/runtime-utils.test.js +53 -0
- package/dist/cjs/tests/public-api/runtime-utils.test.js.map +7 -0
- package/dist/cjs/tests/public-api/schema-utils.test.js +100 -0
- package/dist/cjs/tests/public-api/schema-utils.test.js.map +7 -0
- package/dist/cjs/tests/public-api/timeout-error-types.test.js +103 -0
- package/dist/cjs/tests/public-api/timeout-error-types.test.js.map +7 -0
- package/dist/cjs/tests/public-api/tool-type-export.test.js +47 -0
- package/dist/cjs/tests/public-api/tool-type-export.test.js.map +7 -0
- package/dist/cjs/tests/public-api/v3-core.test.js +104 -0
- package/dist/cjs/tests/public-api/v3-core.test.js.map +7 -0
- package/dist/cjs/tests/safety-confirmation.test.js +134 -0
- package/dist/cjs/tests/safety-confirmation.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-a11y-resolvers.test.js +370 -0
- package/dist/cjs/tests/snapshot-a11y-resolvers.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js +294 -0
- package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-capture-orchestration.test.js +403 -0
- package/dist/cjs/tests/snapshot-capture-orchestration.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-cbor.test.js +197 -0
- package/dist/cjs/tests/snapshot-cbor.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-dom-session-builders.test.js +246 -0
- package/dist/cjs/tests/snapshot-dom-session-builders.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-dom-tree-utils.test.js +104 -0
- package/dist/cjs/tests/snapshot-dom-tree-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js +45 -0
- package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-frame-merge.test.js +388 -0
- package/dist/cjs/tests/snapshot-frame-merge.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-tree-format-utils.test.js +106 -0
- package/dist/cjs/tests/snapshot-tree-format-utils.test.js.map +7 -0
- package/dist/cjs/tests/snapshot-xpath-utils.test.js +74 -0
- package/dist/cjs/tests/snapshot-xpath-utils.test.js.map +7 -0
- package/dist/cjs/tests/timeout-handlers.test.js +864 -0
- package/dist/cjs/tests/timeout-handlers.test.js.map +7 -0
- package/dist/cjs/tests/xpath-parser.test.js +314 -0
- package/dist/cjs/tests/xpath-parser.test.js.map +7 -0
- package/dist/cjs/tests/xpath-resolver.test.js +70 -0
- package/dist/cjs/tests/xpath-resolver.test.js.map +7 -0
- package/dist/cjs/tests/zod-enum-compatibility.test.js +119 -0
- package/dist/cjs/tests/zod-enum-compatibility.test.js.map +7 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/lib/inference.d.ts +65 -0
- package/dist/esm/lib/inference.js +333 -0
- package/dist/esm/lib/inference.js.map +1 -0
- package/dist/esm/lib/inferenceLogUtils.d.ts +12 -0
- package/dist/esm/lib/inferenceLogUtils.js +92 -0
- package/dist/esm/lib/inferenceLogUtils.js.map +1 -0
- package/dist/esm/lib/logger.d.ts +69 -0
- package/dist/esm/lib/logger.js +323 -0
- package/dist/esm/lib/logger.js.map +1 -0
- package/dist/esm/lib/modelUtils.d.ts +11 -0
- package/dist/esm/lib/modelUtils.js +43 -0
- package/dist/esm/lib/modelUtils.js.map +1 -0
- package/dist/esm/lib/prompt.d.ts +14 -0
- package/dist/esm/lib/prompt.js +230 -0
- package/dist/esm/lib/prompt.js.map +1 -0
- package/dist/esm/lib/utils.d.ts +68 -0
- package/dist/esm/lib/utils.js +654 -0
- package/dist/esm/lib/utils.js.map +1 -0
- package/dist/esm/lib/v3/agent/AgentClient.d.ts +19 -0
- package/dist/esm/lib/v3/agent/AgentClient.js +17 -0
- package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/AgentProvider.d.ts +20 -0
- package/dist/esm/lib/v3/agent/AgentProvider.js +77 -0
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -0
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.d.ts +57 -0
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +822 -0
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/GoogleCUAClient.d.ts +74 -0
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js +799 -0
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.d.ts +71 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +770 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +69 -0
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js +615 -0
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -0
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +12 -0
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +186 -0
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/act.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/act.js +49 -0
- package/dist/esm/lib/v3/agent/tools/act.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +5 -0
- package/dist/esm/lib/v3/agent/tools/ariaTree.js +31 -0
- package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/click.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/click.js +104 -0
- package/dist/esm/lib/v3/agent/tools/click.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/clickAndHold.d.ts +14 -0
- package/dist/esm/lib/v3/agent/tools/clickAndHold.js +68 -0
- package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.d.ts +7 -0
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +105 -0
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/extract.d.ts +20 -0
- package/dist/esm/lib/v3/agent/tools/extract.js +93 -0
- package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/fillFormVision.js +143 -0
- package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/fillform.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/fillform.js +56 -0
- package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/goto.d.ts +12 -0
- package/dist/esm/lib/v3/agent/tools/goto.js +31 -0
- package/dist/esm/lib/v3/agent/tools/goto.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/index.d.ts +92 -0
- package/dist/esm/lib/v3/agent/tools/index.js +74 -0
- package/dist/esm/lib/v3/agent/tools/index.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/keys.d.ts +24 -0
- package/dist/esm/lib/v3/agent/tools/keys.js +60 -0
- package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/navback.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/navback.js +23 -0
- package/dist/esm/lib/v3/agent/tools/navback.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/screenshot.js +26 -0
- package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/scroll.d.ts +19 -0
- package/dist/esm/lib/v3/agent/tools/scroll.js +142 -0
- package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/search.d.ts +15 -0
- package/dist/esm/lib/v3/agent/tools/search.js +73 -0
- package/dist/esm/lib/v3/agent/tools/search.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/think.d.ts +6 -0
- package/dist/esm/lib/v3/agent/tools/think.js +24 -0
- package/dist/esm/lib/v3/agent/tools/think.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/type.d.ts +7 -0
- package/dist/esm/lib/v3/agent/tools/type.js +106 -0
- package/dist/esm/lib/v3/agent/tools/type.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/wait.d.ts +5 -0
- package/dist/esm/lib/v3/agent/tools/wait.js +53 -0
- package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/actionMapping.d.ts +3 -0
- package/dist/esm/lib/v3/agent/utils/actionMapping.js +100 -0
- package/dist/esm/lib/v3/agent/utils/actionMapping.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.d.ts +13 -0
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js +28 -0
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.d.ts +10 -0
- package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js +62 -0
- package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.d.ts +25 -0
- package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js +145 -0
- package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.d.ts +22 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +101 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/imageCompression.d.ts +53 -0
- package/dist/esm/lib/v3/agent/utils/imageCompression.js +204 -0
- package/dist/esm/lib/v3/agent/utils/imageCompression.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/messageProcessing.d.ts +12 -0
- package/dist/esm/lib/v3/agent/utils/messageProcessing.js +164 -0
- package/dist/esm/lib/v3/agent/utils/messageProcessing.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/screenshotHandler.d.ts +10 -0
- package/dist/esm/lib/v3/agent/utils/screenshotHandler.js +26 -0
- package/dist/esm/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.d.ts +26 -0
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +79 -0
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/xpath.d.ts +11 -0
- package/dist/esm/lib/v3/agent/utils/xpath.js +19 -0
- package/dist/esm/lib/v3/agent/utils/xpath.js.map +1 -0
- package/dist/esm/lib/v3/api.d.ts +86 -0
- package/dist/esm/lib/v3/api.js +484 -0
- package/dist/esm/lib/v3/api.js.map +1 -0
- package/dist/esm/lib/v3/cache/ActCache.d.ts +23 -0
- package/dist/esm/lib/v3/cache/ActCache.js +292 -0
- package/dist/esm/lib/v3/cache/ActCache.js.map +1 -0
- package/dist/esm/lib/v3/cache/AgentCache.d.ts +109 -0
- package/dist/esm/lib/v3/cache/AgentCache.js +640 -0
- package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -0
- package/dist/esm/lib/v3/cache/CacheStorage.d.ts +17 -0
- package/dist/esm/lib/v3/cache/CacheStorage.js +98 -0
- package/dist/esm/lib/v3/cache/CacheStorage.js.map +1 -0
- package/dist/esm/lib/v3/cache/serverAgentCache.d.ts +7 -0
- package/dist/esm/lib/v3/cache/serverAgentCache.js +49 -0
- package/dist/esm/lib/v3/cache/serverAgentCache.js.map +1 -0
- package/dist/esm/lib/v3/cache/utils.d.ts +15 -0
- package/dist/esm/lib/v3/cache/utils.js +39 -0
- package/dist/esm/lib/v3/cache/utils.js.map +1 -0
- package/dist/esm/lib/v3/cli.d.ts +2 -0
- package/dist/esm/lib/v3/cli.js +10 -0
- package/dist/esm/lib/v3/cli.js.map +1 -0
- package/dist/esm/lib/v3/dom/a11yScripts/index.d.ts +11 -0
- package/dist/esm/lib/v3/dom/a11yScripts/index.js +117 -0
- package/dist/esm/lib/v3/dom/a11yScripts/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/a11yScripts.generated.d.ts +16 -0
- package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js +20 -0
- package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +52 -0
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +56 -0
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/reRenderScriptContent.d.ts +1 -0
- package/dist/esm/lib/v3/dom/build/reRenderScriptContent.js +2 -0
- package/dist/esm/lib/v3/dom/build/reRenderScriptContent.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/rerender-index.d.ts +0 -0
- package/dist/esm/lib/v3/dom/build/rerender-index.js +1 -0
- package/dist/esm/lib/v3/dom/build/rerender-index.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.d.ts +4 -0
- package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js +8 -0
- package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/scriptV3Content.d.ts +1 -0
- package/dist/esm/lib/v3/dom/build/scriptV3Content.js +2 -0
- package/dist/esm/lib/v3/dom/build/scriptV3Content.js.map +1 -0
- package/dist/esm/lib/v3/dom/build/v3-index.d.ts +0 -0
- package/dist/esm/lib/v3/dom/build/v3-index.js +1 -0
- package/dist/esm/lib/v3/dom/build/v3-index.js.map +1 -0
- package/dist/esm/lib/v3/dom/genA11yScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genA11yScripts.js +54 -0
- package/dist/esm/lib/v3/dom/genA11yScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/genDomScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genDomScripts.js +38 -0
- package/dist/esm/lib/v3/dom/genDomScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/genLocatorScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genLocatorScripts.js +51 -0
- package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/genScreenshotScripts.d.ts +1 -0
- package/dist/esm/lib/v3/dom/genScreenshotScripts.js +37 -0
- package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/index.d.ts +1 -0
- package/dist/esm/lib/v3/dom/index.js +2 -0
- package/dist/esm/lib/v3/dom/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/counts.d.ts +15 -0
- package/dist/esm/lib/v3/dom/locatorScripts/counts.js +272 -0
- package/dist/esm/lib/v3/dom/locatorScripts/counts.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/index.d.ts +4 -0
- package/dist/esm/lib/v3/dom/locatorScripts/index.js +5 -0
- package/dist/esm/lib/v3/dom/locatorScripts/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/scripts.d.ts +37 -0
- package/dist/esm/lib/v3/dom/locatorScripts/scripts.js +458 -0
- package/dist/esm/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/selectors.d.ts +4 -0
- package/dist/esm/lib/v3/dom/locatorScripts/selectors.js +283 -0
- package/dist/esm/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.d.ts +19 -0
- package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js +283 -0
- package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.d.ts +76 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js +376 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.d.ts +9 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +196 -0
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
- package/dist/esm/lib/v3/dom/piercer.entry.d.ts +1 -0
- package/dist/esm/lib/v3/dom/piercer.entry.js +3 -0
- package/dist/esm/lib/v3/dom/piercer.entry.js.map +1 -0
- package/dist/esm/lib/v3/dom/piercer.runtime.d.ts +23 -0
- package/dist/esm/lib/v3/dom/piercer.runtime.js +90 -0
- package/dist/esm/lib/v3/dom/piercer.runtime.js.map +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.d.ts +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js +3 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.d.ts +1 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js +40 -0
- package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/index.d.ts +1 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/index.js +2 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/index.js.map +1 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.d.ts +8 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js +82 -0
- package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
- package/dist/esm/lib/v3/external_clients/aisdk.d.ts +11 -0
- package/dist/esm/lib/v3/external_clients/aisdk.js +103 -0
- package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -0
- package/dist/esm/lib/v3/external_clients/customOpenAI.d.ts +18 -0
- package/dist/esm/lib/v3/external_clients/customOpenAI.js +220 -0
- package/dist/esm/lib/v3/external_clients/customOpenAI.js.map +1 -0
- package/dist/esm/lib/v3/flowLogger.d.ts +139 -0
- package/dist/esm/lib/v3/flowLogger.js +868 -0
- package/dist/esm/lib/v3/flowLogger.js.map +1 -0
- package/dist/esm/lib/v3/handlers/actHandler.d.ts +21 -0
- package/dist/esm/lib/v3/handlers/actHandler.js +340 -0
- package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/extractHandler.d.ts +31 -0
- package/dist/esm/lib/v3/handlers/extractHandler.js +139 -0
- package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +24 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +623 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.d.ts +2 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js +14 -0
- package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
- package/dist/esm/lib/v3/handlers/observeHandler.d.ts +17 -0
- package/dist/esm/lib/v3/handlers/observeHandler.js +156 -0
- package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +32 -0
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js +461 -0
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +33 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +528 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
- package/dist/esm/lib/v3/index.d.ts +18 -0
- package/dist/esm/lib/v3/index.js +14 -0
- package/dist/esm/lib/v3/index.js.map +1 -0
- package/dist/esm/lib/v3/launch/browserbase.d.ts +7 -0
- package/dist/esm/lib/v3/launch/browserbase.js +46 -0
- package/dist/esm/lib/v3/launch/browserbase.js.map +1 -0
- package/dist/esm/lib/v3/launch/local.d.ts +15 -0
- package/dist/esm/lib/v3/launch/local.js +98 -0
- package/dist/esm/lib/v3/launch/local.js.map +1 -0
- package/dist/esm/lib/v3/llm/AnthropicClient.d.ts +16 -0
- package/dist/esm/lib/v3/llm/AnthropicClient.js +239 -0
- package/dist/esm/lib/v3/llm/AnthropicClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/CerebrasClient.d.ts +17 -0
- package/dist/esm/lib/v3/llm/CerebrasClient.js +235 -0
- package/dist/esm/lib/v3/llm/CerebrasClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/GoogleClient.d.ts +19 -0
- package/dist/esm/lib/v3/llm/GoogleClient.js +369 -0
- package/dist/esm/lib/v3/llm/GoogleClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/GroqClient.d.ts +17 -0
- package/dist/esm/lib/v3/llm/GroqClient.js +236 -0
- package/dist/esm/lib/v3/llm/GroqClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/LLMClient.d.ts +121 -0
- package/dist/esm/lib/v3/llm/LLMClient.js +23 -0
- package/dist/esm/lib/v3/llm/LLMClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/LLMProvider.d.ts +13 -0
- package/dist/esm/lib/v3/llm/LLMProvider.js +194 -0
- package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.d.ts +15 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.js +329 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -0
- package/dist/esm/lib/v3/llm/aisdk.d.ts +15 -0
- package/dist/esm/lib/v3/llm/aisdk.js +348 -0
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -0
- package/dist/esm/lib/v3/logger.d.ts +9 -0
- package/dist/esm/lib/v3/logger.js +96 -0
- package/dist/esm/lib/v3/logger.js.map +1 -0
- package/dist/esm/lib/v3/mcp/connection.d.ts +11 -0
- package/dist/esm/lib/v3/mcp/connection.js +49 -0
- package/dist/esm/lib/v3/mcp/connection.js.map +1 -0
- package/dist/esm/lib/v3/mcp/utils.d.ts +3 -0
- package/dist/esm/lib/v3/mcp/utils.js +36 -0
- package/dist/esm/lib/v3/mcp/utils.js.map +1 -0
- package/dist/esm/lib/v3/shutdown/cleanupLocal.d.ts +14 -0
- package/dist/esm/lib/v3/shutdown/cleanupLocal.js +30 -0
- package/dist/esm/lib/v3/shutdown/cleanupLocal.js.map +1 -0
- package/dist/esm/lib/v3/shutdown/supervisor.d.ts +11 -0
- package/dist/esm/lib/v3/shutdown/supervisor.js +166 -0
- package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -0
- package/dist/esm/lib/v3/shutdown/supervisorClient.d.ts +15 -0
- package/dist/esm/lib/v3/shutdown/supervisorClient.js +93 -0
- package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -0
- package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +113 -0
- package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +80 -0
- package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +374 -0
- package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +357 -0
- package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +247 -0
- package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +105 -0
- package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/agent-streaming.spec.js +126 -0
- package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +44 -0
- package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/click-count.spec.js +147 -0
- package/dist/esm/lib/v3/tests/click-count.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +54 -0
- package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +176 -0
- package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +53 -0
- package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/downloads.spec.js +58 -0
- package/dist/esm/lib/v3/tests/downloads.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +53 -0
- package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +493 -0
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/keep-alive.child.js +92 -0
- package/dist/esm/lib/v3/tests/keep-alive.child.js.map +7 -0
- package/dist/esm/lib/v3/tests/keep-alive.helpers.js +532 -0
- package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +7 -0
- package/dist/esm/lib/v3/tests/keep-alive.spec.js +19 -0
- package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/keyboard.spec.js +296 -0
- package/dist/esm/lib/v3/tests/keyboard.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +159 -0
- package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +191 -0
- package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +108 -0
- package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-count.spec.js +71 -0
- package/dist/esm/lib/v3/tests/locator-count.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-fill.spec.js +118 -0
- package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +136 -0
- package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-nth.spec.js +157 -0
- package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/locator-select-option.spec.js +242 -0
- package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/logger-initialization.spec.js +552 -0
- package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +269 -0
- package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/nested-div.spec.js +23 -0
- package/dist/esm/lib/v3/tests/nested-div.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +90 -0
- package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-console.spec.js +56 -0
- package/dist/esm/lib/v3/tests/page-console.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +418 -0
- package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-goto-response.spec.js +35 -0
- package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-hover.spec.js +167 -0
- package/dist/esm/lib/v3/tests/page-hover.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-screenshot.spec.js +273 -0
- package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-scroll.spec.js +182 -0
- package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +46 -0
- package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +98 -0
- package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/setinputfiles.spec.js +126 -0
- package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +134 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +134 -0
- package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/testUtils.js +31 -0
- package/dist/esm/lib/v3/tests/testUtils.js.map +7 -0
- package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +100 -0
- package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/timeouts.spec.js +32 -0
- package/dist/esm/lib/v3/tests/timeouts.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/user-data-dir.spec.js +43 -0
- package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/v3.config.js +15 -0
- package/dist/esm/lib/v3/tests/v3.config.js.map +7 -0
- package/dist/esm/lib/v3/tests/v3.dynamic.config.js +43 -0
- package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +7 -0
- package/dist/esm/lib/v3/tests/v3.playwright.config.js +41 -0
- package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +7 -0
- package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +593 -0
- package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +97 -0
- package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +7 -0
- package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +77 -0
- package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +7 -0
- package/dist/esm/lib/v3/timeoutConfig.d.ts +2 -0
- package/dist/esm/lib/v3/timeoutConfig.js +27 -0
- package/dist/esm/lib/v3/timeoutConfig.js.map +1 -0
- package/dist/esm/lib/v3/types/private/agent.d.ts +6 -0
- package/dist/esm/lib/v3/types/private/agent.js +2 -0
- package/dist/esm/lib/v3/types/private/agent.js.map +1 -0
- package/dist/esm/lib/v3/types/private/api.d.ts +11 -0
- package/dist/esm/lib/v3/types/private/api.js +2 -0
- package/dist/esm/lib/v3/types/private/api.js.map +1 -0
- package/dist/esm/lib/v3/types/private/cache.d.ts +128 -0
- package/dist/esm/lib/v3/types/private/cache.js +2 -0
- package/dist/esm/lib/v3/types/private/cache.js.map +1 -0
- package/dist/esm/lib/v3/types/private/evaluator.d.ts +40 -0
- package/dist/esm/lib/v3/types/private/evaluator.js +2 -0
- package/dist/esm/lib/v3/types/private/evaluator.js.map +1 -0
- package/dist/esm/lib/v3/types/private/handlers.d.ts +38 -0
- package/dist/esm/lib/v3/types/private/handlers.js +16 -0
- package/dist/esm/lib/v3/types/private/handlers.js.map +1 -0
- package/dist/esm/lib/v3/types/private/index.d.ts +7 -0
- package/dist/esm/lib/v3/types/private/index.js +8 -0
- package/dist/esm/lib/v3/types/private/index.js.map +1 -0
- package/dist/esm/lib/v3/types/private/internal.d.ts +39 -0
- package/dist/esm/lib/v3/types/private/internal.js +2 -0
- package/dist/esm/lib/v3/types/private/internal.js.map +1 -0
- package/dist/esm/lib/v3/types/private/locator.d.ts +9 -0
- package/dist/esm/lib/v3/types/private/locator.js +2 -0
- package/dist/esm/lib/v3/types/private/locator.js.map +1 -0
- package/dist/esm/lib/v3/types/private/network.d.ts +34 -0
- package/dist/esm/lib/v3/types/private/network.js +3 -0
- package/dist/esm/lib/v3/types/private/network.js.map +1 -0
- package/dist/esm/lib/v3/types/private/shutdown.d.ts +19 -0
- package/dist/esm/lib/v3/types/private/shutdown.js +5 -0
- package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -0
- package/dist/esm/lib/v3/types/private/shutdownErrors.d.ts +12 -0
- package/dist/esm/lib/v3/types/private/shutdownErrors.js +22 -0
- package/dist/esm/lib/v3/types/private/shutdownErrors.js.map +1 -0
- package/dist/esm/lib/v3/types/private/snapshot.d.ts +117 -0
- package/dist/esm/lib/v3/types/private/snapshot.js +2 -0
- package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -0
- package/dist/esm/lib/v3/types/public/agent.d.ts +595 -0
- package/dist/esm/lib/v3/types/public/agent.js +15 -0
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -0
- package/dist/esm/lib/v3/types/public/api.d.ts +1211 -0
- package/dist/esm/lib/v3/types/public/api.js +915 -0
- package/dist/esm/lib/v3/types/public/api.js.map +1 -0
- package/dist/esm/lib/v3/types/public/apiErrors.d.ts +18 -0
- package/dist/esm/lib/v3/types/public/apiErrors.js +32 -0
- package/dist/esm/lib/v3/types/public/apiErrors.js.map +1 -0
- package/dist/esm/lib/v3/types/public/index.d.ts +12 -0
- package/dist/esm/lib/v3/types/public/index.js +14 -0
- package/dist/esm/lib/v3/types/public/index.js.map +1 -0
- package/dist/esm/lib/v3/types/public/locator.d.ts +9 -0
- package/dist/esm/lib/v3/types/public/locator.js +2 -0
- package/dist/esm/lib/v3/types/public/locator.js.map +1 -0
- package/dist/esm/lib/v3/types/public/logs.d.ts +23 -0
- package/dist/esm/lib/v3/types/public/logs.js +13 -0
- package/dist/esm/lib/v3/types/public/logs.js.map +1 -0
- package/dist/esm/lib/v3/types/public/methods.d.ts +56 -0
- package/dist/esm/lib/v3/types/public/methods.js +15 -0
- package/dist/esm/lib/v3/types/public/methods.js.map +1 -0
- package/dist/esm/lib/v3/types/public/metrics.d.ts +27 -0
- package/dist/esm/lib/v3/types/public/metrics.js +2 -0
- package/dist/esm/lib/v3/types/public/metrics.js.map +1 -0
- package/dist/esm/lib/v3/types/public/model.d.ts +65 -0
- package/dist/esm/lib/v3/types/public/model.js +2 -0
- package/dist/esm/lib/v3/types/public/model.js.map +1 -0
- package/dist/esm/lib/v3/types/public/options.d.ts +70 -0
- package/dist/esm/lib/v3/types/public/options.js +4 -0
- package/dist/esm/lib/v3/types/public/options.js.map +1 -0
- package/dist/esm/lib/v3/types/public/page.d.ts +18 -0
- package/dist/esm/lib/v3/types/public/page.js +3 -0
- package/dist/esm/lib/v3/types/public/page.js.map +1 -0
- package/dist/esm/lib/v3/types/public/screenshotTypes.d.ts +25 -0
- package/dist/esm/lib/v3/types/public/screenshotTypes.js +2 -0
- package/dist/esm/lib/v3/types/public/screenshotTypes.js.map +1 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +152 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js +305 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.d.ts +15 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +196 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.d.ts +8 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js +121 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.d.ts +77 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js +336 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.d.ts +7 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +129 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.d.ts +46 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js +274 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +24 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +216 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/index.d.ts +4 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js +5 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.d.ts +16 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js +22 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.d.ts +28 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +135 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.d.ts +26 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js +102 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/a11yInvocation.d.ts +8 -0
- package/dist/esm/lib/v3/understudy/a11yInvocation.js +12 -0
- package/dist/esm/lib/v3/understudy/a11yInvocation.js.map +1 -0
- package/dist/esm/lib/v3/understudy/cdp.d.ts +69 -0
- package/dist/esm/lib/v3/understudy/cdp.js +251 -0
- package/dist/esm/lib/v3/understudy/cdp.js.map +1 -0
- package/dist/esm/lib/v3/understudy/consoleMessage.d.ts +22 -0
- package/dist/esm/lib/v3/understudy/consoleMessage.js +66 -0
- package/dist/esm/lib/v3/understudy/consoleMessage.js.map +1 -0
- package/dist/esm/lib/v3/understudy/context.d.ts +132 -0
- package/dist/esm/lib/v3/understudy/context.js +696 -0
- package/dist/esm/lib/v3/understudy/context.js.map +1 -0
- package/dist/esm/lib/v3/understudy/deepLocator.d.ts +87 -0
- package/dist/esm/lib/v3/understudy/deepLocator.js +218 -0
- package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -0
- package/dist/esm/lib/v3/understudy/executionContextRegistry.d.ts +15 -0
- package/dist/esm/lib/v3/understudy/executionContextRegistry.js +83 -0
- package/dist/esm/lib/v3/understudy/executionContextRegistry.js.map +1 -0
- package/dist/esm/lib/v3/understudy/fileUploadUtils.d.ts +13 -0
- package/dist/esm/lib/v3/understudy/fileUploadUtils.js +81 -0
- package/dist/esm/lib/v3/understudy/fileUploadUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/frame.d.ts +69 -0
- package/dist/esm/lib/v3/understudy/frame.js +211 -0
- package/dist/esm/lib/v3/understudy/frame.js.map +1 -0
- package/dist/esm/lib/v3/understudy/frameLocator.d.ts +50 -0
- package/dist/esm/lib/v3/understudy/frameLocator.js +255 -0
- package/dist/esm/lib/v3/understudy/frameLocator.js.map +1 -0
- package/dist/esm/lib/v3/understudy/frameRegistry.d.ts +101 -0
- package/dist/esm/lib/v3/understudy/frameRegistry.js +298 -0
- package/dist/esm/lib/v3/understudy/frameRegistry.js.map +1 -0
- package/dist/esm/lib/v3/understudy/initScripts.d.ts +2 -0
- package/dist/esm/lib/v3/understudy/initScripts.js +33 -0
- package/dist/esm/lib/v3/understudy/initScripts.js.map +1 -0
- package/dist/esm/lib/v3/understudy/lifecycleWatcher.d.ts +64 -0
- package/dist/esm/lib/v3/understudy/lifecycleWatcher.js +245 -0
- package/dist/esm/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
- package/dist/esm/lib/v3/understudy/locator.d.ts +194 -0
- package/dist/esm/lib/v3/understudy/locator.js +753 -0
- package/dist/esm/lib/v3/understudy/locator.js.map +1 -0
- package/dist/esm/lib/v3/understudy/locatorInvocation.d.ts +8 -0
- package/dist/esm/lib/v3/understudy/locatorInvocation.js +12 -0
- package/dist/esm/lib/v3/understudy/locatorInvocation.js.map +1 -0
- package/dist/esm/lib/v3/understudy/navigationResponseTracker.d.ts +84 -0
- package/dist/esm/lib/v3/understudy/navigationResponseTracker.js +224 -0
- package/dist/esm/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
- package/dist/esm/lib/v3/understudy/networkManager.d.ts +53 -0
- package/dist/esm/lib/v3/understudy/networkManager.js +306 -0
- package/dist/esm/lib/v3/understudy/networkManager.js.map +1 -0
- package/dist/esm/lib/v3/understudy/page.d.ts +354 -0
- package/dist/esm/lib/v3/understudy/page.js +1942 -0
- package/dist/esm/lib/v3/understudy/page.js.map +1 -0
- package/dist/esm/lib/v3/understudy/piercer.d.ts +4 -0
- package/dist/esm/lib/v3/understudy/piercer.js +61 -0
- package/dist/esm/lib/v3/understudy/piercer.js.map +1 -0
- package/dist/esm/lib/v3/understudy/response.d.ts +137 -0
- package/dist/esm/lib/v3/understudy/response.js +330 -0
- package/dist/esm/lib/v3/understudy/response.js.map +1 -0
- package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +16 -0
- package/dist/esm/lib/v3/understudy/screenshotUtils.js +352 -0
- package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -0
- package/dist/esm/lib/v3/understudy/selectorResolver.d.ts +38 -0
- package/dist/esm/lib/v3/understudy/selectorResolver.js +296 -0
- package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -0
- package/dist/esm/lib/v3/v3.d.ts +191 -0
- package/dist/esm/lib/v3/v3.js +1569 -0
- package/dist/esm/lib/v3/v3.js.map +1 -0
- package/dist/esm/lib/v3/zodCompat.d.ts +12 -0
- package/dist/esm/lib/v3/zodCompat.js +17 -0
- package/dist/esm/lib/v3/zodCompat.js.map +1 -0
- package/dist/esm/lib/v3Evaluator.d.ts +19 -0
- package/dist/esm/lib/v3Evaluator.js +210 -0
- package/dist/esm/lib/v3Evaluator.js.map +1 -0
- package/dist/esm/lib/version.d.ts +5 -0
- package/dist/esm/lib/version.js +6 -0
- package/dist/esm/lib/version.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/tests/browserbase-session-accessors.test.js +101 -0
- package/dist/esm/tests/browserbase-session-accessors.test.js.map +7 -0
- package/dist/esm/tests/cache-llm-resolution.test.js +187 -0
- package/dist/esm/tests/cache-llm-resolution.test.js.map +7 -0
- package/dist/esm/tests/helpers/mockCDPSession.js +27 -0
- package/dist/esm/tests/helpers/mockCDPSession.js.map +7 -0
- package/dist/esm/tests/llm-provider.test.js +57 -0
- package/dist/esm/tests/llm-provider.test.js.map +7 -0
- package/dist/esm/tests/model-deprecation.test.js +135 -0
- package/dist/esm/tests/model-deprecation.test.js.map +7 -0
- package/dist/esm/tests/page-snapshot.test.js +36 -0
- package/dist/esm/tests/page-snapshot.test.js.map +7 -0
- package/dist/esm/tests/public-api/export-surface.test.js +54 -0
- package/dist/esm/tests/public-api/export-surface.test.js.map +7 -0
- package/dist/esm/tests/public-api/llm-and-agents.test.js +128 -0
- package/dist/esm/tests/public-api/llm-and-agents.test.js.map +7 -0
- package/dist/esm/tests/public-api/public-error-types.test.js +71 -0
- package/dist/esm/tests/public-api/public-error-types.test.js.map +7 -0
- package/dist/esm/tests/public-api/public-types.test.js +74 -0
- package/dist/esm/tests/public-api/public-types.test.js.map +7 -0
- package/dist/esm/tests/public-api/runtime-utils.test.js +31 -0
- package/dist/esm/tests/public-api/runtime-utils.test.js.map +7 -0
- package/dist/esm/tests/public-api/schema-utils.test.js +78 -0
- package/dist/esm/tests/public-api/schema-utils.test.js.map +7 -0
- package/dist/esm/tests/public-api/timeout-error-types.test.js +81 -0
- package/dist/esm/tests/public-api/timeout-error-types.test.js.map +7 -0
- package/dist/esm/tests/public-api/tool-type-export.test.js +25 -0
- package/dist/esm/tests/public-api/tool-type-export.test.js.map +7 -0
- package/dist/esm/tests/public-api/v3-core.test.js +82 -0
- package/dist/esm/tests/public-api/v3-core.test.js.map +7 -0
- package/dist/esm/tests/safety-confirmation.test.js +134 -0
- package/dist/esm/tests/safety-confirmation.test.js.map +7 -0
- package/dist/esm/tests/snapshot-a11y-resolvers.test.js +348 -0
- package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +7 -0
- package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +300 -0
- package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-capture-orchestration.test.js +381 -0
- package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +7 -0
- package/dist/esm/tests/snapshot-cbor.test.js +197 -0
- package/dist/esm/tests/snapshot-cbor.test.js.map +7 -0
- package/dist/esm/tests/snapshot-dom-session-builders.test.js +251 -0
- package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +7 -0
- package/dist/esm/tests/snapshot-dom-tree-utils.test.js +109 -0
- package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +49 -0
- package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-frame-merge.test.js +391 -0
- package/dist/esm/tests/snapshot-frame-merge.test.js.map +7 -0
- package/dist/esm/tests/snapshot-tree-format-utils.test.js +113 -0
- package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +7 -0
- package/dist/esm/tests/snapshot-xpath-utils.test.js +79 -0
- package/dist/esm/tests/snapshot-xpath-utils.test.js.map +7 -0
- package/dist/esm/tests/timeout-handlers.test.js +850 -0
- package/dist/esm/tests/timeout-handlers.test.js.map +7 -0
- package/dist/esm/tests/xpath-parser.test.js +317 -0
- package/dist/esm/tests/xpath-parser.test.js.map +7 -0
- package/dist/esm/tests/xpath-resolver.test.js +73 -0
- package/dist/esm/tests/xpath-resolver.test.js.map +7 -0
- package/dist/esm/tests/zod-enum-compatibility.test.js +97 -0
- package/dist/esm/tests/zod-enum-compatibility.test.js.map +7 -0
- package/package.json +41 -24
- package/dist/index.d.ts +0 -4363
- package/dist/index.js +0 -76530
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3.js","sourceRoot":"","sources":["../../../../lib/v3/v3.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter } from \"events\";\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 { 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 { 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 {\n AgentConfig,\n AgentExecuteCallbacks,\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentResult,\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 { SessionFileLogger, logStagehandStep } from \"./flowLogger.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 };\n\ntype ResolvedModelConfiguration = {\n modelName: AvailableModel;\n clientOptions?: ClientOptions;\n};\n\nfunction 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, ...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 };\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: EventEmitter = new EventEmitter();\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 advancedStealth is enabled in Browserbase settings.\n */\n public get isAdvancedStealth(): boolean {\n return (\n this.opts.browserbaseSessionCreateParams?.browserSettings\n ?.advancedStealth === true\n );\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 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.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 } = resolveModelConfiguration(opts.model);\n this.modelName = modelName;\n this.experimental = opts.experimental ?? false;\n this.logInferenceToFile = opts.logInferenceToFile ?? false;\n this.llmProvider = new LLMProvider(this.logger);\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 // Initialize session file logger\n SessionFileLogger.init(this.instanceId, opts);\n\n // Track instance for global process guard handling\n V3._instances.add(this);\n }\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.getReplayMetrics().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 resolveLlmClient(model?: ModelConfiguration): LLMClient {\n if (!model) {\n return this.llmClient;\n }\n\n let modelName: AvailableModel | string;\n let clientOptions: ClientOptions | undefined;\n\n if (typeof model === \"string\") {\n modelName = model;\n } else {\n const { modelName: overrideModelName, ...rest } = model;\n modelName = overrideModelName;\n clientOptions = rest as ClientOptions;\n }\n\n if (\n modelName === this.modelName &&\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 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 { experimental: this.experimental, disableAPI: this.disableAPI },\n );\n\n this.overrideLlmClients.set(cacheKey, client);\n return client;\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 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 });\n const logCtx = SessionFileLogger.getContext();\n this.ctx.conn.cdpLogger = (info) =>\n SessionFileLogger.logCdpCallEvent(info, logCtx);\n this.ctx.conn.cdpEventLogger = (info) =>\n SessionFileLogger.logCdpMessageEvent(info, logCtx);\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 const logCtx = SessionFileLogger.getContext();\n this.ctx.conn.cdpLogger = (info) =>\n SessionFileLogger.logCdpCallEvent(info, logCtx);\n this.ctx.conn.cdpEventLogger = (info) =>\n SessionFileLogger.logCdpMessageEvent(info, logCtx);\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 if (!apiKey || !projectId) {\n throw new MissingEnvironmentVariableError(\n \"BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID\",\n \"Browserbase environment\",\n );\n }\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 const effectiveSessionParams =\n resolvedKeepAlive !== undefined\n ? { ...baseSessionParams, keepAlive: resolvedKeepAlive }\n : baseSessionParams;\n if (!this.disableAPI && !this.experimental) {\n this.apiClient = new StagehandAPIClient({\n apiKey,\n projectId,\n logger: this.logger,\n });\n const createSessionPayload = {\n projectId: effectiveSessionParams.projectId ?? projectId,\n ...effectiveSessionParams,\n browserSettings: {\n ...(effectiveSessionParams.browserSettings ?? {}),\n viewport: effectiveSessionParams.browserSettings?.viewport ?? {\n width: 1288,\n height: 711,\n },\n },\n userMetadata: {\n ...(effectiveSessionParams.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 const logCtx = SessionFileLogger.getContext();\n this.ctx.conn.cdpLogger = (info) =>\n SessionFileLogger.logCdpCallEvent(info, logCtx);\n this.ctx.conn.cdpEventLogger = (info) =>\n SessionFileLogger.logCdpMessageEvent(info, logCtx);\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 @logStagehandStep(\"Stagehand.act\", \"ACT\")\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 effectiveTimeoutMs =\n typeof options?.timeout === \"number\" && options.timeout > 0\n ? options.timeout\n : undefined;\n const ensureTimeRemaining = createTimeoutGuard(\n effectiveTimeoutMs,\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 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 @logStagehandStep(\"Stagehand.extract\", \"EXTRACT\")\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 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 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 @logStagehandStep(\"Stagehand.observe\", \"OBSERVE\")\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 timeout: options?.timeout,\n selector: options?.selector,\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 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 // 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 SessionFileLogger.close();\n } catch {\n // ignore\n }\n\n // Unhook CDP transport close handler\n try {\n if (this.ctx?.conn && this._onCdpClosed) {\n this.ctx.conn.offTransportClosed?.(this._onCdpClosed);\n }\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 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 /** Guard: ensure Browserbase credentials exist in options. */\n private requireBrowserbaseCreds(): { apiKey: string; projectId: string } {\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 || !projectId) {\n const missing: string[] = [];\n if (!apiKey) missing.push(\"BROWSERBASE_API_KEY\");\n if (!projectId) missing.push(\"BROWSERBASE_PROJECT_ID\");\n throw new MissingEnvironmentVariableError(\n missing.join(\", \"),\n \"Browserbase\",\n );\n }\n\n // Cache resolved values back into opts for consistency\n this.opts.apiKey = apiKey;\n 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 // Warn if mode is not explicitly set (defaults to \"dom\")\n if (options?.mode === undefined) {\n this.logger({\n category: \"agent\",\n message:\n \"Using agent in default DOM mode (legacy). Agent will default to 'hybrid' on an upcoming release for improved performance.\\n → https://docs.stagehand.dev/v3/basics/agent\\n\",\n level: 0,\n });\n }\n\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 handler = new V3AgentHandler(\n this,\n this.logger,\n agentLlmClient,\n typeof options?.executionModel === \"string\"\n ? options.executionModel\n : options?.executionModel?.modelName,\n options?.systemPrompt,\n tools,\n options?.mode,\n );\n\n const resolvedOptions: AgentExecuteOptions | AgentStreamExecuteOptions =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\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 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 })\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 // Determine if CUA mode is enabled (via mode: \"cua\" or deprecated cua: true)\n const isCuaMode =\n options?.mode !== undefined\n ? options.mode === \"cua\"\n : 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 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: options?.mode ?? \"dom\", type: \"string\" },\n model: options?.model\n ? typeof options?.model === \"string\"\n ? { value: options.model, type: \"string\" }\n : { value: options.model.modelName, type: \"string\" }\n : { value: this.llmClient.modelName, type: \"string\" },\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 return {\n execute: async (instructionOrOptions: string | AgentExecuteOptions) =>\n withInstanceLogContext(this.instanceId, async () => {\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n executeOptions:\n typeof instructionOrOptions === \"object\"\n ? instructionOrOptions\n : null,\n });\n\n SessionFileLogger.logAgentTaskStarted({\n invocation: \"Agent.execute\",\n args: [instructionOrOptions],\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 },\n tools,\n );\n\n const resolvedOptions: AgentExecuteOptions =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\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 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 });\n if (cacheContext) {\n const replayed = await this.agentCache.tryReplay(cacheContext);\n if (replayed) {\n SessionFileLogger.logAgentTaskCompleted({ cacheHit: true });\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 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 SessionFileLogger.logAgentTaskCompleted();\n }\n }),\n };\n }\n\n // Default: AISDK tools-based agent\n const agentConfigSignature = this.agentCache.buildConfigSignature(options);\n const isStreaming = options?.stream ?? false;\n\n return {\n execute: async (\n instructionOrOptions:\n | string\n | AgentExecuteOptions\n | AgentStreamExecuteOptions,\n ): Promise<AgentResult | AgentStreamResult> =>\n withInstanceLogContext(this.instanceId, async () => {\n validateExperimentalFeatures({\n isExperimental: this.experimental,\n agentConfig: options,\n executeOptions:\n typeof instructionOrOptions === \"object\"\n ? instructionOrOptions\n : null,\n isStreaming,\n });\n SessionFileLogger.logAgentTaskStarted({\n invocation: \"Agent.execute\",\n args: [instructionOrOptions],\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 SessionFileLogger.logAgentTaskCompleted({ cacheHit: true });\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 // Log completion when stream is returned (stream completes asynchronously)\n SessionFileLogger.logAgentTaskCompleted();\n return wrappedStream;\n }\n\n // Log completion when stream is returned (stream completes asynchronously)\n SessionFileLogger.logAgentTaskCompleted();\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 SessionFileLogger.logAgentTaskCompleted({ cacheHit: true });\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 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 SessionFileLogger.logAgentTaskCompleted();\n }\n }),\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"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { ZodObject as Zod4Object, ZodRawShape as Zod4RawShape, ZodTypeAny as Zod4TypeAny } from "zod";
|
|
3
|
+
import type * as z3 from "zod/v3";
|
|
4
|
+
export type StagehandZodSchema = Zod4TypeAny | z3.ZodTypeAny;
|
|
5
|
+
export type StagehandZodObject = Zod4Object<Zod4RawShape> | z3.ZodObject<z3.ZodRawShape>;
|
|
6
|
+
export type InferStagehandSchema<T extends StagehandZodSchema> = T extends z3.ZodTypeAny ? z3.infer<T> : T extends Zod4TypeAny ? z.infer<T> : never;
|
|
7
|
+
export declare const isZod4Schema: (schema: StagehandZodSchema) => schema is Zod4TypeAny & {
|
|
8
|
+
_zod: unknown;
|
|
9
|
+
};
|
|
10
|
+
export declare const isZod3Schema: (schema: StagehandZodSchema) => schema is z3.ZodTypeAny;
|
|
11
|
+
export type JsonSchemaDocument = Record<string, unknown>;
|
|
12
|
+
export declare function toJsonSchema(schema: StagehandZodSchema): JsonSchemaDocument;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import zodToJsonSchema from "zod-to-json-schema";
|
|
3
|
+
export const isZod4Schema = (schema) => typeof schema._zod !== "undefined";
|
|
4
|
+
export const isZod3Schema = (schema) => !isZod4Schema(schema);
|
|
5
|
+
export function toJsonSchema(schema) {
|
|
6
|
+
if (!isZod4Schema(schema)) {
|
|
7
|
+
return zodToJsonSchema(schema);
|
|
8
|
+
}
|
|
9
|
+
// For v4 schemas, use built-in z.toJSONSchema() method
|
|
10
|
+
const zodWithJsonSchema = z;
|
|
11
|
+
if (zodWithJsonSchema.toJSONSchema) {
|
|
12
|
+
return zodWithJsonSchema.toJSONSchema(schema);
|
|
13
|
+
}
|
|
14
|
+
// This should never happen with Zod v4.1+
|
|
15
|
+
throw new Error("Zod v4 toJSONSchema method not found");
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=zodCompat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zodCompat.js","sourceRoot":"","sources":["../../../../lib/v3/zodCompat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAejD,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAA0B,EACiB,EAAE,CAC7C,OAAQ,MAA6B,CAAC,IAAI,KAAK,WAAW,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAA0B,EACD,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAIpD,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,uDAAuD;IACvD,MAAM,iBAAiB,GAAG,CAEzB,CAAC;IAEF,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACnC,OAAO,iBAAiB,CAAC,YAAY,CAAC,MAAqB,CAAC,CAAC;IAC/D,CAAC;IAED,0CAA0C;IAC1C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["import { z } from \"zod\";\nimport type {\n ZodObject as Zod4Object,\n ZodRawShape as Zod4RawShape,\n ZodTypeAny as Zod4TypeAny,\n} from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport type * as z3 from \"zod/v3\";\nexport type StagehandZodSchema = Zod4TypeAny | z3.ZodTypeAny;\n\nexport type StagehandZodObject =\n | Zod4Object<Zod4RawShape>\n | z3.ZodObject<z3.ZodRawShape>;\n\nexport type InferStagehandSchema<T extends StagehandZodSchema> =\n T extends z3.ZodTypeAny\n ? z3.infer<T>\n : T extends Zod4TypeAny\n ? z.infer<T>\n : never;\n\nexport const isZod4Schema = (\n schema: StagehandZodSchema,\n): schema is Zod4TypeAny & { _zod: unknown } =>\n typeof (schema as { _zod?: unknown })._zod !== \"undefined\";\n\nexport const isZod3Schema = (\n schema: StagehandZodSchema,\n): schema is z3.ZodTypeAny => !isZod4Schema(schema);\n\nexport type JsonSchemaDocument = Record<string, unknown>;\n\nexport function toJsonSchema(schema: StagehandZodSchema): JsonSchemaDocument {\n if (!isZod4Schema(schema)) {\n return zodToJsonSchema(schema);\n }\n\n // For v4 schemas, use built-in z.toJSONSchema() method\n const zodWithJsonSchema = z as typeof z & {\n toJSONSchema?: (schema: Zod4TypeAny) => JsonSchemaDocument;\n };\n\n if (zodWithJsonSchema.toJSONSchema) {\n return zodWithJsonSchema.toJSONSchema(schema as Zod4TypeAny);\n }\n\n // This should never happen with Zod v4.1+\n throw new Error(\"Zod v4 toJSONSchema method not found\");\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3Evaluator mirrors Evaluator but operates on a V3 instance instead of Stagehand.
|
|
3
|
+
* It uses the V3 page/screenshot APIs and constructs an LLM client to run
|
|
4
|
+
* structured evaluations (YES/NO with reasoning) on screenshots and/or text.
|
|
5
|
+
*/
|
|
6
|
+
import type { AvailableModel, ClientOptions } from "./v3/types/public/model.js";
|
|
7
|
+
import type { EvaluateOptions, BatchAskOptions, EvaluationResult } from "./v3/types/private/evaluator.js";
|
|
8
|
+
import { V3 } from "./v3/v3.js";
|
|
9
|
+
export declare class V3Evaluator {
|
|
10
|
+
private v3;
|
|
11
|
+
private modelName;
|
|
12
|
+
private modelClientOptions;
|
|
13
|
+
private silentLogger;
|
|
14
|
+
constructor(v3: V3, modelName?: AvailableModel, modelClientOptions?: ClientOptions);
|
|
15
|
+
private getClient;
|
|
16
|
+
ask(options: EvaluateOptions): Promise<EvaluationResult>;
|
|
17
|
+
batchAsk(options: BatchAskOptions): Promise<EvaluationResult[]>;
|
|
18
|
+
private _evaluateWithMultipleScreenshots;
|
|
19
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3Evaluator mirrors Evaluator but operates on a V3 instance instead of Stagehand.
|
|
3
|
+
* It uses the V3 page/screenshot APIs and constructs an LLM client to run
|
|
4
|
+
* structured evaluations (YES/NO with reasoning) on screenshots and/or text.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { LLMProvider } from "./v3/llm/LLMProvider.js";
|
|
8
|
+
import { StagehandInvalidArgumentError } from "./v3/types/public/sdkErrors.js";
|
|
9
|
+
const EvaluationSchema = z.object({
|
|
10
|
+
evaluation: z.enum(["YES", "NO"]),
|
|
11
|
+
reasoning: z.string(),
|
|
12
|
+
});
|
|
13
|
+
const BatchEvaluationSchema = z.array(EvaluationSchema);
|
|
14
|
+
export class V3Evaluator {
|
|
15
|
+
v3;
|
|
16
|
+
modelName;
|
|
17
|
+
modelClientOptions;
|
|
18
|
+
silentLogger = () => { };
|
|
19
|
+
constructor(v3, modelName, modelClientOptions) {
|
|
20
|
+
this.v3 = v3;
|
|
21
|
+
this.modelName = modelName || "google/gemini-2.5-flash";
|
|
22
|
+
this.modelClientOptions = modelClientOptions || {
|
|
23
|
+
apiKey: process.env.GEMINI_API_KEY ||
|
|
24
|
+
process.env.GOOGLE_GENERATIVE_AI_API_KEY ||
|
|
25
|
+
"",
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
getClient() {
|
|
29
|
+
// Prefer a dedicated provider so we can override model per-evaluation
|
|
30
|
+
const provider = new LLMProvider(this.v3.logger);
|
|
31
|
+
return provider.getClient(this.modelName, this.modelClientOptions);
|
|
32
|
+
}
|
|
33
|
+
async ask(options) {
|
|
34
|
+
const { question, answer, screenshot = true, systemPrompt, screenshotDelayMs = 250, agentReasoning, } = options;
|
|
35
|
+
if (!question)
|
|
36
|
+
throw new StagehandInvalidArgumentError("Question cannot be an empty string");
|
|
37
|
+
if (!answer && !screenshot)
|
|
38
|
+
throw new StagehandInvalidArgumentError("Either answer (text) or screenshot must be provided");
|
|
39
|
+
if (Array.isArray(screenshot)) {
|
|
40
|
+
return this._evaluateWithMultipleScreenshots({
|
|
41
|
+
question,
|
|
42
|
+
screenshots: screenshot,
|
|
43
|
+
systemPrompt,
|
|
44
|
+
agentReasoning,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const defaultSystemPrompt = `You are an expert evaluator that confidently returns YES or NO based on if the original goal was achieved. You have access to ${screenshot ? "a screenshot" : "the agents reasoning and actions throughout the task"} that you can use to evaluate the tasks completion. Provide detailed reasoning for your answer.\n Today's date is ${new Date().toLocaleDateString()}`;
|
|
48
|
+
await new Promise((r) => setTimeout(r, screenshotDelayMs));
|
|
49
|
+
let imageBuffer;
|
|
50
|
+
if (screenshot) {
|
|
51
|
+
const page = await this.v3.context.awaitActivePage();
|
|
52
|
+
imageBuffer = await page.screenshot({ fullPage: false });
|
|
53
|
+
}
|
|
54
|
+
const llmClient = this.getClient();
|
|
55
|
+
const response = await llmClient.createChatCompletion({
|
|
56
|
+
logger: this.silentLogger,
|
|
57
|
+
options: {
|
|
58
|
+
messages: [
|
|
59
|
+
{ role: "system", content: systemPrompt || defaultSystemPrompt },
|
|
60
|
+
{
|
|
61
|
+
role: "user",
|
|
62
|
+
content: [
|
|
63
|
+
{
|
|
64
|
+
type: "text",
|
|
65
|
+
text: agentReasoning
|
|
66
|
+
? `Question: ${question}\n\nAgent's reasoning and actions taken:\n${agentReasoning}`
|
|
67
|
+
: question,
|
|
68
|
+
},
|
|
69
|
+
...(screenshot && imageBuffer
|
|
70
|
+
? [
|
|
71
|
+
{
|
|
72
|
+
type: "image_url",
|
|
73
|
+
image_url: {
|
|
74
|
+
url: `data:image/jpeg;base64,${imageBuffer.toString("base64")}`,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
]
|
|
78
|
+
: []),
|
|
79
|
+
...(answer
|
|
80
|
+
? [{ type: "text", text: `the answer is ${answer}` }]
|
|
81
|
+
: []),
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
response_model: { name: "EvaluationResult", schema: EvaluationSchema },
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
try {
|
|
89
|
+
const result = response.data;
|
|
90
|
+
return { evaluation: result.evaluation, reasoning: result.reasoning };
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
94
|
+
return {
|
|
95
|
+
evaluation: "INVALID",
|
|
96
|
+
reasoning: `Failed to get structured response: ${errorMessage}`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async batchAsk(options) {
|
|
101
|
+
const { questions, screenshot = true, systemPrompt = "You are an expert evaluator that returns YES or NO with a concise reasoning.", screenshotDelayMs = 250, } = options;
|
|
102
|
+
if (!questions?.length)
|
|
103
|
+
throw new StagehandInvalidArgumentError("Questions array cannot be empty");
|
|
104
|
+
await new Promise((r) => setTimeout(r, screenshotDelayMs));
|
|
105
|
+
let imageBuffer;
|
|
106
|
+
if (screenshot) {
|
|
107
|
+
const page = await this.v3.context.awaitActivePage();
|
|
108
|
+
imageBuffer = await page.screenshot({ fullPage: false });
|
|
109
|
+
}
|
|
110
|
+
const llmClient = this.getClient();
|
|
111
|
+
const formatted = questions
|
|
112
|
+
.map((item, i) => `${i + 1}. ${item.question}${item.answer ? `\n Answer: ${item.answer}` : ""}`)
|
|
113
|
+
.join("\n\n");
|
|
114
|
+
const response = await llmClient.createChatCompletion({
|
|
115
|
+
logger: this.silentLogger,
|
|
116
|
+
options: {
|
|
117
|
+
messages: [
|
|
118
|
+
{
|
|
119
|
+
role: "system",
|
|
120
|
+
content: `${systemPrompt}\n\nYou will be given multiple questions${screenshot ? " with a screenshot" : ""}. ${questions.some((q) => q.answer) ? "Some questions include answers to evaluate." : ""} Answer each question by returning an object in the specified JSON format. Return a single JSON array containing one object for each question in the order they were asked.`,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
role: "user",
|
|
124
|
+
content: [
|
|
125
|
+
{ type: "text", text: formatted },
|
|
126
|
+
...(screenshot && imageBuffer
|
|
127
|
+
? [
|
|
128
|
+
{
|
|
129
|
+
type: "image_url",
|
|
130
|
+
image_url: {
|
|
131
|
+
url: `data:image/jpeg;base64,${imageBuffer.toString("base64")}`,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
]
|
|
135
|
+
: []),
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
response_model: {
|
|
140
|
+
name: "BatchEvaluationResult",
|
|
141
|
+
schema: BatchEvaluationSchema,
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
try {
|
|
146
|
+
const results = response.data;
|
|
147
|
+
return results.map((r) => ({
|
|
148
|
+
evaluation: r.evaluation,
|
|
149
|
+
reasoning: r.reasoning,
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
154
|
+
return questions.map(() => ({
|
|
155
|
+
evaluation: "INVALID",
|
|
156
|
+
reasoning: `Failed to get structured response: ${errorMessage}`,
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async _evaluateWithMultipleScreenshots(options) {
|
|
161
|
+
const { question, screenshots, agentReasoning, systemPrompt = `You are an expert evaluator that confidently returns YES or NO given a question and multiple screenshots showing the progression of a task.
|
|
162
|
+
${agentReasoning ? "You also have access to the agent's detailed reasoning and thought process throughout the task." : ""}
|
|
163
|
+
Analyze ALL screenshots to understand the complete journey. Look for evidence of task completion across all screenshots, not just the last one.
|
|
164
|
+
Success criteria may appear at different points in the sequence (confirmation messages, intermediate states, etc).
|
|
165
|
+
${agentReasoning ? "The agent's reasoning provides crucial context about what actions were attempted, what was observed, and the decision-making process. Use this alongside the visual evidence to make a comprehensive evaluation." : ""}
|
|
166
|
+
Today's date is ${new Date().toLocaleDateString()}`, } = options;
|
|
167
|
+
if (!question)
|
|
168
|
+
throw new StagehandInvalidArgumentError("Question cannot be an empty string");
|
|
169
|
+
if (!screenshots || screenshots.length === 0)
|
|
170
|
+
throw new StagehandInvalidArgumentError("At least one screenshot must be provided");
|
|
171
|
+
const llmClient = this.getClient();
|
|
172
|
+
const imageContents = screenshots.map((s) => ({
|
|
173
|
+
type: "image_url",
|
|
174
|
+
image_url: { url: `data:image/jpeg;base64,${s.toString("base64")}` },
|
|
175
|
+
}));
|
|
176
|
+
const response = await llmClient.createChatCompletion({
|
|
177
|
+
logger: this.silentLogger,
|
|
178
|
+
options: {
|
|
179
|
+
messages: [
|
|
180
|
+
{ role: "system", content: systemPrompt },
|
|
181
|
+
{
|
|
182
|
+
role: "user",
|
|
183
|
+
content: [
|
|
184
|
+
{
|
|
185
|
+
type: "text",
|
|
186
|
+
text: agentReasoning
|
|
187
|
+
? `Question: ${question}\n\nAgent's reasoning and actions throughout the task:\n${agentReasoning}\n\nI'm providing ${screenshots.length} screenshots showing the progression of the task. Please analyze both the agent's reasoning and all screenshots to determine if the task was completed successfully.`
|
|
188
|
+
: `${question}\n\nI'm providing ${screenshots.length} screenshots showing the progression of the task. Please analyze all of them to determine if the task was completed successfully.`,
|
|
189
|
+
},
|
|
190
|
+
...imageContents,
|
|
191
|
+
],
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
response_model: { name: "EvaluationResult", schema: EvaluationSchema },
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
try {
|
|
198
|
+
const result = response.data;
|
|
199
|
+
return { evaluation: result.evaluation, reasoning: result.reasoning };
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
203
|
+
return {
|
|
204
|
+
evaluation: "INVALID",
|
|
205
|
+
reasoning: `Failed to get structured response: ${errorMessage}`,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=v3Evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3Evaluator.js","sourceRoot":"","sources":["../../../lib/v3Evaluator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * V3Evaluator mirrors Evaluator but operates on a V3 instance instead of Stagehand.\n * It uses the V3 page/screenshot APIs and constructs an LLM client to run\n * structured evaluations (YES/NO with reasoning) on screenshots and/or text.\n */\n\nimport { z } from \"zod\";\nimport type { AvailableModel, ClientOptions } from \"./v3/types/public/model.js\";\nimport type {\n EvaluateOptions,\n BatchAskOptions,\n EvaluationResult,\n} from \"./v3/types/private/evaluator.js\";\nimport { LLMParsedResponse } from \"./inference.js\";\nimport { LLMResponse, LLMClient } from \"./v3/llm/LLMClient.js\";\nimport { LogLine } from \"./v3/types/public/logs.js\";\nimport { V3 } from \"./v3/v3.js\";\nimport { LLMProvider } from \"./v3/llm/LLMProvider.js\";\nimport { StagehandInvalidArgumentError } from \"./v3/types/public/sdkErrors.js\";\n\nconst EvaluationSchema = z.object({\n evaluation: z.enum([\"YES\", \"NO\"]),\n reasoning: z.string(),\n});\n\nconst BatchEvaluationSchema = z.array(EvaluationSchema);\n\nexport class V3Evaluator {\n private v3: V3;\n private modelName: AvailableModel;\n private modelClientOptions: ClientOptions | { apiKey: string };\n private silentLogger: (message: LogLine) => void = () => {};\n\n constructor(\n v3: V3,\n modelName?: AvailableModel,\n modelClientOptions?: ClientOptions,\n ) {\n this.v3 = v3;\n this.modelName = modelName || (\"google/gemini-2.5-flash\" as AvailableModel);\n this.modelClientOptions = modelClientOptions || {\n apiKey:\n process.env.GEMINI_API_KEY ||\n process.env.GOOGLE_GENERATIVE_AI_API_KEY ||\n \"\",\n };\n }\n\n private getClient(): LLMClient {\n // Prefer a dedicated provider so we can override model per-evaluation\n const provider = new LLMProvider(this.v3.logger);\n return provider.getClient(this.modelName, this.modelClientOptions);\n }\n\n async ask(options: EvaluateOptions): Promise<EvaluationResult> {\n const {\n question,\n answer,\n screenshot = true,\n systemPrompt,\n screenshotDelayMs = 250,\n agentReasoning,\n } = options;\n if (!question)\n throw new StagehandInvalidArgumentError(\n \"Question cannot be an empty string\",\n );\n if (!answer && !screenshot)\n throw new StagehandInvalidArgumentError(\n \"Either answer (text) or screenshot must be provided\",\n );\n\n if (Array.isArray(screenshot)) {\n return this._evaluateWithMultipleScreenshots({\n question,\n screenshots: screenshot,\n systemPrompt,\n agentReasoning,\n });\n }\n\n const defaultSystemPrompt = `You are an expert evaluator that confidently returns YES or NO based on if the original goal was achieved. You have access to ${screenshot ? \"a screenshot\" : \"the agents reasoning and actions throughout the task\"} that you can use to evaluate the tasks completion. Provide detailed reasoning for your answer.\\n Today's date is ${new Date().toLocaleDateString()}`;\n\n await new Promise((r) => setTimeout(r, screenshotDelayMs));\n let imageBuffer: Buffer | undefined;\n if (screenshot) {\n const page = await this.v3.context.awaitActivePage();\n imageBuffer = await page.screenshot({ fullPage: false });\n }\n\n const llmClient = this.getClient();\n\n const response = await llmClient.createChatCompletion<\n LLMParsedResponse<LLMResponse>\n >({\n logger: this.silentLogger,\n options: {\n messages: [\n { role: \"system\", content: systemPrompt || defaultSystemPrompt },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: agentReasoning\n ? `Question: ${question}\\n\\nAgent's reasoning and actions taken:\\n${agentReasoning}`\n : question,\n },\n ...(screenshot && imageBuffer\n ? [\n {\n type: \"image_url\" as const,\n image_url: {\n url: `data:image/jpeg;base64,${imageBuffer.toString(\"base64\")}`,\n },\n },\n ]\n : []),\n ...(answer\n ? [{ type: \"text\" as const, text: `the answer is ${answer}` }]\n : []),\n ],\n },\n ],\n response_model: { name: \"EvaluationResult\", schema: EvaluationSchema },\n },\n });\n\n try {\n const result = response.data as unknown as z.infer<\n typeof EvaluationSchema\n >;\n return { evaluation: result.evaluation, reasoning: result.reasoning };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return {\n evaluation: \"INVALID\",\n reasoning: `Failed to get structured response: ${errorMessage}`,\n } as const;\n }\n }\n\n async batchAsk(options: BatchAskOptions): Promise<EvaluationResult[]> {\n const {\n questions,\n screenshot = true,\n systemPrompt = \"You are an expert evaluator that returns YES or NO with a concise reasoning.\",\n screenshotDelayMs = 250,\n } = options;\n if (!questions?.length)\n throw new StagehandInvalidArgumentError(\n \"Questions array cannot be empty\",\n );\n\n await new Promise((r) => setTimeout(r, screenshotDelayMs));\n let imageBuffer: Buffer | undefined;\n if (screenshot) {\n const page = await this.v3.context.awaitActivePage();\n imageBuffer = await page.screenshot({ fullPage: false });\n }\n\n const llmClient = this.getClient();\n\n const formatted = questions\n .map(\n (item, i) =>\n `${i + 1}. ${item.question}${item.answer ? `\\n Answer: ${item.answer}` : \"\"}`,\n )\n .join(\"\\n\\n\");\n\n const response = await llmClient.createChatCompletion<\n LLMParsedResponse<LLMResponse>\n >({\n logger: this.silentLogger,\n options: {\n messages: [\n {\n role: \"system\",\n content: `${systemPrompt}\\n\\nYou will be given multiple questions${screenshot ? \" with a screenshot\" : \"\"}. ${questions.some((q) => q.answer) ? \"Some questions include answers to evaluate.\" : \"\"} Answer each question by returning an object in the specified JSON format. Return a single JSON array containing one object for each question in the order they were asked.`,\n },\n {\n role: \"user\",\n content: [\n { type: \"text\", text: formatted },\n ...(screenshot && imageBuffer\n ? [\n {\n type: \"image_url\" as const,\n image_url: {\n url: `data:image/jpeg;base64,${imageBuffer.toString(\"base64\")}`,\n },\n },\n ]\n : []),\n ],\n },\n ],\n response_model: {\n name: \"BatchEvaluationResult\",\n schema: BatchEvaluationSchema,\n },\n },\n });\n\n try {\n const results = response.data as unknown as z.infer<\n typeof BatchEvaluationSchema\n >;\n return results.map((r) => ({\n evaluation: r.evaluation,\n reasoning: r.reasoning,\n }));\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return questions.map(() => ({\n evaluation: \"INVALID\" as const,\n reasoning: `Failed to get structured response: ${errorMessage}`,\n }));\n }\n }\n\n private async _evaluateWithMultipleScreenshots(options: {\n question: string;\n screenshots: Buffer[];\n systemPrompt?: string;\n agentReasoning?: string;\n }): Promise<EvaluationResult> {\n const {\n question,\n screenshots,\n agentReasoning,\n systemPrompt = `You are an expert evaluator that confidently returns YES or NO given a question and multiple screenshots showing the progression of a task.\n ${agentReasoning ? \"You also have access to the agent's detailed reasoning and thought process throughout the task.\" : \"\"}\n Analyze ALL screenshots to understand the complete journey. Look for evidence of task completion across all screenshots, not just the last one.\n Success criteria may appear at different points in the sequence (confirmation messages, intermediate states, etc).\n ${agentReasoning ? \"The agent's reasoning provides crucial context about what actions were attempted, what was observed, and the decision-making process. Use this alongside the visual evidence to make a comprehensive evaluation.\" : \"\"}\n Today's date is ${new Date().toLocaleDateString()}`,\n } = options;\n\n if (!question)\n throw new StagehandInvalidArgumentError(\n \"Question cannot be an empty string\",\n );\n if (!screenshots || screenshots.length === 0)\n throw new StagehandInvalidArgumentError(\n \"At least one screenshot must be provided\",\n );\n\n const llmClient = this.getClient();\n\n const imageContents = screenshots.map((s) => ({\n type: \"image_url\" as const,\n image_url: { url: `data:image/jpeg;base64,${s.toString(\"base64\")}` },\n }));\n\n const response = await llmClient.createChatCompletion<\n LLMParsedResponse<LLMResponse>\n >({\n logger: this.silentLogger,\n options: {\n messages: [\n { role: \"system\", content: systemPrompt },\n {\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: agentReasoning\n ? `Question: ${question}\\n\\nAgent's reasoning and actions throughout the task:\\n${agentReasoning}\\n\\nI'm providing ${screenshots.length} screenshots showing the progression of the task. Please analyze both the agent's reasoning and all screenshots to determine if the task was completed successfully.`\n : `${question}\\n\\nI'm providing ${screenshots.length} screenshots showing the progression of the task. Please analyze all of them to determine if the task was completed successfully.`,\n },\n ...imageContents,\n ],\n },\n ],\n response_model: { name: \"EvaluationResult\", schema: EvaluationSchema },\n },\n });\n\n try {\n const result = response.data as unknown as z.infer<\n typeof EvaluationSchema\n >;\n return { evaluation: result.evaluation, reasoning: result.reasoning };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n return {\n evaluation: \"INVALID\",\n reasoning: `Failed to get structured response: ${errorMessage}`,\n } as const;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAgB,CAAC","sourcesContent":["/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n * Run `pnpm run gen-version` to refresh.\n */\nexport const STAGEHAND_VERSION = \"3.0.8\" as const;\n"]}
|