@browserbasehq/orca 3.1.0-patch.3 → 3.2.0-middleware.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 +2 -210
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +2 -25025
- package/dist/cjs/lib/inference.js +335 -0
- package/dist/cjs/lib/inference.js.map +1 -0
- package/dist/cjs/lib/inferenceLogUtils.js +99 -0
- package/dist/cjs/lib/inferenceLogUtils.js.map +1 -0
- package/dist/cjs/lib/logger.js +331 -0
- package/dist/cjs/lib/logger.js.map +1 -0
- package/dist/cjs/lib/modelUtils.d.ts +1 -0
- package/dist/cjs/lib/modelUtils.js +53 -0
- package/dist/cjs/lib/modelUtils.js.map +1 -0
- package/dist/cjs/lib/prompt.d.ts +3 -2
- package/dist/cjs/lib/prompt.js +245 -0
- package/dist/cjs/lib/prompt.js.map +1 -0
- package/dist/cjs/lib/utils.d.ts +1 -0
- package/dist/cjs/lib/utils.js +674 -0
- package/dist/cjs/lib/utils.js.map +1 -0
- package/dist/cjs/lib/v3/agent/AgentClient.d.ts +8 -0
- package/dist/cjs/lib/v3/agent/AgentClient.js +34 -0
- package/dist/cjs/lib/v3/agent/AgentClient.js.map +1 -0
- package/dist/cjs/lib/v3/agent/AgentProvider.js +81 -0
- package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -0
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +843 -0
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +802 -0
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -0
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +778 -0
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +4 -4
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +681 -0
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -0
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +7 -3
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js +212 -0
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/act.d.ts +2 -2
- package/dist/cjs/lib/v3/agent/tools/act.js +66 -0
- package/dist/cjs/lib/v3/agent/tools/act.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +8 -1
- package/dist/cjs/lib/v3/agent/tools/ariaTree.js +62 -0
- package/dist/cjs/lib/v3/agent/tools/ariaTree.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/braveSearch.js +77 -0
- package/dist/cjs/lib/v3/agent/tools/braveSearch.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
- package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js +70 -0
- package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/click.js +100 -0
- package/dist/cjs/lib/v3/agent/tools/click.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/clickAndHold.js +72 -0
- package/dist/cjs/lib/v3/agent/tools/clickAndHold.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js +101 -0
- package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/extract.d.ts +2 -2
- package/dist/cjs/lib/v3/agent/tools/extract.js +101 -0
- package/dist/cjs/lib/v3/agent/tools/extract.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
- package/dist/cjs/lib/v3/agent/tools/fillFormVision.js +158 -0
- package/dist/cjs/lib/v3/agent/tools/fillFormVision.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +8 -3
- package/dist/cjs/lib/v3/agent/tools/fillform.js +78 -0
- package/dist/cjs/lib/v3/agent/tools/fillform.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/goto.js +35 -0
- package/dist/cjs/lib/v3/agent/tools/goto.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/index.d.ts +25 -4
- package/dist/cjs/lib/v3/agent/tools/index.js +130 -0
- package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/keys.d.ts +1 -1
- package/dist/cjs/lib/v3/agent/tools/keys.js +64 -0
- package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/navback.js +27 -0
- package/dist/cjs/lib/v3/agent/tools/navback.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +8 -0
- package/dist/cjs/lib/v3/agent/tools/screenshot.js +47 -0
- package/dist/cjs/lib/v3/agent/tools/screenshot.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/scroll.js +159 -0
- package/dist/cjs/lib/v3/agent/tools/scroll.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/think.js +28 -0
- package/dist/cjs/lib/v3/agent/tools/think.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/type.d.ts +2 -2
- package/dist/cjs/lib/v3/agent/tools/type.js +111 -0
- package/dist/cjs/lib/v3/agent/tools/type.js.map +1 -0
- package/dist/cjs/lib/v3/agent/tools/wait.js +63 -0
- package/dist/cjs/lib/v3/agent/tools/wait.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/actionMapping.js +103 -0
- package/dist/cjs/lib/v3/agent/utils/actionMapping.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/captchaSolver.d.ts +76 -0
- package/dist/cjs/lib/v3/agent/utils/captchaSolver.js +175 -0
- package/dist/cjs/lib/v3/agent/utils/captchaSolver.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js +33 -0
- package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js +65 -0
- package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js +150 -0
- package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +108 -0
- package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/imageCompression.js +212 -0
- package/dist/cjs/lib/v3/agent/utils/imageCompression.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/messageProcessing.js +167 -0
- package/dist/cjs/lib/v3/agent/utils/messageProcessing.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js +29 -0
- package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js +90 -0
- package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/variables.d.ts +21 -0
- package/dist/cjs/lib/v3/agent/utils/variables.js +54 -0
- package/dist/cjs/lib/v3/agent/utils/variables.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/xpath.js +22 -0
- package/dist/cjs/lib/v3/agent/utils/xpath.js.map +1 -0
- package/dist/cjs/lib/v3/api.d.ts +23 -5
- package/dist/cjs/lib/v3/api.js +589 -0
- package/dist/cjs/lib/v3/api.js.map +1 -0
- package/dist/cjs/lib/v3/cache/ActCache.d.ts +0 -1
- package/dist/cjs/lib/v3/cache/ActCache.js +280 -0
- package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -0
- package/dist/cjs/lib/v3/cache/AgentCache.d.ts +1 -0
- package/dist/cjs/lib/v3/cache/AgentCache.js +651 -0
- package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -0
- package/dist/cjs/lib/v3/cache/CacheStorage.js +105 -0
- package/dist/cjs/lib/v3/cache/CacheStorage.js.map +1 -0
- package/dist/cjs/lib/v3/cache/serverAgentCache.js +52 -0
- package/dist/cjs/lib/v3/cache/serverAgentCache.js.map +1 -0
- package/dist/cjs/lib/v3/cache/utils.js +44 -0
- package/dist/cjs/lib/v3/cache/utils.js.map +1 -0
- package/dist/cjs/lib/v3/cli.js +15 -0
- package/dist/cjs/lib/v3/cli.js.map +1 -0
- package/dist/cjs/lib/v3/dom/a11yScripts/index.js +124 -0
- package/dist/cjs/lib/v3/dom/a11yScripts/index.js.map +1 -0
- package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js +23 -0
- package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +59 -0
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
- package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js +5 -0
- package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js.map +1 -0
- package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js +11 -0
- package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
- package/dist/cjs/lib/v3/dom/build/scriptV3Content.js +5 -0
- package/dist/cjs/lib/v3/dom/build/scriptV3Content.js.map +1 -0
- package/dist/cjs/lib/v3/dom/index.js +18 -0
- package/dist/cjs/lib/v3/dom/index.js.map +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/counts.js +278 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/counts.js.map +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/index.js +21 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/index.js.map +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js +474 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js +289 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js +286 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js +381 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +202 -0
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
- package/dist/cjs/lib/v3/dom/piercer.entry.js +5 -0
- package/dist/cjs/lib/v3/dom/piercer.entry.js.map +1 -0
- package/dist/cjs/lib/v3/dom/piercer.runtime.js +93 -0
- package/dist/cjs/lib/v3/dom/piercer.runtime.js.map +1 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js +5 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js +43 -0
- package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/index.js +6 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/index.js.map +1 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js +85 -0
- package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
- package/dist/cjs/lib/v3/external_clients/aisdk.js +107 -0
- package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -0
- package/dist/cjs/lib/v3/external_clients/customOpenAI.js +224 -0
- package/dist/cjs/lib/v3/external_clients/customOpenAI.js.map +1 -0
- package/dist/cjs/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
- package/dist/cjs/lib/v3/flowlogger/EventEmitter.js +30 -0
- package/dist/cjs/lib/v3/flowlogger/EventEmitter.js.map +1 -0
- package/dist/cjs/lib/v3/flowlogger/EventSink.d.ts +44 -0
- package/dist/cjs/lib/v3/flowlogger/EventSink.js +217 -0
- package/dist/cjs/lib/v3/flowlogger/EventSink.js.map +1 -0
- package/dist/cjs/lib/v3/flowlogger/EventStore.d.ts +26 -0
- package/dist/cjs/lib/v3/flowlogger/EventStore.js +135 -0
- package/dist/cjs/lib/v3/flowlogger/EventStore.js.map +1 -0
- package/dist/cjs/lib/v3/flowlogger/FlowLogger.d.ts +99 -0
- package/dist/cjs/lib/v3/flowlogger/FlowLogger.js +591 -0
- package/dist/cjs/lib/v3/flowlogger/FlowLogger.js.map +1 -0
- package/dist/cjs/lib/v3/flowlogger/prettify.d.ts +6 -0
- package/dist/cjs/lib/v3/flowlogger/prettify.js +395 -0
- package/dist/cjs/lib/v3/flowlogger/prettify.js.map +1 -0
- package/dist/cjs/lib/v3/handlers/actHandler.d.ts +2 -1
- package/dist/cjs/lib/v3/handlers/actHandler.js +344 -0
- package/dist/cjs/lib/v3/handlers/actHandler.js.map +1 -0
- package/dist/cjs/lib/v3/handlers/extractHandler.js +144 -0
- package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +590 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js +17 -0
- package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
- package/dist/cjs/lib/v3/handlers/observeHandler.js +159 -0
- package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -0
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +2 -5
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +506 -0
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -0
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +5 -0
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +652 -0
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
- package/dist/cjs/lib/v3/index.d.ts +143 -0
- package/dist/cjs/lib/v3/index.js +119 -0
- package/dist/cjs/lib/v3/index.js.map +1 -0
- package/dist/cjs/lib/v3/launch/browserbase.d.ts +1 -1
- package/dist/cjs/lib/v3/launch/browserbase.js +47 -0
- package/dist/cjs/lib/v3/launch/browserbase.js.map +1 -0
- package/dist/cjs/lib/v3/launch/local.js +104 -0
- package/dist/cjs/lib/v3/launch/local.js.map +1 -0
- package/dist/cjs/lib/v3/llm/AnthropicClient.js +246 -0
- package/dist/cjs/lib/v3/llm/AnthropicClient.js.map +1 -0
- package/dist/cjs/lib/v3/llm/CerebrasClient.js +242 -0
- package/dist/cjs/lib/v3/llm/CerebrasClient.js.map +1 -0
- package/dist/cjs/lib/v3/llm/GoogleClient.js +373 -0
- package/dist/cjs/lib/v3/llm/GoogleClient.js.map +1 -0
- package/dist/cjs/lib/v3/llm/GroqClient.js +243 -0
- package/dist/cjs/lib/v3/llm/GroqClient.js.map +1 -0
- package/dist/cjs/lib/v3/llm/LLMClient.js +27 -0
- package/dist/cjs/lib/v3/llm/LLMClient.js.map +1 -0
- package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +5 -2
- package/dist/cjs/lib/v3/llm/LLMProvider.js +201 -0
- package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -0
- package/dist/cjs/lib/v3/llm/OpenAIClient.js +336 -0
- package/dist/cjs/lib/v3/llm/OpenAIClient.js.map +1 -0
- package/dist/cjs/lib/v3/llm/aisdk.js +349 -0
- package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -0
- package/dist/cjs/lib/v3/logger.js +102 -0
- package/dist/cjs/lib/v3/logger.js.map +1 -0
- package/dist/cjs/lib/v3/mcp/connection.d.ts +2 -0
- package/dist/cjs/lib/v3/mcp/connection.js +56 -0
- package/dist/cjs/lib/v3/mcp/connection.js.map +1 -0
- package/dist/cjs/lib/v3/mcp/utils.js +40 -0
- package/dist/cjs/lib/v3/mcp/utils.js.map +1 -0
- package/dist/cjs/lib/v3/runtimePaths.d.ts +6 -0
- package/dist/cjs/lib/v3/runtimePaths.js +119 -0
- package/dist/cjs/lib/v3/runtimePaths.js.map +1 -0
- package/dist/cjs/lib/v3/shutdown/cleanupLocal.js +36 -0
- package/dist/cjs/lib/v3/shutdown/cleanupLocal.js.map +1 -0
- package/dist/cjs/lib/v3/shutdown/supervisor.js +193 -0
- package/dist/cjs/lib/v3/shutdown/supervisor.js.map +1 -0
- package/dist/cjs/lib/v3/shutdown/supervisorClient.js +95 -0
- package/dist/cjs/lib/v3/shutdown/supervisorClient.js.map +1 -0
- package/dist/cjs/lib/v3/timeoutConfig.d.ts +1 -1
- package/dist/cjs/lib/v3/timeoutConfig.js +36 -0
- package/dist/cjs/lib/v3/timeoutConfig.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/agent.js +3 -0
- package/dist/cjs/lib/v3/types/private/agent.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/api.js +3 -0
- package/dist/cjs/lib/v3/types/private/api.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/cache.d.ts +3 -1
- package/dist/cjs/lib/v3/types/private/cache.js +3 -0
- package/dist/cjs/lib/v3/types/private/cache.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/evaluator.js +3 -0
- package/dist/cjs/lib/v3/types/private/evaluator.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/handlers.d.ts +2 -1
- package/dist/cjs/lib/v3/types/private/handlers.js +19 -0
- package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/index.js +24 -0
- package/dist/cjs/lib/v3/types/private/index.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/internal.js +3 -0
- package/dist/cjs/lib/v3/types/private/internal.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/locator.js +3 -0
- package/dist/cjs/lib/v3/types/private/locator.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/network.js +6 -0
- package/dist/cjs/lib/v3/types/private/network.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/shutdown.d.ts +1 -1
- package/dist/cjs/lib/v3/types/private/shutdown.js +6 -0
- package/dist/cjs/lib/v3/types/private/shutdown.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/shutdownErrors.js +28 -0
- package/dist/cjs/lib/v3/types/private/shutdownErrors.js.map +1 -0
- package/dist/cjs/lib/v3/types/private/snapshot.js +3 -0
- package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/agent.d.ts +76 -4
- package/dist/cjs/lib/v3/types/public/agent.js +18 -0
- package/dist/cjs/lib/v3/types/public/agent.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/api.d.ts +21 -0
- package/dist/cjs/lib/v3/types/public/api.js +930 -0
- package/dist/cjs/lib/v3/types/public/api.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/apiErrors.js +41 -0
- package/dist/cjs/lib/v3/types/public/apiErrors.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/context.d.ts +32 -0
- package/dist/cjs/lib/v3/types/public/context.js +3 -0
- package/dist/cjs/lib/v3/types/public/context.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/index.d.ts +1 -0
- package/dist/cjs/lib/v3/types/public/index.js +56 -0
- package/dist/cjs/lib/v3/types/public/index.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/locator.js +3 -0
- package/dist/cjs/lib/v3/types/public/locator.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/logs.js +16 -0
- package/dist/cjs/lib/v3/types/public/logs.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/methods.d.ts +33 -2
- package/dist/cjs/lib/v3/types/public/methods.js +18 -0
- package/dist/cjs/lib/v3/types/public/methods.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/metrics.js +3 -0
- package/dist/cjs/lib/v3/types/public/metrics.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/model.d.ts +12 -3
- package/dist/cjs/lib/v3/types/public/model.js +3 -0
- package/dist/cjs/lib/v3/types/public/model.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/options.d.ts +15 -0
- package/dist/cjs/lib/v3/types/public/options.js +7 -0
- package/dist/cjs/lib/v3/types/public/options.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/page.js +8 -0
- package/dist/cjs/lib/v3/types/public/page.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/screenshotTypes.js +3 -0
- package/dist/cjs/lib/v3/types/public/screenshotTypes.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +13 -0
- package/dist/cjs/lib/v3/types/public/sdkErrors.js +390 -0
- package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +204 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js +124 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js +345 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +132 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js +285 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js +226 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js +12 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js +26 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +143 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js +110 -0
- package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/a11yInvocation.js +15 -0
- package/dist/cjs/lib/v3/understudy/a11yInvocation.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/cdp.d.ts +9 -13
- package/dist/cjs/lib/v3/understudy/cdp.js +430 -0
- package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/consoleMessage.js +70 -0
- package/dist/cjs/lib/v3/understudy/consoleMessage.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/context.d.ts +34 -0
- package/dist/cjs/lib/v3/understudy/context.js +960 -0
- package/dist/cjs/lib/v3/understudy/context.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/cookies.d.ts +32 -0
- package/dist/cjs/lib/v3/understudy/cookies.js +142 -0
- package/dist/cjs/lib/v3/understudy/cookies.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/deepLocator.js +204 -0
- package/dist/cjs/lib/v3/understudy/deepLocator.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/executionContextRegistry.js +87 -0
- package/dist/cjs/lib/v3/understudy/executionContextRegistry.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/fileUploadUtils.js +88 -0
- package/dist/cjs/lib/v3/understudy/fileUploadUtils.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/frame.js +232 -0
- package/dist/cjs/lib/v3/understudy/frame.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/frameLocator.js +260 -0
- package/dist/cjs/lib/v3/understudy/frameLocator.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/frameRegistry.js +302 -0
- package/dist/cjs/lib/v3/understudy/frameRegistry.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/initScripts.js +36 -0
- package/dist/cjs/lib/v3/understudy/initScripts.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js +249 -0
- package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/locator.js +790 -0
- package/dist/cjs/lib/v3/understudy/locator.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/locatorInvocation.js +15 -0
- package/dist/cjs/lib/v3/understudy/locatorInvocation.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js +228 -0
- package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/networkManager.js +310 -0
- package/dist/cjs/lib/v3/understudy/networkManager.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/page.d.ts +13 -0
- package/dist/cjs/lib/v3/understudy/page.js +2008 -0
- package/dist/cjs/lib/v3/understudy/page.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/piercer.js +65 -0
- package/dist/cjs/lib/v3/understudy/piercer.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/response.js +335 -0
- package/dist/cjs/lib/v3/understudy/response.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +0 -1
- package/dist/cjs/lib/v3/understudy/screenshotUtils.js +345 -0
- package/dist/cjs/lib/v3/understudy/screenshotUtils.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/selectorResolver.js +300 -0
- package/dist/cjs/lib/v3/understudy/selectorResolver.js.map +1 -0
- package/dist/cjs/lib/v3/v3.d.ts +26 -3
- package/dist/cjs/lib/v3/v3.js +1679 -0
- package/dist/cjs/lib/v3/v3.js.map +1 -0
- package/dist/cjs/lib/v3/zodCompat.js +26 -0
- package/dist/cjs/lib/v3/zodCompat.js.map +1 -0
- package/dist/cjs/lib/v3Evaluator.js +214 -0
- package/dist/cjs/lib/v3Evaluator.js.map +1 -0
- package/dist/cjs/lib/version.d.ts +1 -1
- package/dist/cjs/lib/version.js +9 -0
- package/dist/cjs/lib/version.js.map +1 -0
- package/dist/cjs/tests/cache-variables.test.js +221 -0
- package/dist/cjs/tests/cache-variables.test.js.map +1 -0
- package/dist/cjs/tests/integration/agent-abort-signal.spec.js +123 -0
- package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +1 -0
- package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +83 -0
- package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
- package/dist/cjs/tests/integration/agent-callbacks.spec.js +385 -0
- package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +1 -0
- package/dist/cjs/tests/integration/agent-captcha-autosolve.spec.js +56 -0
- package/dist/cjs/tests/integration/agent-captcha-autosolve.spec.js.map +1 -0
- package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +362 -0
- package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +1 -0
- package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +262 -0
- package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
- package/dist/cjs/tests/integration/agent-message-continuation.spec.js +112 -0
- package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +1 -0
- package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/agent-streaming.spec.js +140 -0
- package/dist/cjs/tests/integration/agent-streaming.spec.js.map +1 -0
- package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +41 -0
- package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +1 -0
- package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/cdp-connection-close.spec.js +76 -0
- package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +1 -0
- package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/cdp-session-detached.spec.js +45 -0
- package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +1 -0
- package/dist/cjs/tests/integration/click-count.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/click-count.spec.js +163 -0
- package/dist/cjs/tests/integration/click-count.spec.js.map +1 -0
- package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +99 -0
- package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
- package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/context-addInitScript.spec.js +285 -0
- package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +1 -0
- package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +49 -0
- package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +1 -0
- package/dist/cjs/tests/integration/cookies.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/cookies.spec.js +187 -0
- package/dist/cjs/tests/integration/cookies.spec.js.map +1 -0
- package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/default-page-tracking.spec.js +52 -0
- package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +1 -0
- package/dist/cjs/tests/integration/downloads.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/downloads.spec.js +52 -0
- package/dist/cjs/tests/integration/downloads.spec.js.map +1 -0
- package/dist/cjs/tests/integration/flowLogger.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/flowLogger.spec.js +714 -0
- package/dist/cjs/tests/integration/flowLogger.spec.js.map +1 -0
- package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +57 -0
- package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +219 -0
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +474 -0
- package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
- package/dist/cjs/tests/integration/keep-alive.child.d.ts +1 -0
- package/dist/cjs/tests/integration/keep-alive.child.js +85 -0
- package/dist/cjs/tests/integration/keep-alive.child.js.map +1 -0
- package/dist/cjs/tests/integration/keep-alive.spec.d.ts +22 -0
- package/dist/cjs/tests/integration/keep-alive.spec.js +490 -0
- package/dist/cjs/tests/integration/keep-alive.spec.js.map +1 -0
- package/dist/cjs/tests/integration/keyboard.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/keyboard.spec.js +259 -0
- package/dist/cjs/tests/integration/keyboard.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +150 -0
- package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-content-methods.spec.js +180 -0
- package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-count-iframe.spec.js +129 -0
- package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-count.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-count.spec.js +68 -0
- package/dist/cjs/tests/integration/locator-count.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-fill.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-fill.spec.js +117 -0
- package/dist/cjs/tests/integration/locator-fill.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-input-methods.spec.js +127 -0
- package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-nth.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-nth.spec.js +175 -0
- package/dist/cjs/tests/integration/locator-nth.spec.js.map +1 -0
- package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/locator-select-option.spec.js +216 -0
- package/dist/cjs/tests/integration/locator-select-option.spec.js.map +1 -0
- package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/logger-initialization.spec.js +597 -0
- package/dist/cjs/tests/integration/logger-initialization.spec.js.map +1 -0
- package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/multi-instance-logger.spec.js +293 -0
- package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +1 -0
- package/dist/cjs/tests/integration/nested-div.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/nested-div.spec.js +22 -0
- package/dist/cjs/tests/integration/nested-div.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-addInitScript.spec.js +94 -0
- package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-console.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-console.spec.js +47 -0
- package/dist/cjs/tests/integration/page-console.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +437 -0
- package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +85 -0
- package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-goto-response.spec.js +34 -0
- package/dist/cjs/tests/integration/page-goto-response.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-hover.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-hover.spec.js +165 -0
- package/dist/cjs/tests/integration/page-hover.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-screenshot.spec.js +292 -0
- package/dist/cjs/tests/integration/page-screenshot.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-scroll.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-scroll.spec.js +183 -0
- package/dist/cjs/tests/integration/page-scroll.spec.js.map +1 -0
- package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/page-send-cdp.spec.js +47 -0
- package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +1 -0
- package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/perform-understudy-method.spec.js +63 -0
- package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +1 -0
- package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/setinputfiles.spec.js +133 -0
- package/dist/cjs/tests/integration/setinputfiles.spec.js.map +1 -0
- package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +161 -0
- package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
- package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +160 -0
- package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
- package/dist/cjs/tests/integration/testUtils.d.ts +40 -0
- package/dist/cjs/tests/integration/testUtils.js +188 -0
- package/dist/cjs/tests/integration/testUtils.js.map +1 -0
- package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/text-selector-innermost.spec.js +105 -0
- package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +1 -0
- package/dist/cjs/tests/integration/timeouts.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/timeouts.spec.js +307 -0
- package/dist/cjs/tests/integration/timeouts.spec.js.map +1 -0
- package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/user-data-dir.spec.js +77 -0
- package/dist/cjs/tests/integration/user-data-dir.spec.js.map +1 -0
- package/dist/cjs/tests/integration/v3.config.d.ts +4 -0
- package/dist/cjs/tests/integration/v3.config.js +11 -0
- package/dist/cjs/tests/integration/v3.config.js.map +1 -0
- package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +4 -0
- package/dist/cjs/tests/integration/v3.dynamic.config.js +48 -0
- package/dist/cjs/tests/integration/v3.dynamic.config.js.map +1 -0
- package/dist/cjs/tests/integration/v3.playwright.config.d.ts +2 -0
- package/dist/cjs/tests/integration/v3.playwright.config.js +48 -0
- package/dist/cjs/tests/integration/v3.playwright.config.js.map +1 -0
- package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/wait-for-selector.spec.js +683 -0
- package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +1 -0
- package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/wait-for-timeout.spec.js +118 -0
- package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +1 -0
- package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +87 -0
- package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +285 -0
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +1 -0
- package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +1 -0
- package/dist/cjs/tests/unit/agent-execution-model.test.js +128 -0
- package/dist/cjs/tests/unit/agent-execution-model.test.js.map +1 -0
- package/dist/cjs/tests/unit/api-multiregion.test.d.ts +1 -0
- package/dist/cjs/tests/unit/api-multiregion.test.js +58 -0
- package/dist/cjs/tests/unit/api-multiregion.test.js.map +1 -0
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +122 -0
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +1 -0
- package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +1 -0
- package/dist/cjs/tests/unit/cache-llm-resolution.test.js +186 -0
- package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +1 -0
- package/dist/cjs/tests/unit/captcha-solver.test.d.ts +1 -0
- package/dist/cjs/tests/unit/captcha-solver.test.js +154 -0
- package/dist/cjs/tests/unit/captcha-solver.test.js.map +1 -0
- package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +1 -0
- package/dist/cjs/tests/unit/cdp-connection-close.test.js +74 -0
- package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +1 -0
- package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +1 -0
- package/dist/cjs/tests/unit/context-extra-http-headers.test.js +58 -0
- package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +1 -0
- package/dist/cjs/tests/unit/cookies.test.d.ts +1 -0
- package/dist/cjs/tests/unit/cookies.test.js +944 -0
- package/dist/cjs/tests/unit/cookies.test.js.map +1 -0
- package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
- package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +95 -0
- package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
- package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
- package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +43 -0
- package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
- package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
- package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +250 -0
- package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +1 -0
- package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +19 -0
- package/dist/cjs/tests/unit/helpers/mockCDPSession.js +29 -0
- package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +1 -0
- package/dist/cjs/tests/unit/llm-middleware.test.d.ts +1 -0
- package/dist/cjs/tests/unit/llm-middleware.test.js +495 -0
- package/dist/cjs/tests/unit/llm-middleware.test.js.map +1 -0
- package/dist/cjs/tests/unit/llm-provider.test.d.ts +1 -0
- package/dist/cjs/tests/unit/llm-provider.test.js +64 -0
- package/dist/cjs/tests/unit/llm-provider.test.js.map +1 -0
- package/dist/cjs/tests/unit/model-deprecation.test.d.ts +1 -0
- package/dist/cjs/tests/unit/model-deprecation.test.js +142 -0
- package/dist/cjs/tests/unit/model-deprecation.test.js.map +1 -0
- package/dist/cjs/tests/unit/model-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/model-utils.test.js +42 -0
- package/dist/cjs/tests/unit/model-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +1 -0
- package/dist/cjs/tests/unit/openai-cua-client.test.js +71 -0
- package/dist/cjs/tests/unit/openai-cua-client.test.js.map +1 -0
- package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +1 -0
- package/dist/cjs/tests/unit/page-extra-http-headers.test.js +92 -0
- package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +1 -0
- package/dist/cjs/tests/unit/page-snapshot.test.d.ts +1 -0
- package/dist/cjs/tests/unit/page-snapshot.test.js +75 -0
- package/dist/cjs/tests/unit/page-snapshot.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/export-surface.test.js +107 -0
- package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +175 -0
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +62 -0
- package/dist/cjs/tests/unit/public-api/public-error-types.test.js +110 -0
- package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/public-types.test.js +99 -0
- package/dist/cjs/tests/unit/public-api/public-types.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +60 -0
- package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/schema-utils.test.js +95 -0
- package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +121 -0
- package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +65 -0
- package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +1 -0
- package/dist/cjs/tests/unit/public-api/v3-core.test.js +108 -0
- package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +1 -0
- package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +1 -0
- package/dist/cjs/tests/unit/safety-confirmation.test.js +110 -0
- package/dist/cjs/tests/unit/safety-confirmation.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +330 -0
- package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +286 -0
- package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +394 -0
- package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-cbor.test.js +204 -0
- package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +220 -0
- package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +107 -0
- package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +89 -0
- package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +335 -0
- package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +84 -0
- package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
- package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +74 -0
- package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
- package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +1 -0
- package/dist/cjs/tests/unit/timeout-handlers.test.js +847 -0
- package/dist/cjs/tests/unit/timeout-handlers.test.js.map +1 -0
- package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +1 -0
- package/dist/cjs/tests/unit/understudy-command-exception.test.js +57 -0
- package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +1 -0
- package/dist/cjs/tests/unit/xpath-parser.test.d.ts +1 -0
- package/dist/cjs/tests/unit/xpath-parser.test.js +311 -0
- package/dist/cjs/tests/unit/xpath-parser.test.js.map +1 -0
- package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +1 -0
- package/dist/cjs/tests/unit/xpath-resolver.test.js +80 -0
- package/dist/cjs/tests/unit/xpath-resolver.test.js.map +1 -0
- package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
- package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +149 -0
- package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +1 -0
- package/dist/esm/index.d.ts +1 -2
- package/dist/esm/index.js +1 -2
- package/dist/esm/lib/inference.js +5 -8
- package/dist/esm/lib/inference.js.map +1 -1
- package/dist/esm/lib/modelUtils.d.ts +1 -0
- package/dist/esm/lib/modelUtils.js.map +1 -1
- package/dist/esm/lib/prompt.d.ts +3 -2
- package/dist/esm/lib/prompt.js.map +1 -1
- package/dist/esm/lib/utils.d.ts +1 -0
- package/dist/esm/lib/utils.js +3 -0
- package/dist/esm/lib/utils.js.map +1 -1
- package/dist/esm/lib/v3/agent/AgentClient.d.ts +8 -0
- package/dist/esm/lib/v3/agent/AgentClient.js +13 -0
- package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/AgentProvider.js +1 -1
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +23 -9
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js +6 -7
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +5 -4
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +4 -4
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js +67 -8
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +7 -3
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +29 -6
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/act.d.ts +2 -2
- package/dist/esm/lib/v3/agent/tools/act.js +57 -44
- package/dist/esm/lib/v3/agent/tools/act.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +8 -1
- package/dist/esm/lib/v3/agent/tools/ariaTree.js +49 -22
- package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/braveSearch.js +73 -0
- package/dist/esm/lib/v3/agent/tools/braveSearch.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
- package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js +66 -0
- package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
- package/dist/esm/lib/v3/agent/tools/click.js +23 -31
- package/dist/esm/lib/v3/agent/tools/click.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +22 -30
- package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/extract.d.ts +2 -2
- package/dist/esm/lib/v3/agent/tools/extract.js +7 -3
- package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
- package/dist/esm/lib/v3/agent/tools/fillFormVision.js +109 -98
- package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/fillform.d.ts +8 -3
- package/dist/esm/lib/v3/agent/tools/fillform.js +70 -52
- package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/index.d.ts +25 -4
- package/dist/esm/lib/v3/agent/tools/index.js +65 -12
- package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/keys.d.ts +1 -1
- package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +8 -0
- package/dist/esm/lib/v3/agent/tools/screenshot.js +32 -15
- package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/scroll.js +12 -0
- package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/type.d.ts +2 -2
- package/dist/esm/lib/v3/agent/tools/type.js +80 -79
- package/dist/esm/lib/v3/agent/tools/type.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/wait.js +6 -0
- package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -1
- package/dist/esm/lib/v3/agent/utils/captchaSolver.d.ts +76 -0
- package/dist/esm/lib/v3/agent/utils/captchaSolver.js +171 -0
- package/dist/esm/lib/v3/agent/utils/captchaSolver.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +4 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +8 -0
- package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -1
- package/dist/esm/lib/v3/agent/utils/variables.d.ts +21 -0
- package/dist/esm/lib/v3/agent/utils/variables.js +48 -0
- package/dist/esm/lib/v3/agent/utils/variables.js.map +1 -0
- package/dist/esm/lib/v3/api.d.ts +23 -5
- package/dist/esm/lib/v3/api.js +74 -13
- package/dist/esm/lib/v3/api.js.map +1 -1
- package/dist/esm/lib/v3/cache/ActCache.d.ts +0 -1
- package/dist/esm/lib/v3/cache/ActCache.js +2 -18
- package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
- package/dist/esm/lib/v3/cache/AgentCache.d.ts +1 -0
- package/dist/esm/lib/v3/cache/AgentCache.js +18 -11
- package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
- package/dist/esm/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
- package/dist/esm/lib/v3/flowlogger/EventEmitter.js +26 -0
- package/dist/esm/lib/v3/flowlogger/EventEmitter.js.map +1 -0
- package/dist/esm/lib/v3/flowlogger/EventSink.d.ts +44 -0
- package/dist/esm/lib/v3/flowlogger/EventSink.js +206 -0
- package/dist/esm/lib/v3/flowlogger/EventSink.js.map +1 -0
- package/dist/esm/lib/v3/flowlogger/EventStore.d.ts +26 -0
- package/dist/esm/lib/v3/flowlogger/EventStore.js +127 -0
- package/dist/esm/lib/v3/flowlogger/EventStore.js.map +1 -0
- package/dist/esm/lib/v3/flowlogger/FlowLogger.d.ts +99 -0
- package/dist/esm/lib/v3/flowlogger/FlowLogger.js +583 -0
- package/dist/esm/lib/v3/flowlogger/FlowLogger.js.map +1 -0
- package/dist/esm/lib/v3/flowlogger/prettify.d.ts +6 -0
- package/dist/esm/lib/v3/flowlogger/prettify.js +389 -0
- package/dist/esm/lib/v3/flowlogger/prettify.js.map +1 -0
- package/dist/esm/lib/v3/handlers/actHandler.d.ts +2 -1
- package/dist/esm/lib/v3/handlers/actHandler.js +4 -4
- package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -1
- package/dist/esm/lib/v3/handlers/extractHandler.js +2 -2
- package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +43 -84
- package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
- package/dist/esm/lib/v3/handlers/observeHandler.js +1 -2
- package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
- package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +2 -5
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js +133 -92
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +5 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +134 -14
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
- package/dist/esm/lib/v3/index.d.ts +143 -0
- package/dist/esm/lib/v3/index.js +41 -0
- package/dist/esm/lib/v3/index.js.map +1 -1
- package/dist/esm/lib/v3/launch/browserbase.d.ts +1 -1
- package/dist/esm/lib/v3/launch/browserbase.js +4 -9
- package/dist/esm/lib/v3/launch/browserbase.js.map +1 -1
- package/dist/esm/lib/v3/llm/LLMProvider.d.ts +5 -2
- package/dist/esm/lib/v3/llm/LLMProvider.js +14 -12
- package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/esm/lib/v3/llm/OpenAIClient.js +2 -2
- package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -1
- package/dist/esm/lib/v3/llm/aisdk.js +11 -17
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/esm/lib/v3/mcp/connection.d.ts +2 -0
- package/dist/esm/lib/v3/mcp/connection.js +5 -2
- package/dist/esm/lib/v3/mcp/connection.js.map +1 -1
- package/dist/esm/lib/v3/runtimePaths.d.ts +6 -0
- package/dist/esm/lib/v3/runtimePaths.js +107 -0
- package/dist/esm/lib/v3/runtimePaths.js.map +1 -0
- package/dist/esm/lib/v3/shutdown/supervisor.js +2 -2
- package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -1
- package/dist/esm/lib/v3/shutdown/supervisorClient.js +9 -14
- package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -1
- package/dist/esm/lib/v3/timeoutConfig.d.ts +1 -1
- package/dist/esm/lib/v3/timeoutConfig.js +5 -0
- package/dist/esm/lib/v3/timeoutConfig.js.map +1 -1
- package/dist/esm/lib/v3/types/private/cache.d.ts +3 -1
- package/dist/esm/lib/v3/types/private/cache.js.map +1 -1
- package/dist/esm/lib/v3/types/private/handlers.d.ts +2 -1
- package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
- package/dist/esm/lib/v3/types/private/shutdown.d.ts +1 -1
- package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -1
- package/dist/esm/lib/v3/types/public/agent.d.ts +76 -4
- package/dist/esm/lib/v3/types/public/agent.js +1 -1
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
- package/dist/esm/lib/v3/types/public/api.d.ts +21 -0
- package/dist/esm/lib/v3/types/public/api.js +11 -2
- package/dist/esm/lib/v3/types/public/api.js.map +1 -1
- package/dist/esm/lib/v3/types/public/context.d.ts +32 -0
- package/dist/esm/lib/v3/types/public/context.js +2 -0
- package/dist/esm/lib/v3/types/public/context.js.map +1 -0
- package/dist/esm/lib/v3/types/public/index.d.ts +1 -0
- package/dist/esm/lib/v3/types/public/index.js +1 -0
- package/dist/esm/lib/v3/types/public/index.js.map +1 -1
- package/dist/esm/lib/v3/types/public/methods.d.ts +33 -2
- package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
- package/dist/esm/lib/v3/types/public/model.d.ts +12 -3
- package/dist/esm/lib/v3/types/public/model.js.map +1 -1
- package/dist/esm/lib/v3/types/public/options.d.ts +15 -0
- package/dist/esm/lib/v3/types/public/options.js.map +1 -1
- package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +13 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js +22 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +1 -1
- package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -1
- package/dist/esm/lib/v3/understudy/cdp.d.ts +9 -13
- package/dist/esm/lib/v3/understudy/cdp.js +191 -20
- package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
- package/dist/esm/lib/v3/understudy/context.d.ts +34 -0
- package/dist/esm/lib/v3/understudy/context.js +327 -67
- package/dist/esm/lib/v3/understudy/context.js.map +1 -1
- package/dist/esm/lib/v3/understudy/cookies.d.ts +32 -0
- package/dist/esm/lib/v3/understudy/cookies.js +136 -0
- package/dist/esm/lib/v3/understudy/cookies.js.map +1 -0
- package/dist/esm/lib/v3/understudy/deepLocator.js +1 -23
- package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -1
- package/dist/esm/lib/v3/understudy/frame.js +24 -7
- package/dist/esm/lib/v3/understudy/frame.js.map +1 -1
- package/dist/esm/lib/v3/understudy/page.d.ts +13 -0
- package/dist/esm/lib/v3/understudy/page.js +86 -23
- package/dist/esm/lib/v3/understudy/page.js.map +1 -1
- package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +0 -1
- package/dist/esm/lib/v3/understudy/screenshotUtils.js +1 -19
- package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -1
- package/dist/esm/lib/v3/understudy/selectorResolver.js +1 -1
- package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -1
- package/dist/esm/lib/v3/v3.d.ts +26 -3
- package/dist/esm/lib/v3/v3.js +261 -190
- package/dist/esm/lib/v3/v3.js.map +1 -1
- package/dist/esm/lib/version.d.ts +1 -1
- package/dist/esm/lib/version.js +1 -1
- package/dist/esm/lib/version.js.map +1 -1
- package/dist/esm/tests/cache-variables.test.d.ts +1 -0
- package/dist/esm/tests/cache-variables.test.js +219 -0
- package/dist/esm/tests/cache-variables.test.js.map +1 -0
- package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-abort-signal.spec.js +121 -0
- package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +1 -0
- package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +78 -0
- package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
- package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-callbacks.spec.js +383 -0
- package/dist/esm/tests/integration/agent-callbacks.spec.js.map +1 -0
- package/dist/esm/tests/integration/agent-captcha-autosolve.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-captcha-autosolve.spec.js +54 -0
- package/dist/esm/tests/integration/agent-captcha-autosolve.spec.js.map +1 -0
- package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-experimental-validation.spec.js +360 -0
- package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +1 -0
- package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +260 -0
- package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
- package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-message-continuation.spec.js +110 -0
- package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +1 -0
- package/dist/esm/tests/integration/agent-streaming.spec.d.ts +1 -0
- package/dist/esm/tests/integration/agent-streaming.spec.js +138 -0
- package/dist/esm/tests/integration/agent-streaming.spec.js.map +1 -0
- package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
- package/dist/esm/tests/integration/cdp-close-api-region.spec.js +39 -0
- package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +1 -0
- package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +1 -0
- package/dist/esm/tests/integration/cdp-connection-close.spec.js +74 -0
- package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +1 -0
- package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +1 -0
- package/dist/esm/tests/integration/cdp-session-detached.spec.js +43 -0
- package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +1 -0
- package/dist/esm/tests/integration/click-count.spec.d.ts +1 -0
- package/dist/esm/tests/integration/click-count.spec.js +161 -0
- package/dist/esm/tests/integration/click-count.spec.js.map +1 -0
- package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
- package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +97 -0
- package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
- package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +1 -0
- package/dist/esm/tests/integration/context-addInitScript.spec.js +283 -0
- package/dist/esm/tests/integration/context-addInitScript.spec.js.map +1 -0
- package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
- package/dist/esm/tests/integration/context-extra-http-headers.spec.js +47 -0
- package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +1 -0
- package/dist/esm/tests/integration/cookies.spec.d.ts +1 -0
- package/dist/esm/tests/integration/cookies.spec.js +185 -0
- package/dist/esm/tests/integration/cookies.spec.js.map +1 -0
- package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +1 -0
- package/dist/esm/tests/integration/default-page-tracking.spec.js +50 -0
- package/dist/esm/tests/integration/default-page-tracking.spec.js.map +1 -0
- package/dist/esm/tests/integration/downloads.spec.d.ts +1 -0
- package/dist/esm/tests/integration/downloads.spec.js +47 -0
- package/dist/esm/tests/integration/downloads.spec.js.map +1 -0
- package/dist/esm/tests/integration/flowLogger.spec.d.ts +1 -0
- package/dist/esm/tests/integration/flowLogger.spec.js +712 -0
- package/dist/esm/tests/integration/flowLogger.spec.js.map +1 -0
- package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
- package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +55 -0
- package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
- package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
- package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +217 -0
- package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
- package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
- package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +472 -0
- package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
- package/dist/esm/tests/integration/keep-alive.child.d.ts +1 -0
- package/dist/esm/tests/integration/keep-alive.child.js +83 -0
- package/dist/esm/tests/integration/keep-alive.child.js.map +1 -0
- package/dist/esm/tests/integration/keep-alive.spec.d.ts +22 -0
- package/dist/esm/tests/integration/keep-alive.spec.js +482 -0
- package/dist/esm/tests/integration/keep-alive.spec.js.map +1 -0
- package/dist/esm/tests/integration/keyboard.spec.d.ts +1 -0
- package/dist/esm/tests/integration/keyboard.spec.js +257 -0
- package/dist/esm/tests/integration/keyboard.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-backend-node-id.spec.js +148 -0
- package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-content-methods.spec.js +178 -0
- package/dist/esm/tests/integration/locator-content-methods.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-count-iframe.spec.js +127 -0
- package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-count.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-count.spec.js +66 -0
- package/dist/esm/tests/integration/locator-count.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-fill.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-fill.spec.js +115 -0
- package/dist/esm/tests/integration/locator-fill.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-input-methods.spec.js +125 -0
- package/dist/esm/tests/integration/locator-input-methods.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-nth.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-nth.spec.js +173 -0
- package/dist/esm/tests/integration/locator-nth.spec.js.map +1 -0
- package/dist/esm/tests/integration/locator-select-option.spec.d.ts +1 -0
- package/dist/esm/tests/integration/locator-select-option.spec.js +214 -0
- package/dist/esm/tests/integration/locator-select-option.spec.js.map +1 -0
- package/dist/esm/tests/integration/logger-initialization.spec.d.ts +1 -0
- package/dist/esm/tests/integration/logger-initialization.spec.js +595 -0
- package/dist/esm/tests/integration/logger-initialization.spec.js.map +1 -0
- package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +1 -0
- package/dist/esm/tests/integration/multi-instance-logger.spec.js +291 -0
- package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +1 -0
- package/dist/esm/tests/integration/nested-div.spec.d.ts +1 -0
- package/dist/esm/tests/integration/nested-div.spec.js +20 -0
- package/dist/esm/tests/integration/nested-div.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-addInitScript.spec.js +92 -0
- package/dist/esm/tests/integration/page-addInitScript.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-console.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-console.spec.js +45 -0
- package/dist/esm/tests/integration/page-console.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-drag-and-drop.spec.js +435 -0
- package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-extra-http-headers.spec.js +83 -0
- package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-goto-response.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-goto-response.spec.js +32 -0
- package/dist/esm/tests/integration/page-goto-response.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-hover.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-hover.spec.js +163 -0
- package/dist/esm/tests/integration/page-hover.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-screenshot.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-screenshot.spec.js +257 -0
- package/dist/esm/tests/integration/page-screenshot.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-scroll.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-scroll.spec.js +181 -0
- package/dist/esm/tests/integration/page-scroll.spec.js.map +1 -0
- package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +1 -0
- package/dist/esm/tests/integration/page-send-cdp.spec.js +45 -0
- package/dist/esm/tests/integration/page-send-cdp.spec.js.map +1 -0
- package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +1 -0
- package/dist/esm/tests/integration/perform-understudy-method.spec.js +61 -0
- package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +1 -0
- package/dist/esm/tests/integration/setinputfiles.spec.d.ts +1 -0
- package/dist/esm/tests/integration/setinputfiles.spec.js +128 -0
- package/dist/esm/tests/integration/setinputfiles.spec.js.map +1 -0
- package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
- package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +156 -0
- package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
- package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
- package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +155 -0
- package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
- package/dist/esm/tests/integration/testUtils.d.ts +40 -0
- package/dist/esm/tests/integration/testUtils.js +178 -0
- package/dist/esm/tests/integration/testUtils.js.map +1 -0
- package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +1 -0
- package/dist/esm/tests/integration/text-selector-innermost.spec.js +103 -0
- package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +1 -0
- package/dist/esm/tests/integration/timeouts.spec.d.ts +1 -0
- package/dist/esm/tests/integration/timeouts.spec.js +305 -0
- package/dist/esm/tests/integration/timeouts.spec.js.map +1 -0
- package/dist/esm/tests/integration/user-data-dir.spec.d.ts +1 -0
- package/dist/esm/tests/integration/user-data-dir.spec.js +42 -0
- package/dist/esm/tests/integration/user-data-dir.spec.js.map +1 -0
- package/dist/esm/tests/integration/v3.config.d.ts +4 -0
- package/dist/esm/tests/integration/v3.config.js +7 -0
- package/dist/esm/tests/integration/v3.config.js.map +1 -0
- package/dist/esm/tests/integration/v3.dynamic.config.d.ts +4 -0
- package/dist/esm/tests/integration/v3.dynamic.config.js +44 -0
- package/dist/esm/tests/integration/v3.dynamic.config.js.map +1 -0
- package/dist/esm/tests/integration/v3.playwright.config.d.ts +2 -0
- package/dist/esm/tests/integration/v3.playwright.config.js +46 -0
- package/dist/esm/tests/integration/v3.playwright.config.js.map +1 -0
- package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +1 -0
- package/dist/esm/tests/integration/wait-for-selector.spec.js +681 -0
- package/dist/esm/tests/integration/wait-for-selector.spec.js.map +1 -0
- package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +1 -0
- package/dist/esm/tests/integration/wait-for-timeout.spec.js +116 -0
- package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +1 -0
- package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
- package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +85 -0
- package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
- package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js +283 -0
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +1 -0
- package/dist/esm/tests/unit/agent-execution-model.test.d.ts +1 -0
- package/dist/esm/tests/unit/agent-execution-model.test.js +126 -0
- package/dist/esm/tests/unit/agent-execution-model.test.js.map +1 -0
- package/dist/esm/tests/unit/api-multiregion.test.d.ts +1 -0
- package/dist/esm/tests/unit/api-multiregion.test.js +56 -0
- package/dist/esm/tests/unit/api-multiregion.test.js.map +1 -0
- package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js +120 -0
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +1 -0
- package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +1 -0
- package/dist/esm/tests/unit/cache-llm-resolution.test.js +184 -0
- package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +1 -0
- package/dist/esm/tests/unit/captcha-solver.test.d.ts +1 -0
- package/dist/esm/tests/unit/captcha-solver.test.js +152 -0
- package/dist/esm/tests/unit/captcha-solver.test.js.map +1 -0
- package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +1 -0
- package/dist/esm/tests/unit/cdp-connection-close.test.js +72 -0
- package/dist/esm/tests/unit/cdp-connection-close.test.js.map +1 -0
- package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +1 -0
- package/dist/esm/tests/unit/context-extra-http-headers.test.js +56 -0
- package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +1 -0
- package/dist/esm/tests/unit/cookies.test.d.ts +1 -0
- package/dist/esm/tests/unit/cookies.test.js +909 -0
- package/dist/esm/tests/unit/cookies.test.js.map +1 -0
- package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
- package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +93 -0
- package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
- package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
- package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +41 -0
- package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
- package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
- package/dist/esm/tests/unit/flowlogger-eventstore.test.js +248 -0
- package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +1 -0
- package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +19 -0
- package/dist/esm/tests/unit/helpers/mockCDPSession.js +25 -0
- package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +1 -0
- package/dist/esm/tests/unit/llm-middleware.test.d.ts +1 -0
- package/dist/esm/tests/unit/llm-middleware.test.js +460 -0
- package/dist/esm/tests/unit/llm-middleware.test.js.map +1 -0
- package/dist/esm/tests/unit/llm-provider.test.d.ts +1 -0
- package/dist/esm/tests/unit/llm-provider.test.js +62 -0
- package/dist/esm/tests/unit/llm-provider.test.js.map +1 -0
- package/dist/esm/tests/unit/model-deprecation.test.d.ts +1 -0
- package/dist/esm/tests/unit/model-deprecation.test.js +140 -0
- package/dist/esm/tests/unit/model-deprecation.test.js.map +1 -0
- package/dist/esm/tests/unit/model-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/model-utils.test.js +40 -0
- package/dist/esm/tests/unit/model-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/openai-cua-client.test.d.ts +1 -0
- package/dist/esm/tests/unit/openai-cua-client.test.js +69 -0
- package/dist/esm/tests/unit/openai-cua-client.test.js.map +1 -0
- package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +1 -0
- package/dist/esm/tests/unit/page-extra-http-headers.test.js +90 -0
- package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +1 -0
- package/dist/esm/tests/unit/page-snapshot.test.d.ts +1 -0
- package/dist/esm/tests/unit/page-snapshot.test.js +40 -0
- package/dist/esm/tests/unit/page-snapshot.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/export-surface.test.js +72 -0
- package/dist/esm/tests/unit/public-api/export-surface.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +140 -0
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +62 -0
- package/dist/esm/tests/unit/public-api/public-error-types.test.js +74 -0
- package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/public-types.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/public-types.test.js +97 -0
- package/dist/esm/tests/unit/public-api/public-types.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/runtime-utils.test.js +25 -0
- package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/schema-utils.test.js +60 -0
- package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +86 -0
- package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/tool-type-export.test.js +30 -0
- package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +1 -0
- package/dist/esm/tests/unit/public-api/v3-core.test.js +73 -0
- package/dist/esm/tests/unit/public-api/v3-core.test.js.map +1 -0
- package/dist/esm/tests/unit/safety-confirmation.test.d.ts +1 -0
- package/dist/esm/tests/unit/safety-confirmation.test.js +108 -0
- package/dist/esm/tests/unit/safety-confirmation.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +295 -0
- package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +284 -0
- package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +359 -0
- package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-cbor.test.js +202 -0
- package/dist/esm/tests/unit/snapshot-cbor.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +218 -0
- package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +105 -0
- package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +87 -0
- package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-frame-merge.test.js +333 -0
- package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +82 -0
- package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
- package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +72 -0
- package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
- package/dist/esm/tests/unit/timeout-handlers.test.d.ts +1 -0
- package/dist/esm/tests/unit/timeout-handlers.test.js +812 -0
- package/dist/esm/tests/unit/timeout-handlers.test.js.map +1 -0
- package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +1 -0
- package/dist/esm/tests/unit/understudy-command-exception.test.js +55 -0
- package/dist/esm/tests/unit/understudy-command-exception.test.js.map +1 -0
- package/dist/esm/tests/unit/xpath-parser.test.d.ts +1 -0
- package/dist/esm/tests/unit/xpath-parser.test.js +309 -0
- package/dist/esm/tests/unit/xpath-parser.test.js.map +1 -0
- package/dist/esm/tests/unit/xpath-resolver.test.d.ts +1 -0
- package/dist/esm/tests/unit/xpath-resolver.test.js +78 -0
- package/dist/esm/tests/unit/xpath-resolver.test.js.map +1 -0
- package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
- package/dist/esm/tests/unit/zod-enum-compatibility.test.js +114 -0
- package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +1 -0
- package/package.json +19 -8
- package/dist/cjs/cli.js.map +0 -7
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/lib/v3/dom/build/rerender-index.d.ts +0 -0
- package/dist/cjs/lib/v3/dom/build/v3-index.d.ts +0 -0
- package/dist/cjs/lib/v3/flowLogger.d.ts +0 -139
- package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js +0 -113
- package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js +0 -102
- package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js +0 -374
- package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js +0 -354
- package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
- package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js +0 -105
- package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/agent-streaming.spec.js +0 -126
- package/dist/cjs/lib/v3/tests/agent-streaming.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js +0 -44
- package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/click-count.spec.js +0 -147
- package/dist/cjs/lib/v3/tests/click-count.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
- package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js +0 -176
- package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js +0 -53
- package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/downloads.spec.js +0 -80
- package/dist/cjs/lib/v3/tests/downloads.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
- package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
- package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/keep-alive.child.js +0 -92
- package/dist/cjs/lib/v3/tests/keep-alive.child.js.map +0 -7
- package/dist/cjs/lib/v3/tests/keep-alive.helpers.js +0 -568
- package/dist/cjs/lib/v3/tests/keep-alive.helpers.js.map +0 -7
- package/dist/cjs/lib/v3/tests/keep-alive.spec.js +0 -15
- package/dist/cjs/lib/v3/tests/keep-alive.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/keyboard.spec.js +0 -296
- package/dist/cjs/lib/v3/tests/keyboard.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
- package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js +0 -192
- package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js +0 -108
- package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-count.spec.js +0 -71
- package/dist/cjs/lib/v3/tests/locator-count.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-fill.spec.js +0 -119
- package/dist/cjs/lib/v3/tests/locator-fill.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js +0 -137
- package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-nth.spec.js +0 -157
- package/dist/cjs/lib/v3/tests/locator-nth.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/locator-select-option.spec.js +0 -243
- package/dist/cjs/lib/v3/tests/locator-select-option.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/logger-initialization.spec.js +0 -547
- package/dist/cjs/lib/v3/tests/logger-initialization.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js +0 -269
- package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/nested-div.spec.js +0 -23
- package/dist/cjs/lib/v3/tests/nested-div.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js +0 -90
- package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-console.spec.js +0 -56
- package/dist/cjs/lib/v3/tests/page-console.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
- package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-goto-response.spec.js +0 -35
- package/dist/cjs/lib/v3/tests/page-goto-response.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-hover.spec.js +0 -167
- package/dist/cjs/lib/v3/tests/page-hover.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-screenshot.spec.js +0 -295
- package/dist/cjs/lib/v3/tests/page-screenshot.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-scroll.spec.js +0 -182
- package/dist/cjs/lib/v3/tests/page-scroll.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js +0 -46
- package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js +0 -98
- package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/setinputfiles.spec.js +0 -148
- package/dist/cjs/lib/v3/tests/setinputfiles.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -156
- package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js +0 -156
- package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/testUtils.js +0 -54
- package/dist/cjs/lib/v3/tests/testUtils.js.map +0 -7
- package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js +0 -100
- package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/timeouts.spec.js +0 -32
- package/dist/cjs/lib/v3/tests/timeouts.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/user-data-dir.spec.js +0 -65
- package/dist/cjs/lib/v3/tests/user-data-dir.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/v3.config.js +0 -36
- package/dist/cjs/lib/v3/tests/v3.config.js.map +0 -7
- package/dist/cjs/lib/v3/tests/v3.dynamic.config.js +0 -67
- package/dist/cjs/lib/v3/tests/v3.dynamic.config.js.map +0 -7
- package/dist/cjs/lib/v3/tests/v3.playwright.config.js +0 -61
- package/dist/cjs/lib/v3/tests/v3.playwright.config.js.map +0 -7
- package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js +0 -593
- package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js +0 -97
- package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
- package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
- package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
- package/dist/cjs/tests/agent-execution-model.test.js +0 -139
- package/dist/cjs/tests/agent-execution-model.test.js.map +0 -7
- package/dist/cjs/tests/api-multiregion.test.js +0 -73
- package/dist/cjs/tests/api-multiregion.test.js.map +0 -7
- package/dist/cjs/tests/browserbase-session-accessors.test.js +0 -101
- package/dist/cjs/tests/browserbase-session-accessors.test.js.map +0 -7
- package/dist/cjs/tests/cache-llm-resolution.test.js +0 -187
- package/dist/cjs/tests/cache-llm-resolution.test.js.map +0 -7
- package/dist/cjs/tests/helpers/mockCDPSession.js +0 -50
- package/dist/cjs/tests/helpers/mockCDPSession.js.map +0 -7
- package/dist/cjs/tests/llm-provider.test.js +0 -57
- package/dist/cjs/tests/llm-provider.test.js.map +0 -7
- package/dist/cjs/tests/model-deprecation.test.js +0 -132
- package/dist/cjs/tests/model-deprecation.test.js.map +0 -7
- package/dist/cjs/tests/model-utils.test.js +0 -43
- package/dist/cjs/tests/model-utils.test.js.map +0 -7
- package/dist/cjs/tests/page-snapshot.test.js +0 -58
- package/dist/cjs/tests/page-snapshot.test.js.map +0 -7
- package/dist/cjs/tests/public-api/export-surface.test.js +0 -77
- package/dist/cjs/tests/public-api/export-surface.test.js.map +0 -7
- package/dist/cjs/tests/public-api/llm-and-agents.test.js +0 -151
- package/dist/cjs/tests/public-api/llm-and-agents.test.js.map +0 -7
- package/dist/cjs/tests/public-api/public-error-types.test.js +0 -106
- package/dist/cjs/tests/public-api/public-error-types.test.js.map +0 -7
- package/dist/cjs/tests/public-api/public-types.test.js +0 -74
- package/dist/cjs/tests/public-api/public-types.test.js.map +0 -7
- package/dist/cjs/tests/public-api/runtime-utils.test.js +0 -53
- package/dist/cjs/tests/public-api/runtime-utils.test.js.map +0 -7
- package/dist/cjs/tests/public-api/schema-utils.test.js +0 -100
- package/dist/cjs/tests/public-api/schema-utils.test.js.map +0 -7
- package/dist/cjs/tests/public-api/timeout-error-types.test.js +0 -103
- package/dist/cjs/tests/public-api/timeout-error-types.test.js.map +0 -7
- package/dist/cjs/tests/public-api/tool-type-export.test.js +0 -47
- package/dist/cjs/tests/public-api/tool-type-export.test.js.map +0 -7
- package/dist/cjs/tests/public-api/v3-core.test.js +0 -105
- package/dist/cjs/tests/public-api/v3-core.test.js.map +0 -7
- package/dist/cjs/tests/safety-confirmation.test.js +0 -134
- package/dist/cjs/tests/safety-confirmation.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-a11y-resolvers.test.js +0 -370
- package/dist/cjs/tests/snapshot-a11y-resolvers.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js +0 -294
- package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-capture-orchestration.test.js +0 -405
- package/dist/cjs/tests/snapshot-capture-orchestration.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-cbor.test.js +0 -197
- package/dist/cjs/tests/snapshot-cbor.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-dom-session-builders.test.js +0 -246
- package/dist/cjs/tests/snapshot-dom-session-builders.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-dom-tree-utils.test.js +0 -104
- package/dist/cjs/tests/snapshot-dom-tree-utils.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js +0 -45
- package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-frame-merge.test.js +0 -388
- package/dist/cjs/tests/snapshot-frame-merge.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-tree-format-utils.test.js +0 -106
- package/dist/cjs/tests/snapshot-tree-format-utils.test.js.map +0 -7
- package/dist/cjs/tests/snapshot-xpath-utils.test.js +0 -74
- package/dist/cjs/tests/snapshot-xpath-utils.test.js.map +0 -7
- package/dist/cjs/tests/timeout-handlers.test.js +0 -864
- package/dist/cjs/tests/timeout-handlers.test.js.map +0 -7
- package/dist/cjs/tests/understudy-command-exception.test.js +0 -52
- package/dist/cjs/tests/understudy-command-exception.test.js.map +0 -7
- package/dist/cjs/tests/xpath-parser.test.js +0 -314
- package/dist/cjs/tests/xpath-parser.test.js.map +0 -7
- package/dist/cjs/tests/xpath-resolver.test.js +0 -70
- package/dist/cjs/tests/xpath-resolver.test.js.map +0 -7
- package/dist/cjs/tests/zod-enum-compatibility.test.js +0 -119
- package/dist/cjs/tests/zod-enum-compatibility.test.js.map +0 -7
- package/dist/esm/lib/v3/agent/tools/search.js +0 -73
- package/dist/esm/lib/v3/agent/tools/search.js.map +0 -1
- package/dist/esm/lib/v3/dom/build/rerender-index.d.ts +0 -0
- package/dist/esm/lib/v3/dom/build/rerender-index.js.map +0 -1
- package/dist/esm/lib/v3/dom/build/v3-index.d.ts +0 -0
- package/dist/esm/lib/v3/dom/build/v3-index.js.map +0 -1
- package/dist/esm/lib/v3/dom/genA11yScripts.js +0 -54
- package/dist/esm/lib/v3/dom/genA11yScripts.js.map +0 -1
- package/dist/esm/lib/v3/dom/genDomScripts.js +0 -38
- package/dist/esm/lib/v3/dom/genDomScripts.js.map +0 -1
- package/dist/esm/lib/v3/dom/genLocatorScripts.js +0 -51
- package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +0 -1
- package/dist/esm/lib/v3/dom/genScreenshotScripts.js +0 -37
- package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +0 -1
- package/dist/esm/lib/v3/flowLogger.d.ts +0 -139
- package/dist/esm/lib/v3/flowLogger.js +0 -868
- package/dist/esm/lib/v3/flowLogger.js.map +0 -1
- package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +0 -113
- package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +0 -80
- package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +0 -374
- package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +0 -357
- package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
- package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +0 -105
- package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/agent-streaming.spec.js +0 -126
- package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +0 -44
- package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/click-count.spec.js +0 -147
- package/dist/esm/lib/v3/tests/click-count.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
- package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +0 -176
- package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +0 -53
- package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/downloads.spec.js +0 -58
- package/dist/esm/lib/v3/tests/downloads.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
- package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
- package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/keep-alive.child.js +0 -92
- package/dist/esm/lib/v3/tests/keep-alive.child.js.map +0 -7
- package/dist/esm/lib/v3/tests/keep-alive.helpers.js +0 -532
- package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +0 -7
- package/dist/esm/lib/v3/tests/keep-alive.spec.js +0 -19
- package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/keyboard.spec.js +0 -296
- package/dist/esm/lib/v3/tests/keyboard.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
- package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +0 -192
- package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +0 -108
- package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-count.spec.js +0 -71
- package/dist/esm/lib/v3/tests/locator-count.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-fill.spec.js +0 -119
- package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +0 -137
- package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-nth.spec.js +0 -157
- package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/locator-select-option.spec.js +0 -243
- package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/logger-initialization.spec.js +0 -552
- package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +0 -269
- package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/nested-div.spec.js +0 -23
- package/dist/esm/lib/v3/tests/nested-div.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +0 -90
- package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-console.spec.js +0 -56
- package/dist/esm/lib/v3/tests/page-console.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
- package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-goto-response.spec.js +0 -35
- package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-hover.spec.js +0 -167
- package/dist/esm/lib/v3/tests/page-hover.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-screenshot.spec.js +0 -273
- package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-scroll.spec.js +0 -182
- package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +0 -46
- package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +0 -98
- package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/setinputfiles.spec.js +0 -126
- package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -134
- package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +0 -134
- package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/testUtils.js +0 -31
- package/dist/esm/lib/v3/tests/testUtils.js.map +0 -7
- package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +0 -100
- package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/timeouts.spec.js +0 -32
- package/dist/esm/lib/v3/tests/timeouts.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/user-data-dir.spec.js +0 -43
- package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/v3.config.js +0 -15
- package/dist/esm/lib/v3/tests/v3.config.js.map +0 -7
- package/dist/esm/lib/v3/tests/v3.dynamic.config.js +0 -43
- package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +0 -7
- package/dist/esm/lib/v3/tests/v3.playwright.config.js +0 -41
- package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +0 -7
- package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +0 -593
- package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +0 -97
- package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
- package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
- package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
- package/dist/esm/tests/agent-execution-model.test.js +0 -139
- package/dist/esm/tests/agent-execution-model.test.js.map +0 -7
- package/dist/esm/tests/api-multiregion.test.js +0 -73
- package/dist/esm/tests/api-multiregion.test.js.map +0 -7
- package/dist/esm/tests/browserbase-session-accessors.test.js +0 -101
- package/dist/esm/tests/browserbase-session-accessors.test.js.map +0 -7
- package/dist/esm/tests/cache-llm-resolution.test.js +0 -187
- package/dist/esm/tests/cache-llm-resolution.test.js.map +0 -7
- package/dist/esm/tests/helpers/mockCDPSession.js +0 -27
- package/dist/esm/tests/helpers/mockCDPSession.js.map +0 -7
- package/dist/esm/tests/llm-provider.test.js +0 -57
- package/dist/esm/tests/llm-provider.test.js.map +0 -7
- package/dist/esm/tests/model-deprecation.test.js +0 -135
- package/dist/esm/tests/model-deprecation.test.js.map +0 -7
- package/dist/esm/tests/model-utils.test.js +0 -43
- package/dist/esm/tests/model-utils.test.js.map +0 -7
- package/dist/esm/tests/page-snapshot.test.js +0 -36
- package/dist/esm/tests/page-snapshot.test.js.map +0 -7
- package/dist/esm/tests/public-api/export-surface.test.js +0 -55
- package/dist/esm/tests/public-api/export-surface.test.js.map +0 -7
- package/dist/esm/tests/public-api/llm-and-agents.test.js +0 -129
- package/dist/esm/tests/public-api/llm-and-agents.test.js.map +0 -7
- package/dist/esm/tests/public-api/public-error-types.test.js +0 -73
- package/dist/esm/tests/public-api/public-error-types.test.js.map +0 -7
- package/dist/esm/tests/public-api/public-types.test.js +0 -74
- package/dist/esm/tests/public-api/public-types.test.js.map +0 -7
- package/dist/esm/tests/public-api/runtime-utils.test.js +0 -31
- package/dist/esm/tests/public-api/runtime-utils.test.js.map +0 -7
- package/dist/esm/tests/public-api/schema-utils.test.js +0 -78
- package/dist/esm/tests/public-api/schema-utils.test.js.map +0 -7
- package/dist/esm/tests/public-api/timeout-error-types.test.js +0 -81
- package/dist/esm/tests/public-api/timeout-error-types.test.js.map +0 -7
- package/dist/esm/tests/public-api/tool-type-export.test.js +0 -25
- package/dist/esm/tests/public-api/tool-type-export.test.js.map +0 -7
- package/dist/esm/tests/public-api/v3-core.test.js +0 -83
- package/dist/esm/tests/public-api/v3-core.test.js.map +0 -7
- package/dist/esm/tests/safety-confirmation.test.js +0 -134
- package/dist/esm/tests/safety-confirmation.test.js.map +0 -7
- package/dist/esm/tests/snapshot-a11y-resolvers.test.js +0 -348
- package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +0 -7
- package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +0 -300
- package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
- package/dist/esm/tests/snapshot-capture-orchestration.test.js +0 -383
- package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +0 -7
- package/dist/esm/tests/snapshot-cbor.test.js +0 -197
- package/dist/esm/tests/snapshot-cbor.test.js.map +0 -7
- package/dist/esm/tests/snapshot-dom-session-builders.test.js +0 -251
- package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +0 -7
- package/dist/esm/tests/snapshot-dom-tree-utils.test.js +0 -109
- package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +0 -7
- package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +0 -49
- package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
- package/dist/esm/tests/snapshot-frame-merge.test.js +0 -391
- package/dist/esm/tests/snapshot-frame-merge.test.js.map +0 -7
- package/dist/esm/tests/snapshot-tree-format-utils.test.js +0 -113
- package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +0 -7
- package/dist/esm/tests/snapshot-xpath-utils.test.js +0 -79
- package/dist/esm/tests/snapshot-xpath-utils.test.js.map +0 -7
- package/dist/esm/tests/timeout-handlers.test.js +0 -850
- package/dist/esm/tests/timeout-handlers.test.js.map +0 -7
- package/dist/esm/tests/understudy-command-exception.test.js +0 -55
- package/dist/esm/tests/understudy-command-exception.test.js.map +0 -7
- package/dist/esm/tests/xpath-parser.test.js +0 -317
- package/dist/esm/tests/xpath-parser.test.js.map +0 -7
- package/dist/esm/tests/xpath-resolver.test.js +0 -73
- package/dist/esm/tests/xpath-resolver.test.js.map +0 -7
- package/dist/esm/tests/zod-enum-compatibility.test.js +0 -97
- package/dist/esm/tests/zod-enum-compatibility.test.js.map +0 -7
- /package/dist/cjs/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
- /package/dist/cjs/{lib/v3/dom/genA11yScripts.d.ts → tests/cache-variables.test.d.ts} +0 -0
- /package/dist/cjs/{lib/v3/dom/genDomScripts.d.ts → tests/integration/agent-abort-signal.spec.d.ts} +0 -0
- /package/dist/cjs/{lib/v3/dom/genLocatorScripts.d.ts → tests/integration/agent-cache-self-heal.spec.d.ts} +0 -0
- /package/dist/cjs/{lib/v3/dom/genScreenshotScripts.d.ts → tests/integration/agent-callbacks.spec.d.ts} +0 -0
- /package/dist/{esm/lib/v3/dom/genA11yScripts.d.ts → cjs/tests/integration/agent-captcha-autosolve.spec.d.ts} +0 -0
- /package/dist/{esm/lib/v3/dom/genDomScripts.d.ts → cjs/tests/integration/agent-experimental-validation.spec.d.ts} +0 -0
- /package/dist/{esm/lib/v3/dom/genLocatorScripts.d.ts → cjs/tests/integration/agent-hybrid-mode.spec.d.ts} +0 -0
- /package/dist/{esm/lib/v3/dom/genScreenshotScripts.d.ts → cjs/tests/integration/agent-message-continuation.spec.d.ts} +0 -0
- /package/dist/esm/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentCache.js","sourceRoot":"","sources":["../../../../../lib/v3/cache/AgentCache.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"crypto\";\nimport type { ActHandler } from \"../handlers/actHandler.js\";\nimport type { LLMClient } from \"../llm/LLMClient.js\";\nimport type {\n AgentReplayActStep,\n AgentReplayFillFormStep,\n AgentReplayGotoStep,\n AgentReplayKeysStep,\n AgentReplayNavBackStep,\n AgentReplayScrollStep,\n AgentReplayStep,\n AgentReplayWaitStep,\n CachedAgentEntry,\n SanitizedAgentExecuteOptions,\n ActFn,\n AgentCacheContext,\n AgentCacheDeps,\n AgentCacheTransferPayload,\n} from \"../types/private/index.js\";\nimport type {\n Action,\n AgentResult,\n AgentStreamResult,\n AgentConfig,\n AgentExecuteOptionsBase,\n AvailableModel,\n Logger,\n} from \"../types/public/index.js\";\nimport type { Page } from \"../understudy/page.js\";\nimport type { V3Context } from \"../understudy/context.js\";\nimport { CacheStorage } from \"./CacheStorage.js\";\nimport {\n cloneForCache,\n safeGetPageUrl,\n waitForCachedSelector,\n} from \"./utils.js\";\n\nconst SENSITIVE_CONFIG_KEYS = new Set([\"apikey\", \"api_key\", \"api-key\"]);\n\nexport class AgentCache {\n private readonly storage: CacheStorage;\n private readonly logger: Logger;\n private readonly getActHandler: () => ActHandler | null;\n private readonly getContext: () => V3Context | null;\n private readonly getDefaultLlmClient: () => LLMClient;\n private readonly getBaseModelName: () => AvailableModel;\n private readonly getSystemPrompt: () => string | undefined;\n private readonly domSettleTimeoutMs?: number;\n private readonly act: ActFn;\n private readonly bufferLatestEntry: boolean;\n\n private recording: AgentReplayStep[] | null = null;\n private latestEntry: AgentCacheTransferPayload | null = null;\n\n constructor({\n storage,\n logger,\n getActHandler,\n getContext,\n getDefaultLlmClient,\n getBaseModelName,\n getSystemPrompt,\n domSettleTimeoutMs,\n act,\n bufferLatestEntry,\n }: AgentCacheDeps) {\n this.storage = storage;\n this.logger = logger;\n this.getActHandler = getActHandler;\n this.getContext = getContext;\n this.getDefaultLlmClient = getDefaultLlmClient;\n this.getBaseModelName = getBaseModelName;\n this.getSystemPrompt = getSystemPrompt;\n this.domSettleTimeoutMs = domSettleTimeoutMs;\n this.act = act;\n this.bufferLatestEntry = bufferLatestEntry ?? false;\n }\n\n get enabled(): boolean {\n return this.storage.enabled;\n }\n\n shouldAttemptCache(instruction: string): boolean {\n return this.enabled && instruction.trim().length > 0;\n }\n\n sanitizeExecuteOptions(\n options?: AgentExecuteOptionsBase,\n ): SanitizedAgentExecuteOptions {\n if (!options) return {};\n const sanitized: SanitizedAgentExecuteOptions = {};\n if (typeof options.maxSteps === \"number\") {\n sanitized.maxSteps = options.maxSteps;\n }\n if (\n \"highlightCursor\" in options &&\n typeof (options as { highlightCursor?: unknown }).highlightCursor ===\n \"boolean\"\n ) {\n sanitized.highlightCursor = (\n options as { highlightCursor?: boolean }\n ).highlightCursor;\n }\n return sanitized;\n }\n\n buildConfigSignature(agentOptions?: AgentConfig): string {\n const toolKeys = agentOptions?.tools\n ? Object.keys(agentOptions.tools).sort()\n : undefined;\n const integrationSignatures = agentOptions?.integrations\n ? agentOptions.integrations.map((integration) =>\n typeof integration === \"string\" ? integration : \"client\",\n )\n : undefined;\n const serializedModel = this.serializeAgentModelForCache(\n agentOptions?.model,\n );\n const serializedExecutionModel = this.serializeAgentModelForCache(\n agentOptions?.executionModel,\n );\n\n const isCuaMode =\n agentOptions?.mode !== undefined\n ? agentOptions.mode === \"cua\"\n : agentOptions?.cua === true;\n\n return JSON.stringify({\n v3Model: this.getBaseModelName(),\n systemPrompt: this.getSystemPrompt() ?? \"\",\n agent: {\n cua: isCuaMode,\n model: serializedModel ?? null,\n executionModel: isCuaMode ? null : serializedExecutionModel,\n systemPrompt: agentOptions?.systemPrompt ?? null,\n toolKeys,\n integrations: integrationSignatures,\n },\n });\n }\n\n async prepareContext(params: {\n instruction: string;\n options: SanitizedAgentExecuteOptions;\n configSignature: string;\n page: Page;\n }): Promise<AgentCacheContext | null> {\n if (!this.shouldAttemptCache(params.instruction)) {\n return null;\n }\n const instruction = params.instruction.trim();\n const startUrl = await safeGetPageUrl(params.page);\n const cacheKey = this.buildAgentCacheKey(\n instruction,\n startUrl,\n params.options,\n params.configSignature,\n );\n return {\n instruction,\n startUrl,\n options: params.options,\n configSignature: params.configSignature,\n cacheKey,\n };\n }\n\n async tryReplay(\n context: AgentCacheContext,\n llmClientOverride?: LLMClient,\n ): Promise<AgentResult | null> {\n if (!this.enabled) return null;\n\n const {\n value: entry,\n error,\n path,\n } = await this.storage.readJson<CachedAgentEntry>(\n `agent-${context.cacheKey}.json`,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: `failed to read agent cache entry: ${path}`,\n level: 1,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return null;\n }\n if (!entry || entry.version !== 1) {\n return null;\n }\n\n this.logger({\n category: \"cache\",\n message: \"agent cache hit\",\n level: 1,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: { value: context.startUrl, type: \"string\" },\n },\n });\n\n return await this.replayAgentCacheEntry(context, entry, llmClientOverride);\n }\n\n /**\n * Attempts to replay a cached agent execution and returns it as a stream result.\n *\n * This method exists because the agent API exposes two execution modes:\n * - `execute()` - Returns a Promise<AgentResult> directly\n * - `stream()` - Returns an AgentStreamResult with async iterables for real-time output\n *\n * When a cache hit occurs, we need to return the appropriate type for each mode:\n * - For `execute()`, we use `tryReplay()` which returns AgentResult\n * - For `stream()`, we use `tryReplayAsStream()` which wraps the result in a\n * stream-compatible interface\n *\n * This ensures consumers using `stream()` can still iterate over `textStream`\n * and await `result` even when the response comes from cache, maintaining\n * API consistency regardless of whether the result was cached or live.\n */\n async tryReplayAsStream(\n context: AgentCacheContext,\n llmClientOverride?: LLMClient,\n ): Promise<AgentStreamResult | null> {\n const result = await this.tryReplay(context, llmClientOverride);\n if (!result) return null;\n return this.createCachedStreamResult(result);\n }\n\n /**\n * Creates a mock AgentStreamResult that wraps a cached AgentResult.\n *\n * AgentStreamResult (from the AI SDK) is a complex type with multiple async\n * iterables and promises. When serving from cache, we don't have an actual\n * LLM stream to consume - we just have the final result. This method creates\n * a \"fake\" stream\n\n * This approach lets cached responses be transparent to the consumer -\n * they can use the same iteration patterns whether the result is live or cached.\n */\n private createCachedStreamResult(\n cachedResult: AgentResult,\n ): AgentStreamResult {\n const message = cachedResult.message ?? \"\";\n\n async function* textStreamGenerator(): AsyncGenerator<string> {\n yield message;\n }\n\n async function* fullStreamGenerator(): AsyncGenerator<{\n type: string;\n textDelta?: string;\n }> {\n yield { type: \"text-delta\", textDelta: message };\n yield { type: \"finish\" };\n }\n\n const mockStreamResult = {\n textStream: textStreamGenerator(),\n fullStream: fullStreamGenerator(),\n result: Promise.resolve(cachedResult),\n text: Promise.resolve(message),\n usage: Promise.resolve({\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n }),\n finishReason: Promise.resolve(\"stop\" as const),\n experimental_providerMetadata: Promise.resolve(undefined),\n response: Promise.resolve({\n id: \"cached\",\n timestamp: new Date(),\n modelId: \"cached\",\n }),\n rawResponse: Promise.resolve({ headers: {} }),\n warnings: Promise.resolve([]),\n steps: Promise.resolve([]),\n toolCalls: Promise.resolve([]),\n toolResults: Promise.resolve([]),\n [Symbol.asyncIterator]: () => textStreamGenerator(),\n } as unknown as AgentStreamResult;\n\n return mockStreamResult;\n }\n\n /**\n * Wraps an AgentStreamResult with caching logic.\n *\n * This method handles the complexity of caching for streaming responses:\n * 1. Begins recording agent replay steps\n * 2. Wraps the stream's result promise to capture completion\n * 3. On success: ends recording and stores the cache entry\n * 4. On error: discards the recording\n *\n * This keeps the caching orchestration in AgentCache rather than\n * spreading it across the V3 class.\n *\n * @param context - The cache context for this execution\n * @param streamResult - The stream result from the agent handler\n * @param beginRecording - Callback to start recording (from V3)\n * @param endRecording - Callback to end recording and get steps (from V3)\n * @param discardRecording - Callback to discard recording on error (from V3)\n * @returns The wrapped stream result with caching enabled\n */\n wrapStreamForCaching(\n context: AgentCacheContext,\n streamResult: AgentStreamResult,\n beginRecording: () => void,\n endRecording: () => AgentReplayStep[],\n discardRecording: () => void,\n ): AgentStreamResult {\n beginRecording();\n\n const originalResultPromise = streamResult.result;\n const wrappedResultPromise = originalResultPromise.then(\n async (result) => {\n const agentSteps = endRecording();\n\n if (result.success && agentSteps.length > 0) {\n await this.store(context, agentSteps, result);\n }\n\n return result;\n },\n (error) => {\n discardRecording();\n throw error;\n },\n );\n\n streamResult.result = wrappedResultPromise;\n return streamResult;\n }\n\n async store(\n context: AgentCacheContext,\n steps: AgentReplayStep[],\n result: AgentResult,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const entry: CachedAgentEntry = {\n version: 1,\n instruction: context.instruction,\n startUrl: context.startUrl,\n options: context.options,\n configSignature: context.configSignature,\n steps: cloneForCache(steps),\n result: this.pruneAgentResult(result),\n timestamp: new Date().toISOString(),\n };\n\n const { error, path } = await this.storage.writeJson(\n `agent-${context.cacheKey}.json`,\n entry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to write agent cache entry\",\n level: 1,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"agent cache stored\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n steps: { value: String(steps.length), type: \"string\" },\n },\n });\n\n if (this.bufferLatestEntry) {\n this.latestEntry = {\n cacheKey: context.cacheKey,\n entry: cloneForCache(entry),\n };\n }\n }\n\n consumeBufferedEntry(): AgentCacheTransferPayload | null {\n if (!this.bufferLatestEntry || !this.latestEntry) {\n return null;\n }\n\n const payload = this.latestEntry;\n this.latestEntry = null;\n return payload;\n }\n\n async storeTransferredEntry(\n payload: AgentCacheTransferPayload | null,\n ): Promise<void> {\n if (!this.enabled || !payload) return;\n\n const entry = cloneForCache(payload.entry);\n const { error, path } = await this.storage.writeJson(\n `agent-${payload.cacheKey}.json`,\n entry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to import remote agent cache entry\",\n level: 0,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"agent cache imported from server\",\n level: 2,\n auxiliary: {\n instruction: { value: entry.instruction, type: \"string\" },\n steps: { value: String(entry.steps?.length ?? 0), type: \"string\" },\n },\n });\n }\n\n /**\n * Clone the agent result and prune bulky fields (e.g. screenshot base64 blobs)\n * before persisting it to disk. This keeps cache entries compact without\n * mutating the live AgentResult returned to callers.\n */\n private pruneAgentResult(result: AgentResult): AgentResult {\n const cloned = cloneForCache(result);\n if (!Array.isArray(cloned.actions)) {\n return cloned;\n }\n\n for (const action of cloned.actions) {\n if (action?.type === \"screenshot\") {\n delete action.base64;\n }\n }\n\n return cloned;\n }\n\n beginRecording(): void {\n this.recording = [];\n }\n\n endRecording(): AgentReplayStep[] {\n if (!this.recording) return [];\n const steps = cloneForCache(this.recording);\n this.recording = null;\n return steps;\n }\n\n discardRecording(): void {\n this.recording = null;\n }\n\n isRecording(): boolean {\n return Array.isArray(this.recording);\n }\n\n recordStep(step: AgentReplayStep): void {\n if (!this.isRecording()) return;\n try {\n this.recording!.push(cloneForCache(step));\n } catch (err) {\n this.logger({\n category: \"cache\",\n message: \"failed to record agent replay step\",\n level: 2,\n auxiliary: {\n error: { value: String(err), type: \"string\" },\n },\n });\n }\n }\n\n isReplayActive(): boolean {\n return this.isRecording();\n }\n\n private serializeAgentModelForCache(\n model?: AgentConfig[\"model\"],\n ): null | string | { modelName: string; options?: Record<string, unknown> } {\n if (!model) return null;\n if (typeof model === \"string\") return model;\n\n const { modelName, ...modelOptions } = model;\n const sanitizedOptions =\n Object.keys(modelOptions).length > 0\n ? this.sanitizeModelOptionsForCache(\n modelOptions as Record<string, unknown>,\n )\n : undefined;\n return sanitizedOptions\n ? { modelName, options: sanitizedOptions }\n : modelName;\n }\n\n private buildAgentCacheKey(\n instruction: string,\n startUrl: string,\n options: SanitizedAgentExecuteOptions,\n configSignature: string,\n ): string {\n const payload = {\n instruction,\n startUrl,\n options,\n configSignature,\n };\n return createHash(\"sha256\").update(JSON.stringify(payload)).digest(\"hex\");\n }\n\n private sanitizeModelOptionsForCache(\n value: Record<string, unknown>,\n ): Record<string, unknown> | undefined {\n const sanitizedEntries: Record<string, unknown> = {};\n for (const [key, rawValue] of Object.entries(value)) {\n if (SENSITIVE_CONFIG_KEYS.has(key.toLowerCase())) {\n continue;\n }\n\n const sanitizedValue = this.sanitizeModelValueForCache(rawValue);\n if (sanitizedValue !== undefined) {\n sanitizedEntries[key] = sanitizedValue;\n }\n }\n\n return Object.keys(sanitizedEntries).length > 0\n ? sanitizedEntries\n : undefined;\n }\n\n private sanitizeModelValueForCache(value: unknown): unknown {\n if (Array.isArray(value)) {\n const sanitizedArray = value\n .map((item) => this.sanitizeModelValueForCache(item))\n .filter((item) => item !== undefined);\n return sanitizedArray;\n }\n\n if (value && typeof value === \"object\") {\n return this.sanitizeModelOptionsForCache(\n value as Record<string, unknown>,\n );\n }\n\n return value;\n }\n\n private async replayAgentCacheEntry(\n context: AgentCacheContext,\n entry: CachedAgentEntry,\n llmClientOverride?: LLMClient,\n ): Promise<AgentResult | null> {\n const ctx = this.getContext();\n const handler = this.getActHandler();\n if (!ctx || !handler) return null;\n const effectiveClient = llmClientOverride ?? this.getDefaultLlmClient();\n try {\n const updatedSteps: AgentReplayStep[] = [];\n let stepsChanged = false;\n for (const step of entry.steps ?? []) {\n const replayedStep =\n (await this.executeAgentReplayStep(\n step,\n ctx,\n handler,\n effectiveClient,\n )) ?? step;\n stepsChanged ||= replayedStep !== step;\n updatedSteps.push(replayedStep);\n }\n const result = cloneForCache(entry.result);\n result.usage = {\n input_tokens: 0,\n output_tokens: 0,\n reasoning_tokens: 0,\n cached_input_tokens: 0,\n inference_time_ms: 0,\n };\n result.metadata = {\n ...(result.metadata ?? {}),\n cacheHit: true,\n cacheTimestamp: entry.timestamp,\n };\n if (stepsChanged) {\n await this.refreshAgentCacheEntry(context, entry, updatedSteps);\n }\n return result;\n } catch (err) {\n this.logger({\n category: \"cache\",\n message: \"agent cache replay failed\",\n level: 1,\n auxiliary: {\n error: { value: String(err), type: \"string\" },\n },\n });\n return null;\n }\n }\n\n private async executeAgentReplayStep(\n step: AgentReplayStep,\n ctx: V3Context,\n handler: ActHandler,\n llmClient: LLMClient,\n ): Promise<AgentReplayStep> {\n switch (step.type) {\n case \"act\":\n return await this.replayAgentActStep(\n step as AgentReplayActStep,\n ctx,\n handler,\n llmClient,\n );\n case \"fillForm\":\n return await this.replayAgentFillFormStep(\n step as AgentReplayFillFormStep,\n ctx,\n handler,\n llmClient,\n );\n case \"goto\":\n await this.replayAgentGotoStep(step as AgentReplayGotoStep, ctx);\n return step;\n case \"scroll\":\n await this.replayAgentScrollStep(step as AgentReplayScrollStep, ctx);\n return step;\n case \"wait\":\n await this.replayAgentWaitStep(step as AgentReplayWaitStep);\n return step;\n case \"navback\":\n await this.replayAgentNavBackStep(step as AgentReplayNavBackStep, ctx);\n return step;\n case \"keys\":\n await this.replayAgentKeysStep(step as AgentReplayKeysStep, ctx);\n return step;\n case \"done\":\n case \"extract\":\n case \"screenshot\":\n case \"ariaTree\":\n return step;\n default:\n this.logger({\n category: \"cache\",\n message: `agent cache skipping step type: ${step.type}`,\n level: 2,\n });\n return step;\n }\n }\n\n private async replayAgentActStep(\n step: AgentReplayActStep,\n ctx: V3Context,\n handler: ActHandler,\n llmClient: LLMClient,\n ): Promise<AgentReplayActStep> {\n const actions = Array.isArray(step.actions) ? step.actions : [];\n if (actions.length > 0) {\n const page = await ctx.awaitActivePage();\n const updatedActions: Action[] = [];\n for (const action of actions) {\n await waitForCachedSelector({\n page,\n selector: action.selector,\n timeout: this.domSettleTimeoutMs,\n logger: this.logger,\n context: \"agent act\",\n });\n const result = await handler.takeDeterministicAction(\n action,\n page,\n this.domSettleTimeoutMs,\n llmClient,\n );\n if (result.success && Array.isArray(result.actions)) {\n updatedActions.push(...cloneForCache(result.actions));\n } else {\n updatedActions.push(cloneForCache(action));\n }\n }\n if (this.haveActionsChanged(actions, updatedActions)) {\n return { ...step, actions: updatedActions };\n }\n return step;\n }\n await this.act(step.instruction, { timeout: step.timeout });\n return step;\n }\n\n private async replayAgentFillFormStep(\n step: AgentReplayFillFormStep,\n ctx: V3Context,\n handler: ActHandler,\n llmClient: LLMClient,\n ): Promise<AgentReplayFillFormStep> {\n const actions =\n Array.isArray(step.actions) && step.actions.length > 0\n ? step.actions\n : (step.observeResults ?? []);\n if (!Array.isArray(actions) || actions.length === 0) {\n return step;\n }\n const page = await ctx.awaitActivePage();\n const updatedActions: Action[] = [];\n for (const action of actions) {\n await waitForCachedSelector({\n page,\n selector: action.selector,\n timeout: this.domSettleTimeoutMs,\n logger: this.logger,\n context: \"fillForm\",\n });\n const result = await handler.takeDeterministicAction(\n action,\n page,\n this.domSettleTimeoutMs,\n llmClient,\n );\n if (result.success && Array.isArray(result.actions)) {\n updatedActions.push(...cloneForCache(result.actions));\n } else {\n updatedActions.push(cloneForCache(action));\n }\n }\n if (this.haveActionsChanged(actions, updatedActions)) {\n return { ...step, actions: updatedActions };\n }\n return step;\n }\n\n private async replayAgentGotoStep(\n step: AgentReplayGotoStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n await page.goto(step.url, { waitUntil: step.waitUntil ?? \"load\" });\n }\n\n private async replayAgentScrollStep(\n step: AgentReplayScrollStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n let anchor = step.anchor;\n if (!anchor) {\n anchor = await page\n .mainFrame()\n .evaluate<{ x: number; y: number }>(() => ({\n x: Math.max(0, Math.floor(window.innerWidth / 2)),\n y: Math.max(0, Math.floor(window.innerHeight / 2)),\n }));\n }\n const deltaX = step.deltaX ?? 0;\n const deltaY = step.deltaY ?? 0;\n await page.scroll(\n Math.round(anchor.x ?? 0),\n Math.round(anchor.y ?? 0),\n deltaX,\n deltaY,\n );\n }\n\n private async replayAgentWaitStep(step: AgentReplayWaitStep): Promise<void> {\n if (!step.timeMs || step.timeMs <= 0) return;\n await new Promise((resolve) => setTimeout(resolve, step.timeMs));\n }\n\n private async replayAgentNavBackStep(\n step: AgentReplayNavBackStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n await page.goBack({ waitUntil: step.waitUntil ?? \"domcontentloaded\" });\n }\n\n private async replayAgentKeysStep(\n step: AgentReplayKeysStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n const { method, text, keys, times } = step.playwrightArguments;\n const repeatCount = Math.max(1, times ?? 1);\n\n if (method === \"type\" && text) {\n for (let i = 0; i < repeatCount; i++) {\n await page.type(text, { delay: 100 });\n }\n } else if (method === \"press\" && keys) {\n for (let i = 0; i < repeatCount; i++) {\n await page.keyPress(keys, { delay: 100 });\n }\n }\n }\n\n private haveActionsChanged(original: Action[], updated: Action[]): boolean {\n if (original.length !== updated.length) {\n return true;\n }\n for (let i = 0; i < original.length; i += 1) {\n const orig = original[i];\n const next = updated[i];\n if (!orig || !next) {\n return true;\n }\n if (orig.selector !== next.selector) {\n return true;\n }\n if ((orig.description ?? \"\") !== (next.description ?? \"\")) {\n return true;\n }\n if ((orig.method ?? \"\") !== (next.method ?? \"\")) {\n return true;\n }\n const origArgs = Array.isArray(orig.arguments) ? orig.arguments : [];\n const nextArgs = Array.isArray(next.arguments) ? next.arguments : [];\n if (origArgs.length !== nextArgs.length) {\n return true;\n }\n for (let j = 0; j < origArgs.length; j += 1) {\n if (origArgs[j] !== nextArgs[j]) {\n return true;\n }\n }\n }\n return false;\n }\n\n private async refreshAgentCacheEntry(\n context: AgentCacheContext,\n entry: CachedAgentEntry,\n updatedSteps: AgentReplayStep[],\n ): Promise<void> {\n const updatedEntry: CachedAgentEntry = {\n ...entry,\n steps: cloneForCache(updatedSteps),\n timestamp: new Date().toISOString(),\n };\n const { error, path } = await this.storage.writeJson(\n `agent-${context.cacheKey}.json`,\n updatedEntry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to update agent cache entry after self-heal\",\n level: 0,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n this.logger({\n category: \"cache\",\n message: \"agent cache entry updated after self-heal\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n steps: { value: String(updatedSteps.length), type: \"string\" },\n },\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AgentCache.js","sourceRoot":"","sources":["../../../../../lib/v3/cache/AgentCache.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"crypto\";\nimport type { ActHandler } from \"../handlers/actHandler.js\";\nimport type { LLMClient } from \"../llm/LLMClient.js\";\nimport type {\n AgentReplayActStep,\n AgentReplayFillFormStep,\n AgentReplayGotoStep,\n AgentReplayKeysStep,\n AgentReplayNavBackStep,\n AgentReplayScrollStep,\n AgentReplayStep,\n AgentReplayWaitStep,\n CachedAgentEntry,\n SanitizedAgentExecuteOptions,\n ActFn,\n AgentCacheContext,\n AgentCacheDeps,\n AgentCacheTransferPayload,\n} from \"../types/private/index.js\";\nimport type {\n Action,\n AgentResult,\n AgentStreamResult,\n AgentConfig,\n AgentExecuteOptionsBase,\n AvailableModel,\n Logger,\n} from \"../types/public/index.js\";\nimport type { Page } from \"../understudy/page.js\";\nimport type { V3Context } from \"../understudy/context.js\";\nimport { CacheStorage } from \"./CacheStorage.js\";\nimport {\n cloneForCache,\n safeGetPageUrl,\n waitForCachedSelector,\n} from \"./utils.js\";\n\nconst SENSITIVE_CONFIG_KEYS = new Set([\"apikey\", \"api_key\", \"api-key\"]);\n\nexport class AgentCache {\n private readonly storage: CacheStorage;\n private readonly logger: Logger;\n private readonly getActHandler: () => ActHandler | null;\n private readonly getContext: () => V3Context | null;\n private readonly getDefaultLlmClient: () => LLMClient;\n private readonly getBaseModelName: () => AvailableModel;\n private readonly getSystemPrompt: () => string | undefined;\n private readonly domSettleTimeoutMs?: number;\n private readonly act: ActFn;\n private readonly bufferLatestEntry: boolean;\n\n private recording: AgentReplayStep[] | null = null;\n private latestEntry: AgentCacheTransferPayload | null = null;\n\n constructor({\n storage,\n logger,\n getActHandler,\n getContext,\n getDefaultLlmClient,\n getBaseModelName,\n getSystemPrompt,\n domSettleTimeoutMs,\n act,\n bufferLatestEntry,\n }: AgentCacheDeps) {\n this.storage = storage;\n this.logger = logger;\n this.getActHandler = getActHandler;\n this.getContext = getContext;\n this.getDefaultLlmClient = getDefaultLlmClient;\n this.getBaseModelName = getBaseModelName;\n this.getSystemPrompt = getSystemPrompt;\n this.domSettleTimeoutMs = domSettleTimeoutMs;\n this.act = act;\n this.bufferLatestEntry = bufferLatestEntry ?? false;\n }\n\n get enabled(): boolean {\n return this.storage.enabled;\n }\n\n shouldAttemptCache(instruction: string): boolean {\n return this.enabled && instruction.trim().length > 0;\n }\n\n sanitizeExecuteOptions(\n options?: AgentExecuteOptionsBase,\n ): SanitizedAgentExecuteOptions {\n if (!options) return {};\n const sanitized: SanitizedAgentExecuteOptions = {};\n if (typeof options.maxSteps === \"number\") {\n sanitized.maxSteps = options.maxSteps;\n }\n if (\n \"highlightCursor\" in options &&\n typeof (options as { highlightCursor?: unknown }).highlightCursor ===\n \"boolean\"\n ) {\n sanitized.highlightCursor = (\n options as { highlightCursor?: boolean }\n ).highlightCursor;\n }\n return sanitized;\n }\n\n buildConfigSignature(agentOptions?: AgentConfig): string {\n const toolKeys = agentOptions?.tools\n ? Object.keys(agentOptions.tools).sort()\n : undefined;\n const integrationSignatures = agentOptions?.integrations\n ? agentOptions.integrations.map((integration) =>\n typeof integration === \"string\" ? integration : \"client\",\n )\n : undefined;\n const serializedModel = this.serializeAgentModelForCache(\n agentOptions?.model,\n );\n const serializedExecutionModel = this.serializeAgentModelForCache(\n agentOptions?.executionModel,\n );\n\n const isCuaMode =\n agentOptions?.mode !== undefined\n ? agentOptions.mode === \"cua\"\n : agentOptions?.cua === true;\n\n return JSON.stringify({\n v3Model: this.getBaseModelName(),\n systemPrompt: this.getSystemPrompt() ?? \"\",\n agent: {\n cua: isCuaMode,\n model: serializedModel ?? null,\n executionModel: isCuaMode ? null : serializedExecutionModel,\n systemPrompt: agentOptions?.systemPrompt ?? null,\n toolKeys,\n integrations: integrationSignatures,\n },\n });\n }\n\n async prepareContext(params: {\n instruction: string;\n options: SanitizedAgentExecuteOptions;\n configSignature: string;\n page: Page;\n variables?: Record<string, string>;\n }): Promise<AgentCacheContext | null> {\n if (!this.shouldAttemptCache(params.instruction)) {\n return null;\n }\n const instruction = params.instruction.trim();\n const startUrl = await safeGetPageUrl(params.page);\n const variableKeys = params.variables\n ? Object.keys(params.variables).sort()\n : [];\n const cacheKey = this.buildAgentCacheKey(\n instruction,\n startUrl,\n params.options,\n params.configSignature,\n variableKeys,\n );\n return {\n instruction,\n startUrl,\n options: params.options,\n configSignature: params.configSignature,\n cacheKey,\n variableKeys,\n variables: params.variables,\n };\n }\n\n async tryReplay(\n context: AgentCacheContext,\n llmClientOverride?: LLMClient,\n ): Promise<AgentResult | null> {\n if (!this.enabled) return null;\n\n const {\n value: entry,\n error,\n path,\n } = await this.storage.readJson<CachedAgentEntry>(\n `agent-${context.cacheKey}.json`,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: `failed to read agent cache entry: ${path}`,\n level: 1,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return null;\n }\n if (!entry || entry.version !== 1) {\n return null;\n }\n\n this.logger({\n category: \"cache\",\n message: \"agent cache hit\",\n level: 1,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: { value: context.startUrl, type: \"string\" },\n },\n });\n\n return await this.replayAgentCacheEntry(context, entry, llmClientOverride);\n }\n\n /**\n * Attempts to replay a cached agent execution and returns it as a stream result.\n *\n * This method exists because the agent API exposes two execution modes:\n * - `execute()` - Returns a Promise<AgentResult> directly\n * - `stream()` - Returns an AgentStreamResult with async iterables for real-time output\n *\n * When a cache hit occurs, we need to return the appropriate type for each mode:\n * - For `execute()`, we use `tryReplay()` which returns AgentResult\n * - For `stream()`, we use `tryReplayAsStream()` which wraps the result in a\n * stream-compatible interface\n *\n * This ensures consumers using `stream()` can still iterate over `textStream`\n * and await `result` even when the response comes from cache, maintaining\n * API consistency regardless of whether the result was cached or live.\n */\n async tryReplayAsStream(\n context: AgentCacheContext,\n llmClientOverride?: LLMClient,\n ): Promise<AgentStreamResult | null> {\n const result = await this.tryReplay(context, llmClientOverride);\n if (!result) return null;\n return this.createCachedStreamResult(result);\n }\n\n /**\n * Creates a mock AgentStreamResult that wraps a cached AgentResult.\n *\n * AgentStreamResult (from the AI SDK) is a complex type with multiple async\n * iterables and promises. When serving from cache, we don't have an actual\n * LLM stream to consume - we just have the final result. This method creates\n * a \"fake\" stream\n\n * This approach lets cached responses be transparent to the consumer -\n * they can use the same iteration patterns whether the result is live or cached.\n */\n private createCachedStreamResult(\n cachedResult: AgentResult,\n ): AgentStreamResult {\n const message = cachedResult.message ?? \"\";\n\n async function* textStreamGenerator(): AsyncGenerator<string> {\n yield message;\n }\n\n async function* fullStreamGenerator(): AsyncGenerator<{\n type: string;\n textDelta?: string;\n }> {\n yield { type: \"text-delta\", textDelta: message };\n yield { type: \"finish\" };\n }\n\n const mockStreamResult = {\n textStream: textStreamGenerator(),\n fullStream: fullStreamGenerator(),\n result: Promise.resolve(cachedResult),\n text: Promise.resolve(message),\n usage: Promise.resolve({\n promptTokens: 0,\n completionTokens: 0,\n totalTokens: 0,\n }),\n finishReason: Promise.resolve(\"stop\" as const),\n experimental_providerMetadata: Promise.resolve(undefined),\n response: Promise.resolve({\n id: \"cached\",\n timestamp: new Date(),\n modelId: \"cached\",\n }),\n rawResponse: Promise.resolve({ headers: {} }),\n warnings: Promise.resolve([]),\n steps: Promise.resolve([]),\n toolCalls: Promise.resolve([]),\n toolResults: Promise.resolve([]),\n [Symbol.asyncIterator]: () => textStreamGenerator(),\n } as unknown as AgentStreamResult;\n\n return mockStreamResult;\n }\n\n /**\n * Wraps an AgentStreamResult with caching logic.\n *\n * This method handles the complexity of caching for streaming responses:\n * 1. Begins recording agent replay steps\n * 2. Wraps the stream's result promise to capture completion\n * 3. On success: ends recording and stores the cache entry\n * 4. On error: discards the recording\n *\n * This keeps the caching orchestration in AgentCache rather than\n * spreading it across the V3 class.\n *\n * @param context - The cache context for this execution\n * @param streamResult - The stream result from the agent handler\n * @param beginRecording - Callback to start recording (from V3)\n * @param endRecording - Callback to end recording and get steps (from V3)\n * @param discardRecording - Callback to discard recording on error (from V3)\n * @returns The wrapped stream result with caching enabled\n */\n wrapStreamForCaching(\n context: AgentCacheContext,\n streamResult: AgentStreamResult,\n beginRecording: () => void,\n endRecording: () => AgentReplayStep[],\n discardRecording: () => void,\n ): AgentStreamResult {\n beginRecording();\n\n const originalResultPromise = streamResult.result;\n const wrappedResultPromise = originalResultPromise.then(\n async (result) => {\n const agentSteps = endRecording();\n\n if (result.success && agentSteps.length > 0) {\n await this.store(context, agentSteps, result);\n }\n\n return result;\n },\n (error) => {\n discardRecording();\n throw error;\n },\n );\n\n streamResult.result = wrappedResultPromise;\n return streamResult;\n }\n\n async store(\n context: AgentCacheContext,\n steps: AgentReplayStep[],\n result: AgentResult,\n ): Promise<void> {\n if (!this.enabled) return;\n\n const entry: CachedAgentEntry = {\n version: 1,\n instruction: context.instruction,\n startUrl: context.startUrl,\n options: context.options,\n configSignature: context.configSignature,\n steps: cloneForCache(steps),\n result: this.pruneAgentResult(result),\n timestamp: new Date().toISOString(),\n };\n\n const { error, path } = await this.storage.writeJson(\n `agent-${context.cacheKey}.json`,\n entry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to write agent cache entry\",\n level: 1,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"agent cache stored\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n steps: { value: String(steps.length), type: \"string\" },\n },\n });\n\n if (this.bufferLatestEntry) {\n this.latestEntry = {\n cacheKey: context.cacheKey,\n entry: cloneForCache(entry),\n };\n }\n }\n\n consumeBufferedEntry(): AgentCacheTransferPayload | null {\n if (!this.bufferLatestEntry || !this.latestEntry) {\n return null;\n }\n\n const payload = this.latestEntry;\n this.latestEntry = null;\n return payload;\n }\n\n async storeTransferredEntry(\n payload: AgentCacheTransferPayload | null,\n ): Promise<void> {\n if (!this.enabled || !payload) return;\n\n const entry = cloneForCache(payload.entry);\n const { error, path } = await this.storage.writeJson(\n `agent-${payload.cacheKey}.json`,\n entry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to import remote agent cache entry\",\n level: 0,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"agent cache imported from server\",\n level: 2,\n auxiliary: {\n instruction: { value: entry.instruction, type: \"string\" },\n steps: { value: String(entry.steps?.length ?? 0), type: \"string\" },\n },\n });\n }\n\n /**\n * Clone the agent result and prune bulky fields (e.g. screenshot base64 blobs)\n * before persisting it to disk. This keeps cache entries compact without\n * mutating the live AgentResult returned to callers.\n */\n private pruneAgentResult(result: AgentResult): AgentResult {\n const cloned = cloneForCache(result);\n if (!Array.isArray(cloned.actions)) {\n return cloned;\n }\n\n for (const action of cloned.actions) {\n if (action?.type === \"screenshot\") {\n delete action.base64;\n }\n }\n\n return cloned;\n }\n\n beginRecording(): void {\n this.recording = [];\n }\n\n endRecording(): AgentReplayStep[] {\n if (!this.recording) return [];\n const steps = cloneForCache(this.recording);\n this.recording = null;\n return steps;\n }\n\n discardRecording(): void {\n this.recording = null;\n }\n\n isRecording(): boolean {\n return Array.isArray(this.recording);\n }\n\n recordStep(step: AgentReplayStep): void {\n if (!this.isRecording()) return;\n try {\n this.recording!.push(cloneForCache(step));\n } catch (err) {\n this.logger({\n category: \"cache\",\n message: \"failed to record agent replay step\",\n level: 2,\n auxiliary: {\n error: { value: String(err), type: \"string\" },\n },\n });\n }\n }\n\n isReplayActive(): boolean {\n return this.isRecording();\n }\n\n private serializeAgentModelForCache(\n model?: AgentConfig[\"model\"],\n ): null | string | { modelName: string; options?: Record<string, unknown> } {\n if (!model) return null;\n if (typeof model === \"string\") return model;\n\n const { modelName, ...modelOptions } = model;\n const sanitizedOptions =\n Object.keys(modelOptions).length > 0\n ? this.sanitizeModelOptionsForCache(\n modelOptions as Record<string, unknown>,\n )\n : undefined;\n return sanitizedOptions\n ? { modelName, options: sanitizedOptions }\n : modelName;\n }\n\n private buildAgentCacheKey(\n instruction: string,\n startUrl: string,\n options: SanitizedAgentExecuteOptions,\n configSignature: string,\n variableKeys?: string[],\n ): string {\n const payload = {\n instruction,\n startUrl,\n options,\n configSignature,\n variableKeys: variableKeys ?? [],\n };\n return createHash(\"sha256\").update(JSON.stringify(payload)).digest(\"hex\");\n }\n\n private sanitizeModelOptionsForCache(\n value: Record<string, unknown>,\n ): Record<string, unknown> | undefined {\n const sanitizedEntries: Record<string, unknown> = {};\n for (const [key, rawValue] of Object.entries(value)) {\n if (SENSITIVE_CONFIG_KEYS.has(key.toLowerCase())) {\n continue;\n }\n\n const sanitizedValue = this.sanitizeModelValueForCache(rawValue);\n if (sanitizedValue !== undefined) {\n sanitizedEntries[key] = sanitizedValue;\n }\n }\n\n return Object.keys(sanitizedEntries).length > 0\n ? sanitizedEntries\n : undefined;\n }\n\n private sanitizeModelValueForCache(value: unknown): unknown {\n if (Array.isArray(value)) {\n const sanitizedArray = value\n .map((item) => this.sanitizeModelValueForCache(item))\n .filter((item) => item !== undefined);\n return sanitizedArray;\n }\n\n if (value && typeof value === \"object\") {\n return this.sanitizeModelOptionsForCache(\n value as Record<string, unknown>,\n );\n }\n\n return value;\n }\n\n private async replayAgentCacheEntry(\n context: AgentCacheContext,\n entry: CachedAgentEntry,\n llmClientOverride?: LLMClient,\n ): Promise<AgentResult | null> {\n const ctx = this.getContext();\n const handler = this.getActHandler();\n if (!ctx || !handler) return null;\n const effectiveClient = llmClientOverride ?? this.getDefaultLlmClient();\n try {\n const updatedSteps: AgentReplayStep[] = [];\n let stepsChanged = false;\n for (const step of entry.steps ?? []) {\n const replayedStep =\n (await this.executeAgentReplayStep(\n step,\n ctx,\n handler,\n effectiveClient,\n context.variables,\n )) ?? step;\n stepsChanged ||= replayedStep !== step;\n updatedSteps.push(replayedStep);\n }\n const result = cloneForCache(entry.result);\n result.usage = {\n input_tokens: 0,\n output_tokens: 0,\n reasoning_tokens: 0,\n cached_input_tokens: 0,\n inference_time_ms: 0,\n };\n result.metadata = {\n ...(result.metadata ?? {}),\n cacheHit: true,\n cacheTimestamp: entry.timestamp,\n };\n if (stepsChanged) {\n await this.refreshAgentCacheEntry(context, entry, updatedSteps);\n }\n return result;\n } catch (err) {\n this.logger({\n category: \"cache\",\n message: \"agent cache replay failed\",\n level: 1,\n auxiliary: {\n error: { value: String(err), type: \"string\" },\n },\n });\n return null;\n }\n }\n\n private async executeAgentReplayStep(\n step: AgentReplayStep,\n ctx: V3Context,\n handler: ActHandler,\n llmClient: LLMClient,\n variables?: Record<string, string>,\n ): Promise<AgentReplayStep> {\n switch (step.type) {\n case \"act\":\n return await this.replayAgentActStep(\n step as AgentReplayActStep,\n ctx,\n handler,\n llmClient,\n variables,\n );\n case \"fillForm\":\n return await this.replayAgentFillFormStep(\n step as AgentReplayFillFormStep,\n ctx,\n handler,\n llmClient,\n variables,\n );\n case \"goto\":\n await this.replayAgentGotoStep(step as AgentReplayGotoStep, ctx);\n return step;\n case \"scroll\":\n await this.replayAgentScrollStep(step as AgentReplayScrollStep, ctx);\n return step;\n case \"wait\":\n await this.replayAgentWaitStep(step as AgentReplayWaitStep);\n return step;\n case \"navback\":\n await this.replayAgentNavBackStep(step as AgentReplayNavBackStep, ctx);\n return step;\n case \"keys\":\n await this.replayAgentKeysStep(step as AgentReplayKeysStep, ctx);\n return step;\n case \"done\":\n case \"extract\":\n case \"screenshot\":\n case \"ariaTree\":\n return step;\n default:\n this.logger({\n category: \"cache\",\n message: `agent cache skipping step type: ${step.type}`,\n level: 2,\n });\n return step;\n }\n }\n\n private async replayAgentActStep(\n step: AgentReplayActStep,\n ctx: V3Context,\n handler: ActHandler,\n llmClient: LLMClient,\n variables?: Record<string, string>,\n ): Promise<AgentReplayActStep> {\n const actions = Array.isArray(step.actions) ? step.actions : [];\n if (actions.length > 0) {\n const page = await ctx.awaitActivePage();\n const updatedActions: Action[] = [];\n for (const action of actions) {\n await waitForCachedSelector({\n page,\n selector: action.selector,\n timeout: this.domSettleTimeoutMs,\n logger: this.logger,\n context: \"agent act\",\n });\n const result = await handler.takeDeterministicAction(\n action,\n page,\n this.domSettleTimeoutMs,\n llmClient,\n undefined,\n variables,\n );\n if (result.success && Array.isArray(result.actions)) {\n updatedActions.push(...cloneForCache(result.actions));\n } else {\n updatedActions.push(cloneForCache(action));\n }\n }\n if (this.haveActionsChanged(actions, updatedActions)) {\n return { ...step, actions: updatedActions };\n }\n return step;\n }\n await this.act(step.instruction, { timeout: step.timeout, variables });\n return step;\n }\n\n private async replayAgentFillFormStep(\n step: AgentReplayFillFormStep,\n ctx: V3Context,\n handler: ActHandler,\n llmClient: LLMClient,\n variables?: Record<string, string>,\n ): Promise<AgentReplayFillFormStep> {\n const actions =\n Array.isArray(step.actions) && step.actions.length > 0\n ? step.actions\n : (step.observeResults ?? []);\n if (!Array.isArray(actions) || actions.length === 0) {\n return step;\n }\n const page = await ctx.awaitActivePage();\n const updatedActions: Action[] = [];\n for (const action of actions) {\n await waitForCachedSelector({\n page,\n selector: action.selector,\n timeout: this.domSettleTimeoutMs,\n logger: this.logger,\n context: \"fillForm\",\n });\n const result = await handler.takeDeterministicAction(\n action,\n page,\n this.domSettleTimeoutMs,\n llmClient,\n undefined, // ensureTimeRemaining is not used in this context\n variables,\n );\n if (result.success && Array.isArray(result.actions)) {\n updatedActions.push(...cloneForCache(result.actions));\n } else {\n updatedActions.push(cloneForCache(action));\n }\n }\n if (this.haveActionsChanged(actions, updatedActions)) {\n return { ...step, actions: updatedActions };\n }\n return step;\n }\n\n private async replayAgentGotoStep(\n step: AgentReplayGotoStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n await page.goto(step.url, { waitUntil: step.waitUntil ?? \"load\" });\n }\n\n private async replayAgentScrollStep(\n step: AgentReplayScrollStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n let anchor = step.anchor;\n if (!anchor) {\n anchor = await page\n .mainFrame()\n .evaluate<{ x: number; y: number }>(() => ({\n x: Math.max(0, Math.floor(window.innerWidth / 2)),\n y: Math.max(0, Math.floor(window.innerHeight / 2)),\n }));\n }\n const deltaX = step.deltaX ?? 0;\n const deltaY = step.deltaY ?? 0;\n await page.scroll(\n Math.round(anchor.x ?? 0),\n Math.round(anchor.y ?? 0),\n deltaX,\n deltaY,\n );\n }\n\n private async replayAgentWaitStep(step: AgentReplayWaitStep): Promise<void> {\n if (!step.timeMs || step.timeMs <= 0) return;\n await new Promise((resolve) => setTimeout(resolve, step.timeMs));\n }\n\n private async replayAgentNavBackStep(\n step: AgentReplayNavBackStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n await page.goBack({ waitUntil: step.waitUntil ?? \"domcontentloaded\" });\n }\n\n private async replayAgentKeysStep(\n step: AgentReplayKeysStep,\n ctx: V3Context,\n ): Promise<void> {\n const page = await ctx.awaitActivePage();\n const { method, text, keys, times } = step.playwrightArguments;\n const repeatCount = Math.max(1, times ?? 1);\n\n if (method === \"type\" && text) {\n for (let i = 0; i < repeatCount; i++) {\n await page.type(text, { delay: 100 });\n }\n } else if (method === \"press\" && keys) {\n for (let i = 0; i < repeatCount; i++) {\n await page.keyPress(keys, { delay: 100 });\n }\n }\n }\n\n private haveActionsChanged(original: Action[], updated: Action[]): boolean {\n if (original.length !== updated.length) {\n return true;\n }\n for (let i = 0; i < original.length; i += 1) {\n const orig = original[i];\n const next = updated[i];\n if (!orig || !next) {\n return true;\n }\n if (orig.selector !== next.selector) {\n return true;\n }\n if ((orig.description ?? \"\") !== (next.description ?? \"\")) {\n return true;\n }\n if ((orig.method ?? \"\") !== (next.method ?? \"\")) {\n return true;\n }\n const origArgs = Array.isArray(orig.arguments) ? orig.arguments : [];\n const nextArgs = Array.isArray(next.arguments) ? next.arguments : [];\n if (origArgs.length !== nextArgs.length) {\n return true;\n }\n for (let j = 0; j < origArgs.length; j += 1) {\n if (origArgs[j] !== nextArgs[j]) {\n return true;\n }\n }\n }\n return false;\n }\n\n private async refreshAgentCacheEntry(\n context: AgentCacheContext,\n entry: CachedAgentEntry,\n updatedSteps: AgentReplayStep[],\n ): Promise<void> {\n const updatedEntry: CachedAgentEntry = {\n ...entry,\n steps: cloneForCache(updatedSteps),\n timestamp: new Date().toISOString(),\n };\n const { error, path } = await this.storage.writeJson(\n `agent-${context.cacheKey}.json`,\n updatedEntry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to update agent cache entry after self-heal\",\n level: 0,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n this.logger({\n category: \"cache\",\n message: \"agent cache entry updated after self-heal\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n steps: { value: String(updatedSteps.length), type: \"string\" },\n },\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
export declare class EventEmitterWithWildcardSupport extends EventEmitter {
|
|
3
|
+
private readonly wildcardListeners;
|
|
4
|
+
on(eventName: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
5
|
+
off(eventName: string | symbol, listener: (...args: unknown[]) => void): this;
|
|
6
|
+
emit(eventName: string | symbol, ...args: unknown[]): boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
export class EventEmitterWithWildcardSupport extends EventEmitter {
|
|
3
|
+
wildcardListeners = new Set();
|
|
4
|
+
on(eventName, listener) {
|
|
5
|
+
if (eventName === "*") {
|
|
6
|
+
this.wildcardListeners.add(listener);
|
|
7
|
+
return this;
|
|
8
|
+
}
|
|
9
|
+
return super.on(eventName, listener);
|
|
10
|
+
}
|
|
11
|
+
off(eventName, listener) {
|
|
12
|
+
if (eventName === "*") {
|
|
13
|
+
this.wildcardListeners.delete(listener);
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
return super.off(eventName, listener);
|
|
17
|
+
}
|
|
18
|
+
emit(eventName, ...args) {
|
|
19
|
+
const handled = super.emit(eventName, ...args);
|
|
20
|
+
for (const listener of this.wildcardListeners) {
|
|
21
|
+
listener(...args);
|
|
22
|
+
}
|
|
23
|
+
return handled || this.wildcardListeners.size > 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=EventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../../../../lib/v3/flowlogger/EventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,OAAO,+BAAgC,SAAQ,YAAY;IAC9C,iBAAiB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE7D,EAAE,CACT,SAA0B,EAC1B,QAAsC;QAEtC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEQ,GAAG,CACV,SAA0B,EAC1B,QAAsC;QAEtC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEQ,IAAI,CAAC,SAA0B,EAAE,GAAG,IAAe;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;QAE/C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,CAAC;IACpD,CAAC;CACF","sourcesContent":["import { EventEmitter } from \"node:events\";\n\ntype WildcardEventListener = (...args: unknown[]) => void;\n\nexport class EventEmitterWithWildcardSupport extends EventEmitter {\n private readonly wildcardListeners = new Set<WildcardEventListener>();\n\n override on(\n eventName: string | symbol,\n listener: (...args: unknown[]) => void,\n ): this {\n if (eventName === \"*\") {\n this.wildcardListeners.add(listener);\n return this;\n }\n\n return super.on(eventName, listener);\n }\n\n override off(\n eventName: string | symbol,\n listener: (...args: unknown[]) => void,\n ): this {\n if (eventName === \"*\") {\n this.wildcardListeners.delete(listener);\n return this;\n }\n\n return super.off(eventName, listener);\n }\n\n override emit(eventName: string | symbol, ...args: unknown[]): boolean {\n const handled = super.emit(eventName, ...args);\n\n for (const listener of this.wildcardListeners) {\n listener(...args);\n }\n\n return handled || this.wildcardListeners.size > 0;\n }\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FlowEvent } from "./FlowLogger.js";
|
|
2
|
+
import type { EventStoreApi, EventStoreQuery } from "./EventStore.js";
|
|
3
|
+
export interface EventSink {
|
|
4
|
+
emit(event: FlowEvent): Promise<void>;
|
|
5
|
+
query(query: EventStoreQuery): Promise<FlowEvent[]>;
|
|
6
|
+
destroy(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
declare abstract class FileEventSink implements EventSink {
|
|
9
|
+
private readonly streamPromise;
|
|
10
|
+
constructor(sessionDirPromise: Promise<string | null>, fileName: string);
|
|
11
|
+
protected abstract serialize(event: FlowEvent): Promise<string | null>;
|
|
12
|
+
emit(event: FlowEvent): Promise<void>;
|
|
13
|
+
query(): Promise<FlowEvent[]>;
|
|
14
|
+
destroy(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare class JsonlFileEventSink extends FileEventSink {
|
|
17
|
+
constructor(sessionDirPromise: Promise<string | null>);
|
|
18
|
+
protected serialize(event: FlowEvent): Promise<string>;
|
|
19
|
+
}
|
|
20
|
+
export declare class PrettyLogFileEventSink extends FileEventSink {
|
|
21
|
+
private readonly store;
|
|
22
|
+
constructor(sessionDirPromise: Promise<string | null>, store: Pick<EventStoreApi, "query">);
|
|
23
|
+
protected serialize(event: FlowEvent): Promise<string | null>;
|
|
24
|
+
}
|
|
25
|
+
export declare class PrettyStderrEventSink implements EventSink {
|
|
26
|
+
private readonly store;
|
|
27
|
+
constructor(store: Pick<EventStoreApi, "query">);
|
|
28
|
+
emit(event: FlowEvent): Promise<void>;
|
|
29
|
+
query(): Promise<FlowEvent[]>;
|
|
30
|
+
destroy(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare class InMemoryEventSink implements EventSink {
|
|
33
|
+
protected readonly limit: number;
|
|
34
|
+
constructor(limit?: number);
|
|
35
|
+
protected readonly events: FlowEvent[];
|
|
36
|
+
protected storeEvent(event: FlowEvent): FlowEvent;
|
|
37
|
+
emit(event: FlowEvent): Promise<void>;
|
|
38
|
+
query(query: EventStoreQuery): Promise<FlowEvent[]>;
|
|
39
|
+
destroy(): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export declare class ShallowInMemoryEventSink extends InMemoryEventSink {
|
|
42
|
+
protected storeEvent(event: FlowEvent): FlowEvent;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { FlowEvent } from "./FlowLogger.js";
|
|
4
|
+
import { prettifyColorStderrLine, prettifyEvent, prettifyIsCdpEvent, prettifySanitizeEvent, } from "./prettify.js";
|
|
5
|
+
// Checks whether an event matches a query used by queryable sinks. `eventId` matches both the event itself and descendants of that event.
|
|
6
|
+
function matchesEventStoreQuery(event, query) {
|
|
7
|
+
if (query.sessionId && event.sessionId !== query.sessionId)
|
|
8
|
+
return false;
|
|
9
|
+
if (query.eventId) {
|
|
10
|
+
const matchesEvent = event.eventId === query.eventId ||
|
|
11
|
+
event.eventParentIds.includes(query.eventId);
|
|
12
|
+
if (!matchesEvent) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (query.eventType) {
|
|
17
|
+
const pattern = new RegExp(`^${query.eventType
|
|
18
|
+
.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
|
|
19
|
+
.replace(/\\\*/g, ".*")}$`);
|
|
20
|
+
if (!pattern.test(event.eventType)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
// =============================================================================
|
|
27
|
+
// File Sink Helpers
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Returns true when a file sink's stream is still open and writable.
|
|
30
|
+
function isWritable(stream) {
|
|
31
|
+
return !!(stream && !stream.destroyed && stream.writable);
|
|
32
|
+
}
|
|
33
|
+
// Writes a serialized event to a file sink and converts callback-style stream completion into a promise.
|
|
34
|
+
function writeToStream(stream, value) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
try {
|
|
37
|
+
stream.write(value, (error) => {
|
|
38
|
+
if (error) {
|
|
39
|
+
reject(error);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
resolve();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
reject(error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// =============================================================================
|
|
51
|
+
// Event Sink Implementations
|
|
52
|
+
// =============================================================================
|
|
53
|
+
class FileEventSink {
|
|
54
|
+
streamPromise; // Lazily opens the one file stream owned by this sink when the session directory resolves.
|
|
55
|
+
// Creates a best-effort file sink bound to a single session directory.
|
|
56
|
+
constructor(sessionDirPromise, fileName) {
|
|
57
|
+
this.streamPromise = sessionDirPromise.then((sessionDir) => sessionDir
|
|
58
|
+
? fs.createWriteStream(path.join(sessionDir, fileName), { flags: "a" })
|
|
59
|
+
: null);
|
|
60
|
+
}
|
|
61
|
+
// Serializes and appends a single event. File sinks are intentionally best-effort and never allowed to affect library execution flow.
|
|
62
|
+
async emit(event) {
|
|
63
|
+
try {
|
|
64
|
+
const stream = await this.streamPromise;
|
|
65
|
+
if (!isWritable(stream)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const serialized = await this.serialize(event);
|
|
69
|
+
if (!serialized) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
await writeToStream(stream, serialized);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// best effort only
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// File sinks are write-only and do not support query reads.
|
|
79
|
+
async query() {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
// Closes the underlying file stream when the owning store shuts down.
|
|
83
|
+
async destroy() {
|
|
84
|
+
const stream = await this.streamPromise.catch(() => null);
|
|
85
|
+
if (!isWritable(stream)) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
await new Promise((resolve) => {
|
|
89
|
+
stream.end(resolve);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export class JsonlFileEventSink extends FileEventSink {
|
|
94
|
+
// Writes full verbatim events to `session_events.jsonl`.
|
|
95
|
+
constructor(sessionDirPromise) {
|
|
96
|
+
super(sessionDirPromise, "session_events.jsonl");
|
|
97
|
+
}
|
|
98
|
+
// Serializes the full event for lossless machine-readable storage.
|
|
99
|
+
async serialize(event) {
|
|
100
|
+
return `${JSON.stringify(event)}\n`;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export class PrettyLogFileEventSink extends FileEventSink {
|
|
104
|
+
store;
|
|
105
|
+
// Writes human-readable pretty lines to `session_events.log`.
|
|
106
|
+
constructor(sessionDirPromise, store) {
|
|
107
|
+
super(sessionDirPromise, "session_events.log");
|
|
108
|
+
this.store = store;
|
|
109
|
+
}
|
|
110
|
+
// Pretty-prints the event using recent in-memory ancestry.
|
|
111
|
+
async serialize(event) {
|
|
112
|
+
const line = await prettifyEvent(this.store, prettifySanitizeEvent(event));
|
|
113
|
+
return line ? `${line}\n` : null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export class PrettyStderrEventSink {
|
|
117
|
+
store;
|
|
118
|
+
// Writes pretty lines to stderr for verbose local debugging. CDP events are intentionally omitted here to keep stderr high-signal.
|
|
119
|
+
constructor(store) {
|
|
120
|
+
this.store = store;
|
|
121
|
+
} // Queried during prettification so stderr lines can include recent ancestry tags.
|
|
122
|
+
// Best-effort stderr writer used only for interactive debugging output.
|
|
123
|
+
async emit(event) {
|
|
124
|
+
try {
|
|
125
|
+
if (prettifyIsCdpEvent(event)) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const line = await prettifyEvent(this.store, prettifySanitizeEvent(event));
|
|
129
|
+
if (!line) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
await new Promise((resolve, reject) => {
|
|
133
|
+
try {
|
|
134
|
+
process.stderr.write(`${prettifyColorStderrLine(line)}\n`, (error) => {
|
|
135
|
+
if (error) {
|
|
136
|
+
reject(error);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
resolve();
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
reject(error);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// best effort only
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Stderr sink is write-only and does not support query reads.
|
|
152
|
+
async query() {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
// No teardown is required for stderr.
|
|
156
|
+
async destroy() { }
|
|
157
|
+
}
|
|
158
|
+
export class InMemoryEventSink {
|
|
159
|
+
limit;
|
|
160
|
+
// Retains recent events for query lookups. Tests usually attach this sink explicitly when they need full historical payloads.
|
|
161
|
+
constructor(limit = Infinity) {
|
|
162
|
+
this.limit = limit;
|
|
163
|
+
}
|
|
164
|
+
events = []; // Retained history; `emit()` appends to it and trims old entries when `limit` is exceeded.
|
|
165
|
+
// Gives subclasses a hook to transform events before they are retained.
|
|
166
|
+
storeEvent(event) {
|
|
167
|
+
return event;
|
|
168
|
+
}
|
|
169
|
+
// Stores a new event and trims the oldest retained entries once the sink exceeds its configured limit.
|
|
170
|
+
async emit(event) {
|
|
171
|
+
this.events.push(this.storeEvent(event));
|
|
172
|
+
if (this.events.length > this.limit) {
|
|
173
|
+
this.events.splice(0, this.events.length - this.limit);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Returns retained events that match the query, ordered by creation time.
|
|
177
|
+
async query(query) {
|
|
178
|
+
const filtered = this.events.filter((event) => matchesEventStoreQuery(event, query));
|
|
179
|
+
filtered.sort((left, right) => {
|
|
180
|
+
const createdAtOrder = left.eventCreatedAt.localeCompare(right.eventCreatedAt);
|
|
181
|
+
if (createdAtOrder !== 0) {
|
|
182
|
+
return createdAtOrder;
|
|
183
|
+
}
|
|
184
|
+
return left.eventId.localeCompare(right.eventId);
|
|
185
|
+
});
|
|
186
|
+
return query.limit ? filtered.slice(-query.limit) : filtered;
|
|
187
|
+
}
|
|
188
|
+
// Clears retained history when the owning store shuts down.
|
|
189
|
+
async destroy() {
|
|
190
|
+
this.events.length = 0;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
export class ShallowInMemoryEventSink extends InMemoryEventSink {
|
|
194
|
+
// Retains only ancestry metadata for the default query sink so verbose or long-running sessions do not hold onto large payloads such as screenshots.
|
|
195
|
+
storeEvent(event) {
|
|
196
|
+
return new FlowEvent({
|
|
197
|
+
eventType: event.eventType,
|
|
198
|
+
eventId: event.eventId,
|
|
199
|
+
eventCreatedAt: event.eventCreatedAt,
|
|
200
|
+
sessionId: event.sessionId,
|
|
201
|
+
eventParentIds: [...event.eventParentIds],
|
|
202
|
+
data: {},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=EventSink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventSink.js","sourceRoot":"","sources":["../../../../../lib/v3/flowlogger/EventSink.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { FlowEvent } from \"./FlowLogger.js\";\nimport type { EventStoreApi, EventStoreQuery } from \"./EventStore.js\";\nimport {\n prettifyColorStderrLine,\n prettifyEvent,\n prettifyIsCdpEvent,\n prettifySanitizeEvent,\n} from \"./prettify.js\";\n\n// =============================================================================\n// Event Sink Contracts\n// =============================================================================\n\nexport interface EventSink {\n emit(event: FlowEvent): Promise<void>;\n query(query: EventStoreQuery): Promise<FlowEvent[]>;\n destroy(): Promise<void>;\n}\n\n// Checks whether an event matches a query used by queryable sinks. `eventId` matches both the event itself and descendants of that event.\nfunction matchesEventStoreQuery(\n event: FlowEvent,\n query: EventStoreQuery,\n): boolean {\n if (query.sessionId && event.sessionId !== query.sessionId) return false;\n\n if (query.eventId) {\n const matchesEvent =\n event.eventId === query.eventId ||\n event.eventParentIds.includes(query.eventId);\n if (!matchesEvent) {\n return false;\n }\n }\n\n if (query.eventType) {\n const pattern = new RegExp(\n `^${query.eventType\n .replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n .replace(/\\\\\\*/g, \".*\")}$`,\n );\n if (!pattern.test(event.eventType)) {\n return false;\n }\n }\n\n return true;\n}\n\n// =============================================================================\n// File Sink Helpers\n// =============================================================================\n\n// Returns true when a file sink's stream is still open and writable.\nfunction isWritable(stream: fs.WriteStream | null): stream is fs.WriteStream {\n return !!(stream && !stream.destroyed && stream.writable);\n}\n\n// Writes a serialized event to a file sink and converts callback-style stream completion into a promise.\nfunction writeToStream(stream: fs.WriteStream, value: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n try {\n stream.write(value, (error?: Error | null) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\n// =============================================================================\n// Event Sink Implementations\n// =============================================================================\n\nabstract class FileEventSink implements EventSink {\n private readonly streamPromise: Promise<fs.WriteStream | null>; // Lazily opens the one file stream owned by this sink when the session directory resolves.\n\n // Creates a best-effort file sink bound to a single session directory.\n constructor(sessionDirPromise: Promise<string | null>, fileName: string) {\n this.streamPromise = sessionDirPromise.then((sessionDir) =>\n sessionDir\n ? fs.createWriteStream(path.join(sessionDir, fileName), { flags: \"a\" })\n : null,\n );\n }\n\n protected abstract serialize(event: FlowEvent): Promise<string | null>;\n\n // Serializes and appends a single event. File sinks are intentionally best-effort and never allowed to affect library execution flow.\n async emit(event: FlowEvent): Promise<void> {\n try {\n const stream = await this.streamPromise;\n if (!isWritable(stream)) {\n return;\n }\n\n const serialized = await this.serialize(event);\n if (!serialized) {\n return;\n }\n\n await writeToStream(stream, serialized);\n } catch {\n // best effort only\n }\n }\n\n // File sinks are write-only and do not support query reads.\n async query(): Promise<FlowEvent[]> {\n return [];\n }\n\n // Closes the underlying file stream when the owning store shuts down.\n async destroy(): Promise<void> {\n const stream = await this.streamPromise.catch((): null => null);\n if (!isWritable(stream)) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n stream.end(resolve);\n });\n }\n}\n\nexport class JsonlFileEventSink extends FileEventSink {\n // Writes full verbatim events to `session_events.jsonl`.\n constructor(sessionDirPromise: Promise<string | null>) {\n super(sessionDirPromise, \"session_events.jsonl\");\n }\n\n // Serializes the full event for lossless machine-readable storage.\n protected async serialize(event: FlowEvent): Promise<string> {\n return `${JSON.stringify(event)}\\n`;\n }\n}\n\nexport class PrettyLogFileEventSink extends FileEventSink {\n // Writes human-readable pretty lines to `session_events.log`.\n constructor(\n sessionDirPromise: Promise<string | null>,\n private readonly store: Pick<EventStoreApi, \"query\">, // Queried during prettification so each line can recover recent ancestry tags.\n ) {\n super(sessionDirPromise, \"session_events.log\");\n }\n\n // Pretty-prints the event using recent in-memory ancestry.\n protected async serialize(event: FlowEvent): Promise<string | null> {\n const line = await prettifyEvent(this.store, prettifySanitizeEvent(event));\n return line ? `${line}\\n` : null;\n }\n}\n\nexport class PrettyStderrEventSink implements EventSink {\n // Writes pretty lines to stderr for verbose local debugging. CDP events are intentionally omitted here to keep stderr high-signal.\n constructor(private readonly store: Pick<EventStoreApi, \"query\">) {} // Queried during prettification so stderr lines can include recent ancestry tags.\n\n // Best-effort stderr writer used only for interactive debugging output.\n async emit(event: FlowEvent): Promise<void> {\n try {\n if (prettifyIsCdpEvent(event)) {\n return;\n }\n\n const line = await prettifyEvent(\n this.store,\n prettifySanitizeEvent(event),\n );\n if (!line) {\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n try {\n process.stderr.write(\n `${prettifyColorStderrLine(line)}\\n`,\n (error?: Error | null) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n },\n );\n } catch (error) {\n reject(error);\n }\n });\n } catch {\n // best effort only\n }\n }\n\n // Stderr sink is write-only and does not support query reads.\n async query(): Promise<FlowEvent[]> {\n return [];\n }\n\n // No teardown is required for stderr.\n async destroy(): Promise<void> {}\n}\n\nexport class InMemoryEventSink implements EventSink {\n // Retains recent events for query lookups. Tests usually attach this sink explicitly when they need full historical payloads.\n constructor(protected readonly limit = Infinity) {}\n\n protected readonly events: FlowEvent[] = []; // Retained history; `emit()` appends to it and trims old entries when `limit` is exceeded.\n\n // Gives subclasses a hook to transform events before they are retained.\n protected storeEvent(event: FlowEvent): FlowEvent {\n return event;\n }\n\n // Stores a new event and trims the oldest retained entries once the sink exceeds its configured limit.\n async emit(event: FlowEvent): Promise<void> {\n this.events.push(this.storeEvent(event));\n if (this.events.length > this.limit) {\n this.events.splice(0, this.events.length - this.limit);\n }\n }\n\n // Returns retained events that match the query, ordered by creation time.\n async query(query: EventStoreQuery): Promise<FlowEvent[]> {\n const filtered = this.events.filter((event) =>\n matchesEventStoreQuery(event, query),\n );\n filtered.sort((left, right) => {\n const createdAtOrder = left.eventCreatedAt.localeCompare(\n right.eventCreatedAt,\n );\n if (createdAtOrder !== 0) {\n return createdAtOrder;\n }\n\n return left.eventId.localeCompare(right.eventId);\n });\n return query.limit ? filtered.slice(-query.limit) : filtered;\n }\n\n // Clears retained history when the owning store shuts down.\n async destroy(): Promise<void> {\n this.events.length = 0;\n }\n}\n\nexport class ShallowInMemoryEventSink extends InMemoryEventSink {\n // Retains only ancestry metadata for the default query sink so verbose or long-running sessions do not hold onto large payloads such as screenshots.\n protected override storeEvent(event: FlowEvent): FlowEvent {\n return new FlowEvent({\n eventType: event.eventType,\n eventId: event.eventId,\n eventCreatedAt: event.eventCreatedAt,\n sessionId: event.sessionId,\n eventParentIds: [...event.eventParentIds],\n data: {},\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { V3Options } from "../types/public/index.js";
|
|
2
|
+
import { EventSink } from "./EventSink.js";
|
|
3
|
+
import { FlowEvent } from "./FlowLogger.js";
|
|
4
|
+
export interface EventStoreQuery {
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
eventId?: string;
|
|
7
|
+
eventType?: string;
|
|
8
|
+
limit?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface EventStoreApi {
|
|
11
|
+
readonly sessionId: string;
|
|
12
|
+
emit(event: FlowEvent): Promise<void>;
|
|
13
|
+
query(query: EventStoreQuery): Promise<FlowEvent[]>;
|
|
14
|
+
destroy(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare function getConfigDir(): string;
|
|
17
|
+
export declare class EventStore implements EventStoreApi {
|
|
18
|
+
readonly sessionId: string;
|
|
19
|
+
private readonly sinks;
|
|
20
|
+
private destroyed;
|
|
21
|
+
query: (query: EventStoreQuery) => Promise<FlowEvent[]>;
|
|
22
|
+
constructor(sessionId: string, options?: V3Options, querySink?: EventSink);
|
|
23
|
+
private registerSink;
|
|
24
|
+
emit: (event: FlowEvent) => Promise<void>;
|
|
25
|
+
destroy(): Promise<void>;
|
|
26
|
+
}
|