@browserbasehq/orca 3.2.0-preview.4 → 3.2.1-preview.0
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/README.md +2 -2
- package/dist/cjs/lib/inference.d.ts +3 -1
- package/dist/cjs/lib/inference.js +3 -3
- package/dist/cjs/lib/inference.js.map +1 -1
- package/dist/cjs/lib/prompt.d.ts +1 -1
- package/dist/cjs/lib/prompt.js +24 -18
- package/dist/cjs/lib/prompt.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AgentClient.d.ts +8 -0
- package/dist/cjs/lib/v3/agent/AgentClient.js +13 -0
- package/dist/cjs/lib/v3/agent/AgentClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AgentProvider.js +1 -0
- package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.d.ts +3 -1
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +61 -9
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +1 -0
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +16 -0
- package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +12 -6
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +164 -49
- package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +2 -2
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js +10 -11
- package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
- package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +0 -1
- package/dist/cjs/lib/v3/agent/tools/fillform.js +7 -10
- package/dist/cjs/lib/v3/agent/tools/fillform.js.map +1 -1
- package/dist/cjs/lib/v3/agent/tools/index.js +1 -1
- package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -1
- package/dist/cjs/lib/v3/agent/tools/keys.d.ts +2 -1
- package/dist/cjs/lib/v3/agent/tools/keys.js +57 -49
- package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -1
- 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 +3 -5
- package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js.map +1 -1
- package/dist/cjs/lib/v3/agent/utils/variables.d.ts +5 -0
- package/dist/cjs/lib/v3/agent/utils/variables.js +9 -0
- package/dist/cjs/lib/v3/agent/utils/variables.js.map +1 -1
- package/dist/cjs/lib/v3/api.d.ts +5 -3
- package/dist/cjs/lib/v3/api.js +5 -15
- package/dist/cjs/lib/v3/api.js.map +1 -1
- package/dist/cjs/lib/v3/cache/AgentCache.js +5 -3
- package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -1
- package/dist/cjs/lib/v3/flowlogger/EventStore.js +1 -1
- package/dist/cjs/lib/v3/flowlogger/EventStore.js.map +1 -1
- package/dist/cjs/lib/v3/handlers/observeHandler.js +2 -1
- package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -1
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +2 -1
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +110 -46
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +5 -0
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +131 -16
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
- package/dist/cjs/lib/v3/index.d.ts +1 -1
- package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +5 -2
- package/dist/cjs/lib/v3/llm/LLMProvider.js +14 -6
- package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/cjs/lib/v3/llm/OpenAIClient.js +1 -0
- package/dist/cjs/lib/v3/llm/OpenAIClient.js.map +1 -1
- package/dist/cjs/lib/v3/llm/aisdk.d.ts +3 -1
- package/dist/cjs/lib/v3/llm/aisdk.js +67 -17
- package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/cjs/lib/v3/types/private/cache.d.ts +0 -1
- package/dist/cjs/lib/v3/types/private/cache.js.map +1 -1
- package/dist/cjs/lib/v3/types/private/handlers.d.ts +1 -0
- package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/agent.d.ts +8 -3
- package/dist/cjs/lib/v3/types/public/agent.js +1 -0
- package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/api.d.ts +54 -7
- package/dist/cjs/lib/v3/types/public/api.js +47 -16
- package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/methods.d.ts +1 -0
- package/dist/cjs/lib/v3/types/public/methods.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/model.d.ts +32 -2
- package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/variables.d.ts +7 -0
- package/dist/cjs/lib/v3/types/public/variables.js +22 -0
- package/dist/cjs/lib/v3/types/public/variables.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/context.js +11 -3
- package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
- package/dist/cjs/lib/v3/understudy/page.js +1 -1
- package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
- package/dist/cjs/lib/v3/v3.d.ts +23 -2
- package/dist/cjs/lib/v3/v3.js +111 -13
- package/dist/cjs/lib/v3/v3.js.map +1 -1
- package/dist/cjs/lib/version.d.ts +1 -1
- package/dist/cjs/lib/version.js +1 -1
- package/dist/cjs/lib/version.js.map +1 -1
- package/dist/cjs/tests/integration/agent-captcha-autosolve.spec.d.ts +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-hybrid-mode.spec.js +6 -6
- package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +1 -1
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +1 -0
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +56 -0
- package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +1 -0
- package/dist/cjs/tests/integration/timeouts.spec.js +1 -1
- package/dist/cjs/tests/integration/timeouts.spec.js.map +1 -1
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +341 -0
- package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +1 -0
- package/dist/cjs/tests/unit/agent-execution-model.test.js +25 -3
- package/dist/cjs/tests/unit/agent-execution-model.test.js.map +1 -1
- package/dist/cjs/tests/unit/agent-metrics.test.d.ts +1 -0
- package/dist/cjs/tests/unit/agent-metrics.test.js +112 -0
- package/dist/cjs/tests/unit/agent-metrics.test.js.map +1 -0
- package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +1 -0
- package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +23 -0
- package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +1 -0
- package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +1 -0
- package/dist/cjs/tests/unit/aisdk-clients.test.js +90 -0
- package/dist/cjs/tests/unit/aisdk-clients.test.js.map +1 -0
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +1 -0
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +250 -0
- package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +1 -0
- package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +1 -0
- package/dist/cjs/tests/unit/api-client-observe-variables.test.js +86 -0
- package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +1 -0
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +1 -0
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +95 -0
- package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +1 -0
- package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +1 -0
- package/dist/cjs/tests/unit/api-variables-schema.test.js +37 -0
- package/dist/cjs/tests/unit/api-variables-schema.test.js.map +1 -0
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +40 -0
- package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +1 -1
- 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/flowlogger-eventstore.test.js +1 -1
- package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +1 -1
- 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/microsoft-cua-client.test.d.ts +1 -0
- package/dist/cjs/tests/unit/microsoft-cua-client.test.js +86 -0
- package/dist/cjs/tests/unit/microsoft-cua-client.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/prompt-observe-variables.test.d.ts +1 -0
- package/dist/cjs/tests/unit/prompt-observe-variables.test.js +19 -0
- package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +1 -0
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +1 -0
- package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +1 -1
- package/dist/cjs/tests/unit/public-api/public-types.test.js.map +1 -1
- package/dist/cjs/tests/unit/timeout-handlers.test.js +50 -0
- package/dist/cjs/tests/unit/timeout-handlers.test.js.map +1 -1
- package/dist/esm/lib/inference.d.ts +3 -1
- package/dist/esm/lib/inference.js +3 -3
- package/dist/esm/lib/inference.js.map +1 -1
- package/dist/esm/lib/prompt.d.ts +1 -1
- package/dist/esm/lib/prompt.js +24 -18
- package/dist/esm/lib/prompt.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 -0
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.d.ts +3 -1
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +61 -9
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js +1 -0
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +16 -0
- package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +12 -6
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js +164 -49
- package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +2 -2
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +10 -11
- package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/fillform.d.ts +0 -1
- package/dist/esm/lib/v3/agent/tools/fillform.js +7 -10
- package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/index.js +1 -1
- package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
- package/dist/esm/lib/v3/agent/tools/keys.d.ts +2 -1
- package/dist/esm/lib/v3/agent/tools/keys.js +57 -49
- package/dist/esm/lib/v3/agent/tools/keys.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/coordinateNormalization.js +3 -5
- package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js.map +1 -1
- package/dist/esm/lib/v3/agent/utils/variables.d.ts +5 -0
- package/dist/esm/lib/v3/agent/utils/variables.js +8 -0
- package/dist/esm/lib/v3/agent/utils/variables.js.map +1 -1
- package/dist/esm/lib/v3/api.d.ts +5 -3
- package/dist/esm/lib/v3/api.js +5 -15
- package/dist/esm/lib/v3/api.js.map +1 -1
- package/dist/esm/lib/v3/cache/AgentCache.js +5 -3
- package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
- package/dist/esm/lib/v3/flowlogger/EventStore.js +1 -1
- package/dist/esm/lib/v3/flowlogger/EventStore.js.map +1 -1
- package/dist/esm/lib/v3/handlers/observeHandler.js +2 -1
- package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
- package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +2 -1
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js +110 -46
- 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 +131 -16
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
- package/dist/esm/lib/v3/index.d.ts +1 -1
- package/dist/esm/lib/v3/llm/LLMProvider.d.ts +5 -2
- package/dist/esm/lib/v3/llm/LLMProvider.js +15 -7
- package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/esm/lib/v3/llm/OpenAIClient.js +1 -0
- package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -1
- package/dist/esm/lib/v3/llm/aisdk.d.ts +3 -1
- package/dist/esm/lib/v3/llm/aisdk.js +67 -17
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/esm/lib/v3/types/private/cache.d.ts +0 -1
- package/dist/esm/lib/v3/types/private/cache.js.map +1 -1
- package/dist/esm/lib/v3/types/private/handlers.d.ts +1 -0
- package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
- package/dist/esm/lib/v3/types/public/agent.d.ts +8 -3
- package/dist/esm/lib/v3/types/public/agent.js +1 -0
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
- package/dist/esm/lib/v3/types/public/api.d.ts +54 -7
- package/dist/esm/lib/v3/types/public/api.js +42 -14
- package/dist/esm/lib/v3/types/public/api.js.map +1 -1
- package/dist/esm/lib/v3/types/public/methods.d.ts +1 -0
- package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
- package/dist/esm/lib/v3/types/public/model.d.ts +32 -2
- package/dist/esm/lib/v3/types/public/model.js.map +1 -1
- package/dist/esm/lib/v3/types/public/variables.d.ts +7 -0
- package/dist/esm/lib/v3/types/public/variables.js +19 -0
- package/dist/esm/lib/v3/types/public/variables.js.map +1 -0
- package/dist/esm/lib/v3/understudy/context.js +11 -3
- package/dist/esm/lib/v3/understudy/context.js.map +1 -1
- package/dist/esm/lib/v3/understudy/page.js +1 -1
- package/dist/esm/lib/v3/understudy/page.js.map +1 -1
- package/dist/esm/lib/v3/v3.d.ts +23 -2
- package/dist/esm/lib/v3/v3.js +111 -14
- 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/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-hybrid-mode.spec.js +6 -6
- package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +1 -1
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +1 -0
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +54 -0
- package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +1 -0
- package/dist/esm/tests/integration/timeouts.spec.js +1 -1
- package/dist/esm/tests/integration/timeouts.spec.js.map +1 -1
- package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js +339 -0
- package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +1 -0
- package/dist/esm/tests/unit/agent-execution-model.test.js +25 -3
- package/dist/esm/tests/unit/agent-execution-model.test.js.map +1 -1
- package/dist/esm/tests/unit/agent-metrics.test.d.ts +1 -0
- package/dist/esm/tests/unit/agent-metrics.test.js +110 -0
- package/dist/esm/tests/unit/agent-metrics.test.js.map +1 -0
- package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +1 -0
- package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +21 -0
- package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +1 -0
- package/dist/esm/tests/unit/aisdk-clients.test.d.ts +1 -0
- package/dist/esm/tests/unit/aisdk-clients.test.js +88 -0
- package/dist/esm/tests/unit/aisdk-clients.test.js.map +1 -0
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +1 -0
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +245 -0
- package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +1 -0
- package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +1 -0
- package/dist/esm/tests/unit/api-client-observe-variables.test.js +84 -0
- package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +1 -0
- package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +1 -0
- package/dist/esm/tests/unit/api-optional-model-api-key.test.js +93 -0
- package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +1 -0
- package/dist/esm/tests/unit/api-variables-schema.test.d.ts +1 -0
- package/dist/esm/tests/unit/api-variables-schema.test.js +35 -0
- package/dist/esm/tests/unit/api-variables-schema.test.js.map +1 -0
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js +40 -0
- package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +1 -1
- 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/flowlogger-eventstore.test.js +1 -1
- package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +1 -1
- 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/microsoft-cua-client.test.d.ts +1 -0
- package/dist/esm/tests/unit/microsoft-cua-client.test.js +84 -0
- package/dist/esm/tests/unit/microsoft-cua-client.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/prompt-observe-variables.test.d.ts +1 -0
- package/dist/esm/tests/unit/prompt-observe-variables.test.js +17 -0
- package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +1 -0
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +1 -0
- package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +1 -1
- package/dist/esm/tests/unit/public-api/public-types.test.js.map +1 -1
- package/dist/esm/tests/unit/timeout-handlers.test.js +50 -0
- package/dist/esm/tests/unit/timeout-handlers.test.js.map +1 -1
- package/package.json +5 -9
- package/dist/cjs/lib/v3/dom/build/rerender-index.js +0 -1
- package/dist/cjs/lib/v3/dom/build/v3-index.js +0 -1
- package/dist/esm/lib/v3/dom/build/rerender-index.js +0 -1
- package/dist/esm/lib/v3/dom/build/v3-index.js +0 -1
package/dist/esm/lib/v3/v3.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
+
import type { LanguageModelV2Middleware } from "@ai-sdk/provider";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { InferStagehandSchema, StagehandZodSchema } from "./zodCompat.js";
|
|
3
4
|
import { LLMClient } from "./llm/LLMClient.js";
|
|
4
5
|
import { AgentReplayStep } from "./types/private/index.js";
|
|
5
|
-
import { AgentConfig, AgentExecuteOptions, AgentStreamExecuteOptions, AgentResult, LogLine, StagehandMetrics, Action, ActOptions, ActResult, defaultExtractSchema, ExtractOptions, HistoryEntry, ObserveOptions, pageTextSchema, V3FunctionName, V3Options, AgentStreamResult } from "./types/public/index.js";
|
|
6
|
+
import { AgentConfig, AgentExecuteOptions, AgentStreamExecuteOptions, AgentResult, LogLine, StagehandMetrics, Action, ActOptions, ActResult, defaultExtractSchema, ExtractOptions, HistoryEntry, ObserveOptions, pageTextSchema, V3FunctionName, AvailableModel, ClientOptions, V3Options, AgentStreamResult } from "./types/public/index.js";
|
|
6
7
|
import { V3Context } from "./understudy/context.js";
|
|
7
8
|
import { type FlowLoggerContext } from "./flowlogger/FlowLogger.js";
|
|
8
9
|
import { EventEmitterWithWildcardSupport } from "./flowlogger/EventEmitter.js";
|
|
9
10
|
import { EventStore } from "./flowlogger/EventStore.js";
|
|
11
|
+
type ResolvedModelConfiguration = {
|
|
12
|
+
modelName: AvailableModel;
|
|
13
|
+
clientOptions?: ClientOptions;
|
|
14
|
+
middleware?: LanguageModelV2Middleware;
|
|
15
|
+
};
|
|
16
|
+
export declare function resolveModelConfiguration(model?: V3Options["model"]): ResolvedModelConfiguration;
|
|
10
17
|
/**
|
|
11
18
|
* V3
|
|
12
19
|
*
|
|
@@ -52,7 +59,18 @@ export declare class V3 {
|
|
|
52
59
|
*/
|
|
53
60
|
get isBrowserbase(): boolean;
|
|
54
61
|
/**
|
|
55
|
-
* Returns true if
|
|
62
|
+
* Returns true if captcha auto-solving is enabled on Browserbase.
|
|
63
|
+
* Defaults to true when not explicitly set to false.
|
|
64
|
+
*/
|
|
65
|
+
get isCaptchaAutoSolveEnabled(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Returns true if Browserbase Verified mode is enabled in settings.
|
|
68
|
+
* Legacy `advancedStealth` is treated as equivalent for backwards compatibility.
|
|
69
|
+
*/
|
|
70
|
+
get isVerified(): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Backwards-compatible alias for Browserbase managed fingerprinting mode.
|
|
73
|
+
* @deprecated Use `isVerified` instead. This alias will be removed in a future version.
|
|
56
74
|
*/
|
|
57
75
|
get isAdvancedStealth(): boolean;
|
|
58
76
|
/**
|
|
@@ -90,6 +108,8 @@ export declare class V3 {
|
|
|
90
108
|
* When using API mode, fetches metrics from the API. Otherwise returns local metrics.
|
|
91
109
|
*/
|
|
92
110
|
get metrics(): Promise<StagehandMetrics>;
|
|
111
|
+
private mergeAgentMetricsWithLocalFallback;
|
|
112
|
+
private updateAgentMetricsFromUsage;
|
|
93
113
|
private resolveLlmClient;
|
|
94
114
|
private beginAgentReplayRecording;
|
|
95
115
|
private endAgentReplayRecording;
|
|
@@ -199,3 +219,4 @@ export declare class V3 {
|
|
|
199
219
|
execute: (instructionOrOptions: string | AgentExecuteOptions) => Promise<AgentResult>;
|
|
200
220
|
};
|
|
201
221
|
}
|
|
222
|
+
export {};
|
package/dist/esm/lib/v3/v3.js
CHANGED
|
@@ -49,6 +49,7 @@ import { ExtractHandler } from "./handlers/extractHandler.js";
|
|
|
49
49
|
import { ObserveHandler } from "./handlers/observeHandler.js";
|
|
50
50
|
import { V3AgentHandler } from "./handlers/v3AgentHandler.js";
|
|
51
51
|
import { V3CuaAgentHandler } from "./handlers/v3CuaAgentHandler.js";
|
|
52
|
+
import { CAPTCHA_CUA_SYSTEM_PROMPT_NOTE } from "./agent/utils/captchaSolver.js";
|
|
52
53
|
import { createBrowserbaseSession } from "./launch/browserbase.js";
|
|
53
54
|
import { launchLocalChrome } from "./launch/local.js";
|
|
54
55
|
import { LLMProvider } from "./llm/LLMProvider.js";
|
|
@@ -70,7 +71,7 @@ import { ActTimeoutError } from "./types/public/sdkErrors.js";
|
|
|
70
71
|
const DEFAULT_MODEL_NAME = "openai/gpt-4.1-mini";
|
|
71
72
|
const DEFAULT_VIEWPORT = { width: 1288, height: 711 };
|
|
72
73
|
const DEFAULT_AGENT_TOOL_TIMEOUT_MS = 45000;
|
|
73
|
-
function resolveModelConfiguration(model) {
|
|
74
|
+
export function resolveModelConfiguration(model) {
|
|
74
75
|
if (!model) {
|
|
75
76
|
return { modelName: DEFAULT_MODEL_NAME };
|
|
76
77
|
}
|
|
@@ -78,13 +79,14 @@ function resolveModelConfiguration(model) {
|
|
|
78
79
|
return { modelName: model };
|
|
79
80
|
}
|
|
80
81
|
if (model && typeof model === "object") {
|
|
81
|
-
const { modelName, ...clientOptions } = model;
|
|
82
|
+
const { modelName, middleware, ...clientOptions } = model;
|
|
82
83
|
if (!modelName) {
|
|
83
84
|
throw new StagehandInvalidArgumentError("model.modelName is required when providing client options.");
|
|
84
85
|
}
|
|
85
86
|
return {
|
|
86
87
|
modelName,
|
|
87
88
|
clientOptions: clientOptions,
|
|
89
|
+
middleware,
|
|
88
90
|
};
|
|
89
91
|
}
|
|
90
92
|
return { modelName: DEFAULT_MODEL_NAME };
|
|
@@ -163,11 +165,29 @@ let V3 = (() => {
|
|
|
163
165
|
return this.state.kind === "BROWSERBASE";
|
|
164
166
|
}
|
|
165
167
|
/**
|
|
166
|
-
* Returns true if
|
|
168
|
+
* Returns true if captcha auto-solving is enabled on Browserbase.
|
|
169
|
+
* Defaults to true when not explicitly set to false.
|
|
170
|
+
*/
|
|
171
|
+
get isCaptchaAutoSolveEnabled() {
|
|
172
|
+
return (this.isBrowserbase &&
|
|
173
|
+
this.opts.browserbaseSessionCreateParams?.browserSettings
|
|
174
|
+
?.solveCaptchas !== false);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Returns true if Browserbase Verified mode is enabled in settings.
|
|
178
|
+
* Legacy `advancedStealth` is treated as equivalent for backwards compatibility.
|
|
179
|
+
*/
|
|
180
|
+
get isVerified() {
|
|
181
|
+
const browserSettings = this.opts.browserbaseSessionCreateParams?.browserSettings;
|
|
182
|
+
return (browserSettings?.verified === true ||
|
|
183
|
+
browserSettings?.advancedStealth === true);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Backwards-compatible alias for Browserbase managed fingerprinting mode.
|
|
187
|
+
* @deprecated Use `isVerified` instead. This alias will be removed in a future version.
|
|
167
188
|
*/
|
|
168
189
|
get isAdvancedStealth() {
|
|
169
|
-
return
|
|
170
|
-
?.advancedStealth === true);
|
|
190
|
+
return this.isVerified;
|
|
171
191
|
}
|
|
172
192
|
/**
|
|
173
193
|
* Returns the configured viewport dimensions from launch options.
|
|
@@ -279,11 +299,11 @@ let V3 = (() => {
|
|
|
279
299
|
catch {
|
|
280
300
|
// ignore
|
|
281
301
|
}
|
|
282
|
-
const { modelName, clientOptions } = resolveModelConfiguration(opts.model);
|
|
302
|
+
const { modelName, clientOptions, middleware } = resolveModelConfiguration(opts.model);
|
|
283
303
|
this.modelName = modelName;
|
|
284
304
|
this.experimental = opts.experimental ?? false;
|
|
285
305
|
this.logInferenceToFile = opts.logInferenceToFile ?? false;
|
|
286
|
-
this.llmProvider = new LLMProvider(this.logger);
|
|
306
|
+
this.llmProvider = new LLMProvider(this.logger, middleware);
|
|
287
307
|
this.domSettleTimeoutMs = opts.domSettleTimeout;
|
|
288
308
|
this.disableAPI = opts.disableAPI ?? false;
|
|
289
309
|
const baseClientOptions = clientOptions
|
|
@@ -342,7 +362,7 @@ let V3 = (() => {
|
|
|
342
362
|
this.opts = opts;
|
|
343
363
|
// FlowLogger always gets a per-instance session context and shared event
|
|
344
364
|
// bus. The attached EventStore decides which sinks are active:
|
|
345
|
-
// `
|
|
365
|
+
// `BROWSERBASE_FLOW_LOGS=1` enables pretty stderr output,
|
|
346
366
|
// and `BROWSERBASE_CONFIG_DIR` enables the pretty/jsonl file sinks for this session.
|
|
347
367
|
this.eventStore = new EventStore(this.sessionId, opts);
|
|
348
368
|
this.flowLoggerContext = FlowLogger.init(this.sessionId, this.bus);
|
|
@@ -365,7 +385,10 @@ let V3 = (() => {
|
|
|
365
385
|
get metrics() {
|
|
366
386
|
if (this.apiClient) {
|
|
367
387
|
// Fetch metrics from the API
|
|
368
|
-
return this.apiClient
|
|
388
|
+
return this.apiClient
|
|
389
|
+
.getReplayMetrics()
|
|
390
|
+
.then((metrics) => this.mergeAgentMetricsWithLocalFallback(metrics))
|
|
391
|
+
.catch((error) => {
|
|
369
392
|
this.logger({
|
|
370
393
|
category: "metrics",
|
|
371
394
|
message: `Failed to fetch metrics from API: ${error}`,
|
|
@@ -378,21 +401,78 @@ let V3 = (() => {
|
|
|
378
401
|
// Return local metrics wrapped in a Promise for consistency
|
|
379
402
|
return Promise.resolve(this.stagehandMetrics);
|
|
380
403
|
}
|
|
404
|
+
mergeAgentMetricsWithLocalFallback(remoteMetrics) {
|
|
405
|
+
// In API mode, agent.execute() is the only path that returns trusted inline
|
|
406
|
+
// usage today, so only repair the agent bucket from local state.
|
|
407
|
+
const agentPromptTokens = Math.max(remoteMetrics.agentPromptTokens, this.stagehandMetrics.agentPromptTokens);
|
|
408
|
+
const agentCompletionTokens = Math.max(remoteMetrics.agentCompletionTokens, this.stagehandMetrics.agentCompletionTokens);
|
|
409
|
+
const agentReasoningTokens = Math.max(remoteMetrics.agentReasoningTokens, this.stagehandMetrics.agentReasoningTokens);
|
|
410
|
+
const agentCachedInputTokens = Math.max(remoteMetrics.agentCachedInputTokens, this.stagehandMetrics.agentCachedInputTokens);
|
|
411
|
+
const agentInferenceTimeMs = Math.max(remoteMetrics.agentInferenceTimeMs, this.stagehandMetrics.agentInferenceTimeMs);
|
|
412
|
+
const metrics = {
|
|
413
|
+
...remoteMetrics,
|
|
414
|
+
agentPromptTokens,
|
|
415
|
+
agentCompletionTokens,
|
|
416
|
+
agentReasoningTokens,
|
|
417
|
+
agentCachedInputTokens,
|
|
418
|
+
agentInferenceTimeMs,
|
|
419
|
+
totalPromptTokens: 0,
|
|
420
|
+
totalCompletionTokens: 0,
|
|
421
|
+
totalReasoningTokens: 0,
|
|
422
|
+
totalCachedInputTokens: 0,
|
|
423
|
+
totalInferenceTimeMs: 0,
|
|
424
|
+
};
|
|
425
|
+
metrics.totalPromptTokens =
|
|
426
|
+
metrics.actPromptTokens +
|
|
427
|
+
metrics.extractPromptTokens +
|
|
428
|
+
metrics.observePromptTokens +
|
|
429
|
+
metrics.agentPromptTokens;
|
|
430
|
+
metrics.totalCompletionTokens =
|
|
431
|
+
metrics.actCompletionTokens +
|
|
432
|
+
metrics.extractCompletionTokens +
|
|
433
|
+
metrics.observeCompletionTokens +
|
|
434
|
+
metrics.agentCompletionTokens;
|
|
435
|
+
metrics.totalReasoningTokens =
|
|
436
|
+
metrics.actReasoningTokens +
|
|
437
|
+
metrics.extractReasoningTokens +
|
|
438
|
+
metrics.observeReasoningTokens +
|
|
439
|
+
metrics.agentReasoningTokens;
|
|
440
|
+
metrics.totalCachedInputTokens =
|
|
441
|
+
metrics.actCachedInputTokens +
|
|
442
|
+
metrics.extractCachedInputTokens +
|
|
443
|
+
metrics.observeCachedInputTokens +
|
|
444
|
+
metrics.agentCachedInputTokens;
|
|
445
|
+
metrics.totalInferenceTimeMs =
|
|
446
|
+
metrics.actInferenceTimeMs +
|
|
447
|
+
metrics.extractInferenceTimeMs +
|
|
448
|
+
metrics.observeInferenceTimeMs +
|
|
449
|
+
metrics.agentInferenceTimeMs;
|
|
450
|
+
return metrics;
|
|
451
|
+
}
|
|
452
|
+
updateAgentMetricsFromUsage(usage) {
|
|
453
|
+
if (!usage) {
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
this.updateMetrics(V3FunctionName.AGENT, usage.input_tokens, usage.output_tokens, usage.reasoning_tokens ?? 0, usage.cached_input_tokens ?? 0, usage.inference_time_ms);
|
|
457
|
+
}
|
|
381
458
|
resolveLlmClient(model) {
|
|
382
459
|
if (!model) {
|
|
383
460
|
return this.llmClient;
|
|
384
461
|
}
|
|
385
462
|
let modelName;
|
|
386
463
|
let clientOptions;
|
|
464
|
+
let perCallMiddleware;
|
|
387
465
|
if (typeof model === "string") {
|
|
388
466
|
modelName = model;
|
|
389
467
|
}
|
|
390
468
|
else {
|
|
391
|
-
const { modelName: overrideModelName, ...rest } = model;
|
|
469
|
+
const { modelName: overrideModelName, middleware, ...rest } = model;
|
|
392
470
|
modelName = overrideModelName;
|
|
393
471
|
clientOptions = rest;
|
|
472
|
+
perCallMiddleware = middleware;
|
|
394
473
|
}
|
|
395
474
|
if (modelName === this.modelName &&
|
|
475
|
+
!perCallMiddleware &&
|
|
396
476
|
(!clientOptions || Object.keys(clientOptions).length === 0)) {
|
|
397
477
|
return this.llmClient;
|
|
398
478
|
}
|
|
@@ -409,6 +489,13 @@ let V3 = (() => {
|
|
|
409
489
|
mergedOptions.apiKey = apiKey;
|
|
410
490
|
}
|
|
411
491
|
}
|
|
492
|
+
if (perCallMiddleware) {
|
|
493
|
+
return this.llmProvider.getClient(modelName, mergedOptions, {
|
|
494
|
+
experimental: this.experimental,
|
|
495
|
+
disableAPI: this.disableAPI,
|
|
496
|
+
middleware: perCallMiddleware,
|
|
497
|
+
});
|
|
498
|
+
}
|
|
412
499
|
const cacheKey = JSON.stringify({
|
|
413
500
|
modelName,
|
|
414
501
|
clientOptions: mergedOptions,
|
|
@@ -417,7 +504,10 @@ let V3 = (() => {
|
|
|
417
504
|
if (cached) {
|
|
418
505
|
return cached;
|
|
419
506
|
}
|
|
420
|
-
const client = this.llmProvider.getClient(modelName, mergedOptions, {
|
|
507
|
+
const client = this.llmProvider.getClient(modelName, mergedOptions, {
|
|
508
|
+
experimental: this.experimental,
|
|
509
|
+
disableAPI: this.disableAPI,
|
|
510
|
+
});
|
|
421
511
|
this.overrideLlmClients.set(cacheKey, client);
|
|
422
512
|
return client;
|
|
423
513
|
}
|
|
@@ -1053,6 +1143,7 @@ let V3 = (() => {
|
|
|
1053
1143
|
const handlerParams = {
|
|
1054
1144
|
instruction,
|
|
1055
1145
|
model: options?.model,
|
|
1146
|
+
variables: options?.variables,
|
|
1056
1147
|
timeout: options?.timeout,
|
|
1057
1148
|
selector: options?.selector,
|
|
1058
1149
|
page: page,
|
|
@@ -1072,6 +1163,7 @@ let V3 = (() => {
|
|
|
1072
1163
|
// history: record observe call (omit page object)
|
|
1073
1164
|
this.addToHistory("observe", {
|
|
1074
1165
|
instruction,
|
|
1166
|
+
variables: options?.variables,
|
|
1075
1167
|
timeout: options?.timeout,
|
|
1076
1168
|
}, results);
|
|
1077
1169
|
return results;
|
|
@@ -1339,7 +1431,7 @@ let V3 = (() => {
|
|
|
1339
1431
|
? this.resolveLlmClient(options.model)
|
|
1340
1432
|
: this.llmClient;
|
|
1341
1433
|
const resolvedExecutionModel = options?.executionModel ?? options?.model;
|
|
1342
|
-
const handler = new V3AgentHandler(this, this.logger, agentLlmClient, resolvedExecutionModel, options?.systemPrompt, tools, options?.mode);
|
|
1434
|
+
const handler = new V3AgentHandler(this, this.logger, agentLlmClient, resolvedExecutionModel, options?.systemPrompt, tools, options?.mode, this.isCaptchaAutoSolveEnabled);
|
|
1343
1435
|
const resolvedOptions = typeof instructionOrOptions === "string"
|
|
1344
1436
|
? {
|
|
1345
1437
|
instruction: instructionOrOptions,
|
|
@@ -1442,8 +1534,11 @@ let V3 = (() => {
|
|
|
1442
1534
|
const handler = new V3CuaAgentHandler(this, this.logger, {
|
|
1443
1535
|
modelName,
|
|
1444
1536
|
clientOptions,
|
|
1445
|
-
userProvidedInstructions: options.systemPrompt ??
|
|
1446
|
-
`You are a helpful assistant that can use a web browser.\nDo not ask follow up questions, the user will trust your judgement
|
|
1537
|
+
userProvidedInstructions: (options.systemPrompt ??
|
|
1538
|
+
`You are a helpful assistant that can use a web browser.\nDo not ask follow up questions, the user will trust your judgement.`) +
|
|
1539
|
+
(this.isCaptchaAutoSolveEnabled
|
|
1540
|
+
? CAPTCHA_CUA_SYSTEM_PROMPT_NOTE
|
|
1541
|
+
: ""),
|
|
1447
1542
|
}, tools);
|
|
1448
1543
|
const resolvedOptions = typeof instructionOrOptions === "string"
|
|
1449
1544
|
? {
|
|
@@ -1489,6 +1584,7 @@ let V3 = (() => {
|
|
|
1489
1584
|
if (this.apiClient && !this.experimental) {
|
|
1490
1585
|
const page = await this.ctx.awaitActivePage();
|
|
1491
1586
|
result = await this.apiClient.agentExecute(options, resolvedOptions, page.mainFrameId(), !!cacheContext);
|
|
1587
|
+
this.updateAgentMetricsFromUsage(result.usage);
|
|
1492
1588
|
if (cacheContext) {
|
|
1493
1589
|
const transferredEntry = this.apiClient.consumeLatestAgentCacheEntry();
|
|
1494
1590
|
await this.agentCache.storeTransferredEntry(transferredEntry);
|
|
@@ -1572,6 +1668,7 @@ let V3 = (() => {
|
|
|
1572
1668
|
if (this.apiClient && !this.experimental) {
|
|
1573
1669
|
const page = await this.ctx.awaitActivePage();
|
|
1574
1670
|
result = await this.apiClient.agentExecute(options ?? {}, resolvedOptions, page.mainFrameId(), !!cacheContext);
|
|
1671
|
+
this.updateAgentMetricsFromUsage(result.usage);
|
|
1575
1672
|
if (cacheContext) {
|
|
1576
1673
|
const transferredEntry = this.apiClient.consumeLatestAgentCacheEntry();
|
|
1577
1674
|
await this.agentCache.storeTransferredEntry(transferredEntry);
|