From dc0320168306d4f1de7ace878b5f13166ef47f80 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:39:04 +0000 Subject: [PATCH 1/6] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index ac9e78a..ade26eb 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 8 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-b969ce378479c79ee64c05127c0ed6c6ce2edbee017ecd037242fb618a5ebc9f.yml openapi_spec_hash: a24aabaa5214effb679808b7f2be0ad4 -config_hash: a962ae71493deb11a1c903256fb25386 +config_hash: 0cc516caf1432087f40654336e0fa8cd From 5cb6ecbe621e894dc6c5aec379fdca1183eec4fc Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 18:23:11 +0000 Subject: [PATCH 2/6] feat: Bedrock auth passthrough --- .stats.yml | 4 +- lib/stagehand/models/model_config.rb | 218 ++++- .../models/session_execute_params.rb | 18 +- lib/stagehand/models/session_start_params.rb | 415 ++++++++- lib/stagehand/models/stream_event.rb | 3 +- lib/stagehand/resources/sessions.rb | 7 +- rbi/stagehand/models/model_config.rbi | 436 +++++++++- .../models/session_execute_params.rbi | 28 +- rbi/stagehand/models/session_start_params.rbi | 814 ++++++++++++++++++ rbi/stagehand/models/stream_event.rbi | 3 +- rbi/stagehand/resources/sessions.rbi | 9 + sig/stagehand/models/model_config.rbs | 229 ++++- .../models/session_execute_params.rbs | 24 +- sig/stagehand/models/session_start_params.rbs | 401 +++++++++ sig/stagehand/resources/sessions.rbs | 1 + 15 files changed, 2528 insertions(+), 82 deletions(-) diff --git a/.stats.yml b/.stats.yml index ade26eb..f1d6429 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 8 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-b969ce378479c79ee64c05127c0ed6c6ce2edbee017ecd037242fb618a5ebc9f.yml -openapi_spec_hash: a24aabaa5214effb679808b7f2be0ad4 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-7773ef4ca29c983daafb787ee918cfa6b5b12c5bbdc088308653f2737c26e51f.yml +openapi_spec_hash: 47fc8f2540be0b6374e4230c021072d9 config_hash: 0cc516caf1432087f40654336e0fa8cd diff --git a/lib/stagehand/models/model_config.rb b/lib/stagehand/models/model_config.rb index 806ca18..abf5fcd 100644 --- a/lib/stagehand/models/model_config.rb +++ b/lib/stagehand/models/model_config.rb @@ -22,7 +22,7 @@ class ModelConfig < Stagehand::Internal::Type::BaseModel optional :base_url, String, api_name: :baseURL # @!attribute headers - # Custom headers sent with every request to the model provider + # Custom headers for the model provider # # @return [Hash{Symbol=>String}, nil] optional :headers, Stagehand::Internal::Type::HashOf[String] @@ -33,16 +33,40 @@ class ModelConfig < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::ModelConfig::Provider, nil] optional :provider, enum: -> { Stagehand::ModelConfig::Provider } - # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil) + # @!attribute provider_options + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + # + # @return [Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions, nil] + optional :provider_options, + union: -> { Stagehand::ModelConfig::ProviderOptions }, + api_name: :providerOptions + + # @!attribute skip_api_key_fallback + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + # + # @return [Boolean, nil] + optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback + + # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil, provider_options: nil, skip_api_key_fallback: nil) + # Some parameter documentations has been truncated, see + # {Stagehand::Models::ModelConfig} for more details. + # # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') # # @param api_key [String] API key for the model provider # # @param base_url [String] Base URL for the model provider # - # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider + # @param headers [Hash{Symbol=>String}] Custom headers for the model provider # # @param provider [Symbol, Stagehand::Models::ModelConfig::Provider] AI provider for the model (or provide a baseURL endpoint instead) + # + # @param provider_options [Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions] Provider-specific options passed through to the AI SDK provider constructor. For + # + # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use # AI provider for the model (or provide a baseURL endpoint instead) # @@ -59,6 +83,194 @@ module Provider # @!method self.values # @return [Array] end + + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + # + # @see Stagehand::Models::ModelConfig#provider_options + module ProviderOptions + extend Stagehand::Internal::Type::Union + + variant -> { Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions } + + variant -> { Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions } + + variant -> { Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions } + + class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute region + # AWS region for Amazon Bedrock + # + # @return [String] + required :region, String + + # @!method initialize(region:) + # @param region [String] AWS region for Amazon Bedrock + end + + class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute access_key_id + # AWS access key ID for Bedrock + # + # @return [String] + required :access_key_id, String, api_name: :accessKeyId + + # @!attribute region + # AWS region for Amazon Bedrock + # + # @return [String] + required :region, String + + # @!attribute secret_access_key + # AWS secret access key for Bedrock + # + # @return [String] + required :secret_access_key, String, api_name: :secretAccessKey + + # @!attribute session_token + # Optional AWS session token for temporary credentials + # + # @return [String, nil] + optional :session_token, String, api_name: :sessionToken + + # @!method initialize(access_key_id:, region:, secret_access_key:, session_token: nil) + # @param access_key_id [String] AWS access key ID for Bedrock + # + # @param region [String] AWS region for Amazon Bedrock + # + # @param secret_access_key [String] AWS secret access key for Bedrock + # + # @param session_token [String] Optional AWS session token for temporary credentials + end + + class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute google_auth_options + # Optional Google auth options for Vertex AI + # + # @return [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, nil] + optional :google_auth_options, + -> { + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + }, + api_name: :googleAuthOptions + + # @!attribute headers + # Custom headers for Vertex AI requests + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute location + # Google Cloud location for Vertex AI + # + # @return [String, nil] + optional :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI + # + # @return [String, nil] + optional :project, String + + # @!method initialize(google_auth_options: nil, headers: nil, location: nil, project: nil) + # @param google_auth_options [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions] Optional Google auth options for Vertex AI + # + # @param headers [Hash{Symbol=>String}] Custom headers for Vertex AI requests + # + # @param location [String] Google Cloud location for Vertex AI + # + # @param project [String] Google Cloud project ID for Vertex AI + + # @see Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions#google_auth_options + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # + # @return [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, nil] + optional :credentials, + -> { Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials } + + # @!method initialize(credentials: nil) + # Optional Google auth options for Vertex AI + # + # @param credentials [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials] + + # @see Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute auth_provider_x509_cert_url + # + # @return [String, nil] + optional :auth_provider_x509_cert_url, String + + # @!attribute auth_uri + # + # @return [String, nil] + optional :auth_uri, String + + # @!attribute client_email + # + # @return [String, nil] + optional :client_email, String + + # @!attribute client_id + # + # @return [String, nil] + optional :client_id, String + + # @!attribute client_x509_cert_url + # + # @return [String, nil] + optional :client_x509_cert_url, String + + # @!attribute private_key + # + # @return [String, nil] + optional :private_key, String + + # @!attribute private_key_id + # + # @return [String, nil] + optional :private_key_id, String + + # @!attribute project_id + # + # @return [String, nil] + optional :project_id, String + + # @!attribute token_uri + # + # @return [String, nil] + optional :token_uri, String + + # @!attribute type + # + # @return [String, nil] + optional :type, String + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(auth_provider_x509_cert_url: nil, auth_uri: nil, client_email: nil, client_id: nil, client_x509_cert_url: nil, private_key: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_email [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [String] + # @param universe_domain [String] + end + end + end + + # @!method self.variants + # @return [Array(Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions)] + end end end end diff --git a/lib/stagehand/models/session_execute_params.rb b/lib/stagehand/models/session_execute_params.rb index 6185efe..0f8cd85 100644 --- a/lib/stagehand/models/session_execute_params.rb +++ b/lib/stagehand/models/session_execute_params.rb @@ -198,28 +198,12 @@ class ExecuteOptions < Stagehand::Internal::Type::BaseModel # @return [Float, nil] optional :max_steps, Float, api_name: :maxSteps - # @!attribute tool_timeout - # Timeout in milliseconds for each agent tool call - # - # @return [Float, nil] - optional :tool_timeout, Float, api_name: :toolTimeout - - # @!attribute use_search - # Whether to enable the web search tool powered by Browserbase Search API - # - # @return [Boolean, nil] - optional :use_search, Stagehand::Internal::Type::Boolean, api_name: :useSearch - - # @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil, tool_timeout: nil, use_search: nil) + # @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil) # @param instruction [String] Natural language instruction for the agent # # @param highlight_cursor [Boolean] Whether to visually highlight the cursor during execution # # @param max_steps [Float] Maximum number of steps the agent can take - # - # @param tool_timeout [Float] Timeout in milliseconds for each agent tool call - # - # @param use_search [Boolean] Whether to enable the web search tool powered by Browserbase Search API end # Whether to stream the response via SSE diff --git a/lib/stagehand/models/session_start_params.rb b/lib/stagehand/models/session_start_params.rb index 754ec05..b1a8a0f 100644 --- a/lib/stagehand/models/session_start_params.rb +++ b/lib/stagehand/models/session_start_params.rb @@ -48,6 +48,15 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel # @return [Boolean, nil] optional :experimental, Stagehand::Internal::Type::Boolean + # @!attribute model_client_options + # Optional provider-specific configuration for the session model (for example + # Bedrock region and credentials) + # + # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions, nil] + optional :model_client_options, + union: -> { Stagehand::SessionStartParams::ModelClientOptions }, + api_name: :modelClientOptions + # @!attribute self_heal # Enable self-healing for failed actions # @@ -78,7 +87,10 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::SessionStartParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionStartParams::XStreamResponse } - # @!method initialize(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) + # @!method initialize(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, model_client_options: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) + # Some parameter documentations has been truncated, see + # {Stagehand::Models::SessionStartParams} for more details. + # # @param model_name [String] Model name to use for AI operations # # @param act_timeout_ms [Float] Timeout in ms for act operations (deprecated, v2 only) @@ -93,6 +105,8 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel # # @param experimental [Boolean] # + # @param model_client_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions] Optional provider-specific configuration for the session model (for example Bedr + # # @param self_heal [Boolean] Enable self-healing for failed actions # # @param system_prompt [String] Custom system prompt for AI operations @@ -741,6 +755,405 @@ module Region end end + # Optional provider-specific configuration for the session model (for example + # Bedrock region and credentials) + module ModelClientOptions + extend Stagehand::Internal::Type::Union + + variant -> { Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions } + + variant -> { Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions } + + variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions } + + class BedrockAPIKeyModelClientOptions < Stagehand::Internal::Type::BaseModel + # @!attribute api_key + # Short-term Bedrock API key for bearer-token auth + # + # @return [String] + required :api_key, String, api_name: :apiKey + + # @!attribute provider_options + # + # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions] + required :provider_options, + -> { + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions + }, + api_name: :providerOptions + + # @!attribute base_url + # Base URL for the model provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers for the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute skip_api_key_fallback + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + # + # @return [Boolean, nil] + optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback + + # @!method initialize(api_key:, provider_options:, base_url: nil, headers: nil, skip_api_key_fallback: nil) + # Some parameter documentations has been truncated, see + # {Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions} + # for more details. + # + # @param api_key [String] Short-term Bedrock API key for bearer-token auth + # + # @param provider_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions] + # + # @param base_url [String] Base URL for the model provider + # + # @param headers [Hash{Symbol=>String}] Custom headers for the model provider + # + # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + + # @see Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute region + # AWS region for Amazon Bedrock + # + # @return [String] + required :region, String + + # @!method initialize(region:) + # @param region [String] AWS region for Amazon Bedrock + end + end + + class BedrockAwsCredentialsModelClientOptions < Stagehand::Internal::Type::BaseModel + # @!attribute provider_options + # + # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions] + required :provider_options, + -> { + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions + }, + api_name: :providerOptions + + # @!attribute base_url + # Base URL for the model provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers for the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute skip_api_key_fallback + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + # + # @return [Boolean, nil] + optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback + + # @!method initialize(provider_options:, base_url: nil, headers: nil, skip_api_key_fallback: nil) + # Some parameter documentations has been truncated, see + # {Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions} + # for more details. + # + # @param provider_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions] + # + # @param base_url [String] Base URL for the model provider + # + # @param headers [Hash{Symbol=>String}] Custom headers for the model provider + # + # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + + # @see Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute access_key_id + # AWS access key ID for Bedrock + # + # @return [String] + required :access_key_id, String, api_name: :accessKeyId + + # @!attribute region + # AWS region for Amazon Bedrock + # + # @return [String] + required :region, String + + # @!attribute secret_access_key + # AWS secret access key for Bedrock + # + # @return [String] + required :secret_access_key, String, api_name: :secretAccessKey + + # @!attribute session_token + # Optional AWS session token for temporary credentials + # + # @return [String, nil] + optional :session_token, String, api_name: :sessionToken + + # @!method initialize(access_key_id:, region:, secret_access_key:, session_token: nil) + # @param access_key_id [String] AWS access key ID for Bedrock + # + # @param region [String] AWS region for Amazon Bedrock + # + # @param secret_access_key [String] AWS secret access key for Bedrock + # + # @param session_token [String] Optional AWS session token for temporary credentials + end + end + + class GenericModelClientOptions < Stagehand::Internal::Type::BaseModel + # @!attribute api_key + # API key for the model provider + # + # @return [String, nil] + optional :api_key, String, api_name: :apiKey + + # @!attribute base_url + # Base URL for the model provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers for the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute provider_options + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + # + # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions, nil] + optional :provider_options, + union: -> { + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions + }, + api_name: :providerOptions + + # @!attribute skip_api_key_fallback + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + # + # @return [Boolean, nil] + optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback + + # @!method initialize(api_key: nil, base_url: nil, headers: nil, provider_options: nil, skip_api_key_fallback: nil) + # Some parameter documentations has been truncated, see + # {Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions} + # for more details. + # + # @param api_key [String] API key for the model provider + # + # @param base_url [String] Base URL for the model provider + # + # @param headers [Hash{Symbol=>String}] Custom headers for the model provider + # + # @param provider_options [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions] Provider-specific options passed through to the AI SDK provider constructor. For + # + # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + # + # @see Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions#provider_options + module ProviderOptions + extend Stagehand::Internal::Type::Union + + variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions } + + variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions } + + variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions } + + class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute region + # AWS region for Amazon Bedrock + # + # @return [String] + required :region, String + + # @!method initialize(region:) + # @param region [String] AWS region for Amazon Bedrock + end + + class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute access_key_id + # AWS access key ID for Bedrock + # + # @return [String] + required :access_key_id, String, api_name: :accessKeyId + + # @!attribute region + # AWS region for Amazon Bedrock + # + # @return [String] + required :region, String + + # @!attribute secret_access_key + # AWS secret access key for Bedrock + # + # @return [String] + required :secret_access_key, String, api_name: :secretAccessKey + + # @!attribute session_token + # Optional AWS session token for temporary credentials + # + # @return [String, nil] + optional :session_token, String, api_name: :sessionToken + + # @!method initialize(access_key_id:, region:, secret_access_key:, session_token: nil) + # @param access_key_id [String] AWS access key ID for Bedrock + # + # @param region [String] AWS region for Amazon Bedrock + # + # @param secret_access_key [String] AWS secret access key for Bedrock + # + # @param session_token [String] Optional AWS session token for temporary credentials + end + + class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute google_auth_options + # Optional Google auth options for Vertex AI + # + # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, nil] + optional :google_auth_options, + -> { + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + }, + api_name: :googleAuthOptions + + # @!attribute headers + # Custom headers for Vertex AI requests + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute location + # Google Cloud location for Vertex AI + # + # @return [String, nil] + optional :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI + # + # @return [String, nil] + optional :project, String + + # @!method initialize(google_auth_options: nil, headers: nil, location: nil, project: nil) + # @param google_auth_options [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions] Optional Google auth options for Vertex AI + # + # @param headers [Hash{Symbol=>String}] Custom headers for Vertex AI requests + # + # @param location [String] Google Cloud location for Vertex AI + # + # @param project [String] Google Cloud project ID for Vertex AI + + # @see Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions#google_auth_options + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # + # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, nil] + optional :credentials, + -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials } + + # @!method initialize(credentials: nil) + # Optional Google auth options for Vertex AI + # + # @param credentials [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials] + + # @see Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute auth_provider_x509_cert_url + # + # @return [String, nil] + optional :auth_provider_x509_cert_url, String + + # @!attribute auth_uri + # + # @return [String, nil] + optional :auth_uri, String + + # @!attribute client_email + # + # @return [String, nil] + optional :client_email, String + + # @!attribute client_id + # + # @return [String, nil] + optional :client_id, String + + # @!attribute client_x509_cert_url + # + # @return [String, nil] + optional :client_x509_cert_url, String + + # @!attribute private_key + # + # @return [String, nil] + optional :private_key, String + + # @!attribute private_key_id + # + # @return [String, nil] + optional :private_key_id, String + + # @!attribute project_id + # + # @return [String, nil] + optional :project_id, String + + # @!attribute token_uri + # + # @return [String, nil] + optional :token_uri, String + + # @!attribute type + # + # @return [String, nil] + optional :type, String + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(auth_provider_x509_cert_url: nil, auth_uri: nil, client_email: nil, client_id: nil, client_x509_cert_url: nil, private_key: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_email [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [String] + # @param universe_domain [String] + end + end + end + + # @!method self.variants + # @return [Array(Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions)] + end + end + + # @!method self.variants + # @return [Array(Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions)] + end + # Logging verbosity level (0=quiet, 1=normal, 2=debug) module Verbose extend Stagehand::Internal::Type::Enum diff --git a/lib/stagehand/models/stream_event.rb b/lib/stagehand/models/stream_event.rb index a8b5931..38173d7 100644 --- a/lib/stagehand/models/stream_event.rb +++ b/lib/stagehand/models/stream_event.rb @@ -22,8 +22,7 @@ class StreamEvent < Stagehand::Internal::Type::BaseModel # @!method initialize(id:, data:, type:) # Server-Sent Event emitted during streaming responses. Events are sent as - # `event: \ndata: \n\n`, where the JSON payload has the shape - # `{ data, type, id }`. + # `data: \n\n`. Key order: data (with status first), type, id. # # @param id [String] Unique identifier for this event # diff --git a/lib/stagehand/resources/sessions.rb b/lib/stagehand/resources/sessions.rb index 2e4f6e3..3c36c61 100644 --- a/lib/stagehand/resources/sessions.rb +++ b/lib/stagehand/resources/sessions.rb @@ -430,10 +430,13 @@ def replay(id, params = {}) ) end + # Some parameter documentations has been truncated, see + # {Stagehand::Models::SessionStartParams} for more details. + # # Creates a new browser session with the specified configuration. Returns a # session ID used for all subsequent operations. # - # @overload start(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) + # @overload start(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, model_client_options: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) # # @param model_name [String] Body param: Model name to use for AI operations # @@ -449,6 +452,8 @@ def replay(id, params = {}) # # @param experimental [Boolean] Body param # + # @param model_client_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions] Body param: Optional provider-specific configuration for the session model (for + # # @param self_heal [Boolean] Body param: Enable self-healing for failed actions # # @param system_prompt [String] Body param: Custom system prompt for AI operations diff --git a/rbi/stagehand/models/model_config.rbi b/rbi/stagehand/models/model_config.rbi index 5d1bc44..8841e45 100644 --- a/rbi/stagehand/models/model_config.rbi +++ b/rbi/stagehand/models/model_config.rbi @@ -26,7 +26,7 @@ module Stagehand sig { params(base_url: String).void } attr_writer :base_url - # Custom headers sent with every request to the model provider + # Custom headers for the model provider sig { returns(T.nilable(T::Hash[Symbol, String])) } attr_reader :headers @@ -40,13 +40,56 @@ module Stagehand sig { params(provider: Stagehand::ModelConfig::Provider::OrSymbol).void } attr_writer :provider + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + sig do + returns( + T.nilable( + T.any( + Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions + ) + ) + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + T.any( + Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, + Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::OrHash + ) + ).void + end + attr_writer :provider_options + + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :skip_api_key_fallback + + sig { params(skip_api_key_fallback: T::Boolean).void } + attr_writer :skip_api_key_fallback + sig do params( model_name: String, api_key: String, base_url: String, headers: T::Hash[Symbol, String], - provider: Stagehand::ModelConfig::Provider::OrSymbol + provider: Stagehand::ModelConfig::Provider::OrSymbol, + provider_options: + T.any( + Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, + Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::OrHash + ), + skip_api_key_fallback: T::Boolean ).returns(T.attached_class) end def self.new( @@ -56,10 +99,17 @@ module Stagehand api_key: nil, # Base URL for the model provider base_url: nil, - # Custom headers sent with every request to the model provider + # Custom headers for the model provider headers: nil, # AI provider for the model (or provide a baseURL endpoint instead) - provider: nil + provider: nil, + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + provider_options: nil, + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + skip_api_key_fallback: nil ) end @@ -70,7 +120,14 @@ module Stagehand api_key: String, base_url: String, headers: T::Hash[Symbol, String], - provider: Stagehand::ModelConfig::Provider::OrSymbol + provider: Stagehand::ModelConfig::Provider::OrSymbol, + provider_options: + T.any( + Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions + ), + skip_api_key_fallback: T::Boolean } ) end @@ -102,6 +159,375 @@ module Stagehand def self.values end end + + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + module ProviderOptions + extend Stagehand::Internal::Type::Union + + Variants = + T.type_alias do + T.any( + Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions + ) + end + + class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # AWS region for Amazon Bedrock + sig { returns(String) } + attr_accessor :region + + sig { params(region: String).returns(T.attached_class) } + def self.new( + # AWS region for Amazon Bedrock + region: + ) + end + + sig { override.returns({ region: String }) } + def to_hash + end + end + + class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # AWS access key ID for Bedrock + sig { returns(String) } + attr_accessor :access_key_id + + # AWS region for Amazon Bedrock + sig { returns(String) } + attr_accessor :region + + # AWS secret access key for Bedrock + sig { returns(String) } + attr_accessor :secret_access_key + + # Optional AWS session token for temporary credentials + sig { returns(T.nilable(String)) } + attr_reader :session_token + + sig { params(session_token: String).void } + attr_writer :session_token + + sig do + params( + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + ).returns(T.attached_class) + end + def self.new( + # AWS access key ID for Bedrock + access_key_id:, + # AWS region for Amazon Bedrock + region:, + # AWS secret access key for Bedrock + secret_access_key:, + # Optional AWS session token for temporary credentials + session_token: nil + ) + end + + sig do + override.returns( + { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + ) + end + def to_hash + end + end + + class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Optional Google auth options for Vertex AI + sig do + returns( + T.nilable( + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + ) + ) + end + attr_reader :google_auth_options + + sig do + params( + google_auth_options: + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash + ).void + end + attr_writer :google_auth_options + + # Custom headers for Vertex AI requests + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Google Cloud location for Vertex AI + sig { returns(T.nilable(String)) } + attr_reader :location + + sig { params(location: String).void } + attr_writer :location + + # Google Cloud project ID for Vertex AI + sig { returns(T.nilable(String)) } + attr_reader :project + + sig { params(project: String).void } + attr_writer :project + + sig do + params( + google_auth_options: + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash, + headers: T::Hash[Symbol, String], + location: String, + project: String + ).returns(T.attached_class) + end + def self.new( + # Optional Google auth options for Vertex AI + google_auth_options: nil, + # Custom headers for Vertex AI requests + headers: nil, + # Google Cloud location for Vertex AI + location: nil, + # Google Cloud project ID for Vertex AI + project: nil + ) + end + + sig do + override.returns( + { + google_auth_options: + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + headers: T::Hash[Symbol, String], + location: String, + project: String + } + ) + end + def to_hash + end + + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + Stagehand::Internal::AnyHash + ) + end + + sig do + returns( + T.nilable( + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + ) + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Optional Google auth options for Vertex AI + sig do + params( + credentials: + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash + ).returns(T.attached_class) + end + def self.new(credentials: nil) + end + + sig do + override.returns( + { + credentials: + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(T.nilable(String)) } + attr_reader :auth_provider_x509_cert_url + + sig { params(auth_provider_x509_cert_url: String).void } + attr_writer :auth_provider_x509_cert_url + + sig { returns(T.nilable(String)) } + attr_reader :auth_uri + + sig { params(auth_uri: String).void } + attr_writer :auth_uri + + sig { returns(T.nilable(String)) } + attr_reader :client_email + + sig { params(client_email: String).void } + attr_writer :client_email + + sig { returns(T.nilable(String)) } + attr_reader :client_id + + sig { params(client_id: String).void } + attr_writer :client_id + + sig { returns(T.nilable(String)) } + attr_reader :client_x509_cert_url + + sig { params(client_x509_cert_url: String).void } + attr_writer :client_x509_cert_url + + sig { returns(T.nilable(String)) } + attr_reader :private_key + + sig { params(private_key: String).void } + attr_writer :private_key + + sig { returns(T.nilable(String)) } + attr_reader :private_key_id + + sig { params(private_key_id: String).void } + attr_writer :private_key_id + + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + sig { returns(T.nilable(String)) } + attr_reader :token_uri + + sig { params(token_uri: String).void } + attr_writer :token_uri + + sig { returns(T.nilable(String)) } + attr_reader :type + + sig { params(type: String).void } + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + sig do + params( + auth_provider_x509_cert_url: String, + auth_uri: String, + client_email: String, + client_id: String, + client_x509_cert_url: String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_email: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + auth_provider_x509_cert_url: String, + auth_uri: String, + client_email: String, + client_id: String, + client_x509_cert_url: String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + } + ) + end + def to_hash + end + end + end + end + + sig do + override.returns( + T::Array[Stagehand::ModelConfig::ProviderOptions::Variants] + ) + end + def self.variants + end + end end end end diff --git a/rbi/stagehand/models/session_execute_params.rbi b/rbi/stagehand/models/session_execute_params.rbi index d0577ae..28a77e8 100644 --- a/rbi/stagehand/models/session_execute_params.rbi +++ b/rbi/stagehand/models/session_execute_params.rbi @@ -387,27 +387,11 @@ module Stagehand sig { params(max_steps: Float).void } attr_writer :max_steps - # Timeout in milliseconds for each agent tool call - sig { returns(T.nilable(Float)) } - attr_reader :tool_timeout - - sig { params(tool_timeout: Float).void } - attr_writer :tool_timeout - - # Whether to enable the web search tool powered by Browserbase Search API - sig { returns(T.nilable(T::Boolean)) } - attr_reader :use_search - - sig { params(use_search: T::Boolean).void } - attr_writer :use_search - sig do params( instruction: String, highlight_cursor: T::Boolean, - max_steps: Float, - tool_timeout: Float, - use_search: T::Boolean + max_steps: Float ).returns(T.attached_class) end def self.new( @@ -416,11 +400,7 @@ module Stagehand # Whether to visually highlight the cursor during execution highlight_cursor: nil, # Maximum number of steps the agent can take - max_steps: nil, - # Timeout in milliseconds for each agent tool call - tool_timeout: nil, - # Whether to enable the web search tool powered by Browserbase Search API - use_search: nil + max_steps: nil ) end @@ -429,9 +409,7 @@ module Stagehand { instruction: String, highlight_cursor: T::Boolean, - max_steps: Float, - tool_timeout: Float, - use_search: T::Boolean + max_steps: Float } ) end diff --git a/rbi/stagehand/models/session_start_params.rbi b/rbi/stagehand/models/session_start_params.rbi index 67dc4c0..42fc561 100644 --- a/rbi/stagehand/models/session_start_params.rbi +++ b/rbi/stagehand/models/session_start_params.rbi @@ -67,6 +67,33 @@ module Stagehand sig { params(experimental: T::Boolean).void } attr_writer :experimental + # Optional provider-specific configuration for the session model (for example + # Bedrock region and credentials) + sig do + returns( + T.nilable( + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions + ) + ) + ) + end + attr_reader :model_client_options + + sig do + params( + model_client_options: + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::OrHash + ) + ).void + end + attr_writer :model_client_options + # Enable self-healing for failed actions sig { returns(T.nilable(T::Boolean)) } attr_reader :self_heal @@ -125,6 +152,12 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: T::Boolean, + model_client_options: + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::OrHash + ), self_heal: T::Boolean, system_prompt: String, verbose: Stagehand::SessionStartParams::Verbose::OrFloat, @@ -146,6 +179,9 @@ module Stagehand # Timeout in ms to wait for DOM to settle dom_settle_timeout_ms: nil, experimental: nil, + # Optional provider-specific configuration for the session model (for example + # Bedrock region and credentials) + model_client_options: nil, # Enable self-healing for failed actions self_heal: nil, # Custom system prompt for AI operations @@ -171,6 +207,12 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: T::Boolean, + model_client_options: + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions + ), self_heal: T::Boolean, system_prompt: String, verbose: Stagehand::SessionStartParams::Verbose::OrFloat, @@ -1652,6 +1694,778 @@ module Stagehand end end + # Optional provider-specific configuration for the session model (for example + # Bedrock region and credentials) + module ModelClientOptions + extend Stagehand::Internal::Type::Union + + Variants = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions + ) + end + + class BedrockAPIKeyModelClientOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, + Stagehand::Internal::AnyHash + ) + end + + # Short-term Bedrock API key for bearer-token auth + sig { returns(String) } + attr_accessor :api_key + + sig do + returns( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options + + # Base URL for the model provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers for the model provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :skip_api_key_fallback + + sig { params(skip_api_key_fallback: T::Boolean).void } + attr_writer :skip_api_key_fallback + + sig do + params( + api_key: String, + provider_options: + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions::OrHash, + base_url: String, + headers: T::Hash[Symbol, String], + skip_api_key_fallback: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # Short-term Bedrock API key for bearer-token auth + api_key:, + provider_options:, + # Base URL for the model provider + base_url: nil, + # Custom headers for the model provider + headers: nil, + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + skip_api_key_fallback: nil + ) + end + + sig do + override.returns( + { + api_key: String, + provider_options: + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, + base_url: String, + headers: T::Hash[Symbol, String], + skip_api_key_fallback: T::Boolean + } + ) + end + def to_hash + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # AWS region for Amazon Bedrock + sig { returns(String) } + attr_accessor :region + + sig { params(region: String).returns(T.attached_class) } + def self.new( + # AWS region for Amazon Bedrock + region: + ) + end + + sig { override.returns({ region: String }) } + def to_hash + end + end + end + + class BedrockAwsCredentialsModelClientOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, + Stagehand::Internal::AnyHash + ) + end + + sig do + returns( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options + + # Base URL for the model provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers for the model provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :skip_api_key_fallback + + sig { params(skip_api_key_fallback: T::Boolean).void } + attr_writer :skip_api_key_fallback + + sig do + params( + provider_options: + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions::OrHash, + base_url: String, + headers: T::Hash[Symbol, String], + skip_api_key_fallback: T::Boolean + ).returns(T.attached_class) + end + def self.new( + provider_options:, + # Base URL for the model provider + base_url: nil, + # Custom headers for the model provider + headers: nil, + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + skip_api_key_fallback: nil + ) + end + + sig do + override.returns( + { + provider_options: + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, + base_url: String, + headers: T::Hash[Symbol, String], + skip_api_key_fallback: T::Boolean + } + ) + end + def to_hash + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # AWS access key ID for Bedrock + sig { returns(String) } + attr_accessor :access_key_id + + # AWS region for Amazon Bedrock + sig { returns(String) } + attr_accessor :region + + # AWS secret access key for Bedrock + sig { returns(String) } + attr_accessor :secret_access_key + + # Optional AWS session token for temporary credentials + sig { returns(T.nilable(String)) } + attr_reader :session_token + + sig { params(session_token: String).void } + attr_writer :session_token + + sig do + params( + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + ).returns(T.attached_class) + end + def self.new( + # AWS access key ID for Bedrock + access_key_id:, + # AWS region for Amazon Bedrock + region:, + # AWS secret access key for Bedrock + secret_access_key:, + # Optional AWS session token for temporary credentials + session_token: nil + ) + end + + sig do + override.returns( + { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + ) + end + def to_hash + end + end + end + + class GenericModelClientOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions, + Stagehand::Internal::AnyHash + ) + end + + # API key for the model provider + sig { returns(T.nilable(String)) } + attr_reader :api_key + + sig { params(api_key: String).void } + attr_writer :api_key + + # Base URL for the model provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers for the model provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + sig do + returns( + T.nilable( + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions + ) + ) + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::OrHash + ) + ).void + end + attr_writer :provider_options + + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :skip_api_key_fallback + + sig { params(skip_api_key_fallback: T::Boolean).void } + attr_writer :skip_api_key_fallback + + sig do + params( + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider_options: + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::OrHash + ), + skip_api_key_fallback: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # Custom headers for the model provider + headers: nil, + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + provider_options: nil, + # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use + # this when auth is carried through providerOptions instead of an API key. + skip_api_key_fallback: nil + ) + end + + sig do + override.returns( + { + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider_options: + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions + ), + skip_api_key_fallback: T::Boolean + } + ) + end + def to_hash + end + + # Provider-specific options passed through to the AI SDK provider constructor. For + # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { + # project, location, googleAuthOptions }. + module ProviderOptions + extend Stagehand::Internal::Type::Union + + Variants = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions + ) + end + + class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # AWS region for Amazon Bedrock + sig { returns(String) } + attr_accessor :region + + sig { params(region: String).returns(T.attached_class) } + def self.new( + # AWS region for Amazon Bedrock + region: + ) + end + + sig { override.returns({ region: String }) } + def to_hash + end + end + + class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # AWS access key ID for Bedrock + sig { returns(String) } + attr_accessor :access_key_id + + # AWS region for Amazon Bedrock + sig { returns(String) } + attr_accessor :region + + # AWS secret access key for Bedrock + sig { returns(String) } + attr_accessor :secret_access_key + + # Optional AWS session token for temporary credentials + sig { returns(T.nilable(String)) } + attr_reader :session_token + + sig { params(session_token: String).void } + attr_writer :session_token + + sig do + params( + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + ).returns(T.attached_class) + end + def self.new( + # AWS access key ID for Bedrock + access_key_id:, + # AWS region for Amazon Bedrock + region:, + # AWS secret access key for Bedrock + secret_access_key:, + # Optional AWS session token for temporary credentials + session_token: nil + ) + end + + sig do + override.returns( + { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + ) + end + def to_hash + end + end + + class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Optional Google auth options for Vertex AI + sig do + returns( + T.nilable( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + ) + ) + end + attr_reader :google_auth_options + + sig do + params( + google_auth_options: + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash + ).void + end + attr_writer :google_auth_options + + # Custom headers for Vertex AI requests + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Google Cloud location for Vertex AI + sig { returns(T.nilable(String)) } + attr_reader :location + + sig { params(location: String).void } + attr_writer :location + + # Google Cloud project ID for Vertex AI + sig { returns(T.nilable(String)) } + attr_reader :project + + sig { params(project: String).void } + attr_writer :project + + sig do + params( + google_auth_options: + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash, + headers: T::Hash[Symbol, String], + location: String, + project: String + ).returns(T.attached_class) + end + def self.new( + # Optional Google auth options for Vertex AI + google_auth_options: nil, + # Custom headers for Vertex AI requests + headers: nil, + # Google Cloud location for Vertex AI + location: nil, + # Google Cloud project ID for Vertex AI + project: nil + ) + end + + sig do + override.returns( + { + google_auth_options: + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + headers: T::Hash[Symbol, String], + location: String, + project: String + } + ) + end + def to_hash + end + + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + Stagehand::Internal::AnyHash + ) + end + + sig do + returns( + T.nilable( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + ) + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Optional Google auth options for Vertex AI + sig do + params( + credentials: + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash + ).returns(T.attached_class) + end + def self.new(credentials: nil) + end + + sig do + override.returns( + { + credentials: + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(T.nilable(String)) } + attr_reader :auth_provider_x509_cert_url + + sig { params(auth_provider_x509_cert_url: String).void } + attr_writer :auth_provider_x509_cert_url + + sig { returns(T.nilable(String)) } + attr_reader :auth_uri + + sig { params(auth_uri: String).void } + attr_writer :auth_uri + + sig { returns(T.nilable(String)) } + attr_reader :client_email + + sig { params(client_email: String).void } + attr_writer :client_email + + sig { returns(T.nilable(String)) } + attr_reader :client_id + + sig { params(client_id: String).void } + attr_writer :client_id + + sig { returns(T.nilable(String)) } + attr_reader :client_x509_cert_url + + sig { params(client_x509_cert_url: String).void } + attr_writer :client_x509_cert_url + + sig { returns(T.nilable(String)) } + attr_reader :private_key + + sig { params(private_key: String).void } + attr_writer :private_key + + sig { returns(T.nilable(String)) } + attr_reader :private_key_id + + sig { params(private_key_id: String).void } + attr_writer :private_key_id + + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + sig { returns(T.nilable(String)) } + attr_reader :token_uri + + sig { params(token_uri: String).void } + attr_writer :token_uri + + sig { returns(T.nilable(String)) } + attr_reader :type + + sig { params(type: String).void } + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + sig do + params( + auth_provider_x509_cert_url: String, + auth_uri: String, + client_email: String, + client_id: String, + client_x509_cert_url: String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_email: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + auth_provider_x509_cert_url: String, + auth_uri: String, + client_email: String, + client_id: String, + client_x509_cert_url: String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + } + ) + end + def to_hash + end + end + end + end + + sig do + override.returns( + T::Array[ + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::Variants + ] + ) + end + def self.variants + end + end + end + + sig do + override.returns( + T::Array[ + Stagehand::SessionStartParams::ModelClientOptions::Variants + ] + ) + end + def self.variants + end + end + # Logging verbosity level (0=quiet, 1=normal, 2=debug) module Verbose extend Stagehand::Internal::Type::Enum diff --git a/rbi/stagehand/models/stream_event.rbi b/rbi/stagehand/models/stream_event.rbi index a1a861d..d1e4d04 100644 --- a/rbi/stagehand/models/stream_event.rbi +++ b/rbi/stagehand/models/stream_event.rbi @@ -20,8 +20,7 @@ module Stagehand attr_accessor :type # Server-Sent Event emitted during streaming responses. Events are sent as - # `event: \ndata: \n\n`, where the JSON payload has the shape - # `{ data, type, id }`. + # `data: \n\n`. Key order: data (with status first), type, id. sig do params( id: String, diff --git a/rbi/stagehand/resources/sessions.rbi b/rbi/stagehand/resources/sessions.rbi index e298865..e998a07 100644 --- a/rbi/stagehand/resources/sessions.rbi +++ b/rbi/stagehand/resources/sessions.rbi @@ -374,6 +374,12 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: T::Boolean, + model_client_options: + T.any( + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::OrHash, + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::OrHash + ), self_heal: T::Boolean, system_prompt: String, verbose: Stagehand::SessionStartParams::Verbose::OrFloat, @@ -398,6 +404,9 @@ module Stagehand dom_settle_timeout_ms: nil, # Body param experimental: nil, + # Body param: Optional provider-specific configuration for the session model (for + # example Bedrock region and credentials) + model_client_options: nil, # Body param: Enable self-healing for failed actions self_heal: nil, # Body param: Custom system prompt for AI operations diff --git a/sig/stagehand/models/model_config.rbs b/sig/stagehand/models/model_config.rbs index 60d3ebf..5c42deb 100644 --- a/sig/stagehand/models/model_config.rbs +++ b/sig/stagehand/models/model_config.rbs @@ -6,7 +6,9 @@ module Stagehand api_key: String, base_url: String, headers: ::Hash[Symbol, String], - provider: Stagehand::Models::ModelConfig::provider + provider: Stagehand::Models::ModelConfig::provider, + provider_options: Stagehand::Models::ModelConfig::provider_options, + skip_api_key_fallback: bool } class ModelConfig < Stagehand::Internal::Type::BaseModel @@ -30,12 +32,24 @@ module Stagehand Stagehand::Models::ModelConfig::provider ) -> Stagehand::Models::ModelConfig::provider + attr_reader provider_options: Stagehand::Models::ModelConfig::provider_options? + + def provider_options=: ( + Stagehand::Models::ModelConfig::provider_options + ) -> Stagehand::Models::ModelConfig::provider_options + + attr_reader skip_api_key_fallback: bool? + + def skip_api_key_fallback=: (bool) -> bool + def initialize: ( model_name: String, ?api_key: String, ?base_url: String, ?headers: ::Hash[Symbol, String], - ?provider: Stagehand::Models::ModelConfig::provider + ?provider: Stagehand::Models::ModelConfig::provider, + ?provider_options: Stagehand::Models::ModelConfig::provider_options, + ?skip_api_key_fallback: bool ) -> void def to_hash: -> { @@ -43,7 +57,9 @@ module Stagehand api_key: String, base_url: String, headers: ::Hash[Symbol, String], - provider: Stagehand::Models::ModelConfig::provider + provider: Stagehand::Models::ModelConfig::provider, + provider_options: Stagehand::Models::ModelConfig::provider_options, + skip_api_key_fallback: bool } type provider = :openai | :anthropic | :google | :microsoft | :bedrock @@ -59,6 +75,213 @@ module Stagehand def self?.values: -> ::Array[Stagehand::Models::ModelConfig::provider] end + + type provider_options = + Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions + | Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions + | Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions + + module ProviderOptions + extend Stagehand::Internal::Type::Union + + type bedrock_api_key_provider_options = { region: String } + + class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor region: String + + def initialize: (region: String) -> void + + def to_hash: -> { region: String } + end + + type bedrock_aws_credentials_provider_options = + { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + + class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor access_key_id: String + + attr_accessor region: String + + attr_accessor secret_access_key: String + + attr_reader session_token: String? + + def session_token=: (String) -> String + + def initialize: ( + access_key_id: String, + region: String, + secret_access_key: String, + ?session_token: String + ) -> void + + def to_hash: -> { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + end + + type google_vertex_provider_options = + { + google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + headers: ::Hash[Symbol, String], + location: String, + project: String + } + + class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel + attr_reader google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions? + + def google_auth_options=: ( + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + ) -> Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + + attr_reader headers: ::Hash[Symbol, String]? + + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + + attr_reader location: String? + + def location=: (String) -> String + + attr_reader project: String? + + def project=: (String) -> String + + def initialize: ( + ?google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + ?headers: ::Hash[Symbol, String], + ?location: String, + ?project: String + ) -> void + + def to_hash: -> { + google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + headers: ::Hash[Symbol, String], + location: String, + project: String + } + + type google_auth_options = + { + credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + } + + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + attr_reader credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials? + + def credentials=: ( + Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + ) -> Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + + def initialize: ( + ?credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + ) -> void + + def to_hash: -> { + credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + } + + type credentials = + { + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_email: String, + client_id: String, + :client_x509_cert_url => String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_reader auth_provider_x509_cert_url: String? + + def auth_provider_x509_cert_url=: (String) -> String + + attr_reader auth_uri: String? + + def auth_uri=: (String) -> String + + attr_reader client_email: String? + + def client_email=: (String) -> String + + attr_reader client_id: String? + + def client_id=: (String) -> String + + attr_reader client_x509_cert_url: String? + + def client_x509_cert_url=: (String) -> String + + attr_reader private_key: String? + + def private_key=: (String) -> String + + attr_reader private_key_id: String? + + def private_key_id=: (String) -> String + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader token_uri: String? + + def token_uri=: (String) -> String + + attr_reader type: String? + + def type=: (String) -> String + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_email: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: String, + ?universe_domain: String + ) -> void + + def to_hash: -> { + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_email: String, + client_id: String, + :client_x509_cert_url => String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + } + end + end + end + + def self?.variants: -> ::Array[Stagehand::Models::ModelConfig::provider_options] + end end end end diff --git a/sig/stagehand/models/session_execute_params.rbs b/sig/stagehand/models/session_execute_params.rbs index 167e110..3936f2e 100644 --- a/sig/stagehand/models/session_execute_params.rbs +++ b/sig/stagehand/models/session_execute_params.rbs @@ -158,13 +158,7 @@ module Stagehand end type execute_options = - { - instruction: String, - highlight_cursor: bool, - max_steps: Float, - tool_timeout: Float, - use_search: bool - } + { instruction: String, highlight_cursor: bool, max_steps: Float } class ExecuteOptions < Stagehand::Internal::Type::BaseModel attr_accessor instruction: String @@ -177,28 +171,16 @@ module Stagehand def max_steps=: (Float) -> Float - attr_reader tool_timeout: Float? - - def tool_timeout=: (Float) -> Float - - attr_reader use_search: bool? - - def use_search=: (bool) -> bool - def initialize: ( instruction: String, ?highlight_cursor: bool, - ?max_steps: Float, - ?tool_timeout: Float, - ?use_search: bool + ?max_steps: Float ) -> void def to_hash: -> { instruction: String, highlight_cursor: bool, - max_steps: Float, - tool_timeout: Float, - use_search: bool + max_steps: Float } end diff --git a/sig/stagehand/models/session_start_params.rbs b/sig/stagehand/models/session_start_params.rbs index c9cae4c..e5ad269 100644 --- a/sig/stagehand/models/session_start_params.rbs +++ b/sig/stagehand/models/session_start_params.rbs @@ -9,6 +9,7 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: bool, + model_client_options: Stagehand::Models::SessionStartParams::model_client_options, self_heal: bool, system_prompt: String, verbose: Stagehand::Models::SessionStartParams::verbose, @@ -51,6 +52,12 @@ module Stagehand def experimental=: (bool) -> bool + attr_reader model_client_options: Stagehand::Models::SessionStartParams::model_client_options? + + def model_client_options=: ( + Stagehand::Models::SessionStartParams::model_client_options + ) -> Stagehand::Models::SessionStartParams::model_client_options + attr_reader self_heal: bool? def self_heal=: (bool) -> bool @@ -83,6 +90,7 @@ module Stagehand ?browserbase_session_id: String, ?dom_settle_timeout_ms: Float, ?experimental: bool, + ?model_client_options: Stagehand::Models::SessionStartParams::model_client_options, ?self_heal: bool, ?system_prompt: String, ?verbose: Stagehand::Models::SessionStartParams::verbose, @@ -99,6 +107,7 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: bool, + model_client_options: Stagehand::Models::SessionStartParams::model_client_options, self_heal: bool, system_prompt: String, verbose: Stagehand::Models::SessionStartParams::verbose, @@ -846,6 +855,398 @@ module Stagehand end end + type model_client_options = + Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions + | Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions + | Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions + + module ModelClientOptions + extend Stagehand::Internal::Type::Union + + type bedrock_api_key_model_client_options = + { + api_key: String, + provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, + base_url: String, + headers: ::Hash[Symbol, String], + skip_api_key_fallback: bool + } + + class BedrockAPIKeyModelClientOptions < Stagehand::Internal::Type::BaseModel + attr_accessor api_key: String + + attr_accessor provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions + + attr_reader base_url: String? + + def base_url=: (String) -> String + + attr_reader headers: ::Hash[Symbol, String]? + + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + + attr_reader skip_api_key_fallback: bool? + + def skip_api_key_fallback=: (bool) -> bool + + def initialize: ( + api_key: String, + provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?skip_api_key_fallback: bool + ) -> void + + def to_hash: -> { + api_key: String, + provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, + base_url: String, + headers: ::Hash[Symbol, String], + skip_api_key_fallback: bool + } + + type provider_options = { region: String } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor region: String + + def initialize: (region: String) -> void + + def to_hash: -> { region: String } + end + end + + type bedrock_aws_credentials_model_client_options = + { + provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, + base_url: String, + headers: ::Hash[Symbol, String], + skip_api_key_fallback: bool + } + + class BedrockAwsCredentialsModelClientOptions < Stagehand::Internal::Type::BaseModel + attr_accessor provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions + + attr_reader base_url: String? + + def base_url=: (String) -> String + + attr_reader headers: ::Hash[Symbol, String]? + + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + + attr_reader skip_api_key_fallback: bool? + + def skip_api_key_fallback=: (bool) -> bool + + def initialize: ( + provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?skip_api_key_fallback: bool + ) -> void + + def to_hash: -> { + provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, + base_url: String, + headers: ::Hash[Symbol, String], + skip_api_key_fallback: bool + } + + type provider_options = + { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor access_key_id: String + + attr_accessor region: String + + attr_accessor secret_access_key: String + + attr_reader session_token: String? + + def session_token=: (String) -> String + + def initialize: ( + access_key_id: String, + region: String, + secret_access_key: String, + ?session_token: String + ) -> void + + def to_hash: -> { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + end + end + + type generic_model_client_options = + { + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options, + skip_api_key_fallback: bool + } + + class GenericModelClientOptions < Stagehand::Internal::Type::BaseModel + attr_reader api_key: String? + + def api_key=: (String) -> String + + attr_reader base_url: String? + + def base_url=: (String) -> String + + attr_reader headers: ::Hash[Symbol, String]? + + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + + attr_reader provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options? + + def provider_options=: ( + Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options + ) -> Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options + + attr_reader skip_api_key_fallback: bool? + + def skip_api_key_fallback=: (bool) -> bool + + def initialize: ( + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options, + ?skip_api_key_fallback: bool + ) -> void + + def to_hash: -> { + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options, + skip_api_key_fallback: bool + } + + type provider_options = + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions + | Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions + | Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions + + module ProviderOptions + extend Stagehand::Internal::Type::Union + + type bedrock_api_key_provider_options = { region: String } + + class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor region: String + + def initialize: (region: String) -> void + + def to_hash: -> { region: String } + end + + type bedrock_aws_credentials_provider_options = + { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + + class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor access_key_id: String + + attr_accessor region: String + + attr_accessor secret_access_key: String + + attr_reader session_token: String? + + def session_token=: (String) -> String + + def initialize: ( + access_key_id: String, + region: String, + secret_access_key: String, + ?session_token: String + ) -> void + + def to_hash: -> { + access_key_id: String, + region: String, + secret_access_key: String, + session_token: String + } + end + + type google_vertex_provider_options = + { + google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + headers: ::Hash[Symbol, String], + location: String, + project: String + } + + class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel + attr_reader google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions? + + def google_auth_options=: ( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + ) -> Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions + + attr_reader headers: ::Hash[Symbol, String]? + + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + + attr_reader location: String? + + def location=: (String) -> String + + attr_reader project: String? + + def project=: (String) -> String + + def initialize: ( + ?google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + ?headers: ::Hash[Symbol, String], + ?location: String, + ?project: String + ) -> void + + def to_hash: -> { + google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, + headers: ::Hash[Symbol, String], + location: String, + project: String + } + + type google_auth_options = + { + credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + } + + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + attr_reader credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials? + + def credentials=: ( + Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + ) -> Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + + def initialize: ( + ?credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + ) -> void + + def to_hash: -> { + credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials + } + + type credentials = + { + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_email: String, + client_id: String, + :client_x509_cert_url => String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_reader auth_provider_x509_cert_url: String? + + def auth_provider_x509_cert_url=: (String) -> String + + attr_reader auth_uri: String? + + def auth_uri=: (String) -> String + + attr_reader client_email: String? + + def client_email=: (String) -> String + + attr_reader client_id: String? + + def client_id=: (String) -> String + + attr_reader client_x509_cert_url: String? + + def client_x509_cert_url=: (String) -> String + + attr_reader private_key: String? + + def private_key=: (String) -> String + + attr_reader private_key_id: String? + + def private_key_id=: (String) -> String + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader token_uri: String? + + def token_uri=: (String) -> String + + attr_reader type: String? + + def type=: (String) -> String + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_email: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: String, + ?universe_domain: String + ) -> void + + def to_hash: -> { + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_email: String, + client_id: String, + :client_x509_cert_url => String, + private_key: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: String, + universe_domain: String + } + end + end + end + + def self?.variants: -> ::Array[Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options] + end + end + + def self?.variants: -> ::Array[Stagehand::Models::SessionStartParams::model_client_options] + end + type verbose = Float module Verbose diff --git a/sig/stagehand/resources/sessions.rbs b/sig/stagehand/resources/sessions.rbs index cc450b6..584cea2 100644 --- a/sig/stagehand/resources/sessions.rbs +++ b/sig/stagehand/resources/sessions.rbs @@ -107,6 +107,7 @@ module Stagehand ?browserbase_session_id: String, ?dom_settle_timeout_ms: Float, ?experimental: bool, + ?model_client_options: Stagehand::Models::SessionStartParams::model_client_options, ?self_heal: bool, ?system_prompt: String, ?verbose: Stagehand::Models::SessionStartParams::verbose, From 9647eb3a4df86cc9d7aedb2f0a9ddd0babd39565 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 23:33:09 +0000 Subject: [PATCH 3/6] feat: [STG-1798] feat: support Browserbase verified sessions --- .stats.yml | 6 +- lib/stagehand/models/session_start_params.rb | 41 +++++++- rbi/stagehand/models/session_start_params.rbi | 98 +++++++++++++++++++ sig/stagehand/models/session_start_params.rbs | 44 +++++++++ 4 files changed, 185 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index f1d6429..6bde59e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 8 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-7773ef4ca29c983daafb787ee918cfa6b5b12c5bbdc088308653f2737c26e51f.yml -openapi_spec_hash: 47fc8f2540be0b6374e4230c021072d9 -config_hash: 0cc516caf1432087f40654336e0fa8cd +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-a8db51c6460b3daff67b35262517848a0d4e783c6805c2edd531b155a5db71dd.yml +openapi_spec_hash: c6e7127f211f946673d6389e1d8db1ba +config_hash: a962ae71493deb11a1c903256fb25386 diff --git a/lib/stagehand/models/session_start_params.rb b/lib/stagehand/models/session_start_params.rb index b1a8a0f..e7c2c1c 100644 --- a/lib/stagehand/models/session_start_params.rb +++ b/lib/stagehand/models/session_start_params.rb @@ -415,6 +415,16 @@ class BrowserSettings < Stagehand::Internal::Type::BaseModel # @return [Boolean, nil] optional :block_ads, Stagehand::Internal::Type::Boolean, api_name: :blockAds + # @!attribute captcha_image_selector + # + # @return [String, nil] + optional :captcha_image_selector, String, api_name: :captchaImageSelector + + # @!attribute captcha_input_selector + # + # @return [String, nil] + optional :captcha_input_selector, String, api_name: :captchaInputSelector + # @!attribute context # # @return [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context, nil] @@ -437,6 +447,12 @@ class BrowserSettings < Stagehand::Internal::Type::BaseModel # @return [Boolean, nil] optional :log_session, Stagehand::Internal::Type::Boolean, api_name: :logSession + # @!attribute os + # + # @return [Symbol, Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os, nil] + optional :os, + enum: -> { Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os } + # @!attribute record_session # # @return [Boolean, nil] @@ -447,21 +463,30 @@ class BrowserSettings < Stagehand::Internal::Type::BaseModel # @return [Boolean, nil] optional :solve_captchas, Stagehand::Internal::Type::Boolean, api_name: :solveCaptchas + # @!attribute verified + # + # @return [Boolean, nil] + optional :verified, Stagehand::Internal::Type::Boolean + # @!attribute viewport # # @return [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport, nil] optional :viewport, -> { Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport } - # @!method initialize(advanced_stealth: nil, block_ads: nil, context: nil, extension_id: nil, fingerprint: nil, log_session: nil, record_session: nil, solve_captchas: nil, viewport: nil) + # @!method initialize(advanced_stealth: nil, block_ads: nil, captcha_image_selector: nil, captcha_input_selector: nil, context: nil, extension_id: nil, fingerprint: nil, log_session: nil, os: nil, record_session: nil, solve_captchas: nil, verified: nil, viewport: nil) # @param advanced_stealth [Boolean] # @param block_ads [Boolean] + # @param captcha_image_selector [String] + # @param captcha_input_selector [String] # @param context [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context] # @param extension_id [String] # @param fingerprint [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint] # @param log_session [Boolean] + # @param os [Symbol, Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os] # @param record_session [Boolean] # @param solve_captchas [Boolean] + # @param verified [Boolean] # @param viewport [Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport] # @see Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings#context @@ -610,6 +635,20 @@ class Screen < Stagehand::Internal::Type::BaseModel end end + # @see Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings#os + module Os + extend Stagehand::Internal::Type::Enum + + WINDOWS = :windows + MAC = :mac + LINUX = :linux + MOBILE = :mobile + TABLET = :tablet + + # @!method self.values + # @return [Array] + end + # @see Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings#viewport class Viewport < Stagehand::Internal::Type::BaseModel # @!attribute height diff --git a/rbi/stagehand/models/session_start_params.rbi b/rbi/stagehand/models/session_start_params.rbi index 42fc561..d268191 100644 --- a/rbi/stagehand/models/session_start_params.rbi +++ b/rbi/stagehand/models/session_start_params.rbi @@ -842,6 +842,18 @@ module Stagehand sig { params(block_ads: T::Boolean).void } attr_writer :block_ads + sig { returns(T.nilable(String)) } + attr_reader :captcha_image_selector + + sig { params(captcha_image_selector: String).void } + attr_writer :captcha_image_selector + + sig { returns(T.nilable(String)) } + attr_reader :captcha_input_selector + + sig { params(captcha_input_selector: String).void } + attr_writer :captcha_input_selector + sig do returns( T.nilable( @@ -888,6 +900,23 @@ module Stagehand sig { params(log_session: T::Boolean).void } attr_writer :log_session + sig do + returns( + T.nilable( + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol + ) + ) + end + attr_reader :os + + sig do + params( + os: + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol + ).void + end + attr_writer :os + sig { returns(T.nilable(T::Boolean)) } attr_reader :record_session @@ -900,6 +929,12 @@ module Stagehand sig { params(solve_captchas: T::Boolean).void } attr_writer :solve_captchas + sig { returns(T.nilable(T::Boolean)) } + attr_reader :verified + + sig { params(verified: T::Boolean).void } + attr_writer :verified + sig do returns( T.nilable( @@ -921,14 +956,19 @@ module Stagehand params( advanced_stealth: T::Boolean, block_ads: T::Boolean, + captcha_image_selector: String, + captcha_input_selector: String, context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context::OrHash, extension_id: String, fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint::OrHash, log_session: T::Boolean, + os: + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol, record_session: T::Boolean, solve_captchas: T::Boolean, + verified: T::Boolean, viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport::OrHash ).returns(T.attached_class) @@ -936,12 +976,16 @@ module Stagehand def self.new( advanced_stealth: nil, block_ads: nil, + captcha_image_selector: nil, + captcha_input_selector: nil, context: nil, extension_id: nil, fingerprint: nil, log_session: nil, + os: nil, record_session: nil, solve_captchas: nil, + verified: nil, viewport: nil ) end @@ -951,14 +995,19 @@ module Stagehand { advanced_stealth: T::Boolean, block_ads: T::Boolean, + captcha_image_selector: String, + captcha_input_selector: String, context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context, extension_id: String, fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint, log_session: T::Boolean, + os: + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::OrSymbol, record_session: T::Boolean, solve_captchas: T::Boolean, + verified: T::Boolean, viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport } @@ -1390,6 +1439,55 @@ module Stagehand end end + module Os + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + WINDOWS = + T.let( + :windows, + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol + ) + MAC = + T.let( + :mac, + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol + ) + LINUX = + T.let( + :linux, + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol + ) + MOBILE = + T.let( + :mobile, + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol + ) + TABLET = + T.let( + :tablet, + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Os::TaggedSymbol + ] + ) + end + def self.values + end + end + class Viewport < Stagehand::Internal::Type::BaseModel OrHash = T.type_alias do diff --git a/sig/stagehand/models/session_start_params.rbs b/sig/stagehand/models/session_start_params.rbs index e5ad269..c4cbb7d 100644 --- a/sig/stagehand/models/session_start_params.rbs +++ b/sig/stagehand/models/session_start_params.rbs @@ -459,12 +459,16 @@ module Stagehand { advanced_stealth: bool, block_ads: bool, + captcha_image_selector: String, + captcha_input_selector: String, context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context, extension_id: String, fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint, log_session: bool, + os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os, record_session: bool, solve_captchas: bool, + verified: bool, viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport } @@ -477,6 +481,14 @@ module Stagehand def block_ads=: (bool) -> bool + attr_reader captcha_image_selector: String? + + def captcha_image_selector=: (String) -> String + + attr_reader captcha_input_selector: String? + + def captcha_input_selector=: (String) -> String + attr_reader context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context? def context=: ( @@ -497,6 +509,12 @@ module Stagehand def log_session=: (bool) -> bool + attr_reader os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os? + + def os=: ( + Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os + ) -> Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os + attr_reader record_session: bool? def record_session=: (bool) -> bool @@ -505,6 +523,10 @@ module Stagehand def solve_captchas=: (bool) -> bool + attr_reader verified: bool? + + def verified=: (bool) -> bool + attr_reader viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport? def viewport=: ( @@ -514,24 +536,32 @@ module Stagehand def initialize: ( ?advanced_stealth: bool, ?block_ads: bool, + ?captcha_image_selector: String, + ?captcha_input_selector: String, ?context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context, ?extension_id: String, ?fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint, ?log_session: bool, + ?os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os, ?record_session: bool, ?solve_captchas: bool, + ?verified: bool, ?viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport ) -> void def to_hash: -> { advanced_stealth: bool, block_ads: bool, + captcha_image_selector: String, + captcha_input_selector: String, context: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Context, extension_id: String, fingerprint: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Fingerprint, log_session: bool, + os: Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os, record_session: bool, solve_captchas: bool, + verified: bool, viewport: Stagehand::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::Viewport } @@ -702,6 +732,20 @@ module Stagehand end end + type os = :windows | :mac | :linux | :mobile | :tablet + + module Os + extend Stagehand::Internal::Type::Enum + + WINDOWS: :windows + MAC: :mac + LINUX: :linux + MOBILE: :mobile + TABLET: :tablet + + def self?.values: -> ::Array[Stagehand::Models::SessionStartParams::BrowserbaseSessionCreateParams::BrowserSettings::os] + end + type viewport = { height: Float, width: Float } class Viewport < Stagehand::Internal::Type::BaseModel From 149b303eb54f4c9af037a5e073a2d6c92d959b44 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Apr 2026 09:29:33 +0000 Subject: [PATCH 4/6] fix: multipart encoding for file arrays --- lib/stagehand/internal/util.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/stagehand/internal/util.rb b/lib/stagehand/internal/util.rb index 4e9a51e..3ac0058 100644 --- a/lib/stagehand/internal/util.rb +++ b/lib/stagehand/internal/util.rb @@ -610,6 +610,7 @@ def encode_query_params(query) # # @return [Array(String, Enumerable)] private def encode_multipart_streaming(body) + # rubocop:disable Style/CaseEquality # RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length boundary = SecureRandom.urlsafe_base64(46) @@ -619,7 +620,7 @@ def encode_query_params(query) in Hash body.each do |key, val| case val - in Array if val.all? { primitive?(_1) } + in Array if val.all? { primitive?(_1) || Stagehand::Internal::Type::FileInput === _1 } val.each do |v| write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing) end @@ -635,6 +636,7 @@ def encode_query_params(query) fused_io = fused_enum(strio) { closing.each(&:call) } [boundary, fused_io] + # rubocop:enable Style/CaseEquality end # @api private From 0c83a0978116f8fc11a4edf78586f3d61b8af5e8 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Apr 2026 20:32:34 +0000 Subject: [PATCH 5/6] feat: Revert "[STG-1573] Add providerOptions for extensible model auth (#1822)" --- .stats.yml | 4 +- lib/stagehand/models/model_config.rb | 218 +---- .../models/session_execute_params.rb | 18 +- lib/stagehand/models/session_start_params.rb | 415 +-------- lib/stagehand/models/stream_event.rb | 3 +- lib/stagehand/resources/sessions.rb | 7 +- rbi/stagehand/models/model_config.rbi | 436 +--------- .../models/session_execute_params.rbi | 28 +- rbi/stagehand/models/session_start_params.rbi | 814 ------------------ rbi/stagehand/models/stream_event.rbi | 3 +- rbi/stagehand/resources/sessions.rbi | 9 - sig/stagehand/models/model_config.rbs | 229 +---- .../models/session_execute_params.rbs | 24 +- sig/stagehand/models/session_start_params.rbs | 401 --------- sig/stagehand/resources/sessions.rbs | 1 - 15 files changed, 82 insertions(+), 2528 deletions(-) diff --git a/.stats.yml b/.stats.yml index 6bde59e..d8428d4 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 8 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-a8db51c6460b3daff67b35262517848a0d4e783c6805c2edd531b155a5db71dd.yml -openapi_spec_hash: c6e7127f211f946673d6389e1d8db1ba +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-1c6caa2891a7f3bdfc0caab143f285badc9145220c9b29cd5e4cf1a9b3ac11cf.yml +openapi_spec_hash: 28c4b734a5309067c39bb4c4b709b9ab config_hash: a962ae71493deb11a1c903256fb25386 diff --git a/lib/stagehand/models/model_config.rb b/lib/stagehand/models/model_config.rb index abf5fcd..806ca18 100644 --- a/lib/stagehand/models/model_config.rb +++ b/lib/stagehand/models/model_config.rb @@ -22,7 +22,7 @@ class ModelConfig < Stagehand::Internal::Type::BaseModel optional :base_url, String, api_name: :baseURL # @!attribute headers - # Custom headers for the model provider + # Custom headers sent with every request to the model provider # # @return [Hash{Symbol=>String}, nil] optional :headers, Stagehand::Internal::Type::HashOf[String] @@ -33,40 +33,16 @@ class ModelConfig < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::ModelConfig::Provider, nil] optional :provider, enum: -> { Stagehand::ModelConfig::Provider } - # @!attribute provider_options - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - # - # @return [Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions, nil] - optional :provider_options, - union: -> { Stagehand::ModelConfig::ProviderOptions }, - api_name: :providerOptions - - # @!attribute skip_api_key_fallback - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - # - # @return [Boolean, nil] - optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback - - # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil, provider_options: nil, skip_api_key_fallback: nil) - # Some parameter documentations has been truncated, see - # {Stagehand::Models::ModelConfig} for more details. - # + # @!method initialize(model_name:, api_key: nil, base_url: nil, headers: nil, provider: nil) # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') # # @param api_key [String] API key for the model provider # # @param base_url [String] Base URL for the model provider # - # @param headers [Hash{Symbol=>String}] Custom headers for the model provider + # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider # # @param provider [Symbol, Stagehand::Models::ModelConfig::Provider] AI provider for the model (or provide a baseURL endpoint instead) - # - # @param provider_options [Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions] Provider-specific options passed through to the AI SDK provider constructor. For - # - # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use # AI provider for the model (or provide a baseURL endpoint instead) # @@ -83,194 +59,6 @@ module Provider # @!method self.values # @return [Array] end - - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - # - # @see Stagehand::Models::ModelConfig#provider_options - module ProviderOptions - extend Stagehand::Internal::Type::Union - - variant -> { Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions } - - variant -> { Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions } - - variant -> { Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions } - - class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute region - # AWS region for Amazon Bedrock - # - # @return [String] - required :region, String - - # @!method initialize(region:) - # @param region [String] AWS region for Amazon Bedrock - end - - class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute access_key_id - # AWS access key ID for Bedrock - # - # @return [String] - required :access_key_id, String, api_name: :accessKeyId - - # @!attribute region - # AWS region for Amazon Bedrock - # - # @return [String] - required :region, String - - # @!attribute secret_access_key - # AWS secret access key for Bedrock - # - # @return [String] - required :secret_access_key, String, api_name: :secretAccessKey - - # @!attribute session_token - # Optional AWS session token for temporary credentials - # - # @return [String, nil] - optional :session_token, String, api_name: :sessionToken - - # @!method initialize(access_key_id:, region:, secret_access_key:, session_token: nil) - # @param access_key_id [String] AWS access key ID for Bedrock - # - # @param region [String] AWS region for Amazon Bedrock - # - # @param secret_access_key [String] AWS secret access key for Bedrock - # - # @param session_token [String] Optional AWS session token for temporary credentials - end - - class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute google_auth_options - # Optional Google auth options for Vertex AI - # - # @return [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, nil] - optional :google_auth_options, - -> { - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - }, - api_name: :googleAuthOptions - - # @!attribute headers - # Custom headers for Vertex AI requests - # - # @return [Hash{Symbol=>String}, nil] - optional :headers, Stagehand::Internal::Type::HashOf[String] - - # @!attribute location - # Google Cloud location for Vertex AI - # - # @return [String, nil] - optional :location, String - - # @!attribute project - # Google Cloud project ID for Vertex AI - # - # @return [String, nil] - optional :project, String - - # @!method initialize(google_auth_options: nil, headers: nil, location: nil, project: nil) - # @param google_auth_options [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions] Optional Google auth options for Vertex AI - # - # @param headers [Hash{Symbol=>String}] Custom headers for Vertex AI requests - # - # @param location [String] Google Cloud location for Vertex AI - # - # @param project [String] Google Cloud project ID for Vertex AI - - # @see Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions#google_auth_options - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - # @!attribute credentials - # - # @return [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, nil] - optional :credentials, - -> { Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials } - - # @!method initialize(credentials: nil) - # Optional Google auth options for Vertex AI - # - # @param credentials [Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials] - - # @see Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions#credentials - class Credentials < Stagehand::Internal::Type::BaseModel - # @!attribute auth_provider_x509_cert_url - # - # @return [String, nil] - optional :auth_provider_x509_cert_url, String - - # @!attribute auth_uri - # - # @return [String, nil] - optional :auth_uri, String - - # @!attribute client_email - # - # @return [String, nil] - optional :client_email, String - - # @!attribute client_id - # - # @return [String, nil] - optional :client_id, String - - # @!attribute client_x509_cert_url - # - # @return [String, nil] - optional :client_x509_cert_url, String - - # @!attribute private_key - # - # @return [String, nil] - optional :private_key, String - - # @!attribute private_key_id - # - # @return [String, nil] - optional :private_key_id, String - - # @!attribute project_id - # - # @return [String, nil] - optional :project_id, String - - # @!attribute token_uri - # - # @return [String, nil] - optional :token_uri, String - - # @!attribute type - # - # @return [String, nil] - optional :type, String - - # @!attribute universe_domain - # - # @return [String, nil] - optional :universe_domain, String - - # @!method initialize(auth_provider_x509_cert_url: nil, auth_uri: nil, client_email: nil, client_id: nil, client_x509_cert_url: nil, private_key: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) - # @param auth_provider_x509_cert_url [String] - # @param auth_uri [String] - # @param client_email [String] - # @param client_id [String] - # @param client_x509_cert_url [String] - # @param private_key [String] - # @param private_key_id [String] - # @param project_id [String] - # @param token_uri [String] - # @param type [String] - # @param universe_domain [String] - end - end - end - - # @!method self.variants - # @return [Array(Stagehand::Models::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::ModelConfig::ProviderOptions::GoogleVertexProviderOptions)] - end end end end diff --git a/lib/stagehand/models/session_execute_params.rb b/lib/stagehand/models/session_execute_params.rb index 0f8cd85..6185efe 100644 --- a/lib/stagehand/models/session_execute_params.rb +++ b/lib/stagehand/models/session_execute_params.rb @@ -198,12 +198,28 @@ class ExecuteOptions < Stagehand::Internal::Type::BaseModel # @return [Float, nil] optional :max_steps, Float, api_name: :maxSteps - # @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil) + # @!attribute tool_timeout + # Timeout in milliseconds for each agent tool call + # + # @return [Float, nil] + optional :tool_timeout, Float, api_name: :toolTimeout + + # @!attribute use_search + # Whether to enable the web search tool powered by Browserbase Search API + # + # @return [Boolean, nil] + optional :use_search, Stagehand::Internal::Type::Boolean, api_name: :useSearch + + # @!method initialize(instruction:, highlight_cursor: nil, max_steps: nil, tool_timeout: nil, use_search: nil) # @param instruction [String] Natural language instruction for the agent # # @param highlight_cursor [Boolean] Whether to visually highlight the cursor during execution # # @param max_steps [Float] Maximum number of steps the agent can take + # + # @param tool_timeout [Float] Timeout in milliseconds for each agent tool call + # + # @param use_search [Boolean] Whether to enable the web search tool powered by Browserbase Search API end # Whether to stream the response via SSE diff --git a/lib/stagehand/models/session_start_params.rb b/lib/stagehand/models/session_start_params.rb index e7c2c1c..e98f6fa 100644 --- a/lib/stagehand/models/session_start_params.rb +++ b/lib/stagehand/models/session_start_params.rb @@ -48,15 +48,6 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel # @return [Boolean, nil] optional :experimental, Stagehand::Internal::Type::Boolean - # @!attribute model_client_options - # Optional provider-specific configuration for the session model (for example - # Bedrock region and credentials) - # - # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions, nil] - optional :model_client_options, - union: -> { Stagehand::SessionStartParams::ModelClientOptions }, - api_name: :modelClientOptions - # @!attribute self_heal # Enable self-healing for failed actions # @@ -87,10 +78,7 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::SessionStartParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionStartParams::XStreamResponse } - # @!method initialize(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, model_client_options: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) - # Some parameter documentations has been truncated, see - # {Stagehand::Models::SessionStartParams} for more details. - # + # @!method initialize(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) # @param model_name [String] Model name to use for AI operations # # @param act_timeout_ms [Float] Timeout in ms for act operations (deprecated, v2 only) @@ -105,8 +93,6 @@ class SessionStartParams < Stagehand::Internal::Type::BaseModel # # @param experimental [Boolean] # - # @param model_client_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions] Optional provider-specific configuration for the session model (for example Bedr - # # @param self_heal [Boolean] Enable self-healing for failed actions # # @param system_prompt [String] Custom system prompt for AI operations @@ -794,405 +780,6 @@ module Region end end - # Optional provider-specific configuration for the session model (for example - # Bedrock region and credentials) - module ModelClientOptions - extend Stagehand::Internal::Type::Union - - variant -> { Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions } - - variant -> { Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions } - - variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions } - - class BedrockAPIKeyModelClientOptions < Stagehand::Internal::Type::BaseModel - # @!attribute api_key - # Short-term Bedrock API key for bearer-token auth - # - # @return [String] - required :api_key, String, api_name: :apiKey - - # @!attribute provider_options - # - # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions] - required :provider_options, - -> { - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions - }, - api_name: :providerOptions - - # @!attribute base_url - # Base URL for the model provider - # - # @return [String, nil] - optional :base_url, String, api_name: :baseURL - - # @!attribute headers - # Custom headers for the model provider - # - # @return [Hash{Symbol=>String}, nil] - optional :headers, Stagehand::Internal::Type::HashOf[String] - - # @!attribute skip_api_key_fallback - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - # - # @return [Boolean, nil] - optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback - - # @!method initialize(api_key:, provider_options:, base_url: nil, headers: nil, skip_api_key_fallback: nil) - # Some parameter documentations has been truncated, see - # {Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions} - # for more details. - # - # @param api_key [String] Short-term Bedrock API key for bearer-token auth - # - # @param provider_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions] - # - # @param base_url [String] Base URL for the model provider - # - # @param headers [Hash{Symbol=>String}] Custom headers for the model provider - # - # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - - # @see Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions#provider_options - class ProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute region - # AWS region for Amazon Bedrock - # - # @return [String] - required :region, String - - # @!method initialize(region:) - # @param region [String] AWS region for Amazon Bedrock - end - end - - class BedrockAwsCredentialsModelClientOptions < Stagehand::Internal::Type::BaseModel - # @!attribute provider_options - # - # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions] - required :provider_options, - -> { - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions - }, - api_name: :providerOptions - - # @!attribute base_url - # Base URL for the model provider - # - # @return [String, nil] - optional :base_url, String, api_name: :baseURL - - # @!attribute headers - # Custom headers for the model provider - # - # @return [Hash{Symbol=>String}, nil] - optional :headers, Stagehand::Internal::Type::HashOf[String] - - # @!attribute skip_api_key_fallback - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - # - # @return [Boolean, nil] - optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback - - # @!method initialize(provider_options:, base_url: nil, headers: nil, skip_api_key_fallback: nil) - # Some parameter documentations has been truncated, see - # {Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions} - # for more details. - # - # @param provider_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions] - # - # @param base_url [String] Base URL for the model provider - # - # @param headers [Hash{Symbol=>String}] Custom headers for the model provider - # - # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - - # @see Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions#provider_options - class ProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute access_key_id - # AWS access key ID for Bedrock - # - # @return [String] - required :access_key_id, String, api_name: :accessKeyId - - # @!attribute region - # AWS region for Amazon Bedrock - # - # @return [String] - required :region, String - - # @!attribute secret_access_key - # AWS secret access key for Bedrock - # - # @return [String] - required :secret_access_key, String, api_name: :secretAccessKey - - # @!attribute session_token - # Optional AWS session token for temporary credentials - # - # @return [String, nil] - optional :session_token, String, api_name: :sessionToken - - # @!method initialize(access_key_id:, region:, secret_access_key:, session_token: nil) - # @param access_key_id [String] AWS access key ID for Bedrock - # - # @param region [String] AWS region for Amazon Bedrock - # - # @param secret_access_key [String] AWS secret access key for Bedrock - # - # @param session_token [String] Optional AWS session token for temporary credentials - end - end - - class GenericModelClientOptions < Stagehand::Internal::Type::BaseModel - # @!attribute api_key - # API key for the model provider - # - # @return [String, nil] - optional :api_key, String, api_name: :apiKey - - # @!attribute base_url - # Base URL for the model provider - # - # @return [String, nil] - optional :base_url, String, api_name: :baseURL - - # @!attribute headers - # Custom headers for the model provider - # - # @return [Hash{Symbol=>String}, nil] - optional :headers, Stagehand::Internal::Type::HashOf[String] - - # @!attribute provider_options - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - # - # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions, nil] - optional :provider_options, - union: -> { - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions - }, - api_name: :providerOptions - - # @!attribute skip_api_key_fallback - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - # - # @return [Boolean, nil] - optional :skip_api_key_fallback, Stagehand::Internal::Type::Boolean, api_name: :skipApiKeyFallback - - # @!method initialize(api_key: nil, base_url: nil, headers: nil, provider_options: nil, skip_api_key_fallback: nil) - # Some parameter documentations has been truncated, see - # {Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions} - # for more details. - # - # @param api_key [String] API key for the model provider - # - # @param base_url [String] Base URL for the model provider - # - # @param headers [Hash{Symbol=>String}] Custom headers for the model provider - # - # @param provider_options [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions] Provider-specific options passed through to the AI SDK provider constructor. For - # - # @param skip_api_key_fallback [Boolean] When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - # - # @see Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions#provider_options - module ProviderOptions - extend Stagehand::Internal::Type::Union - - variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions } - - variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions } - - variant -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions } - - class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute region - # AWS region for Amazon Bedrock - # - # @return [String] - required :region, String - - # @!method initialize(region:) - # @param region [String] AWS region for Amazon Bedrock - end - - class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute access_key_id - # AWS access key ID for Bedrock - # - # @return [String] - required :access_key_id, String, api_name: :accessKeyId - - # @!attribute region - # AWS region for Amazon Bedrock - # - # @return [String] - required :region, String - - # @!attribute secret_access_key - # AWS secret access key for Bedrock - # - # @return [String] - required :secret_access_key, String, api_name: :secretAccessKey - - # @!attribute session_token - # Optional AWS session token for temporary credentials - # - # @return [String, nil] - optional :session_token, String, api_name: :sessionToken - - # @!method initialize(access_key_id:, region:, secret_access_key:, session_token: nil) - # @param access_key_id [String] AWS access key ID for Bedrock - # - # @param region [String] AWS region for Amazon Bedrock - # - # @param secret_access_key [String] AWS secret access key for Bedrock - # - # @param session_token [String] Optional AWS session token for temporary credentials - end - - class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel - # @!attribute google_auth_options - # Optional Google auth options for Vertex AI - # - # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, nil] - optional :google_auth_options, - -> { - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - }, - api_name: :googleAuthOptions - - # @!attribute headers - # Custom headers for Vertex AI requests - # - # @return [Hash{Symbol=>String}, nil] - optional :headers, Stagehand::Internal::Type::HashOf[String] - - # @!attribute location - # Google Cloud location for Vertex AI - # - # @return [String, nil] - optional :location, String - - # @!attribute project - # Google Cloud project ID for Vertex AI - # - # @return [String, nil] - optional :project, String - - # @!method initialize(google_auth_options: nil, headers: nil, location: nil, project: nil) - # @param google_auth_options [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions] Optional Google auth options for Vertex AI - # - # @param headers [Hash{Symbol=>String}] Custom headers for Vertex AI requests - # - # @param location [String] Google Cloud location for Vertex AI - # - # @param project [String] Google Cloud project ID for Vertex AI - - # @see Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions#google_auth_options - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - # @!attribute credentials - # - # @return [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, nil] - optional :credentials, - -> { Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials } - - # @!method initialize(credentials: nil) - # Optional Google auth options for Vertex AI - # - # @param credentials [Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials] - - # @see Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions#credentials - class Credentials < Stagehand::Internal::Type::BaseModel - # @!attribute auth_provider_x509_cert_url - # - # @return [String, nil] - optional :auth_provider_x509_cert_url, String - - # @!attribute auth_uri - # - # @return [String, nil] - optional :auth_uri, String - - # @!attribute client_email - # - # @return [String, nil] - optional :client_email, String - - # @!attribute client_id - # - # @return [String, nil] - optional :client_id, String - - # @!attribute client_x509_cert_url - # - # @return [String, nil] - optional :client_x509_cert_url, String - - # @!attribute private_key - # - # @return [String, nil] - optional :private_key, String - - # @!attribute private_key_id - # - # @return [String, nil] - optional :private_key_id, String - - # @!attribute project_id - # - # @return [String, nil] - optional :project_id, String - - # @!attribute token_uri - # - # @return [String, nil] - optional :token_uri, String - - # @!attribute type - # - # @return [String, nil] - optional :type, String - - # @!attribute universe_domain - # - # @return [String, nil] - optional :universe_domain, String - - # @!method initialize(auth_provider_x509_cert_url: nil, auth_uri: nil, client_email: nil, client_id: nil, client_x509_cert_url: nil, private_key: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) - # @param auth_provider_x509_cert_url [String] - # @param auth_uri [String] - # @param client_email [String] - # @param client_id [String] - # @param client_x509_cert_url [String] - # @param private_key [String] - # @param private_key_id [String] - # @param project_id [String] - # @param token_uri [String] - # @param type [String] - # @param universe_domain [String] - end - end - end - - # @!method self.variants - # @return [Array(Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions)] - end - end - - # @!method self.variants - # @return [Array(Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions)] - end - # Logging verbosity level (0=quiet, 1=normal, 2=debug) module Verbose extend Stagehand::Internal::Type::Enum diff --git a/lib/stagehand/models/stream_event.rb b/lib/stagehand/models/stream_event.rb index 38173d7..a8b5931 100644 --- a/lib/stagehand/models/stream_event.rb +++ b/lib/stagehand/models/stream_event.rb @@ -22,7 +22,8 @@ class StreamEvent < Stagehand::Internal::Type::BaseModel # @!method initialize(id:, data:, type:) # Server-Sent Event emitted during streaming responses. Events are sent as - # `data: \n\n`. Key order: data (with status first), type, id. + # `event: \ndata: \n\n`, where the JSON payload has the shape + # `{ data, type, id }`. # # @param id [String] Unique identifier for this event # diff --git a/lib/stagehand/resources/sessions.rb b/lib/stagehand/resources/sessions.rb index 3c36c61..2e4f6e3 100644 --- a/lib/stagehand/resources/sessions.rb +++ b/lib/stagehand/resources/sessions.rb @@ -430,13 +430,10 @@ def replay(id, params = {}) ) end - # Some parameter documentations has been truncated, see - # {Stagehand::Models::SessionStartParams} for more details. - # # Creates a new browser session with the specified configuration. Returns a # session ID used for all subsequent operations. # - # @overload start(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, model_client_options: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) + # @overload start(model_name:, act_timeout_ms: nil, browser: nil, browserbase_session_create_params: nil, browserbase_session_id: nil, dom_settle_timeout_ms: nil, experimental: nil, self_heal: nil, system_prompt: nil, verbose: nil, wait_for_captcha_solves: nil, x_stream_response: nil, request_options: {}) # # @param model_name [String] Body param: Model name to use for AI operations # @@ -452,8 +449,6 @@ def replay(id, params = {}) # # @param experimental [Boolean] Body param # - # @param model_client_options [Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions] Body param: Optional provider-specific configuration for the session model (for - # # @param self_heal [Boolean] Body param: Enable self-healing for failed actions # # @param system_prompt [String] Body param: Custom system prompt for AI operations diff --git a/rbi/stagehand/models/model_config.rbi b/rbi/stagehand/models/model_config.rbi index 8841e45..5d1bc44 100644 --- a/rbi/stagehand/models/model_config.rbi +++ b/rbi/stagehand/models/model_config.rbi @@ -26,7 +26,7 @@ module Stagehand sig { params(base_url: String).void } attr_writer :base_url - # Custom headers for the model provider + # Custom headers sent with every request to the model provider sig { returns(T.nilable(T::Hash[Symbol, String])) } attr_reader :headers @@ -40,56 +40,13 @@ module Stagehand sig { params(provider: Stagehand::ModelConfig::Provider::OrSymbol).void } attr_writer :provider - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - sig do - returns( - T.nilable( - T.any( - Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions - ) - ) - ) - end - attr_reader :provider_options - - sig do - params( - provider_options: - T.any( - Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, - Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::OrHash - ) - ).void - end - attr_writer :provider_options - - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - sig { returns(T.nilable(T::Boolean)) } - attr_reader :skip_api_key_fallback - - sig { params(skip_api_key_fallback: T::Boolean).void } - attr_writer :skip_api_key_fallback - sig do params( model_name: String, api_key: String, base_url: String, headers: T::Hash[Symbol, String], - provider: Stagehand::ModelConfig::Provider::OrSymbol, - provider_options: - T.any( - Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, - Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::OrHash - ), - skip_api_key_fallback: T::Boolean + provider: Stagehand::ModelConfig::Provider::OrSymbol ).returns(T.attached_class) end def self.new( @@ -99,17 +56,10 @@ module Stagehand api_key: nil, # Base URL for the model provider base_url: nil, - # Custom headers for the model provider + # Custom headers sent with every request to the model provider headers: nil, # AI provider for the model (or provide a baseURL endpoint instead) - provider: nil, - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - provider_options: nil, - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - skip_api_key_fallback: nil + provider: nil ) end @@ -120,14 +70,7 @@ module Stagehand api_key: String, base_url: String, headers: T::Hash[Symbol, String], - provider: Stagehand::ModelConfig::Provider::OrSymbol, - provider_options: - T.any( - Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions - ), - skip_api_key_fallback: T::Boolean + provider: Stagehand::ModelConfig::Provider::OrSymbol } ) end @@ -159,375 +102,6 @@ module Stagehand def self.values end end - - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - module ProviderOptions - extend Stagehand::Internal::Type::Union - - Variants = - T.type_alias do - T.any( - Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions - ) - end - - class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # AWS region for Amazon Bedrock - sig { returns(String) } - attr_accessor :region - - sig { params(region: String).returns(T.attached_class) } - def self.new( - # AWS region for Amazon Bedrock - region: - ) - end - - sig { override.returns({ region: String }) } - def to_hash - end - end - - class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # AWS access key ID for Bedrock - sig { returns(String) } - attr_accessor :access_key_id - - # AWS region for Amazon Bedrock - sig { returns(String) } - attr_accessor :region - - # AWS secret access key for Bedrock - sig { returns(String) } - attr_accessor :secret_access_key - - # Optional AWS session token for temporary credentials - sig { returns(T.nilable(String)) } - attr_reader :session_token - - sig { params(session_token: String).void } - attr_writer :session_token - - sig do - params( - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - ).returns(T.attached_class) - end - def self.new( - # AWS access key ID for Bedrock - access_key_id:, - # AWS region for Amazon Bedrock - region:, - # AWS secret access key for Bedrock - secret_access_key:, - # Optional AWS session token for temporary credentials - session_token: nil - ) - end - - sig do - override.returns( - { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - ) - end - def to_hash - end - end - - class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # Optional Google auth options for Vertex AI - sig do - returns( - T.nilable( - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - ) - ) - end - attr_reader :google_auth_options - - sig do - params( - google_auth_options: - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash - ).void - end - attr_writer :google_auth_options - - # Custom headers for Vertex AI requests - sig { returns(T.nilable(T::Hash[Symbol, String])) } - attr_reader :headers - - sig { params(headers: T::Hash[Symbol, String]).void } - attr_writer :headers - - # Google Cloud location for Vertex AI - sig { returns(T.nilable(String)) } - attr_reader :location - - sig { params(location: String).void } - attr_writer :location - - # Google Cloud project ID for Vertex AI - sig { returns(T.nilable(String)) } - attr_reader :project - - sig { params(project: String).void } - attr_writer :project - - sig do - params( - google_auth_options: - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash, - headers: T::Hash[Symbol, String], - location: String, - project: String - ).returns(T.attached_class) - end - def self.new( - # Optional Google auth options for Vertex AI - google_auth_options: nil, - # Custom headers for Vertex AI requests - headers: nil, - # Google Cloud location for Vertex AI - location: nil, - # Google Cloud project ID for Vertex AI - project: nil - ) - end - - sig do - override.returns( - { - google_auth_options: - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - headers: T::Hash[Symbol, String], - location: String, - project: String - } - ) - end - def to_hash - end - - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - Stagehand::Internal::AnyHash - ) - end - - sig do - returns( - T.nilable( - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - ) - ) - end - attr_reader :credentials - - sig do - params( - credentials: - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash - ).void - end - attr_writer :credentials - - # Optional Google auth options for Vertex AI - sig do - params( - credentials: - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash - ).returns(T.attached_class) - end - def self.new(credentials: nil) - end - - sig do - override.returns( - { - credentials: - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - } - ) - end - def to_hash - end - - class Credentials < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, - Stagehand::Internal::AnyHash - ) - end - - sig { returns(T.nilable(String)) } - attr_reader :auth_provider_x509_cert_url - - sig { params(auth_provider_x509_cert_url: String).void } - attr_writer :auth_provider_x509_cert_url - - sig { returns(T.nilable(String)) } - attr_reader :auth_uri - - sig { params(auth_uri: String).void } - attr_writer :auth_uri - - sig { returns(T.nilable(String)) } - attr_reader :client_email - - sig { params(client_email: String).void } - attr_writer :client_email - - sig { returns(T.nilable(String)) } - attr_reader :client_id - - sig { params(client_id: String).void } - attr_writer :client_id - - sig { returns(T.nilable(String)) } - attr_reader :client_x509_cert_url - - sig { params(client_x509_cert_url: String).void } - attr_writer :client_x509_cert_url - - sig { returns(T.nilable(String)) } - attr_reader :private_key - - sig { params(private_key: String).void } - attr_writer :private_key - - sig { returns(T.nilable(String)) } - attr_reader :private_key_id - - sig { params(private_key_id: String).void } - attr_writer :private_key_id - - sig { returns(T.nilable(String)) } - attr_reader :project_id - - sig { params(project_id: String).void } - attr_writer :project_id - - sig { returns(T.nilable(String)) } - attr_reader :token_uri - - sig { params(token_uri: String).void } - attr_writer :token_uri - - sig { returns(T.nilable(String)) } - attr_reader :type - - sig { params(type: String).void } - attr_writer :type - - sig { returns(T.nilable(String)) } - attr_reader :universe_domain - - sig { params(universe_domain: String).void } - attr_writer :universe_domain - - sig do - params( - auth_provider_x509_cert_url: String, - auth_uri: String, - client_email: String, - client_id: String, - client_x509_cert_url: String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - ).returns(T.attached_class) - end - def self.new( - auth_provider_x509_cert_url: nil, - auth_uri: nil, - client_email: nil, - client_id: nil, - client_x509_cert_url: nil, - private_key: nil, - private_key_id: nil, - project_id: nil, - token_uri: nil, - type: nil, - universe_domain: nil - ) - end - - sig do - override.returns( - { - auth_provider_x509_cert_url: String, - auth_uri: String, - client_email: String, - client_id: String, - client_x509_cert_url: String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - } - ) - end - def to_hash - end - end - end - end - - sig do - override.returns( - T::Array[Stagehand::ModelConfig::ProviderOptions::Variants] - ) - end - def self.variants - end - end end end end diff --git a/rbi/stagehand/models/session_execute_params.rbi b/rbi/stagehand/models/session_execute_params.rbi index 28a77e8..d0577ae 100644 --- a/rbi/stagehand/models/session_execute_params.rbi +++ b/rbi/stagehand/models/session_execute_params.rbi @@ -387,11 +387,27 @@ module Stagehand sig { params(max_steps: Float).void } attr_writer :max_steps + # Timeout in milliseconds for each agent tool call + sig { returns(T.nilable(Float)) } + attr_reader :tool_timeout + + sig { params(tool_timeout: Float).void } + attr_writer :tool_timeout + + # Whether to enable the web search tool powered by Browserbase Search API + sig { returns(T.nilable(T::Boolean)) } + attr_reader :use_search + + sig { params(use_search: T::Boolean).void } + attr_writer :use_search + sig do params( instruction: String, highlight_cursor: T::Boolean, - max_steps: Float + max_steps: Float, + tool_timeout: Float, + use_search: T::Boolean ).returns(T.attached_class) end def self.new( @@ -400,7 +416,11 @@ module Stagehand # Whether to visually highlight the cursor during execution highlight_cursor: nil, # Maximum number of steps the agent can take - max_steps: nil + max_steps: nil, + # Timeout in milliseconds for each agent tool call + tool_timeout: nil, + # Whether to enable the web search tool powered by Browserbase Search API + use_search: nil ) end @@ -409,7 +429,9 @@ module Stagehand { instruction: String, highlight_cursor: T::Boolean, - max_steps: Float + max_steps: Float, + tool_timeout: Float, + use_search: T::Boolean } ) end diff --git a/rbi/stagehand/models/session_start_params.rbi b/rbi/stagehand/models/session_start_params.rbi index d268191..4ea4b10 100644 --- a/rbi/stagehand/models/session_start_params.rbi +++ b/rbi/stagehand/models/session_start_params.rbi @@ -67,33 +67,6 @@ module Stagehand sig { params(experimental: T::Boolean).void } attr_writer :experimental - # Optional provider-specific configuration for the session model (for example - # Bedrock region and credentials) - sig do - returns( - T.nilable( - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions - ) - ) - ) - end - attr_reader :model_client_options - - sig do - params( - model_client_options: - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::OrHash - ) - ).void - end - attr_writer :model_client_options - # Enable self-healing for failed actions sig { returns(T.nilable(T::Boolean)) } attr_reader :self_heal @@ -152,12 +125,6 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: T::Boolean, - model_client_options: - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::OrHash - ), self_heal: T::Boolean, system_prompt: String, verbose: Stagehand::SessionStartParams::Verbose::OrFloat, @@ -179,9 +146,6 @@ module Stagehand # Timeout in ms to wait for DOM to settle dom_settle_timeout_ms: nil, experimental: nil, - # Optional provider-specific configuration for the session model (for example - # Bedrock region and credentials) - model_client_options: nil, # Enable self-healing for failed actions self_heal: nil, # Custom system prompt for AI operations @@ -207,12 +171,6 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: T::Boolean, - model_client_options: - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions - ), self_heal: T::Boolean, system_prompt: String, verbose: Stagehand::SessionStartParams::Verbose::OrFloat, @@ -1792,778 +1750,6 @@ module Stagehand end end - # Optional provider-specific configuration for the session model (for example - # Bedrock region and credentials) - module ModelClientOptions - extend Stagehand::Internal::Type::Union - - Variants = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions - ) - end - - class BedrockAPIKeyModelClientOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions, - Stagehand::Internal::AnyHash - ) - end - - # Short-term Bedrock API key for bearer-token auth - sig { returns(String) } - attr_accessor :api_key - - sig do - returns( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions - ) - end - attr_reader :provider_options - - sig do - params( - provider_options: - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions::OrHash - ).void - end - attr_writer :provider_options - - # Base URL for the model provider - sig { returns(T.nilable(String)) } - attr_reader :base_url - - sig { params(base_url: String).void } - attr_writer :base_url - - # Custom headers for the model provider - sig { returns(T.nilable(T::Hash[Symbol, String])) } - attr_reader :headers - - sig { params(headers: T::Hash[Symbol, String]).void } - attr_writer :headers - - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - sig { returns(T.nilable(T::Boolean)) } - attr_reader :skip_api_key_fallback - - sig { params(skip_api_key_fallback: T::Boolean).void } - attr_writer :skip_api_key_fallback - - sig do - params( - api_key: String, - provider_options: - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions::OrHash, - base_url: String, - headers: T::Hash[Symbol, String], - skip_api_key_fallback: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # Short-term Bedrock API key for bearer-token auth - api_key:, - provider_options:, - # Base URL for the model provider - base_url: nil, - # Custom headers for the model provider - headers: nil, - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - skip_api_key_fallback: nil - ) - end - - sig do - override.returns( - { - api_key: String, - provider_options: - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, - base_url: String, - headers: T::Hash[Symbol, String], - skip_api_key_fallback: T::Boolean - } - ) - end - def to_hash - end - - class ProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # AWS region for Amazon Bedrock - sig { returns(String) } - attr_accessor :region - - sig { params(region: String).returns(T.attached_class) } - def self.new( - # AWS region for Amazon Bedrock - region: - ) - end - - sig { override.returns({ region: String }) } - def to_hash - end - end - end - - class BedrockAwsCredentialsModelClientOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions, - Stagehand::Internal::AnyHash - ) - end - - sig do - returns( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions - ) - end - attr_reader :provider_options - - sig do - params( - provider_options: - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions::OrHash - ).void - end - attr_writer :provider_options - - # Base URL for the model provider - sig { returns(T.nilable(String)) } - attr_reader :base_url - - sig { params(base_url: String).void } - attr_writer :base_url - - # Custom headers for the model provider - sig { returns(T.nilable(T::Hash[Symbol, String])) } - attr_reader :headers - - sig { params(headers: T::Hash[Symbol, String]).void } - attr_writer :headers - - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - sig { returns(T.nilable(T::Boolean)) } - attr_reader :skip_api_key_fallback - - sig { params(skip_api_key_fallback: T::Boolean).void } - attr_writer :skip_api_key_fallback - - sig do - params( - provider_options: - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions::OrHash, - base_url: String, - headers: T::Hash[Symbol, String], - skip_api_key_fallback: T::Boolean - ).returns(T.attached_class) - end - def self.new( - provider_options:, - # Base URL for the model provider - base_url: nil, - # Custom headers for the model provider - headers: nil, - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - skip_api_key_fallback: nil - ) - end - - sig do - override.returns( - { - provider_options: - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, - base_url: String, - headers: T::Hash[Symbol, String], - skip_api_key_fallback: T::Boolean - } - ) - end - def to_hash - end - - class ProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # AWS access key ID for Bedrock - sig { returns(String) } - attr_accessor :access_key_id - - # AWS region for Amazon Bedrock - sig { returns(String) } - attr_accessor :region - - # AWS secret access key for Bedrock - sig { returns(String) } - attr_accessor :secret_access_key - - # Optional AWS session token for temporary credentials - sig { returns(T.nilable(String)) } - attr_reader :session_token - - sig { params(session_token: String).void } - attr_writer :session_token - - sig do - params( - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - ).returns(T.attached_class) - end - def self.new( - # AWS access key ID for Bedrock - access_key_id:, - # AWS region for Amazon Bedrock - region:, - # AWS secret access key for Bedrock - secret_access_key:, - # Optional AWS session token for temporary credentials - session_token: nil - ) - end - - sig do - override.returns( - { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - ) - end - def to_hash - end - end - end - - class GenericModelClientOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions, - Stagehand::Internal::AnyHash - ) - end - - # API key for the model provider - sig { returns(T.nilable(String)) } - attr_reader :api_key - - sig { params(api_key: String).void } - attr_writer :api_key - - # Base URL for the model provider - sig { returns(T.nilable(String)) } - attr_reader :base_url - - sig { params(base_url: String).void } - attr_writer :base_url - - # Custom headers for the model provider - sig { returns(T.nilable(T::Hash[Symbol, String])) } - attr_reader :headers - - sig { params(headers: T::Hash[Symbol, String]).void } - attr_writer :headers - - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - sig do - returns( - T.nilable( - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions - ) - ) - ) - end - attr_reader :provider_options - - sig do - params( - provider_options: - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::OrHash - ) - ).void - end - attr_writer :provider_options - - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - sig { returns(T.nilable(T::Boolean)) } - attr_reader :skip_api_key_fallback - - sig { params(skip_api_key_fallback: T::Boolean).void } - attr_writer :skip_api_key_fallback - - sig do - params( - api_key: String, - base_url: String, - headers: T::Hash[Symbol, String], - provider_options: - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::OrHash - ), - skip_api_key_fallback: T::Boolean - ).returns(T.attached_class) - end - def self.new( - # API key for the model provider - api_key: nil, - # Base URL for the model provider - base_url: nil, - # Custom headers for the model provider - headers: nil, - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - provider_options: nil, - # When true, hosted sessions will not copy x-model-api-key into model.apiKey. Use - # this when auth is carried through providerOptions instead of an API key. - skip_api_key_fallback: nil - ) - end - - sig do - override.returns( - { - api_key: String, - base_url: String, - headers: T::Hash[Symbol, String], - provider_options: - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions - ), - skip_api_key_fallback: T::Boolean - } - ) - end - def to_hash - end - - # Provider-specific options passed through to the AI SDK provider constructor. For - # Bedrock: { region, accessKeyId, secretAccessKey, sessionToken }. For Vertex: { - # project, location, googleAuthOptions }. - module ProviderOptions - extend Stagehand::Internal::Type::Union - - Variants = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions - ) - end - - class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # AWS region for Amazon Bedrock - sig { returns(String) } - attr_accessor :region - - sig { params(region: String).returns(T.attached_class) } - def self.new( - # AWS region for Amazon Bedrock - region: - ) - end - - sig { override.returns({ region: String }) } - def to_hash - end - end - - class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # AWS access key ID for Bedrock - sig { returns(String) } - attr_accessor :access_key_id - - # AWS region for Amazon Bedrock - sig { returns(String) } - attr_accessor :region - - # AWS secret access key for Bedrock - sig { returns(String) } - attr_accessor :secret_access_key - - # Optional AWS session token for temporary credentials - sig { returns(T.nilable(String)) } - attr_reader :session_token - - sig { params(session_token: String).void } - attr_writer :session_token - - sig do - params( - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - ).returns(T.attached_class) - end - def self.new( - # AWS access key ID for Bedrock - access_key_id:, - # AWS region for Amazon Bedrock - region:, - # AWS secret access key for Bedrock - secret_access_key:, - # Optional AWS session token for temporary credentials - session_token: nil - ) - end - - sig do - override.returns( - { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - ) - end - def to_hash - end - end - - class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions, - Stagehand::Internal::AnyHash - ) - end - - # Optional Google auth options for Vertex AI - sig do - returns( - T.nilable( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - ) - ) - end - attr_reader :google_auth_options - - sig do - params( - google_auth_options: - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash - ).void - end - attr_writer :google_auth_options - - # Custom headers for Vertex AI requests - sig { returns(T.nilable(T::Hash[Symbol, String])) } - attr_reader :headers - - sig { params(headers: T::Hash[Symbol, String]).void } - attr_writer :headers - - # Google Cloud location for Vertex AI - sig { returns(T.nilable(String)) } - attr_reader :location - - sig { params(location: String).void } - attr_writer :location - - # Google Cloud project ID for Vertex AI - sig { returns(T.nilable(String)) } - attr_reader :project - - sig { params(project: String).void } - attr_writer :project - - sig do - params( - google_auth_options: - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::OrHash, - headers: T::Hash[Symbol, String], - location: String, - project: String - ).returns(T.attached_class) - end - def self.new( - # Optional Google auth options for Vertex AI - google_auth_options: nil, - # Custom headers for Vertex AI requests - headers: nil, - # Google Cloud location for Vertex AI - location: nil, - # Google Cloud project ID for Vertex AI - project: nil - ) - end - - sig do - override.returns( - { - google_auth_options: - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - headers: T::Hash[Symbol, String], - location: String, - project: String - } - ) - end - def to_hash - end - - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - Stagehand::Internal::AnyHash - ) - end - - sig do - returns( - T.nilable( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - ) - ) - end - attr_reader :credentials - - sig do - params( - credentials: - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash - ).void - end - attr_writer :credentials - - # Optional Google auth options for Vertex AI - sig do - params( - credentials: - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials::OrHash - ).returns(T.attached_class) - end - def self.new(credentials: nil) - end - - sig do - override.returns( - { - credentials: - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - } - ) - end - def to_hash - end - - class Credentials < Stagehand::Internal::Type::BaseModel - OrHash = - T.type_alias do - T.any( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials, - Stagehand::Internal::AnyHash - ) - end - - sig { returns(T.nilable(String)) } - attr_reader :auth_provider_x509_cert_url - - sig { params(auth_provider_x509_cert_url: String).void } - attr_writer :auth_provider_x509_cert_url - - sig { returns(T.nilable(String)) } - attr_reader :auth_uri - - sig { params(auth_uri: String).void } - attr_writer :auth_uri - - sig { returns(T.nilable(String)) } - attr_reader :client_email - - sig { params(client_email: String).void } - attr_writer :client_email - - sig { returns(T.nilable(String)) } - attr_reader :client_id - - sig { params(client_id: String).void } - attr_writer :client_id - - sig { returns(T.nilable(String)) } - attr_reader :client_x509_cert_url - - sig { params(client_x509_cert_url: String).void } - attr_writer :client_x509_cert_url - - sig { returns(T.nilable(String)) } - attr_reader :private_key - - sig { params(private_key: String).void } - attr_writer :private_key - - sig { returns(T.nilable(String)) } - attr_reader :private_key_id - - sig { params(private_key_id: String).void } - attr_writer :private_key_id - - sig { returns(T.nilable(String)) } - attr_reader :project_id - - sig { params(project_id: String).void } - attr_writer :project_id - - sig { returns(T.nilable(String)) } - attr_reader :token_uri - - sig { params(token_uri: String).void } - attr_writer :token_uri - - sig { returns(T.nilable(String)) } - attr_reader :type - - sig { params(type: String).void } - attr_writer :type - - sig { returns(T.nilable(String)) } - attr_reader :universe_domain - - sig { params(universe_domain: String).void } - attr_writer :universe_domain - - sig do - params( - auth_provider_x509_cert_url: String, - auth_uri: String, - client_email: String, - client_id: String, - client_x509_cert_url: String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - ).returns(T.attached_class) - end - def self.new( - auth_provider_x509_cert_url: nil, - auth_uri: nil, - client_email: nil, - client_id: nil, - client_x509_cert_url: nil, - private_key: nil, - private_key_id: nil, - project_id: nil, - token_uri: nil, - type: nil, - universe_domain: nil - ) - end - - sig do - override.returns( - { - auth_provider_x509_cert_url: String, - auth_uri: String, - client_email: String, - client_id: String, - client_x509_cert_url: String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - } - ) - end - def to_hash - end - end - end - end - - sig do - override.returns( - T::Array[ - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::Variants - ] - ) - end - def self.variants - end - end - end - - sig do - override.returns( - T::Array[ - Stagehand::SessionStartParams::ModelClientOptions::Variants - ] - ) - end - def self.variants - end - end - # Logging verbosity level (0=quiet, 1=normal, 2=debug) module Verbose extend Stagehand::Internal::Type::Enum diff --git a/rbi/stagehand/models/stream_event.rbi b/rbi/stagehand/models/stream_event.rbi index d1e4d04..a1a861d 100644 --- a/rbi/stagehand/models/stream_event.rbi +++ b/rbi/stagehand/models/stream_event.rbi @@ -20,7 +20,8 @@ module Stagehand attr_accessor :type # Server-Sent Event emitted during streaming responses. Events are sent as - # `data: \n\n`. Key order: data (with status first), type, id. + # `event: \ndata: \n\n`, where the JSON payload has the shape + # `{ data, type, id }`. sig do params( id: String, diff --git a/rbi/stagehand/resources/sessions.rbi b/rbi/stagehand/resources/sessions.rbi index e998a07..e298865 100644 --- a/rbi/stagehand/resources/sessions.rbi +++ b/rbi/stagehand/resources/sessions.rbi @@ -374,12 +374,6 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: T::Boolean, - model_client_options: - T.any( - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::OrHash, - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::OrHash - ), self_heal: T::Boolean, system_prompt: String, verbose: Stagehand::SessionStartParams::Verbose::OrFloat, @@ -404,9 +398,6 @@ module Stagehand dom_settle_timeout_ms: nil, # Body param experimental: nil, - # Body param: Optional provider-specific configuration for the session model (for - # example Bedrock region and credentials) - model_client_options: nil, # Body param: Enable self-healing for failed actions self_heal: nil, # Body param: Custom system prompt for AI operations diff --git a/sig/stagehand/models/model_config.rbs b/sig/stagehand/models/model_config.rbs index 5c42deb..60d3ebf 100644 --- a/sig/stagehand/models/model_config.rbs +++ b/sig/stagehand/models/model_config.rbs @@ -6,9 +6,7 @@ module Stagehand api_key: String, base_url: String, headers: ::Hash[Symbol, String], - provider: Stagehand::Models::ModelConfig::provider, - provider_options: Stagehand::Models::ModelConfig::provider_options, - skip_api_key_fallback: bool + provider: Stagehand::Models::ModelConfig::provider } class ModelConfig < Stagehand::Internal::Type::BaseModel @@ -32,24 +30,12 @@ module Stagehand Stagehand::Models::ModelConfig::provider ) -> Stagehand::Models::ModelConfig::provider - attr_reader provider_options: Stagehand::Models::ModelConfig::provider_options? - - def provider_options=: ( - Stagehand::Models::ModelConfig::provider_options - ) -> Stagehand::Models::ModelConfig::provider_options - - attr_reader skip_api_key_fallback: bool? - - def skip_api_key_fallback=: (bool) -> bool - def initialize: ( model_name: String, ?api_key: String, ?base_url: String, ?headers: ::Hash[Symbol, String], - ?provider: Stagehand::Models::ModelConfig::provider, - ?provider_options: Stagehand::Models::ModelConfig::provider_options, - ?skip_api_key_fallback: bool + ?provider: Stagehand::Models::ModelConfig::provider ) -> void def to_hash: -> { @@ -57,9 +43,7 @@ module Stagehand api_key: String, base_url: String, headers: ::Hash[Symbol, String], - provider: Stagehand::Models::ModelConfig::provider, - provider_options: Stagehand::Models::ModelConfig::provider_options, - skip_api_key_fallback: bool + provider: Stagehand::Models::ModelConfig::provider } type provider = :openai | :anthropic | :google | :microsoft | :bedrock @@ -75,213 +59,6 @@ module Stagehand def self?.values: -> ::Array[Stagehand::Models::ModelConfig::provider] end - - type provider_options = - Stagehand::ModelConfig::ProviderOptions::BedrockAPIKeyProviderOptions - | Stagehand::ModelConfig::ProviderOptions::BedrockAwsCredentialsProviderOptions - | Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions - - module ProviderOptions - extend Stagehand::Internal::Type::Union - - type bedrock_api_key_provider_options = { region: String } - - class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel - attr_accessor region: String - - def initialize: (region: String) -> void - - def to_hash: -> { region: String } - end - - type bedrock_aws_credentials_provider_options = - { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - - class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel - attr_accessor access_key_id: String - - attr_accessor region: String - - attr_accessor secret_access_key: String - - attr_reader session_token: String? - - def session_token=: (String) -> String - - def initialize: ( - access_key_id: String, - region: String, - secret_access_key: String, - ?session_token: String - ) -> void - - def to_hash: -> { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - end - - type google_vertex_provider_options = - { - google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - headers: ::Hash[Symbol, String], - location: String, - project: String - } - - class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel - attr_reader google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions? - - def google_auth_options=: ( - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - ) -> Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - - attr_reader headers: ::Hash[Symbol, String]? - - def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - - attr_reader location: String? - - def location=: (String) -> String - - attr_reader project: String? - - def project=: (String) -> String - - def initialize: ( - ?google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - ?headers: ::Hash[Symbol, String], - ?location: String, - ?project: String - ) -> void - - def to_hash: -> { - google_auth_options: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - headers: ::Hash[Symbol, String], - location: String, - project: String - } - - type google_auth_options = - { - credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - } - - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - attr_reader credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials? - - def credentials=: ( - Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - ) -> Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - - def initialize: ( - ?credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - ) -> void - - def to_hash: -> { - credentials: Stagehand::ModelConfig::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - } - - type credentials = - { - :auth_provider_x509_cert_url => String, - auth_uri: String, - client_email: String, - client_id: String, - :client_x509_cert_url => String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - } - - class Credentials < Stagehand::Internal::Type::BaseModel - attr_reader auth_provider_x509_cert_url: String? - - def auth_provider_x509_cert_url=: (String) -> String - - attr_reader auth_uri: String? - - def auth_uri=: (String) -> String - - attr_reader client_email: String? - - def client_email=: (String) -> String - - attr_reader client_id: String? - - def client_id=: (String) -> String - - attr_reader client_x509_cert_url: String? - - def client_x509_cert_url=: (String) -> String - - attr_reader private_key: String? - - def private_key=: (String) -> String - - attr_reader private_key_id: String? - - def private_key_id=: (String) -> String - - attr_reader project_id: String? - - def project_id=: (String) -> String - - attr_reader token_uri: String? - - def token_uri=: (String) -> String - - attr_reader type: String? - - def type=: (String) -> String - - attr_reader universe_domain: String? - - def universe_domain=: (String) -> String - - def initialize: ( - ?auth_provider_x509_cert_url: String, - ?auth_uri: String, - ?client_email: String, - ?client_id: String, - ?client_x509_cert_url: String, - ?private_key: String, - ?private_key_id: String, - ?project_id: String, - ?token_uri: String, - ?type: String, - ?universe_domain: String - ) -> void - - def to_hash: -> { - :auth_provider_x509_cert_url => String, - auth_uri: String, - client_email: String, - client_id: String, - :client_x509_cert_url => String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - } - end - end - end - - def self?.variants: -> ::Array[Stagehand::Models::ModelConfig::provider_options] - end end end end diff --git a/sig/stagehand/models/session_execute_params.rbs b/sig/stagehand/models/session_execute_params.rbs index 3936f2e..167e110 100644 --- a/sig/stagehand/models/session_execute_params.rbs +++ b/sig/stagehand/models/session_execute_params.rbs @@ -158,7 +158,13 @@ module Stagehand end type execute_options = - { instruction: String, highlight_cursor: bool, max_steps: Float } + { + instruction: String, + highlight_cursor: bool, + max_steps: Float, + tool_timeout: Float, + use_search: bool + } class ExecuteOptions < Stagehand::Internal::Type::BaseModel attr_accessor instruction: String @@ -171,16 +177,28 @@ module Stagehand def max_steps=: (Float) -> Float + attr_reader tool_timeout: Float? + + def tool_timeout=: (Float) -> Float + + attr_reader use_search: bool? + + def use_search=: (bool) -> bool + def initialize: ( instruction: String, ?highlight_cursor: bool, - ?max_steps: Float + ?max_steps: Float, + ?tool_timeout: Float, + ?use_search: bool ) -> void def to_hash: -> { instruction: String, highlight_cursor: bool, - max_steps: Float + max_steps: Float, + tool_timeout: Float, + use_search: bool } end diff --git a/sig/stagehand/models/session_start_params.rbs b/sig/stagehand/models/session_start_params.rbs index c4cbb7d..af70a2b 100644 --- a/sig/stagehand/models/session_start_params.rbs +++ b/sig/stagehand/models/session_start_params.rbs @@ -9,7 +9,6 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: bool, - model_client_options: Stagehand::Models::SessionStartParams::model_client_options, self_heal: bool, system_prompt: String, verbose: Stagehand::Models::SessionStartParams::verbose, @@ -52,12 +51,6 @@ module Stagehand def experimental=: (bool) -> bool - attr_reader model_client_options: Stagehand::Models::SessionStartParams::model_client_options? - - def model_client_options=: ( - Stagehand::Models::SessionStartParams::model_client_options - ) -> Stagehand::Models::SessionStartParams::model_client_options - attr_reader self_heal: bool? def self_heal=: (bool) -> bool @@ -90,7 +83,6 @@ module Stagehand ?browserbase_session_id: String, ?dom_settle_timeout_ms: Float, ?experimental: bool, - ?model_client_options: Stagehand::Models::SessionStartParams::model_client_options, ?self_heal: bool, ?system_prompt: String, ?verbose: Stagehand::Models::SessionStartParams::verbose, @@ -107,7 +99,6 @@ module Stagehand browserbase_session_id: String, dom_settle_timeout_ms: Float, experimental: bool, - model_client_options: Stagehand::Models::SessionStartParams::model_client_options, self_heal: bool, system_prompt: String, verbose: Stagehand::Models::SessionStartParams::verbose, @@ -899,398 +890,6 @@ module Stagehand end end - type model_client_options = - Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions - | Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions - | Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions - - module ModelClientOptions - extend Stagehand::Internal::Type::Union - - type bedrock_api_key_model_client_options = - { - api_key: String, - provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, - base_url: String, - headers: ::Hash[Symbol, String], - skip_api_key_fallback: bool - } - - class BedrockAPIKeyModelClientOptions < Stagehand::Internal::Type::BaseModel - attr_accessor api_key: String - - attr_accessor provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions - - attr_reader base_url: String? - - def base_url=: (String) -> String - - attr_reader headers: ::Hash[Symbol, String]? - - def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - - attr_reader skip_api_key_fallback: bool? - - def skip_api_key_fallback=: (bool) -> bool - - def initialize: ( - api_key: String, - provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, - ?base_url: String, - ?headers: ::Hash[Symbol, String], - ?skip_api_key_fallback: bool - ) -> void - - def to_hash: -> { - api_key: String, - provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAPIKeyModelClientOptions::ProviderOptions, - base_url: String, - headers: ::Hash[Symbol, String], - skip_api_key_fallback: bool - } - - type provider_options = { region: String } - - class ProviderOptions < Stagehand::Internal::Type::BaseModel - attr_accessor region: String - - def initialize: (region: String) -> void - - def to_hash: -> { region: String } - end - end - - type bedrock_aws_credentials_model_client_options = - { - provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, - base_url: String, - headers: ::Hash[Symbol, String], - skip_api_key_fallback: bool - } - - class BedrockAwsCredentialsModelClientOptions < Stagehand::Internal::Type::BaseModel - attr_accessor provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions - - attr_reader base_url: String? - - def base_url=: (String) -> String - - attr_reader headers: ::Hash[Symbol, String]? - - def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - - attr_reader skip_api_key_fallback: bool? - - def skip_api_key_fallback=: (bool) -> bool - - def initialize: ( - provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, - ?base_url: String, - ?headers: ::Hash[Symbol, String], - ?skip_api_key_fallback: bool - ) -> void - - def to_hash: -> { - provider_options: Stagehand::SessionStartParams::ModelClientOptions::BedrockAwsCredentialsModelClientOptions::ProviderOptions, - base_url: String, - headers: ::Hash[Symbol, String], - skip_api_key_fallback: bool - } - - type provider_options = - { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - - class ProviderOptions < Stagehand::Internal::Type::BaseModel - attr_accessor access_key_id: String - - attr_accessor region: String - - attr_accessor secret_access_key: String - - attr_reader session_token: String? - - def session_token=: (String) -> String - - def initialize: ( - access_key_id: String, - region: String, - secret_access_key: String, - ?session_token: String - ) -> void - - def to_hash: -> { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - end - end - - type generic_model_client_options = - { - api_key: String, - base_url: String, - headers: ::Hash[Symbol, String], - provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options, - skip_api_key_fallback: bool - } - - class GenericModelClientOptions < Stagehand::Internal::Type::BaseModel - attr_reader api_key: String? - - def api_key=: (String) -> String - - attr_reader base_url: String? - - def base_url=: (String) -> String - - attr_reader headers: ::Hash[Symbol, String]? - - def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - - attr_reader provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options? - - def provider_options=: ( - Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options - ) -> Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options - - attr_reader skip_api_key_fallback: bool? - - def skip_api_key_fallback=: (bool) -> bool - - def initialize: ( - ?api_key: String, - ?base_url: String, - ?headers: ::Hash[Symbol, String], - ?provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options, - ?skip_api_key_fallback: bool - ) -> void - - def to_hash: -> { - api_key: String, - base_url: String, - headers: ::Hash[Symbol, String], - provider_options: Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options, - skip_api_key_fallback: bool - } - - type provider_options = - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAPIKeyProviderOptions - | Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::BedrockAwsCredentialsProviderOptions - | Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions - - module ProviderOptions - extend Stagehand::Internal::Type::Union - - type bedrock_api_key_provider_options = { region: String } - - class BedrockAPIKeyProviderOptions < Stagehand::Internal::Type::BaseModel - attr_accessor region: String - - def initialize: (region: String) -> void - - def to_hash: -> { region: String } - end - - type bedrock_aws_credentials_provider_options = - { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - - class BedrockAwsCredentialsProviderOptions < Stagehand::Internal::Type::BaseModel - attr_accessor access_key_id: String - - attr_accessor region: String - - attr_accessor secret_access_key: String - - attr_reader session_token: String? - - def session_token=: (String) -> String - - def initialize: ( - access_key_id: String, - region: String, - secret_access_key: String, - ?session_token: String - ) -> void - - def to_hash: -> { - access_key_id: String, - region: String, - secret_access_key: String, - session_token: String - } - end - - type google_vertex_provider_options = - { - google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - headers: ::Hash[Symbol, String], - location: String, - project: String - } - - class GoogleVertexProviderOptions < Stagehand::Internal::Type::BaseModel - attr_reader google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions? - - def google_auth_options=: ( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - ) -> Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions - - attr_reader headers: ::Hash[Symbol, String]? - - def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - - attr_reader location: String? - - def location=: (String) -> String - - attr_reader project: String? - - def project=: (String) -> String - - def initialize: ( - ?google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - ?headers: ::Hash[Symbol, String], - ?location: String, - ?project: String - ) -> void - - def to_hash: -> { - google_auth_options: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions, - headers: ::Hash[Symbol, String], - location: String, - project: String - } - - type google_auth_options = - { - credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - } - - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - attr_reader credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials? - - def credentials=: ( - Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - ) -> Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - - def initialize: ( - ?credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - ) -> void - - def to_hash: -> { - credentials: Stagehand::SessionStartParams::ModelClientOptions::GenericModelClientOptions::ProviderOptions::GoogleVertexProviderOptions::GoogleAuthOptions::Credentials - } - - type credentials = - { - :auth_provider_x509_cert_url => String, - auth_uri: String, - client_email: String, - client_id: String, - :client_x509_cert_url => String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - } - - class Credentials < Stagehand::Internal::Type::BaseModel - attr_reader auth_provider_x509_cert_url: String? - - def auth_provider_x509_cert_url=: (String) -> String - - attr_reader auth_uri: String? - - def auth_uri=: (String) -> String - - attr_reader client_email: String? - - def client_email=: (String) -> String - - attr_reader client_id: String? - - def client_id=: (String) -> String - - attr_reader client_x509_cert_url: String? - - def client_x509_cert_url=: (String) -> String - - attr_reader private_key: String? - - def private_key=: (String) -> String - - attr_reader private_key_id: String? - - def private_key_id=: (String) -> String - - attr_reader project_id: String? - - def project_id=: (String) -> String - - attr_reader token_uri: String? - - def token_uri=: (String) -> String - - attr_reader type: String? - - def type=: (String) -> String - - attr_reader universe_domain: String? - - def universe_domain=: (String) -> String - - def initialize: ( - ?auth_provider_x509_cert_url: String, - ?auth_uri: String, - ?client_email: String, - ?client_id: String, - ?client_x509_cert_url: String, - ?private_key: String, - ?private_key_id: String, - ?project_id: String, - ?token_uri: String, - ?type: String, - ?universe_domain: String - ) -> void - - def to_hash: -> { - :auth_provider_x509_cert_url => String, - auth_uri: String, - client_email: String, - client_id: String, - :client_x509_cert_url => String, - private_key: String, - private_key_id: String, - project_id: String, - token_uri: String, - type: String, - universe_domain: String - } - end - end - end - - def self?.variants: -> ::Array[Stagehand::Models::SessionStartParams::ModelClientOptions::GenericModelClientOptions::provider_options] - end - end - - def self?.variants: -> ::Array[Stagehand::Models::SessionStartParams::model_client_options] - end - type verbose = Float module Verbose diff --git a/sig/stagehand/resources/sessions.rbs b/sig/stagehand/resources/sessions.rbs index 584cea2..cc450b6 100644 --- a/sig/stagehand/resources/sessions.rbs +++ b/sig/stagehand/resources/sessions.rbs @@ -107,7 +107,6 @@ module Stagehand ?browserbase_session_id: String, ?dom_settle_timeout_ms: Float, ?experimental: bool, - ?model_client_options: Stagehand::Models::SessionStartParams::model_client_options, ?self_heal: bool, ?system_prompt: String, ?verbose: Stagehand::Models::SessionStartParams::verbose, From ee6edc874583cbf0a928a422944a483e168b6eb4 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 9 Apr 2026 20:32:53 +0000 Subject: [PATCH 6/6] release: 3.20.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 15 +++++++++++++++ Gemfile.lock | 2 +- lib/stagehand/version.rb | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 911c623..d11c8fc 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.19.3" + ".": "3.20.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 951b097..5e0efeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## 3.20.0 (2026-04-09) + +Full Changelog: [v3.19.3...v3.20.0](https://github.com/browserbase/stagehand-ruby/compare/v3.19.3...v3.20.0) + +### Features + +* [STG-1798] feat: support Browserbase verified sessions ([9647eb3](https://github.com/browserbase/stagehand-ruby/commit/9647eb3a4df86cc9d7aedb2f0a9ddd0babd39565)) +* Bedrock auth passthrough ([5cb6ecb](https://github.com/browserbase/stagehand-ruby/commit/5cb6ecbe621e894dc6c5aec379fdca1183eec4fc)) +* Revert "[STG-1573] Add providerOptions for extensible model auth ([#1822](https://github.com/browserbase/stagehand-ruby/issues/1822))" ([0c83a09](https://github.com/browserbase/stagehand-ruby/commit/0c83a0978116f8fc11a4edf78586f3d61b8af5e8)) + + +### Bug Fixes + +* multipart encoding for file arrays ([149b303](https://github.com/browserbase/stagehand-ruby/commit/149b303eb54f4c9af037a5e073a2d6c92d959b44)) + ## 3.19.3 (2026-04-03) Full Changelog: [v3.18.0...v3.19.3](https://github.com/browserbase/stagehand-ruby/compare/v3.18.0...v3.19.3) diff --git a/Gemfile.lock b/Gemfile.lock index a02c554..4490644 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - stagehand (3.19.3) + stagehand (3.20.0) cgi connection_pool diff --git a/lib/stagehand/version.rb b/lib/stagehand/version.rb index b4bbb16..2fbf718 100644 --- a/lib/stagehand/version.rb +++ b/lib/stagehand/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Stagehand - VERSION = "3.19.3" + VERSION = "3.20.0" end