@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/cjs/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/cjs/lib/v3/v3.js
CHANGED
|
@@ -71,6 +71,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
71
71
|
};
|
|
72
72
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
73
|
exports.V3 = void 0;
|
|
74
|
+
exports.resolveModelConfiguration = resolveModelConfiguration;
|
|
74
75
|
const fs_1 = __importDefault(require("fs"));
|
|
75
76
|
const os_1 = __importDefault(require("os"));
|
|
76
77
|
const path_1 = __importDefault(require("path"));
|
|
@@ -88,6 +89,7 @@ const extractHandler_js_1 = require("./handlers/extractHandler.js");
|
|
|
88
89
|
const observeHandler_js_1 = require("./handlers/observeHandler.js");
|
|
89
90
|
const v3AgentHandler_js_1 = require("./handlers/v3AgentHandler.js");
|
|
90
91
|
const v3CuaAgentHandler_js_1 = require("./handlers/v3CuaAgentHandler.js");
|
|
92
|
+
const captchaSolver_js_1 = require("./agent/utils/captchaSolver.js");
|
|
91
93
|
const browserbase_js_1 = require("./launch/browserbase.js");
|
|
92
94
|
const local_js_1 = require("./launch/local.js");
|
|
93
95
|
const LLMProvider_js_1 = require("./llm/LLMProvider.js");
|
|
@@ -117,13 +119,14 @@ function resolveModelConfiguration(model) {
|
|
|
117
119
|
return { modelName: model };
|
|
118
120
|
}
|
|
119
121
|
if (model && typeof model === "object") {
|
|
120
|
-
const { modelName, ...clientOptions } = model;
|
|
122
|
+
const { modelName, middleware, ...clientOptions } = model;
|
|
121
123
|
if (!modelName) {
|
|
122
124
|
throw new index_js_1.StagehandInvalidArgumentError("model.modelName is required when providing client options.");
|
|
123
125
|
}
|
|
124
126
|
return {
|
|
125
127
|
modelName,
|
|
126
128
|
clientOptions: clientOptions,
|
|
129
|
+
middleware,
|
|
127
130
|
};
|
|
128
131
|
}
|
|
129
132
|
return { modelName: DEFAULT_MODEL_NAME };
|
|
@@ -202,11 +205,29 @@ let V3 = (() => {
|
|
|
202
205
|
return this.state.kind === "BROWSERBASE";
|
|
203
206
|
}
|
|
204
207
|
/**
|
|
205
|
-
* Returns true if
|
|
208
|
+
* Returns true if captcha auto-solving is enabled on Browserbase.
|
|
209
|
+
* Defaults to true when not explicitly set to false.
|
|
210
|
+
*/
|
|
211
|
+
get isCaptchaAutoSolveEnabled() {
|
|
212
|
+
return (this.isBrowserbase &&
|
|
213
|
+
this.opts.browserbaseSessionCreateParams?.browserSettings
|
|
214
|
+
?.solveCaptchas !== false);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Returns true if Browserbase Verified mode is enabled in settings.
|
|
218
|
+
* Legacy `advancedStealth` is treated as equivalent for backwards compatibility.
|
|
219
|
+
*/
|
|
220
|
+
get isVerified() {
|
|
221
|
+
const browserSettings = this.opts.browserbaseSessionCreateParams?.browserSettings;
|
|
222
|
+
return (browserSettings?.verified === true ||
|
|
223
|
+
browserSettings?.advancedStealth === true);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Backwards-compatible alias for Browserbase managed fingerprinting mode.
|
|
227
|
+
* @deprecated Use `isVerified` instead. This alias will be removed in a future version.
|
|
206
228
|
*/
|
|
207
229
|
get isAdvancedStealth() {
|
|
208
|
-
return
|
|
209
|
-
?.advancedStealth === true);
|
|
230
|
+
return this.isVerified;
|
|
210
231
|
}
|
|
211
232
|
/**
|
|
212
233
|
* Returns the configured viewport dimensions from launch options.
|
|
@@ -318,11 +339,11 @@ let V3 = (() => {
|
|
|
318
339
|
catch {
|
|
319
340
|
// ignore
|
|
320
341
|
}
|
|
321
|
-
const { modelName, clientOptions } = resolveModelConfiguration(opts.model);
|
|
342
|
+
const { modelName, clientOptions, middleware } = resolveModelConfiguration(opts.model);
|
|
322
343
|
this.modelName = modelName;
|
|
323
344
|
this.experimental = opts.experimental ?? false;
|
|
324
345
|
this.logInferenceToFile = opts.logInferenceToFile ?? false;
|
|
325
|
-
this.llmProvider = new LLMProvider_js_1.LLMProvider(this.logger);
|
|
346
|
+
this.llmProvider = new LLMProvider_js_1.LLMProvider(this.logger, middleware);
|
|
326
347
|
this.domSettleTimeoutMs = opts.domSettleTimeout;
|
|
327
348
|
this.disableAPI = opts.disableAPI ?? false;
|
|
328
349
|
const baseClientOptions = clientOptions
|
|
@@ -381,7 +402,7 @@ let V3 = (() => {
|
|
|
381
402
|
this.opts = opts;
|
|
382
403
|
// FlowLogger always gets a per-instance session context and shared event
|
|
383
404
|
// bus. The attached EventStore decides which sinks are active:
|
|
384
|
-
// `
|
|
405
|
+
// `BROWSERBASE_FLOW_LOGS=1` enables pretty stderr output,
|
|
385
406
|
// and `BROWSERBASE_CONFIG_DIR` enables the pretty/jsonl file sinks for this session.
|
|
386
407
|
this.eventStore = new EventStore_js_1.EventStore(this.sessionId, opts);
|
|
387
408
|
this.flowLoggerContext = FlowLogger_js_1.FlowLogger.init(this.sessionId, this.bus);
|
|
@@ -404,7 +425,10 @@ let V3 = (() => {
|
|
|
404
425
|
get metrics() {
|
|
405
426
|
if (this.apiClient) {
|
|
406
427
|
// Fetch metrics from the API
|
|
407
|
-
return this.apiClient
|
|
428
|
+
return this.apiClient
|
|
429
|
+
.getReplayMetrics()
|
|
430
|
+
.then((metrics) => this.mergeAgentMetricsWithLocalFallback(metrics))
|
|
431
|
+
.catch((error) => {
|
|
408
432
|
this.logger({
|
|
409
433
|
category: "metrics",
|
|
410
434
|
message: `Failed to fetch metrics from API: ${error}`,
|
|
@@ -417,21 +441,78 @@ let V3 = (() => {
|
|
|
417
441
|
// Return local metrics wrapped in a Promise for consistency
|
|
418
442
|
return Promise.resolve(this.stagehandMetrics);
|
|
419
443
|
}
|
|
444
|
+
mergeAgentMetricsWithLocalFallback(remoteMetrics) {
|
|
445
|
+
// In API mode, agent.execute() is the only path that returns trusted inline
|
|
446
|
+
// usage today, so only repair the agent bucket from local state.
|
|
447
|
+
const agentPromptTokens = Math.max(remoteMetrics.agentPromptTokens, this.stagehandMetrics.agentPromptTokens);
|
|
448
|
+
const agentCompletionTokens = Math.max(remoteMetrics.agentCompletionTokens, this.stagehandMetrics.agentCompletionTokens);
|
|
449
|
+
const agentReasoningTokens = Math.max(remoteMetrics.agentReasoningTokens, this.stagehandMetrics.agentReasoningTokens);
|
|
450
|
+
const agentCachedInputTokens = Math.max(remoteMetrics.agentCachedInputTokens, this.stagehandMetrics.agentCachedInputTokens);
|
|
451
|
+
const agentInferenceTimeMs = Math.max(remoteMetrics.agentInferenceTimeMs, this.stagehandMetrics.agentInferenceTimeMs);
|
|
452
|
+
const metrics = {
|
|
453
|
+
...remoteMetrics,
|
|
454
|
+
agentPromptTokens,
|
|
455
|
+
agentCompletionTokens,
|
|
456
|
+
agentReasoningTokens,
|
|
457
|
+
agentCachedInputTokens,
|
|
458
|
+
agentInferenceTimeMs,
|
|
459
|
+
totalPromptTokens: 0,
|
|
460
|
+
totalCompletionTokens: 0,
|
|
461
|
+
totalReasoningTokens: 0,
|
|
462
|
+
totalCachedInputTokens: 0,
|
|
463
|
+
totalInferenceTimeMs: 0,
|
|
464
|
+
};
|
|
465
|
+
metrics.totalPromptTokens =
|
|
466
|
+
metrics.actPromptTokens +
|
|
467
|
+
metrics.extractPromptTokens +
|
|
468
|
+
metrics.observePromptTokens +
|
|
469
|
+
metrics.agentPromptTokens;
|
|
470
|
+
metrics.totalCompletionTokens =
|
|
471
|
+
metrics.actCompletionTokens +
|
|
472
|
+
metrics.extractCompletionTokens +
|
|
473
|
+
metrics.observeCompletionTokens +
|
|
474
|
+
metrics.agentCompletionTokens;
|
|
475
|
+
metrics.totalReasoningTokens =
|
|
476
|
+
metrics.actReasoningTokens +
|
|
477
|
+
metrics.extractReasoningTokens +
|
|
478
|
+
metrics.observeReasoningTokens +
|
|
479
|
+
metrics.agentReasoningTokens;
|
|
480
|
+
metrics.totalCachedInputTokens =
|
|
481
|
+
metrics.actCachedInputTokens +
|
|
482
|
+
metrics.extractCachedInputTokens +
|
|
483
|
+
metrics.observeCachedInputTokens +
|
|
484
|
+
metrics.agentCachedInputTokens;
|
|
485
|
+
metrics.totalInferenceTimeMs =
|
|
486
|
+
metrics.actInferenceTimeMs +
|
|
487
|
+
metrics.extractInferenceTimeMs +
|
|
488
|
+
metrics.observeInferenceTimeMs +
|
|
489
|
+
metrics.agentInferenceTimeMs;
|
|
490
|
+
return metrics;
|
|
491
|
+
}
|
|
492
|
+
updateAgentMetricsFromUsage(usage) {
|
|
493
|
+
if (!usage) {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
this.updateMetrics(index_js_1.V3FunctionName.AGENT, usage.input_tokens, usage.output_tokens, usage.reasoning_tokens ?? 0, usage.cached_input_tokens ?? 0, usage.inference_time_ms);
|
|
497
|
+
}
|
|
420
498
|
resolveLlmClient(model) {
|
|
421
499
|
if (!model) {
|
|
422
500
|
return this.llmClient;
|
|
423
501
|
}
|
|
424
502
|
let modelName;
|
|
425
503
|
let clientOptions;
|
|
504
|
+
let perCallMiddleware;
|
|
426
505
|
if (typeof model === "string") {
|
|
427
506
|
modelName = model;
|
|
428
507
|
}
|
|
429
508
|
else {
|
|
430
|
-
const { modelName: overrideModelName, ...rest } = model;
|
|
509
|
+
const { modelName: overrideModelName, middleware, ...rest } = model;
|
|
431
510
|
modelName = overrideModelName;
|
|
432
511
|
clientOptions = rest;
|
|
512
|
+
perCallMiddleware = middleware;
|
|
433
513
|
}
|
|
434
514
|
if (modelName === this.modelName &&
|
|
515
|
+
!perCallMiddleware &&
|
|
435
516
|
(!clientOptions || Object.keys(clientOptions).length === 0)) {
|
|
436
517
|
return this.llmClient;
|
|
437
518
|
}
|
|
@@ -448,6 +529,13 @@ let V3 = (() => {
|
|
|
448
529
|
mergedOptions.apiKey = apiKey;
|
|
449
530
|
}
|
|
450
531
|
}
|
|
532
|
+
if (perCallMiddleware) {
|
|
533
|
+
return this.llmProvider.getClient(modelName, mergedOptions, {
|
|
534
|
+
experimental: this.experimental,
|
|
535
|
+
disableAPI: this.disableAPI,
|
|
536
|
+
middleware: perCallMiddleware,
|
|
537
|
+
});
|
|
538
|
+
}
|
|
451
539
|
const cacheKey = JSON.stringify({
|
|
452
540
|
modelName,
|
|
453
541
|
clientOptions: mergedOptions,
|
|
@@ -456,7 +544,10 @@ let V3 = (() => {
|
|
|
456
544
|
if (cached) {
|
|
457
545
|
return cached;
|
|
458
546
|
}
|
|
459
|
-
const client = this.llmProvider.getClient(modelName, mergedOptions, {
|
|
547
|
+
const client = this.llmProvider.getClient(modelName, mergedOptions, {
|
|
548
|
+
experimental: this.experimental,
|
|
549
|
+
disableAPI: this.disableAPI,
|
|
550
|
+
});
|
|
460
551
|
this.overrideLlmClients.set(cacheKey, client);
|
|
461
552
|
return client;
|
|
462
553
|
}
|
|
@@ -1092,6 +1183,7 @@ let V3 = (() => {
|
|
|
1092
1183
|
const handlerParams = {
|
|
1093
1184
|
instruction,
|
|
1094
1185
|
model: options?.model,
|
|
1186
|
+
variables: options?.variables,
|
|
1095
1187
|
timeout: options?.timeout,
|
|
1096
1188
|
selector: options?.selector,
|
|
1097
1189
|
page: page,
|
|
@@ -1111,6 +1203,7 @@ let V3 = (() => {
|
|
|
1111
1203
|
// history: record observe call (omit page object)
|
|
1112
1204
|
this.addToHistory("observe", {
|
|
1113
1205
|
instruction,
|
|
1206
|
+
variables: options?.variables,
|
|
1114
1207
|
timeout: options?.timeout,
|
|
1115
1208
|
}, results);
|
|
1116
1209
|
return results;
|
|
@@ -1378,7 +1471,7 @@ let V3 = (() => {
|
|
|
1378
1471
|
? this.resolveLlmClient(options.model)
|
|
1379
1472
|
: this.llmClient;
|
|
1380
1473
|
const resolvedExecutionModel = options?.executionModel ?? options?.model;
|
|
1381
|
-
const handler = new v3AgentHandler_js_1.V3AgentHandler(this, this.logger, agentLlmClient, resolvedExecutionModel, options?.systemPrompt, tools, options?.mode);
|
|
1474
|
+
const handler = new v3AgentHandler_js_1.V3AgentHandler(this, this.logger, agentLlmClient, resolvedExecutionModel, options?.systemPrompt, tools, options?.mode, this.isCaptchaAutoSolveEnabled);
|
|
1382
1475
|
const resolvedOptions = typeof instructionOrOptions === "string"
|
|
1383
1476
|
? {
|
|
1384
1477
|
instruction: instructionOrOptions,
|
|
@@ -1481,8 +1574,11 @@ let V3 = (() => {
|
|
|
1481
1574
|
const handler = new v3CuaAgentHandler_js_1.V3CuaAgentHandler(this, this.logger, {
|
|
1482
1575
|
modelName,
|
|
1483
1576
|
clientOptions,
|
|
1484
|
-
userProvidedInstructions: options.systemPrompt ??
|
|
1485
|
-
`You are a helpful assistant that can use a web browser.\nDo not ask follow up questions, the user will trust your judgement
|
|
1577
|
+
userProvidedInstructions: (options.systemPrompt ??
|
|
1578
|
+
`You are a helpful assistant that can use a web browser.\nDo not ask follow up questions, the user will trust your judgement.`) +
|
|
1579
|
+
(this.isCaptchaAutoSolveEnabled
|
|
1580
|
+
? captchaSolver_js_1.CAPTCHA_CUA_SYSTEM_PROMPT_NOTE
|
|
1581
|
+
: ""),
|
|
1486
1582
|
}, tools);
|
|
1487
1583
|
const resolvedOptions = typeof instructionOrOptions === "string"
|
|
1488
1584
|
? {
|
|
@@ -1528,6 +1624,7 @@ let V3 = (() => {
|
|
|
1528
1624
|
if (this.apiClient && !this.experimental) {
|
|
1529
1625
|
const page = await this.ctx.awaitActivePage();
|
|
1530
1626
|
result = await this.apiClient.agentExecute(options, resolvedOptions, page.mainFrameId(), !!cacheContext);
|
|
1627
|
+
this.updateAgentMetricsFromUsage(result.usage);
|
|
1531
1628
|
if (cacheContext) {
|
|
1532
1629
|
const transferredEntry = this.apiClient.consumeLatestAgentCacheEntry();
|
|
1533
1630
|
await this.agentCache.storeTransferredEntry(transferredEntry);
|
|
@@ -1611,6 +1708,7 @@ let V3 = (() => {
|
|
|
1611
1708
|
if (this.apiClient && !this.experimental) {
|
|
1612
1709
|
const page = await this.ctx.awaitActivePage();
|
|
1613
1710
|
result = await this.apiClient.agentExecute(options ?? {}, resolvedOptions, page.mainFrameId(), !!cacheContext);
|
|
1711
|
+
this.updateAgentMetricsFromUsage(result.usage);
|
|
1614
1712
|
if (cacheContext) {
|
|
1615
1713
|
const transferredEntry = this.apiClient.consumeLatestAgentCacheEntry();
|
|
1616
1714
|
await this.agentCache.storeTransferredEntry(transferredEntry);
|