diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7356e9e..bd96cf7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,9 +26,9 @@ jobs: github.repository == 'stainless-sdks/stagehand-ruby' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata') steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Ruby - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0 with: bundler-cache: false - run: |- @@ -39,7 +39,7 @@ jobs: github.repository == 'stainless-sdks/stagehand-ruby' && !startsWith(github.ref, 'refs/heads/stl/') id: github-oidc - uses: actions/github-script@v8 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: core.setOutput('github_token', await core.getIDToken()); @@ -60,9 +60,9 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Ruby - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0 with: bundler-cache: false - run: |- @@ -76,9 +76,9 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/stagehand-ruby' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Ruby - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0 with: bundler-cache: false - run: |- diff --git a/.github/workflows/publish-gem.yml b/.github/workflows/publish-gem.yml index 160f82b..c47e5b8 100644 --- a/.github/workflows/publish-gem.yml +++ b/.github/workflows/publish-gem.yml @@ -14,9 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set up Ruby - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0 with: bundler-cache: false - run: |- diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index 801df3e..e75d806 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -12,7 +12,7 @@ jobs: if: github.repository == 'browserbase/stagehand-ruby' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Check release environment run: | diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d11c8fc..eba8a04 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.20.0" + ".": "3.21.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 391cde3..15099ca 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/stagehand-6f6bfb81d092f30a5e2005328c97d61b9ea36132bb19e9e79e55294b9534ce20.yml -openapi_spec_hash: f3fc1e3688a38dc2c28f7178f7d534e5 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/stagehand-c7910965e66e73ad8b65b6cc391d431094b2a6c6577c3e9d82feaa8138e74cff.yml +openapi_spec_hash: 37748bb69c22a9ce721d9b5a5861f964 config_hash: 1fb12ae9b478488bc1e56bfbdc210b01 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd0ed0..8cf228c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 3.21.0 (2026-05-27) + +Full Changelog: [v3.20.0...v3.21.0](https://github.com/browserbase/stagehand-ruby/compare/v3.20.0...v3.21.0) + +### Features + +* [feat]: add `ignoreSelectors` to `observe()` ([0acc093](https://github.com/browserbase/stagehand-ruby/commit/0acc093944e72ee488393ec1fb73dc16450cc825)) +* [STG-1756] forward Vertex model config ([f9752bc](https://github.com/browserbase/stagehand-ruby/commit/f9752bc3297bb9feef4d4b46d7faeac2a5e73335)) +* Add `screenshot` option to Extract ([7b65ca7](https://github.com/browserbase/stagehand-ruby/commit/7b65ca776e1e13c489f13991b012fa24aecc60e6)) +* STG-1756 add Vertex auth params to Stagehand spec ([4b65f22](https://github.com/browserbase/stagehand-ruby/commit/4b65f221055c7d0d3d7426845fbd0e49ba13d2df)) + + +### Bug Fixes + +* **client:** elide content type header on requests without body ([6149c11](https://github.com/browserbase/stagehand-ruby/commit/6149c11d9ab60a0cac69f1e26e3a2f42425ad616)) + ## 3.20.0 (2026-05-06) Full Changelog: [v3.19.3...v3.20.0](https://github.com/browserbase/stagehand-ruby/compare/v3.19.3...v3.20.0) diff --git a/Gemfile.lock b/Gemfile.lock index 4490644..adcbab3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - stagehand (3.20.0) + stagehand (3.21.0) cgi connection_pool diff --git a/lib/stagehand/internal/transport/base_client.rb b/lib/stagehand/internal/transport/base_client.rb index 54200c4..9b452d3 100644 --- a/lib/stagehand/internal/transport/base_client.rb +++ b/lib/stagehand/internal/transport/base_client.rb @@ -306,6 +306,8 @@ def initialize( Stagehand::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact) end + headers.delete("content-type") if body.nil? + url = Stagehand::Internal::Util.join_parsed_uri( @base_url_components, {**req, path: path, query: query} diff --git a/lib/stagehand/internal/type/union.rb b/lib/stagehand/internal/type/union.rb index 14b9cfe..aac57d0 100644 --- a/lib/stagehand/internal/type/union.rb +++ b/lib/stagehand/internal/type/union.rb @@ -4,6 +4,17 @@ module Stagehand module Internal module Type # @api private + # + # @example + # # `model_config` is a `Stagehand::ModelConfig` + # case model_config + # when Stagehand::ModelConfig::VertexModelConfigObject + # puts(model_config.auth) + # when Stagehand::ModelConfig::GenericModelConfigObject + # puts(model_config.model_name) + # else + # puts(model_config) + # end module Union include Stagehand::Internal::Type::Converter include Stagehand::Internal::Util::SorbetRuntimeSupport diff --git a/lib/stagehand/models/model_config.rb b/lib/stagehand/models/model_config.rb index 806ca18..92281b1 100644 --- a/lib/stagehand/models/model_config.rb +++ b/lib/stagehand/models/model_config.rb @@ -2,63 +2,333 @@ module Stagehand module Models - class ModelConfig < Stagehand::Internal::Type::BaseModel - # @!attribute model_name - # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') - # - # @return [String] - required :model_name, String, api_name: :modelName - - # @!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 sent with every request to the model provider - # - # @return [Hash{Symbol=>String}, nil] - optional :headers, Stagehand::Internal::Type::HashOf[String] - - # @!attribute provider - # AI provider for the model (or provide a baseURL endpoint instead) - # - # @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) - # @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 provider [Symbol, Stagehand::Models::ModelConfig::Provider] AI provider for the model (or provide a baseURL endpoint instead) - - # AI provider for the model (or provide a baseURL endpoint instead) - # - # @see Stagehand::Models::ModelConfig#provider - module Provider - extend Stagehand::Internal::Type::Enum - - OPENAI = :openai - ANTHROPIC = :anthropic - GOOGLE = :google - MICROSOFT = :microsoft - BEDROCK = :bedrock - - # @!method self.values - # @return [Array] + module ModelConfig + extend Stagehand::Internal::Type::Union + + variant -> { Stagehand::ModelConfig::VertexModelConfigObject } + + variant -> { Stagehand::ModelConfig::GenericModelConfigObject } + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute auth + # Vertex provider authentication configuration + # + # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth] + required :auth, -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth } + + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!attribute provider + # Vertex AI model provider + # + # @return [Symbol, :vertex] + required :provider, const: :vertex + + # @!attribute provider_options + # Vertex provider-specific model configuration + # + # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions] + required :provider_options, + -> { Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions }, + api_name: :providerOptions + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex) + # @param auth [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth] Vertex provider authentication configuration + # + # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @param provider_options [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration + # + # @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 provider [Symbol, :vertex] Vertex AI model provider + + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject#auth + class Auth < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials + # + # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials] + required :credentials, -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials } + + # @!attribute type + # Use inline Google Cloud service account credentials for provider authentication + # + # @return [Symbol, :googleServiceAccount] + required :type, const: :googleServiceAccount + + # @!attribute project_id + # Google Cloud project ID used by google-auth-library + # + # @return [String, nil] + optional :project_id, String, api_name: :projectId + + # @!attribute scopes + # Google auth scopes for the desired API request + # + # @return [String, Array, nil] + optional :scopes, union: -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes } + + # @!attribute universe_domain + # Google Cloud universe domain + # + # @return [String, nil] + optional :universe_domain, String, api_name: :universeDomain + + # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount) + # Vertex provider authentication configuration + # + # @param credentials [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials + # + # @param project_id [String] Google Cloud project ID used by google-auth-library + # + # @param scopes [String, Array] Google auth scopes for the desired API request + # + # @param universe_domain [String] Google Cloud universe domain + # + # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication + + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute client_email + # + # @return [String] + required :client_email, String + + # @!attribute private_key + # + # @return [String] + required :private_key, String + + # @!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_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_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 [Symbol, Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type, nil] + optional :type, enum: -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type } + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(client_email:, private_key:, auth_provider_x509_cert_url: nil, auth_uri: nil, client_id: nil, client_x509_cert_url: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # Google Cloud service account credentials + # + # @param client_email [String] + # @param private_key [String] + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [Symbol, Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type] + # @param universe_domain [String] + + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials#type + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT = :service_account + + # @!method self.values + # @return [Array] + end + end + + # Google auth scopes for the desired API request + # + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth#scopes + module Scopes + extend Stagehand::Internal::Type::Union + + variant String + + variant -> { Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Scopes::StringArray } + + # @!method self.variants + # @return [Array(String, Array)] + + # @type [Stagehand::Internal::Type::Converter] + StringArray = Stagehand::Internal::Type::ArrayOf[String] + end + end + + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute vertex + # Vertex AI provider-specific settings + # + # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex] + required :vertex, -> { Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex } + + # @!method initialize(vertex:) + # Vertex provider-specific model configuration + # + # @param vertex [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings + + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions#vertex + class Vertex < Stagehand::Internal::Type::BaseModel + # @!attribute location + # Google Cloud location for Vertex AI models + # + # @return [String] + required :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI models + # + # @return [String] + required :project, String + + # @!attribute base_url + # Base URL for the Vertex AI provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers sent with every request to the Vertex AI provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(location:, project:, base_url: nil, headers: nil) + # Vertex AI provider-specific settings + # + # @param location [String] Google Cloud location for Vertex AI models + # + # @param project [String] Google Cloud project ID for Vertex AI models + # + # @param base_url [String] Base URL for the Vertex AI provider + # + # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider + end + end end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute provider + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @return [Symbol, Stagehand::Models::ModelConfig::GenericModelConfigObject::Provider, nil] + optional :provider, enum: -> { Stagehand::ModelConfig::GenericModelConfigObject::Provider } + + # @!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 sent with every request to the model provider + # + # @param provider [Symbol, Stagehand::Models::ModelConfig::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead) + + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @see Stagehand::Models::ModelConfig::GenericModelConfigObject#provider + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI = :openai + ANTHROPIC = :anthropic + GOOGLE = :google + MICROSOFT = :microsoft + BEDROCK = :bedrock + + # @!method self.values + # @return [Array] + end + end + + # @!method self.variants + # @return [Array(Stagehand::Models::ModelConfig::VertexModelConfigObject, Stagehand::Models::ModelConfig::GenericModelConfigObject)] end end end diff --git a/lib/stagehand/models/session_act_params.rb b/lib/stagehand/models/session_act_params.rb index ae7488b..9ed0570 100644 --- a/lib/stagehand/models/session_act_params.rb +++ b/lib/stagehand/models/session_act_params.rb @@ -68,7 +68,7 @@ class Options < Stagehand::Internal::Type::BaseModel # @!attribute model # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') # - # @return [Stagehand::Models::ModelConfig, String, nil] + # @return [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject, String, nil] optional :model, union: -> { Stagehand::SessionActParams::Options::Model } # @!attribute timeout @@ -89,7 +89,7 @@ class Options < Stagehand::Internal::Type::BaseModel # Some parameter documentations has been truncated, see # {Stagehand::Models::SessionActParams::Options} for more details. # - # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') + # @param model [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') # # @param timeout [Float] Timeout in ms for the action # @@ -101,12 +101,339 @@ class Options < Stagehand::Internal::Type::BaseModel module Model extend Stagehand::Internal::Type::Union - variant -> { Stagehand::ModelConfig } + variant -> { Stagehand::SessionActParams::Options::Model::VertexModelConfigObject } + + variant -> { Stagehand::SessionActParams::Options::Model::GenericModelConfigObject } variant String + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute auth + # Vertex provider authentication configuration + # + # @return [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth] + required :auth, -> { Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth } + + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!attribute provider + # Vertex AI model provider + # + # @return [Symbol, :vertex] + required :provider, const: :vertex + + # @!attribute provider_options + # Vertex provider-specific model configuration + # + # @return [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions] + required :provider_options, + -> { + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions + }, + api_name: :providerOptions + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex) + # @param auth [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth] Vertex provider authentication configuration + # + # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @param provider_options [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration + # + # @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 provider [Symbol, :vertex] Vertex AI model provider + + # @see Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject#auth + class Auth < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials + # + # @return [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials] + required :credentials, + -> { Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials } + + # @!attribute type + # Use inline Google Cloud service account credentials for provider authentication + # + # @return [Symbol, :googleServiceAccount] + required :type, const: :googleServiceAccount + + # @!attribute project_id + # Google Cloud project ID used by google-auth-library + # + # @return [String, nil] + optional :project_id, String, api_name: :projectId + + # @!attribute scopes + # Google auth scopes for the desired API request + # + # @return [String, Array, nil] + optional :scopes, + union: -> { Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Scopes } + + # @!attribute universe_domain + # Google Cloud universe domain + # + # @return [String, nil] + optional :universe_domain, String, api_name: :universeDomain + + # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount) + # Vertex provider authentication configuration + # + # @param credentials [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials + # + # @param project_id [String] Google Cloud project ID used by google-auth-library + # + # @param scopes [String, Array] Google auth scopes for the desired API request + # + # @param universe_domain [String] Google Cloud universe domain + # + # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication + + # @see Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute client_email + # + # @return [String] + required :client_email, String + + # @!attribute private_key + # + # @return [String] + required :private_key, String + + # @!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_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_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 [Symbol, Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type, nil] + optional :type, + enum: -> { Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type } + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(client_email:, private_key:, auth_provider_x509_cert_url: nil, auth_uri: nil, client_id: nil, client_x509_cert_url: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # Google Cloud service account credentials + # + # @param client_email [String] + # @param private_key [String] + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [Symbol, Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type] + # @param universe_domain [String] + + # @see Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials#type + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT = :service_account + + # @!method self.values + # @return [Array] + end + end + + # Google auth scopes for the desired API request + # + # @see Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth#scopes + module Scopes + extend Stagehand::Internal::Type::Union + + variant String + + variant -> { Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Scopes::StringArray } + + # @!method self.variants + # @return [Array(String, Array)] + + # @type [Stagehand::Internal::Type::Converter] + StringArray = Stagehand::Internal::Type::ArrayOf[String] + end + end + + # @see Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute vertex + # Vertex AI provider-specific settings + # + # @return [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] + required :vertex, + -> { Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex } + + # @!method initialize(vertex:) + # Vertex provider-specific model configuration + # + # @param vertex [Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings + + # @see Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions#vertex + class Vertex < Stagehand::Internal::Type::BaseModel + # @!attribute location + # Google Cloud location for Vertex AI models + # + # @return [String] + required :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI models + # + # @return [String] + required :project, String + + # @!attribute base_url + # Base URL for the Vertex AI provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers sent with every request to the Vertex AI provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(location:, project:, base_url: nil, headers: nil) + # Vertex AI provider-specific settings + # + # @param location [String] Google Cloud location for Vertex AI models + # + # @param project [String] Google Cloud project ID for Vertex AI models + # + # @param base_url [String] Base URL for the Vertex AI provider + # + # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute provider + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @return [Symbol, Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::Provider, nil] + optional :provider, + enum: -> { Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider } + + # @!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 sent with every request to the model provider + # + # @param provider [Symbol, Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead) + + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @see Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject#provider + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI = :openai + ANTHROPIC = :anthropic + GOOGLE = :google + MICROSOFT = :microsoft + BEDROCK = :bedrock + + # @!method self.values + # @return [Array] + end + end + # @!method self.variants - # @return [Array(Stagehand::Models::ModelConfig, String)] + # @return [Array(Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject, String)] end module Variable diff --git a/lib/stagehand/models/session_execute_params.rb b/lib/stagehand/models/session_execute_params.rb index 549fbc5..d71e506 100644 --- a/lib/stagehand/models/session_execute_params.rb +++ b/lib/stagehand/models/session_execute_params.rb @@ -73,7 +73,7 @@ class AgentConfig < Stagehand::Internal::Type::BaseModel # tool execution (observe/act calls within agent tools). If not specified, # inherits from the main model configuration. # - # @return [Stagehand::Models::ModelConfig, String, nil] + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject, Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject, String, nil] optional :execution_model, union: -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel }, api_name: :executionModel @@ -87,7 +87,7 @@ class AgentConfig < Stagehand::Internal::Type::BaseModel # @!attribute model # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') # - # @return [Stagehand::Models::ModelConfig, String, nil] + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject, Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject, String, nil] optional :model, union: -> { Stagehand::SessionExecuteParams::AgentConfig::Model } # @!attribute provider @@ -108,11 +108,11 @@ class AgentConfig < Stagehand::Internal::Type::BaseModel # # @param cua [Boolean] Deprecated. Use mode: 'cua' instead. If both are provided, mode takes precedence # - # @param execution_model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') for + # @param execution_model [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject, Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') for # # @param mode [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Mode] Tool mode for the agent (dom, hybrid, cua). If set, overrides cua. # - # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') + # @param model [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject, Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') # # @param provider [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Provider] AI provider for the agent (legacy, use model: openai/gpt-5-nano instead) # @@ -126,12 +126,340 @@ class AgentConfig < Stagehand::Internal::Type::BaseModel module ExecutionModel extend Stagehand::Internal::Type::Union - variant -> { Stagehand::ModelConfig } + variant -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject } + + variant -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject } variant String + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute auth + # Vertex provider authentication configuration + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth] + required :auth, + -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth } + + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!attribute provider + # Vertex AI model provider + # + # @return [Symbol, :vertex] + required :provider, const: :vertex + + # @!attribute provider_options + # Vertex provider-specific model configuration + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions] + required :provider_options, + -> { + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions + }, + api_name: :providerOptions + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex) + # @param auth [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth] Vertex provider authentication configuration + # + # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @param provider_options [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration + # + # @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 provider [Symbol, :vertex] Vertex AI model provider + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject#auth + class Auth < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials] + required :credentials, + -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials } + + # @!attribute type + # Use inline Google Cloud service account credentials for provider authentication + # + # @return [Symbol, :googleServiceAccount] + required :type, const: :googleServiceAccount + + # @!attribute project_id + # Google Cloud project ID used by google-auth-library + # + # @return [String, nil] + optional :project_id, String, api_name: :projectId + + # @!attribute scopes + # Google auth scopes for the desired API request + # + # @return [String, Array, nil] + optional :scopes, + union: -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes } + + # @!attribute universe_domain + # Google Cloud universe domain + # + # @return [String, nil] + optional :universe_domain, String, api_name: :universeDomain + + # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount) + # Vertex provider authentication configuration + # + # @param credentials [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials + # + # @param project_id [String] Google Cloud project ID used by google-auth-library + # + # @param scopes [String, Array] Google auth scopes for the desired API request + # + # @param universe_domain [String] Google Cloud universe domain + # + # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute client_email + # + # @return [String] + required :client_email, String + + # @!attribute private_key + # + # @return [String] + required :private_key, String + + # @!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_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_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 [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type, nil] + optional :type, + enum: -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type } + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(client_email:, private_key:, auth_provider_x509_cert_url: nil, auth_uri: nil, client_id: nil, client_x509_cert_url: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # Google Cloud service account credentials + # + # @param client_email [String] + # @param private_key [String] + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type] + # @param universe_domain [String] + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials#type + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT = :service_account + + # @!method self.values + # @return [Array] + end + end + + # Google auth scopes for the desired API request + # + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth#scopes + module Scopes + extend Stagehand::Internal::Type::Union + + variant String + + variant -> { Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::StringArray } + + # @!method self.variants + # @return [Array(String, Array)] + + # @type [Stagehand::Internal::Type::Converter] + StringArray = Stagehand::Internal::Type::ArrayOf[String] + end + end + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute vertex + # Vertex AI provider-specific settings + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex] + required :vertex, + -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex } + + # @!method initialize(vertex:) + # Vertex provider-specific model configuration + # + # @param vertex [Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions#vertex + class Vertex < Stagehand::Internal::Type::BaseModel + # @!attribute location + # Google Cloud location for Vertex AI models + # + # @return [String] + required :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI models + # + # @return [String] + required :project, String + + # @!attribute base_url + # Base URL for the Vertex AI provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers sent with every request to the Vertex AI provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(location:, project:, base_url: nil, headers: nil) + # Vertex AI provider-specific settings + # + # @param location [String] Google Cloud location for Vertex AI models + # + # @param project [String] Google Cloud project ID for Vertex AI models + # + # @param base_url [String] Base URL for the Vertex AI provider + # + # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute provider + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @return [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider, nil] + optional :provider, + enum: -> { Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider } + + # @!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 sent with every request to the model provider + # + # @param provider [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead) + + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject#provider + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI = :openai + ANTHROPIC = :anthropic + GOOGLE = :google + MICROSOFT = :microsoft + BEDROCK = :bedrock + + # @!method self.values + # @return [Array] + end + end + # @!method self.variants - # @return [Array(Stagehand::Models::ModelConfig, String)] + # @return [Array(Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject, Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject, String)] end # Tool mode for the agent (dom, hybrid, cua). If set, overrides cua. @@ -154,12 +482,339 @@ module Mode module Model extend Stagehand::Internal::Type::Union - variant -> { Stagehand::ModelConfig } + variant -> { Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject } + + variant -> { Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject } variant String + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute auth + # Vertex provider authentication configuration + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth] + required :auth, -> { Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth } + + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!attribute provider + # Vertex AI model provider + # + # @return [Symbol, :vertex] + required :provider, const: :vertex + + # @!attribute provider_options + # Vertex provider-specific model configuration + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions] + required :provider_options, + -> { + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions + }, + api_name: :providerOptions + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex) + # @param auth [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth] Vertex provider authentication configuration + # + # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @param provider_options [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration + # + # @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 provider [Symbol, :vertex] Vertex AI model provider + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject#auth + class Auth < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials] + required :credentials, + -> { Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials } + + # @!attribute type + # Use inline Google Cloud service account credentials for provider authentication + # + # @return [Symbol, :googleServiceAccount] + required :type, const: :googleServiceAccount + + # @!attribute project_id + # Google Cloud project ID used by google-auth-library + # + # @return [String, nil] + optional :project_id, String, api_name: :projectId + + # @!attribute scopes + # Google auth scopes for the desired API request + # + # @return [String, Array, nil] + optional :scopes, + union: -> { Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes } + + # @!attribute universe_domain + # Google Cloud universe domain + # + # @return [String, nil] + optional :universe_domain, String, api_name: :universeDomain + + # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount) + # Vertex provider authentication configuration + # + # @param credentials [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials + # + # @param project_id [String] Google Cloud project ID used by google-auth-library + # + # @param scopes [String, Array] Google auth scopes for the desired API request + # + # @param universe_domain [String] Google Cloud universe domain + # + # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute client_email + # + # @return [String] + required :client_email, String + + # @!attribute private_key + # + # @return [String] + required :private_key, String + + # @!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_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_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 [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type, nil] + optional :type, + enum: -> { Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type } + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(client_email:, private_key:, auth_provider_x509_cert_url: nil, auth_uri: nil, client_id: nil, client_x509_cert_url: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # Google Cloud service account credentials + # + # @param client_email [String] + # @param private_key [String] + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type] + # @param universe_domain [String] + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials#type + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT = :service_account + + # @!method self.values + # @return [Array] + end + end + + # Google auth scopes for the desired API request + # + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth#scopes + module Scopes + extend Stagehand::Internal::Type::Union + + variant String + + variant -> { Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::StringArray } + + # @!method self.variants + # @return [Array(String, Array)] + + # @type [Stagehand::Internal::Type::Converter] + StringArray = Stagehand::Internal::Type::ArrayOf[String] + end + end + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute vertex + # Vertex AI provider-specific settings + # + # @return [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex] + required :vertex, + -> { Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex } + + # @!method initialize(vertex:) + # Vertex provider-specific model configuration + # + # @param vertex [Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings + + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions#vertex + class Vertex < Stagehand::Internal::Type::BaseModel + # @!attribute location + # Google Cloud location for Vertex AI models + # + # @return [String] + required :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI models + # + # @return [String] + required :project, String + + # @!attribute base_url + # Base URL for the Vertex AI provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers sent with every request to the Vertex AI provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(location:, project:, base_url: nil, headers: nil) + # Vertex AI provider-specific settings + # + # @param location [String] Google Cloud location for Vertex AI models + # + # @param project [String] Google Cloud project ID for Vertex AI models + # + # @param base_url [String] Base URL for the Vertex AI provider + # + # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute provider + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @return [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider, nil] + optional :provider, + enum: -> { Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider } + + # @!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 sent with every request to the model provider + # + # @param provider [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead) + + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @see Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject#provider + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI = :openai + ANTHROPIC = :anthropic + GOOGLE = :google + MICROSOFT = :microsoft + BEDROCK = :bedrock + + # @!method self.values + # @return [Array] + end + end + # @!method self.variants - # @return [Array(Stagehand::Models::ModelConfig, String)] + # @return [Array(Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject, Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject, String)] end # AI provider for the agent (legacy, use model: openai/gpt-5-nano instead) diff --git a/lib/stagehand/models/session_extract_params.rb b/lib/stagehand/models/session_extract_params.rb index 1b304fb..ae043c3 100644 --- a/lib/stagehand/models/session_extract_params.rb +++ b/lib/stagehand/models/session_extract_params.rb @@ -69,9 +69,16 @@ class Options < Stagehand::Internal::Type::BaseModel # @!attribute model # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') # - # @return [Stagehand::Models::ModelConfig, String, nil] + # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject, String, nil] optional :model, union: -> { Stagehand::SessionExtractParams::Options::Model } + # @!attribute screenshot + # When true, include a screenshot of the current viewport in the extraction LLM + # call. Defaults to false. + # + # @return [Boolean, nil] + optional :screenshot, Stagehand::Internal::Type::Boolean + # @!attribute selector # CSS selector to scope extraction to a specific element # @@ -84,10 +91,15 @@ class Options < Stagehand::Internal::Type::BaseModel # @return [Float, nil] optional :timeout, Float - # @!method initialize(ignore_selectors: nil, model: nil, selector: nil, timeout: nil) + # @!method initialize(ignore_selectors: nil, model: nil, screenshot: nil, selector: nil, timeout: nil) + # Some parameter documentations has been truncated, see + # {Stagehand::Models::SessionExtractParams::Options} for more details. + # # @param ignore_selectors [Array] Selectors for elements and subtrees that should be excluded from extraction # - # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') + # @param model [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') + # + # @param screenshot [Boolean] When true, include a screenshot of the current viewport in the extraction LLM ca # # @param selector [String] CSS selector to scope extraction to a specific element # @@ -99,12 +111,339 @@ class Options < Stagehand::Internal::Type::BaseModel module Model extend Stagehand::Internal::Type::Union - variant -> { Stagehand::ModelConfig } + variant -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject } + + variant -> { Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject } variant String + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute auth + # Vertex provider authentication configuration + # + # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth] + required :auth, -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth } + + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!attribute provider + # Vertex AI model provider + # + # @return [Symbol, :vertex] + required :provider, const: :vertex + + # @!attribute provider_options + # Vertex provider-specific model configuration + # + # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions] + required :provider_options, + -> { + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions + }, + api_name: :providerOptions + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex) + # @param auth [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth] Vertex provider authentication configuration + # + # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @param provider_options [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration + # + # @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 provider [Symbol, :vertex] Vertex AI model provider + + # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject#auth + class Auth < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials + # + # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials] + required :credentials, + -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials } + + # @!attribute type + # Use inline Google Cloud service account credentials for provider authentication + # + # @return [Symbol, :googleServiceAccount] + required :type, const: :googleServiceAccount + + # @!attribute project_id + # Google Cloud project ID used by google-auth-library + # + # @return [String, nil] + optional :project_id, String, api_name: :projectId + + # @!attribute scopes + # Google auth scopes for the desired API request + # + # @return [String, Array, nil] + optional :scopes, + union: -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes } + + # @!attribute universe_domain + # Google Cloud universe domain + # + # @return [String, nil] + optional :universe_domain, String, api_name: :universeDomain + + # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount) + # Vertex provider authentication configuration + # + # @param credentials [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials + # + # @param project_id [String] Google Cloud project ID used by google-auth-library + # + # @param scopes [String, Array] Google auth scopes for the desired API request + # + # @param universe_domain [String] Google Cloud universe domain + # + # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication + + # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute client_email + # + # @return [String] + required :client_email, String + + # @!attribute private_key + # + # @return [String] + required :private_key, String + + # @!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_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_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 [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type, nil] + optional :type, + enum: -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type } + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(client_email:, private_key:, auth_provider_x509_cert_url: nil, auth_uri: nil, client_id: nil, client_x509_cert_url: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # Google Cloud service account credentials + # + # @param client_email [String] + # @param private_key [String] + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type] + # @param universe_domain [String] + + # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials#type + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT = :service_account + + # @!method self.values + # @return [Array] + end + end + + # Google auth scopes for the desired API request + # + # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth#scopes + module Scopes + extend Stagehand::Internal::Type::Union + + variant String + + variant -> { Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::StringArray } + + # @!method self.variants + # @return [Array(String, Array)] + + # @type [Stagehand::Internal::Type::Converter] + StringArray = Stagehand::Internal::Type::ArrayOf[String] + end + end + + # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute vertex + # Vertex AI provider-specific settings + # + # @return [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] + required :vertex, + -> { Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex } + + # @!method initialize(vertex:) + # Vertex provider-specific model configuration + # + # @param vertex [Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings + + # @see Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions#vertex + class Vertex < Stagehand::Internal::Type::BaseModel + # @!attribute location + # Google Cloud location for Vertex AI models + # + # @return [String] + required :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI models + # + # @return [String] + required :project, String + + # @!attribute base_url + # Base URL for the Vertex AI provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers sent with every request to the Vertex AI provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(location:, project:, base_url: nil, headers: nil) + # Vertex AI provider-specific settings + # + # @param location [String] Google Cloud location for Vertex AI models + # + # @param project [String] Google Cloud project ID for Vertex AI models + # + # @param base_url [String] Base URL for the Vertex AI provider + # + # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute provider + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @return [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider, nil] + optional :provider, + enum: -> { Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider } + + # @!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 sent with every request to the model provider + # + # @param provider [Symbol, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead) + + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @see Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject#provider + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI = :openai + ANTHROPIC = :anthropic + GOOGLE = :google + MICROSOFT = :microsoft + BEDROCK = :bedrock + + # @!method self.values + # @return [Array] + end + end + # @!method self.variants - # @return [Array(Stagehand::Models::ModelConfig, String)] + # @return [Array(Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject, String)] end end diff --git a/lib/stagehand/models/session_observe_params.rb b/lib/stagehand/models/session_observe_params.rb index b2c2f74..7ca65fe 100644 --- a/lib/stagehand/models/session_observe_params.rb +++ b/lib/stagehand/models/session_observe_params.rb @@ -52,10 +52,16 @@ class SessionObserveParams < Stagehand::Internal::Type::BaseModel # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}] class Options < Stagehand::Internal::Type::BaseModel + # @!attribute ignore_selectors + # Selectors for elements and subtrees that should be excluded from observation + # + # @return [Array, nil] + optional :ignore_selectors, Stagehand::Internal::Type::ArrayOf[String], api_name: :ignoreSelectors + # @!attribute model # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') # - # @return [Stagehand::Models::ModelConfig, String, nil] + # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject, String, nil] optional :model, union: -> { Stagehand::SessionObserveParams::Options::Model } # @!attribute selector @@ -79,11 +85,13 @@ class Options < Stagehand::Internal::Type::BaseModel optional :variables, -> { Stagehand::Internal::Type::HashOf[union: Stagehand::SessionObserveParams::Options::Variable] } - # @!method initialize(model: nil, selector: nil, timeout: nil, variables: nil) + # @!method initialize(ignore_selectors: nil, model: nil, selector: nil, timeout: nil, variables: nil) # Some parameter documentations has been truncated, see # {Stagehand::Models::SessionObserveParams::Options} for more details. # - # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') + # @param ignore_selectors [Array] Selectors for elements and subtrees that should be excluded from observation + # + # @param model [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') # # @param selector [String] CSS selector to scope observation to a specific element # @@ -97,12 +105,339 @@ class Options < Stagehand::Internal::Type::BaseModel module Model extend Stagehand::Internal::Type::Union - variant -> { Stagehand::ModelConfig } + variant -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject } + + variant -> { Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject } variant String + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute auth + # Vertex provider authentication configuration + # + # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth] + required :auth, -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth } + + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!attribute provider + # Vertex AI model provider + # + # @return [Symbol, :vertex] + required :provider, const: :vertex + + # @!attribute provider_options + # Vertex provider-specific model configuration + # + # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions] + required :provider_options, + -> { + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions + }, + api_name: :providerOptions + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(auth:, model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :vertex) + # @param auth [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth] Vertex provider authentication configuration + # + # @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @param provider_options [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration + # + # @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 provider [Symbol, :vertex] Vertex AI model provider + + # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject#auth + class Auth < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials + # + # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials] + required :credentials, + -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials } + + # @!attribute type + # Use inline Google Cloud service account credentials for provider authentication + # + # @return [Symbol, :googleServiceAccount] + required :type, const: :googleServiceAccount + + # @!attribute project_id + # Google Cloud project ID used by google-auth-library + # + # @return [String, nil] + optional :project_id, String, api_name: :projectId + + # @!attribute scopes + # Google auth scopes for the desired API request + # + # @return [String, Array, nil] + optional :scopes, + union: -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes } + + # @!attribute universe_domain + # Google Cloud universe domain + # + # @return [String, nil] + optional :universe_domain, String, api_name: :universeDomain + + # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount) + # Vertex provider authentication configuration + # + # @param credentials [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials + # + # @param project_id [String] Google Cloud project ID used by google-auth-library + # + # @param scopes [String, Array] Google auth scopes for the desired API request + # + # @param universe_domain [String] Google Cloud universe domain + # + # @param type [Symbol, :googleServiceAccount] Use inline Google Cloud service account credentials for provider authentication + + # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth#credentials + class Credentials < Stagehand::Internal::Type::BaseModel + # @!attribute client_email + # + # @return [String] + required :client_email, String + + # @!attribute private_key + # + # @return [String] + required :private_key, String + + # @!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_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_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 [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type, nil] + optional :type, + enum: -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type } + + # @!attribute universe_domain + # + # @return [String, nil] + optional :universe_domain, String + + # @!method initialize(client_email:, private_key:, auth_provider_x509_cert_url: nil, auth_uri: nil, client_id: nil, client_x509_cert_url: nil, private_key_id: nil, project_id: nil, token_uri: nil, type: nil, universe_domain: nil) + # Google Cloud service account credentials + # + # @param client_email [String] + # @param private_key [String] + # @param auth_provider_x509_cert_url [String] + # @param auth_uri [String] + # @param client_id [String] + # @param client_x509_cert_url [String] + # @param private_key_id [String] + # @param project_id [String] + # @param token_uri [String] + # @param type [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type] + # @param universe_domain [String] + + # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials#type + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT = :service_account + + # @!method self.values + # @return [Array] + end + end + + # Google auth scopes for the desired API request + # + # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth#scopes + module Scopes + extend Stagehand::Internal::Type::Union + + variant String + + variant -> { Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes::StringArray } + + # @!method self.variants + # @return [Array(String, Array)] + + # @type [Stagehand::Internal::Type::Converter] + StringArray = Stagehand::Internal::Type::ArrayOf[String] + end + end + + # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject#provider_options + class ProviderOptions < Stagehand::Internal::Type::BaseModel + # @!attribute vertex + # Vertex AI provider-specific settings + # + # @return [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] + required :vertex, + -> { Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex } + + # @!method initialize(vertex:) + # Vertex provider-specific model configuration + # + # @param vertex [Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex] Vertex AI provider-specific settings + + # @see Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions#vertex + class Vertex < Stagehand::Internal::Type::BaseModel + # @!attribute location + # Google Cloud location for Vertex AI models + # + # @return [String] + required :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI models + # + # @return [String] + required :project, String + + # @!attribute base_url + # Base URL for the Vertex AI provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL + + # @!attribute headers + # Custom headers sent with every request to the Vertex AI provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!method initialize(location:, project:, base_url: nil, headers: nil) + # Vertex AI provider-specific settings + # + # @param location [String] Google Cloud location for Vertex AI models + # + # @param project [String] Google Cloud project ID for Vertex AI models + # + # @param base_url [String] Base URL for the Vertex AI provider + # + # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Vertex AI provider + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + # + # @return [String] + required :model_name, String, api_name: :modelName + + # @!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 sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] + + # @!attribute provider + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @return [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider, nil] + optional :provider, + enum: -> { Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider } + + # @!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 sent with every request to the model provider + # + # @param provider [Symbol, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider] AI provider for the model (or provide a baseURL endpoint instead) + + # AI provider for the model (or provide a baseURL endpoint instead) + # + # @see Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject#provider + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI = :openai + ANTHROPIC = :anthropic + GOOGLE = :google + MICROSOFT = :microsoft + BEDROCK = :bedrock + + # @!method self.values + # @return [Array] + end + end + # @!method self.variants - # @return [Array(Stagehand::Models::ModelConfig, String)] + # @return [Array(Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject, String)] end module Variable diff --git a/lib/stagehand/version.rb b/lib/stagehand/version.rb index 2fbf718..bffebd2 100644 --- a/lib/stagehand/version.rb +++ b/lib/stagehand/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Stagehand - VERSION = "3.20.0" + VERSION = "3.21.0" end diff --git a/rbi/stagehand/models/model_config.rbi b/rbi/stagehand/models/model_config.rbi index 5d1bc44..d43b6d9 100644 --- a/rbi/stagehand/models/model_config.rbi +++ b/rbi/stagehand/models/model_config.rbi @@ -2,105 +2,680 @@ module Stagehand module Models - class ModelConfig < Stagehand::Internal::Type::BaseModel - OrHash = + module ModelConfig + extend Stagehand::Internal::Type::Union + + Variants = T.type_alias do - T.any(Stagehand::ModelConfig, Stagehand::Internal::AnyHash) + T.any( + Stagehand::ModelConfig::VertexModelConfigObject, + Stagehand::ModelConfig::GenericModelConfigObject + ) end - # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') - sig { returns(String) } - attr_accessor :model_name + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::VertexModelConfigObject, + Stagehand::Internal::AnyHash + ) + end - # API key for the model provider - sig { returns(T.nilable(String)) } - attr_reader :api_key + # Vertex provider authentication configuration + sig { returns(Stagehand::ModelConfig::VertexModelConfigObject::Auth) } + attr_reader :auth - sig { params(api_key: String).void } - attr_writer :api_key + sig do + params( + auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth::OrHash + ).void + end + attr_writer :auth - # Base URL for the model provider - sig { returns(T.nilable(String)) } - attr_reader :base_url + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name - sig { params(base_url: String).void } - attr_writer :base_url + # Vertex AI model provider + sig { returns(Symbol) } + attr_accessor :provider - # Custom headers sent with every request to the model provider - sig { returns(T.nilable(T::Hash[Symbol, String])) } - attr_reader :headers + # Vertex provider-specific model configuration + sig do + returns( + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions + ) + end + attr_reader :provider_options - sig { params(headers: T::Hash[Symbol, String]).void } - attr_writer :headers + sig do + params( + provider_options: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options - # AI provider for the model (or provide a baseURL endpoint instead) - sig { returns(T.nilable(Stagehand::ModelConfig::Provider::OrSymbol)) } - attr_reader :provider + # API key for the model provider + sig { returns(T.nilable(String)) } + attr_reader :api_key - sig { params(provider: Stagehand::ModelConfig::Provider::OrSymbol).void } - attr_writer :provider + sig { params(api_key: String).void } + attr_writer :api_key - sig do - params( - model_name: String, - api_key: String, - base_url: String, - headers: T::Hash[Symbol, String], - provider: Stagehand::ModelConfig::Provider::OrSymbol - ).returns(T.attached_class) - end - def self.new( - # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') - model_name:, - # API key for the model provider - api_key: nil, # Base URL for the model provider - base_url: nil, + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + # 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 - ) - end + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers - sig do - override.returns( - { + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + sig do + params( + auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth::OrHash, model_name: String, + provider_options: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::OrHash, api_key: String, base_url: String, headers: T::Hash[Symbol, String], - provider: Stagehand::ModelConfig::Provider::OrSymbol - } + provider: Symbol + ).returns(T.attached_class) + end + def self.new( + # Vertex provider authentication configuration + auth:, + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # Vertex provider-specific model configuration + provider_options:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # Custom headers sent with every request to the model provider + headers: nil, + # Vertex AI model provider + provider: :vertex ) + end + + sig do + override.returns( + { + auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth, + model_name: String, + provider: Symbol, + provider_options: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + + class Auth < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::VertexModelConfigObject::Auth, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud service account credentials + sig do + returns( + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Use inline Google Cloud service account credentials for provider authentication + sig { returns(Symbol) } + attr_accessor :type + + # Google Cloud project ID used by google-auth-library + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + # Google auth scopes for the desired API request + sig do + returns( + T.nilable( + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants + ) + ) + end + attr_reader :scopes + + sig do + params( + scopes: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants + ).void + end + attr_writer :scopes + + # Google Cloud universe domain + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Vertex provider authentication configuration + sig do + params( + credentials: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::OrHash, + project_id: String, + scopes: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String, + type: Symbol + ).returns(T.attached_class) + end + def self.new( + # Google Cloud service account credentials + credentials:, + # Google Cloud project ID used by google-auth-library + project_id: nil, + # Google auth scopes for the desired API request + scopes: nil, + # Google Cloud universe domain + universe_domain: nil, + # Use inline Google Cloud service account credentials for provider authentication + type: :googleServiceAccount + ) + end + + sig do + override.returns( + { + credentials: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials, + type: Symbol, + project_id: String, + scopes: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :client_email + + sig { returns(String) } + attr_accessor :private_key + + 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_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_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 do + returns( + T.nilable( + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ) + ) + end + attr_reader :type + + sig do + params( + type: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ).void + end + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Google Cloud service account credentials + sig do + params( + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + client_email:, + private_key:, + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + } + ) + end + def to_hash + end + + module Type + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SERVICE_ACCOUNT = + T.let( + :service_account, + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + # Google auth scopes for the desired API request + module Scopes + extend Stagehand::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Array[String]) } + + sig do + override.returns( + T::Array[ + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) + end + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Vertex AI provider-specific settings + sig do + returns( + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex + ) + end + attr_reader :vertex + + sig do + params( + vertex: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).void + end + attr_writer :vertex + + # Vertex provider-specific model configuration + sig do + params( + vertex: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).returns(T.attached_class) + end + def self.new( + # Vertex AI provider-specific settings + vertex: + ) + end + + sig do + override.returns( + { + vertex: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex + } + ) + end + def to_hash + end + + class Vertex < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud location for Vertex AI models + sig { returns(String) } + attr_accessor :location + + # Google Cloud project ID for Vertex AI models + sig { returns(String) } + attr_accessor :project + + # Base URL for the Vertex AI provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers sent with every request to the Vertex AI provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Vertex AI provider-specific settings + sig do + params( + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + ).returns(T.attached_class) + end + def self.new( + # Google Cloud location for Vertex AI models + location:, + # Google Cloud project ID for Vertex AI models + project:, + # Base URL for the Vertex AI provider + base_url: nil, + # Custom headers sent with every request to the Vertex AI provider + headers: nil + ) + end + + sig do + override.returns( + { + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + end + end end - def to_hash - end - # AI provider for the model (or provide a baseURL endpoint instead) - module Provider - extend Stagehand::Internal::Type::Enum + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::GenericModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # 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 sent with every request to 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 - TaggedSymbol = - T.type_alias { T.all(Symbol, Stagehand::ModelConfig::Provider) } - OrSymbol = T.type_alias { T.any(Symbol, String) } + # AI provider for the model (or provide a baseURL endpoint instead) + sig do + returns( + T.nilable( + Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol + ) + ) + end + attr_reader :provider - OPENAI = T.let(:openai, Stagehand::ModelConfig::Provider::TaggedSymbol) - ANTHROPIC = - T.let(:anthropic, Stagehand::ModelConfig::Provider::TaggedSymbol) - GOOGLE = T.let(:google, Stagehand::ModelConfig::Provider::TaggedSymbol) - MICROSOFT = - T.let(:microsoft, Stagehand::ModelConfig::Provider::TaggedSymbol) - BEDROCK = - T.let(:bedrock, Stagehand::ModelConfig::Provider::TaggedSymbol) + sig do + params( + provider: + Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol + ).void + end + attr_writer :provider + + sig do + params( + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # 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 + ) + end sig do override.returns( - T::Array[Stagehand::ModelConfig::Provider::TaggedSymbol] + { + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol + } ) end - def self.values + def to_hash end + + # AI provider for the model (or provide a baseURL endpoint instead) + module Provider + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::ModelConfig::GenericModelConfigObject::Provider + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OPENAI = + T.let( + :openai, + Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol + ) + ANTHROPIC = + T.let( + :anthropic, + Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol + ) + GOOGLE = + T.let( + :google, + Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol + ) + MICROSOFT = + T.let( + :microsoft, + Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol + ) + BEDROCK = + T.let( + :bedrock, + Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + sig { override.returns(T::Array[Stagehand::ModelConfig::Variants]) } + def self.variants end end end diff --git a/rbi/stagehand/models/session_act_params.rbi b/rbi/stagehand/models/session_act_params.rbi index 79e22a8..81b2454 100644 --- a/rbi/stagehand/models/session_act_params.rbi +++ b/rbi/stagehand/models/session_act_params.rbi @@ -111,11 +111,28 @@ module Stagehand end # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') - sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) } + sig do + returns( + T.nilable( + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject, + String + ) + ) + ) + end attr_reader :model sig do - params(model: T.any(Stagehand::ModelConfig::OrHash, String)).void + params( + model: + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::OrHash, + String + ) + ).void end attr_writer :model @@ -163,7 +180,12 @@ module Stagehand sig do params( - model: T.any(Stagehand::ModelConfig::OrHash, String), + model: + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::OrHash, + String + ), timeout: Float, variables: T::Hash[ @@ -191,7 +213,12 @@ module Stagehand sig do override.returns( { - model: T.any(Stagehand::ModelConfig, String), + model: + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject, + String + ), timeout: Float, variables: T::Hash[ @@ -213,7 +240,682 @@ module Stagehand module Model extend Stagehand::Internal::Type::Union - Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) } + Variants = + T.type_alias do + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject, + String + ) + end + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Vertex provider authentication configuration + sig do + returns( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth + ) + end + attr_reader :auth + + sig do + params( + auth: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::OrHash + ).void + end + attr_writer :auth + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # Vertex AI model provider + sig { returns(Symbol) } + attr_accessor :provider + + # Vertex provider-specific model configuration + sig do + returns( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options + + # 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 sent with every request to 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 + + sig do + params( + auth: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::OrHash, + model_name: String, + provider_options: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: Symbol + ).returns(T.attached_class) + end + def self.new( + # Vertex provider authentication configuration + auth:, + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # Vertex provider-specific model configuration + provider_options:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # Custom headers sent with every request to the model provider + headers: nil, + # Vertex AI model provider + provider: :vertex + ) + end + + sig do + override.returns( + { + auth: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: Symbol, + provider_options: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + + class Auth < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud service account credentials + sig do + returns( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Use inline Google Cloud service account credentials for provider authentication + sig { returns(Symbol) } + attr_accessor :type + + # Google Cloud project ID used by google-auth-library + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + # Google auth scopes for the desired API request + sig do + returns( + T.nilable( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ) + ) + end + attr_reader :scopes + + sig do + params( + scopes: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ).void + end + attr_writer :scopes + + # Google Cloud universe domain + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Vertex provider authentication configuration + sig do + params( + credentials: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash, + project_id: String, + scopes: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String, + type: Symbol + ).returns(T.attached_class) + end + def self.new( + # Google Cloud service account credentials + credentials:, + # Google Cloud project ID used by google-auth-library + project_id: nil, + # Google auth scopes for the desired API request + scopes: nil, + # Google Cloud universe domain + universe_domain: nil, + # Use inline Google Cloud service account credentials for provider authentication + type: :googleServiceAccount + ) + end + + sig do + override.returns( + { + credentials: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: Symbol, + project_id: String, + scopes: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :client_email + + sig { returns(String) } + attr_accessor :private_key + + 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_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_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 do + returns( + T.nilable( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ) + ) + end + attr_reader :type + + sig do + params( + type: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ).void + end + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Google Cloud service account credentials + sig do + params( + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + client_email:, + private_key:, + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + } + ) + end + def to_hash + end + + module Type + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SERVICE_ACCOUNT = + T.let( + :service_account, + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + # Google auth scopes for the desired API request + module Scopes + extend Stagehand::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Array[String]) } + + sig do + override.returns( + T::Array[ + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) + end + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Vertex AI provider-specific settings + sig do + returns( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) + end + attr_reader :vertex + + sig do + params( + vertex: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).void + end + attr_writer :vertex + + # Vertex provider-specific model configuration + sig do + params( + vertex: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).returns(T.attached_class) + end + def self.new( + # Vertex AI provider-specific settings + vertex: + ) + end + + sig do + override.returns( + { + vertex: + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + ) + end + def to_hash + end + + class Vertex < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud location for Vertex AI models + sig { returns(String) } + attr_accessor :location + + # Google Cloud project ID for Vertex AI models + sig { returns(String) } + attr_accessor :project + + # Base URL for the Vertex AI provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers sent with every request to the Vertex AI provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Vertex AI provider-specific settings + sig do + params( + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + ).returns(T.attached_class) + end + def self.new( + # Google Cloud location for Vertex AI models + location:, + # Google Cloud project ID for Vertex AI models + project:, + # Base URL for the Vertex AI provider + base_url: nil, + # Custom headers sent with every request to the Vertex AI provider + headers: nil + ) + end + + sig do + override.returns( + { + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # 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 sent with every request to 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 + + # AI provider for the model (or provide a baseURL endpoint instead) + sig do + returns( + T.nilable( + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ) + ) + end + attr_reader :provider + + sig do + params( + provider: + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ).void + end + attr_writer :provider + + sig do + params( + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # 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 + ) + end + + sig do + override.returns( + { + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + } + ) + end + def to_hash + end + + # AI provider for the model (or provide a baseURL endpoint instead) + module Provider + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OPENAI = + T.let( + :openai, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + ANTHROPIC = + T.let( + :anthropic, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + GOOGLE = + T.let( + :google, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + MICROSOFT = + T.let( + :microsoft, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + BEDROCK = + T.let( + :bedrock, + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionActParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ] + ) + end + def self.values + end + end + end sig do override.returns( diff --git a/rbi/stagehand/models/session_execute_params.rbi b/rbi/stagehand/models/session_execute_params.rbi index 4fafc4d..ed8174c 100644 --- a/rbi/stagehand/models/session_execute_params.rbi +++ b/rbi/stagehand/models/session_execute_params.rbi @@ -128,12 +128,27 @@ module Stagehand # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') for # tool execution (observe/act calls within agent tools). If not specified, # inherits from the main model configuration. - sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) } + sig do + returns( + T.nilable( + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject, + String + ) + ) + ) + end attr_reader :execution_model sig do params( - execution_model: T.any(Stagehand::ModelConfig::OrHash, String) + execution_model: + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::OrHash, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::OrHash, + String + ) ).void end attr_writer :execution_model @@ -156,11 +171,28 @@ module Stagehand attr_writer :mode # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') - sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) } + sig do + returns( + T.nilable( + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject, + String + ) + ) + ) + end attr_reader :model sig do - params(model: T.any(Stagehand::ModelConfig::OrHash, String)).void + params( + model: + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::OrHash, + String + ) + ).void end attr_writer :model @@ -192,9 +224,19 @@ module Stagehand sig do params( cua: T::Boolean, - execution_model: T.any(Stagehand::ModelConfig::OrHash, String), + execution_model: + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::OrHash, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::OrHash, + String + ), mode: Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol, - model: T.any(Stagehand::ModelConfig::OrHash, String), + model: + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::OrHash, + String + ), provider: Stagehand::SessionExecuteParams::AgentConfig::Provider::OrSymbol, system_prompt: String @@ -223,10 +265,20 @@ module Stagehand override.returns( { cua: T::Boolean, - execution_model: T.any(Stagehand::ModelConfig, String), + execution_model: + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject, + String + ), mode: Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol, - model: T.any(Stagehand::ModelConfig, String), + model: + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject, + String + ), provider: Stagehand::SessionExecuteParams::AgentConfig::Provider::OrSymbol, system_prompt: String @@ -242,7 +294,682 @@ module Stagehand module ExecutionModel extend Stagehand::Internal::Type::Union - Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) } + Variants = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject, + String + ) + end + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Vertex provider authentication configuration + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth + ) + end + attr_reader :auth + + sig do + params( + auth: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::OrHash + ).void + end + attr_writer :auth + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # Vertex AI model provider + sig { returns(Symbol) } + attr_accessor :provider + + # Vertex provider-specific model configuration + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options + + # 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 sent with every request to 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 + + sig do + params( + auth: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::OrHash, + model_name: String, + provider_options: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::OrHash, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: Symbol + ).returns(T.attached_class) + end + def self.new( + # Vertex provider authentication configuration + auth:, + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # Vertex provider-specific model configuration + provider_options:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # Custom headers sent with every request to the model provider + headers: nil, + # Vertex AI model provider + provider: :vertex + ) + end + + sig do + override.returns( + { + auth: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth, + model_name: String, + provider: Symbol, + provider_options: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + + class Auth < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud service account credentials + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Use inline Google Cloud service account credentials for provider authentication + sig { returns(Symbol) } + attr_accessor :type + + # Google Cloud project ID used by google-auth-library + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + # Google auth scopes for the desired API request + sig do + returns( + T.nilable( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants + ) + ) + end + attr_reader :scopes + + sig do + params( + scopes: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants + ).void + end + attr_writer :scopes + + # Google Cloud universe domain + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Vertex provider authentication configuration + sig do + params( + credentials: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::OrHash, + project_id: String, + scopes: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String, + type: Symbol + ).returns(T.attached_class) + end + def self.new( + # Google Cloud service account credentials + credentials:, + # Google Cloud project ID used by google-auth-library + project_id: nil, + # Google auth scopes for the desired API request + scopes: nil, + # Google Cloud universe domain + universe_domain: nil, + # Use inline Google Cloud service account credentials for provider authentication + type: :googleServiceAccount + ) + end + + sig do + override.returns( + { + credentials: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials, + type: Symbol, + project_id: String, + scopes: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :client_email + + sig { returns(String) } + attr_accessor :private_key + + 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_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_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 do + returns( + T.nilable( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ) + ) + end + attr_reader :type + + sig do + params( + type: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ).void + end + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Google Cloud service account credentials + sig do + params( + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + client_email:, + private_key:, + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + } + ) + end + def to_hash + end + + module Type + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SERVICE_ACCOUNT = + T.let( + :service_account, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + # Google auth scopes for the desired API request + module Scopes + extend Stagehand::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Array[String]) } + + sig do + override.returns( + T::Array[ + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) + end + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Vertex AI provider-specific settings + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex + ) + end + attr_reader :vertex + + sig do + params( + vertex: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).void + end + attr_writer :vertex + + # Vertex provider-specific model configuration + sig do + params( + vertex: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).returns(T.attached_class) + end + def self.new( + # Vertex AI provider-specific settings + vertex: + ) + end + + sig do + override.returns( + { + vertex: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex + } + ) + end + def to_hash + end + + class Vertex < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud location for Vertex AI models + sig { returns(String) } + attr_accessor :location + + # Google Cloud project ID for Vertex AI models + sig { returns(String) } + attr_accessor :project + + # Base URL for the Vertex AI provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers sent with every request to the Vertex AI provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Vertex AI provider-specific settings + sig do + params( + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + ).returns(T.attached_class) + end + def self.new( + # Google Cloud location for Vertex AI models + location:, + # Google Cloud project ID for Vertex AI models + project:, + # Base URL for the Vertex AI provider + base_url: nil, + # Custom headers sent with every request to the Vertex AI provider + headers: nil + ) + end + + sig do + override.returns( + { + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # 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 sent with every request to 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 + + # AI provider for the model (or provide a baseURL endpoint instead) + sig do + returns( + T.nilable( + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol + ) + ) + end + attr_reader :provider + + sig do + params( + provider: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol + ).void + end + attr_writer :provider + + sig do + params( + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # 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 + ) + end + + sig do + override.returns( + { + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol + } + ) + end + def to_hash + end + + # AI provider for the model (or provide a baseURL endpoint instead) + module Provider + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OPENAI = + T.let( + :openai, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol + ) + ANTHROPIC = + T.let( + :anthropic, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol + ) + GOOGLE = + T.let( + :google, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol + ) + MICROSOFT = + T.let( + :microsoft, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol + ) + BEDROCK = + T.let( + :bedrock, + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol + ] + ) + end + def self.values + end + end + end sig do override.returns( @@ -296,7 +1023,682 @@ module Stagehand module Model extend Stagehand::Internal::Type::Union - Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) } + Variants = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject, + String + ) + end + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Vertex provider authentication configuration + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth + ) + end + attr_reader :auth + + sig do + params( + auth: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::OrHash + ).void + end + attr_writer :auth + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # Vertex AI model provider + sig { returns(Symbol) } + attr_accessor :provider + + # Vertex provider-specific model configuration + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options + + # 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 sent with every request to 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 + + sig do + params( + auth: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::OrHash, + model_name: String, + provider_options: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::OrHash, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: Symbol + ).returns(T.attached_class) + end + def self.new( + # Vertex provider authentication configuration + auth:, + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # Vertex provider-specific model configuration + provider_options:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # Custom headers sent with every request to the model provider + headers: nil, + # Vertex AI model provider + provider: :vertex + ) + end + + sig do + override.returns( + { + auth: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: Symbol, + provider_options: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + + class Auth < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud service account credentials + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Use inline Google Cloud service account credentials for provider authentication + sig { returns(Symbol) } + attr_accessor :type + + # Google Cloud project ID used by google-auth-library + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + # Google auth scopes for the desired API request + sig do + returns( + T.nilable( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants + ) + ) + end + attr_reader :scopes + + sig do + params( + scopes: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants + ).void + end + attr_writer :scopes + + # Google Cloud universe domain + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Vertex provider authentication configuration + sig do + params( + credentials: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::OrHash, + project_id: String, + scopes: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String, + type: Symbol + ).returns(T.attached_class) + end + def self.new( + # Google Cloud service account credentials + credentials:, + # Google Cloud project ID used by google-auth-library + project_id: nil, + # Google auth scopes for the desired API request + scopes: nil, + # Google Cloud universe domain + universe_domain: nil, + # Use inline Google Cloud service account credentials for provider authentication + type: :googleServiceAccount + ) + end + + sig do + override.returns( + { + credentials: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials, + type: Symbol, + project_id: String, + scopes: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :client_email + + sig { returns(String) } + attr_accessor :private_key + + 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_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_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 do + returns( + T.nilable( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ) + ) + end + attr_reader :type + + sig do + params( + type: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ).void + end + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Google Cloud service account credentials + sig do + params( + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + client_email:, + private_key:, + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + } + ) + end + def to_hash + end + + module Type + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SERVICE_ACCOUNT = + T.let( + :service_account, + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + # Google auth scopes for the desired API request + module Scopes + extend Stagehand::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Array[String]) } + + sig do + override.returns( + T::Array[ + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) + end + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Vertex AI provider-specific settings + sig do + returns( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) + end + attr_reader :vertex + + sig do + params( + vertex: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).void + end + attr_writer :vertex + + # Vertex provider-specific model configuration + sig do + params( + vertex: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).returns(T.attached_class) + end + def self.new( + # Vertex AI provider-specific settings + vertex: + ) + end + + sig do + override.returns( + { + vertex: + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + ) + end + def to_hash + end + + class Vertex < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud location for Vertex AI models + sig { returns(String) } + attr_accessor :location + + # Google Cloud project ID for Vertex AI models + sig { returns(String) } + attr_accessor :project + + # Base URL for the Vertex AI provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers sent with every request to the Vertex AI provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Vertex AI provider-specific settings + sig do + params( + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + ).returns(T.attached_class) + end + def self.new( + # Google Cloud location for Vertex AI models + location:, + # Google Cloud project ID for Vertex AI models + project:, + # Base URL for the Vertex AI provider + base_url: nil, + # Custom headers sent with every request to the Vertex AI provider + headers: nil + ) + end + + sig do + override.returns( + { + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # 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 sent with every request to 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 + + # AI provider for the model (or provide a baseURL endpoint instead) + sig do + returns( + T.nilable( + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol + ) + ) + end + attr_reader :provider + + sig do + params( + provider: + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol + ).void + end + attr_writer :provider + + sig do + params( + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # 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 + ) + end + + sig do + override.returns( + { + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol + } + ) + end + def to_hash + end + + # AI provider for the model (or provide a baseURL endpoint instead) + module Provider + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OPENAI = + T.let( + :openai, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + ANTHROPIC = + T.let( + :anthropic, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + GOOGLE = + T.let( + :google, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + MICROSOFT = + T.let( + :microsoft, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + BEDROCK = + T.let( + :bedrock, + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol + ] + ) + end + def self.values + end + end + end sig do override.returns( diff --git a/rbi/stagehand/models/session_extract_params.rbi b/rbi/stagehand/models/session_extract_params.rbi index 2fc2eb4..970dce0 100644 --- a/rbi/stagehand/models/session_extract_params.rbi +++ b/rbi/stagehand/models/session_extract_params.rbi @@ -119,14 +119,39 @@ module Stagehand attr_writer :ignore_selectors # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') - sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) } + sig do + returns( + T.nilable( + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject, + String + ) + ) + ) + end attr_reader :model sig do - params(model: T.any(Stagehand::ModelConfig::OrHash, String)).void + params( + model: + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::OrHash, + String + ) + ).void end attr_writer :model + # When true, include a screenshot of the current viewport in the extraction LLM + # call. Defaults to false. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :screenshot + + sig { params(screenshot: T::Boolean).void } + attr_writer :screenshot + # CSS selector to scope extraction to a specific element sig { returns(T.nilable(String)) } attr_reader :selector @@ -144,7 +169,13 @@ module Stagehand sig do params( ignore_selectors: T::Array[String], - model: T.any(Stagehand::ModelConfig::OrHash, String), + model: + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::OrHash, + String + ), + screenshot: T::Boolean, selector: String, timeout: Float ).returns(T.attached_class) @@ -154,6 +185,9 @@ module Stagehand ignore_selectors: nil, # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') model: nil, + # When true, include a screenshot of the current viewport in the extraction LLM + # call. Defaults to false. + screenshot: nil, # CSS selector to scope extraction to a specific element selector: nil, # Timeout in ms for the extraction @@ -165,7 +199,13 @@ module Stagehand override.returns( { ignore_selectors: T::Array[String], - model: T.any(Stagehand::ModelConfig, String), + model: + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject, + String + ), + screenshot: T::Boolean, selector: String, timeout: Float } @@ -178,7 +218,682 @@ module Stagehand module Model extend Stagehand::Internal::Type::Union - Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) } + Variants = + T.type_alias do + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject, + String + ) + end + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Vertex provider authentication configuration + sig do + returns( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth + ) + end + attr_reader :auth + + sig do + params( + auth: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::OrHash + ).void + end + attr_writer :auth + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # Vertex AI model provider + sig { returns(Symbol) } + attr_accessor :provider + + # Vertex provider-specific model configuration + sig do + returns( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options + + # 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 sent with every request to 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 + + sig do + params( + auth: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::OrHash, + model_name: String, + provider_options: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: Symbol + ).returns(T.attached_class) + end + def self.new( + # Vertex provider authentication configuration + auth:, + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # Vertex provider-specific model configuration + provider_options:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # Custom headers sent with every request to the model provider + headers: nil, + # Vertex AI model provider + provider: :vertex + ) + end + + sig do + override.returns( + { + auth: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: Symbol, + provider_options: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + + class Auth < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud service account credentials + sig do + returns( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Use inline Google Cloud service account credentials for provider authentication + sig { returns(Symbol) } + attr_accessor :type + + # Google Cloud project ID used by google-auth-library + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + # Google auth scopes for the desired API request + sig do + returns( + T.nilable( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ) + ) + end + attr_reader :scopes + + sig do + params( + scopes: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ).void + end + attr_writer :scopes + + # Google Cloud universe domain + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Vertex provider authentication configuration + sig do + params( + credentials: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash, + project_id: String, + scopes: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String, + type: Symbol + ).returns(T.attached_class) + end + def self.new( + # Google Cloud service account credentials + credentials:, + # Google Cloud project ID used by google-auth-library + project_id: nil, + # Google auth scopes for the desired API request + scopes: nil, + # Google Cloud universe domain + universe_domain: nil, + # Use inline Google Cloud service account credentials for provider authentication + type: :googleServiceAccount + ) + end + + sig do + override.returns( + { + credentials: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: Symbol, + project_id: String, + scopes: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :client_email + + sig { returns(String) } + attr_accessor :private_key + + 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_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_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 do + returns( + T.nilable( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ) + ) + end + attr_reader :type + + sig do + params( + type: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ).void + end + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Google Cloud service account credentials + sig do + params( + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + client_email:, + private_key:, + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + } + ) + end + def to_hash + end + + module Type + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SERVICE_ACCOUNT = + T.let( + :service_account, + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + # Google auth scopes for the desired API request + module Scopes + extend Stagehand::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Array[String]) } + + sig do + override.returns( + T::Array[ + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) + end + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Vertex AI provider-specific settings + sig do + returns( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) + end + attr_reader :vertex + + sig do + params( + vertex: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).void + end + attr_writer :vertex + + # Vertex provider-specific model configuration + sig do + params( + vertex: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).returns(T.attached_class) + end + def self.new( + # Vertex AI provider-specific settings + vertex: + ) + end + + sig do + override.returns( + { + vertex: + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + ) + end + def to_hash + end + + class Vertex < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud location for Vertex AI models + sig { returns(String) } + attr_accessor :location + + # Google Cloud project ID for Vertex AI models + sig { returns(String) } + attr_accessor :project + + # Base URL for the Vertex AI provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers sent with every request to the Vertex AI provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Vertex AI provider-specific settings + sig do + params( + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + ).returns(T.attached_class) + end + def self.new( + # Google Cloud location for Vertex AI models + location:, + # Google Cloud project ID for Vertex AI models + project:, + # Base URL for the Vertex AI provider + base_url: nil, + # Custom headers sent with every request to the Vertex AI provider + headers: nil + ) + end + + sig do + override.returns( + { + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # 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 sent with every request to 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 + + # AI provider for the model (or provide a baseURL endpoint instead) + sig do + returns( + T.nilable( + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ) + ) + end + attr_reader :provider + + sig do + params( + provider: + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ).void + end + attr_writer :provider + + sig do + params( + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # 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 + ) + end + + sig do + override.returns( + { + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + } + ) + end + def to_hash + end + + # AI provider for the model (or provide a baseURL endpoint instead) + module Provider + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OPENAI = + T.let( + :openai, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + ANTHROPIC = + T.let( + :anthropic, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + GOOGLE = + T.let( + :google, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + MICROSOFT = + T.let( + :microsoft, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + BEDROCK = + T.let( + :bedrock, + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ] + ) + end + def self.values + end + end + end sig do override.returns( diff --git a/rbi/stagehand/models/session_observe_params.rbi b/rbi/stagehand/models/session_observe_params.rbi index ba48ed4..8bde0a2 100644 --- a/rbi/stagehand/models/session_observe_params.rbi +++ b/rbi/stagehand/models/session_observe_params.rbi @@ -100,12 +100,36 @@ module Stagehand ) end + # Selectors for elements and subtrees that should be excluded from observation + sig { returns(T.nilable(T::Array[String])) } + attr_reader :ignore_selectors + + sig { params(ignore_selectors: T::Array[String]).void } + attr_writer :ignore_selectors + # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') - sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) } + sig do + returns( + T.nilable( + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject, + String + ) + ) + ) + end attr_reader :model sig do - params(model: T.any(Stagehand::ModelConfig::OrHash, String)).void + params( + model: + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::OrHash, + String + ) + ).void end attr_writer :model @@ -161,7 +185,13 @@ module Stagehand sig do params( - model: T.any(Stagehand::ModelConfig::OrHash, String), + ignore_selectors: T::Array[String], + model: + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::OrHash, + String + ), selector: String, timeout: Float, variables: @@ -177,6 +207,8 @@ module Stagehand ).returns(T.attached_class) end def self.new( + # Selectors for elements and subtrees that should be excluded from observation + ignore_selectors: nil, # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') model: nil, # CSS selector to scope observation to a specific element @@ -193,7 +225,13 @@ module Stagehand sig do override.returns( { - model: T.any(Stagehand::ModelConfig, String), + ignore_selectors: T::Array[String], + model: + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject, + String + ), selector: String, timeout: Float, variables: @@ -216,7 +254,682 @@ module Stagehand module Model extend Stagehand::Internal::Type::Union - Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) } + Variants = + T.type_alias do + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject, + String + ) + end + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Vertex provider authentication configuration + sig do + returns( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth + ) + end + attr_reader :auth + + sig do + params( + auth: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::OrHash + ).void + end + attr_writer :auth + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # Vertex AI model provider + sig { returns(Symbol) } + attr_accessor :provider + + # Vertex provider-specific model configuration + sig do + returns( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions + ) + end + attr_reader :provider_options + + sig do + params( + provider_options: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash + ).void + end + attr_writer :provider_options + + # 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 sent with every request to 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 + + sig do + params( + auth: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::OrHash, + model_name: String, + provider_options: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: Symbol + ).returns(T.attached_class) + end + def self.new( + # Vertex provider authentication configuration + auth:, + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # Vertex provider-specific model configuration + provider_options:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # Custom headers sent with every request to the model provider + headers: nil, + # Vertex AI model provider + provider: :vertex + ) + end + + sig do + override.returns( + { + auth: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: Symbol, + provider_options: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + + class Auth < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud service account credentials + sig do + returns( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash + ).void + end + attr_writer :credentials + + # Use inline Google Cloud service account credentials for provider authentication + sig { returns(Symbol) } + attr_accessor :type + + # Google Cloud project ID used by google-auth-library + sig { returns(T.nilable(String)) } + attr_reader :project_id + + sig { params(project_id: String).void } + attr_writer :project_id + + # Google auth scopes for the desired API request + sig do + returns( + T.nilable( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ) + ) + end + attr_reader :scopes + + sig do + params( + scopes: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ).void + end + attr_writer :scopes + + # Google Cloud universe domain + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Vertex provider authentication configuration + sig do + params( + credentials: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash, + project_id: String, + scopes: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String, + type: Symbol + ).returns(T.attached_class) + end + def self.new( + # Google Cloud service account credentials + credentials:, + # Google Cloud project ID used by google-auth-library + project_id: nil, + # Google auth scopes for the desired API request + scopes: nil, + # Google Cloud universe domain + universe_domain: nil, + # Use inline Google Cloud service account credentials for provider authentication + type: :googleServiceAccount + ) + end + + sig do + override.returns( + { + credentials: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: Symbol, + project_id: String, + scopes: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String + } + ) + end + def to_hash + end + + class Credentials < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + Stagehand::Internal::AnyHash + ) + end + + sig { returns(String) } + attr_accessor :client_email + + sig { returns(String) } + attr_accessor :private_key + + 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_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_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 do + returns( + T.nilable( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ) + ) + end + attr_reader :type + + sig do + params( + type: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol + ).void + end + attr_writer :type + + sig { returns(T.nilable(String)) } + attr_reader :universe_domain + + sig { params(universe_domain: String).void } + attr_writer :universe_domain + + # Google Cloud service account credentials + sig do + params( + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + client_email:, + private_key:, + auth_provider_x509_cert_url: nil, + auth_uri: nil, + client_id: nil, + client_x509_cert_url: nil, + private_key_id: nil, + project_id: nil, + token_uri: nil, + type: nil, + universe_domain: nil + ) + end + + sig do + override.returns( + { + client_email: String, + private_key: String, + auth_provider_x509_cert_url: String, + auth_uri: String, + client_id: String, + client_x509_cert_url: String, + private_key_id: String, + project_id: String, + token_uri: String, + type: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol, + universe_domain: String + } + ) + end + def to_hash + end + + module Type + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SERVICE_ACCOUNT = + T.let( + :service_account, + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + # Google auth scopes for the desired API request + module Scopes + extend Stagehand::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Array[String]) } + + sig do + override.returns( + T::Array[ + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) + end + end + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions, + Stagehand::Internal::AnyHash + ) + end + + # Vertex AI provider-specific settings + sig do + returns( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) + end + attr_reader :vertex + + sig do + params( + vertex: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).void + end + attr_writer :vertex + + # Vertex provider-specific model configuration + sig do + params( + vertex: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash + ).returns(T.attached_class) + end + def self.new( + # Vertex AI provider-specific settings + vertex: + ) + end + + sig do + override.returns( + { + vertex: + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + ) + end + def to_hash + end + + class Vertex < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud location for Vertex AI models + sig { returns(String) } + attr_accessor :location + + # Google Cloud project ID for Vertex AI models + sig { returns(String) } + attr_accessor :project + + # Base URL for the Vertex AI provider + sig { returns(T.nilable(String)) } + attr_reader :base_url + + sig { params(base_url: String).void } + attr_writer :base_url + + # Custom headers sent with every request to the Vertex AI provider + sig { returns(T.nilable(T::Hash[Symbol, String])) } + attr_reader :headers + + sig { params(headers: T::Hash[Symbol, String]).void } + attr_writer :headers + + # Vertex AI provider-specific settings + sig do + params( + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + ).returns(T.attached_class) + end + def self.new( + # Google Cloud location for Vertex AI models + location:, + # Google Cloud project ID for Vertex AI models + project:, + # Base URL for the Vertex AI provider + base_url: nil, + # Custom headers sent with every request to the Vertex AI provider + headers: nil + ) + end + + sig do + override.returns( + { + location: String, + project: String, + base_url: String, + headers: T::Hash[Symbol, String] + } + ) + end + def to_hash + end + end + end + end + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject, + Stagehand::Internal::AnyHash + ) + end + + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name + + # 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 sent with every request to 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 + + # AI provider for the model (or provide a baseURL endpoint instead) + sig do + returns( + T.nilable( + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ) + ) + end + attr_reader :provider + + sig do + params( + provider: + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ).void + end + attr_writer :provider + + sig do + params( + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + ).returns(T.attached_class) + end + def self.new( + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + model_name:, + # API key for the model provider + api_key: nil, + # Base URL for the model provider + base_url: nil, + # 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 + ) + end + + sig do + override.returns( + { + model_name: String, + api_key: String, + base_url: String, + headers: T::Hash[Symbol, String], + provider: + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol + } + ) + end + def to_hash + end + + # AI provider for the model (or provide a baseURL endpoint instead) + module Provider + extend Stagehand::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + OPENAI = + T.let( + :openai, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + ANTHROPIC = + T.let( + :anthropic, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + GOOGLE = + T.let( + :google, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + MICROSOFT = + T.let( + :microsoft, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + BEDROCK = + T.let( + :bedrock, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol + ] + ) + end + def self.values + end + end + end sig do override.returns( diff --git a/sig/stagehand/models.rbs b/sig/stagehand/models.rbs index b1942c9..2968f19 100644 --- a/sig/stagehand/models.rbs +++ b/sig/stagehand/models.rbs @@ -1,7 +1,7 @@ module Stagehand class Action = Stagehand::Models::Action - class ModelConfig = Stagehand::Models::ModelConfig + module ModelConfig = Stagehand::Models::ModelConfig class SessionActParams = Stagehand::Models::SessionActParams diff --git a/sig/stagehand/models/model_config.rbs b/sig/stagehand/models/model_config.rbs index 60d3ebf..7962f75 100644 --- a/sig/stagehand/models/model_config.rbs +++ b/sig/stagehand/models/model_config.rbs @@ -1,64 +1,332 @@ module Stagehand module Models type model_config = - { - model_name: String, - api_key: String, - base_url: String, - headers: ::Hash[Symbol, String], - provider: Stagehand::Models::ModelConfig::provider - } + Stagehand::ModelConfig::VertexModelConfigObject + | Stagehand::ModelConfig::GenericModelConfigObject - class ModelConfig < Stagehand::Internal::Type::BaseModel - attr_accessor model_name: String + module ModelConfig + extend Stagehand::Internal::Type::Union - attr_reader api_key: String? + type vertex_model_config_object = + { + auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } - def api_key=: (String) -> String + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth - attr_reader base_url: String? + attr_accessor model_name: String - def base_url=: (String) -> String + attr_accessor provider: :vertex - attr_reader headers: ::Hash[Symbol, String]? + attr_accessor provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions - def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + attr_reader api_key: String? - attr_reader provider: Stagehand::Models::ModelConfig::provider? + def api_key=: (String) -> String - def provider=: ( - Stagehand::Models::ModelConfig::provider - ) -> Stagehand::Models::ModelConfig::provider + attr_reader base_url: String? - def initialize: ( - model_name: String, - ?api_key: String, - ?base_url: String, - ?headers: ::Hash[Symbol, String], - ?provider: Stagehand::Models::ModelConfig::provider - ) -> void + def base_url=: (String) -> String - def to_hash: -> { - model_name: String, - api_key: String, - base_url: String, - headers: ::Hash[Symbol, String], - provider: Stagehand::Models::ModelConfig::provider - } + attr_reader headers: ::Hash[Symbol, String]? - type provider = :openai | :anthropic | :google | :microsoft | :bedrock + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - module Provider - extend Stagehand::Internal::Type::Enum + def initialize: ( + auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth, + model_name: String, + provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: :vertex + ) -> void - OPENAI: :openai - ANTHROPIC: :anthropic - GOOGLE: :google - MICROSOFT: :microsoft - BEDROCK: :bedrock + def to_hash: -> { + auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } - def self?.values: -> ::Array[Stagehand::Models::ModelConfig::provider] + type auth = + { + credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + class Auth < Stagehand::Internal::Type::BaseModel + attr_accessor credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials + + attr_accessor type: :googleServiceAccount + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes? + + def scopes=: ( + Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes + ) -> Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials, + ?project_id: String, + ?scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes, + ?universe_domain: String, + ?type: :googleServiceAccount + ) -> void + + def to_hash: -> { + credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + type credentials = + { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_accessor client_email: String + + attr_accessor private_key: String + + 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_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_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: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_? + + def type=: ( + Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_ + ) -> Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_ + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + client_email: String, + private_key: String, + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_, + ?universe_domain: String + ) -> void + + def to_hash: -> { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + type type_ = :service_account + + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT: :service_account + + def self?.values: -> ::Array[Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_] + end + end + + type scopes = String | ::Array[String] + + module Scopes + extend Stagehand::Internal::Type::Union + + def self?.variants: -> ::Array[Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes] + + StringArray: Stagehand::Internal::Type::Converter + end + end + + type provider_options = + { + vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex + } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex + + def initialize: ( + vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex + ) -> void + + def to_hash: -> { + vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex + } + + type vertex = + { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class Vertex < Stagehand::Internal::Type::BaseModel + attr_accessor location: String + + attr_accessor project: 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] + + def initialize: ( + location: String, + project: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String] + ) -> void + + def to_hash: -> { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + end + end end + + type generic_model_config_object = + { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider + } + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor model_name: String + + 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: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider? + + def provider=: ( + Stagehand::Models::ModelConfig::GenericModelConfigObject::provider + ) -> Stagehand::Models::ModelConfig::GenericModelConfigObject::provider + + def initialize: ( + model_name: String, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider + ) -> void + + def to_hash: -> { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::ModelConfig::GenericModelConfigObject::provider + } + + type provider = :openai | :anthropic | :google | :microsoft | :bedrock + + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI: :openai + ANTHROPIC: :anthropic + GOOGLE: :google + MICROSOFT: :microsoft + BEDROCK: :bedrock + + def self?.values: -> ::Array[Stagehand::Models::ModelConfig::GenericModelConfigObject::provider] + end + end + + def self?.variants: -> ::Array[Stagehand::Models::model_config] end end end diff --git a/sig/stagehand/models/session_act_params.rbs b/sig/stagehand/models/session_act_params.rbs index 36d79a1..9c40e2b 100644 --- a/sig/stagehand/models/session_act_params.rbs +++ b/sig/stagehand/models/session_act_params.rbs @@ -94,11 +94,334 @@ module Stagehand variables: ::Hash[Symbol, Stagehand::Models::SessionActParams::Options::variable] } - type model = Stagehand::ModelConfig | String + type model = + Stagehand::SessionActParams::Options::Model::VertexModelConfigObject + | Stagehand::SessionActParams::Options::Model::GenericModelConfigObject + | String module Model extend Stagehand::Internal::Type::Union + type vertex_model_config_object = + { + auth: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor auth: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth + + attr_accessor model_name: String + + attr_accessor provider: :vertex + + attr_accessor provider_options: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions + + 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] + + def initialize: ( + auth: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider_options: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: :vertex + ) -> void + + def to_hash: -> { + auth: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + type auth = + { + credentials: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + class Auth < Stagehand::Internal::Type::BaseModel + attr_accessor credentials: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials + + attr_accessor type: :googleServiceAccount + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader scopes: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::scopes? + + def scopes=: ( + Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::scopes + ) -> Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::scopes + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + credentials: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + ?project_id: String, + ?scopes: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::scopes, + ?universe_domain: String, + ?type: :googleServiceAccount + ) -> void + + def to_hash: -> { + credentials: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + type credentials = + { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_accessor client_email: String + + attr_accessor private_key: String + + 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_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_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: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_? + + def type=: ( + Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_ + ) -> Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_ + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + client_email: String, + private_key: String, + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + ?universe_domain: String + ) -> void + + def to_hash: -> { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + type type_ = :service_account + + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT: :service_account + + def self?.values: -> ::Array[Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_] + end + end + + type scopes = String | ::Array[String] + + module Scopes + extend Stagehand::Internal::Type::Union + + def self?.variants: -> ::Array[Stagehand::Models::SessionActParams::Options::Model::VertexModelConfigObject::Auth::scopes] + + StringArray: Stagehand::Internal::Type::Converter + end + end + + type provider_options = + { + vertex: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor vertex: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + + def initialize: ( + vertex: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) -> void + + def to_hash: -> { + vertex: Stagehand::SessionActParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + type vertex = + { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class Vertex < Stagehand::Internal::Type::BaseModel + attr_accessor location: String + + attr_accessor project: 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] + + def initialize: ( + location: String, + project: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String] + ) -> void + + def to_hash: -> { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + end + end + end + + type generic_model_config_object = + { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::provider + } + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor model_name: String + + 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: Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::provider? + + def provider=: ( + Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::provider + ) -> Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::provider + + def initialize: ( + model_name: String, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::provider + ) -> void + + def to_hash: -> { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::provider + } + + type provider = + :openai | :anthropic | :google | :microsoft | :bedrock + + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI: :openai + ANTHROPIC: :anthropic + GOOGLE: :google + MICROSOFT: :microsoft + BEDROCK: :bedrock + + def self?.values: -> ::Array[Stagehand::Models::SessionActParams::Options::Model::GenericModelConfigObject::provider] + end + end + def self?.variants: -> ::Array[Stagehand::Models::SessionActParams::Options::model] end diff --git a/sig/stagehand/models/session_execute_params.rbs b/sig/stagehand/models/session_execute_params.rbs index 068d8eb..06dc774 100644 --- a/sig/stagehand/models/session_execute_params.rbs +++ b/sig/stagehand/models/session_execute_params.rbs @@ -114,11 +114,334 @@ module Stagehand system_prompt: String } - type execution_model = Stagehand::ModelConfig | String + type execution_model = + Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject + | Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject + | String module ExecutionModel extend Stagehand::Internal::Type::Union + type vertex_model_config_object = + { + auth: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor auth: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth + + attr_accessor model_name: String + + attr_accessor provider: :vertex + + attr_accessor provider_options: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions + + 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] + + def initialize: ( + auth: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth, + model_name: String, + provider_options: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: :vertex + ) -> void + + def to_hash: -> { + auth: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + type auth = + { + credentials: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + class Auth < Stagehand::Internal::Type::BaseModel + attr_accessor credentials: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials + + attr_accessor type: :googleServiceAccount + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::scopes? + + def scopes=: ( + Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::scopes + ) -> Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::scopes + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + credentials: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials, + ?project_id: String, + ?scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::scopes, + ?universe_domain: String, + ?type: :googleServiceAccount + ) -> void + + def to_hash: -> { + credentials: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + type credentials = + { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_accessor client_email: String + + attr_accessor private_key: String + + 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_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_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: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::type_? + + def type=: ( + Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::type_ + ) -> Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::type_ + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + client_email: String, + private_key: String, + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::type_, + ?universe_domain: String + ) -> void + + def to_hash: -> { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + type type_ = :service_account + + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT: :service_account + + def self?.values: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::type_] + end + end + + type scopes = String | ::Array[String] + + module Scopes + extend Stagehand::Internal::Type::Union + + def self?.variants: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::scopes] + + StringArray: Stagehand::Internal::Type::Converter + end + end + + type provider_options = + { + vertex: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex + } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor vertex: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex + + def initialize: ( + vertex: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex + ) -> void + + def to_hash: -> { + vertex: Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex + } + + type vertex = + { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class Vertex < Stagehand::Internal::Type::BaseModel + attr_accessor location: String + + attr_accessor project: 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] + + def initialize: ( + location: String, + project: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String] + ) -> void + + def to_hash: -> { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + end + end + end + + type generic_model_config_object = + { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::provider + } + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor model_name: String + + 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: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::provider? + + def provider=: ( + Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::provider + ) -> Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::provider + + def initialize: ( + model_name: String, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::provider + ) -> void + + def to_hash: -> { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::provider + } + + type provider = + :openai | :anthropic | :google | :microsoft | :bedrock + + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI: :openai + ANTHROPIC: :anthropic + GOOGLE: :google + MICROSOFT: :microsoft + BEDROCK: :bedrock + + def self?.values: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::provider] + end + end + def self?.variants: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::execution_model] end @@ -134,11 +457,334 @@ module Stagehand def self?.values: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::mode] end - type model = Stagehand::ModelConfig | String + type model = + Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject + | Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject + | String module Model extend Stagehand::Internal::Type::Union + type vertex_model_config_object = + { + auth: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor auth: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth + + attr_accessor model_name: String + + attr_accessor provider: :vertex + + attr_accessor provider_options: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions + + 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] + + def initialize: ( + auth: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth, + model_name: String, + provider_options: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: :vertex + ) -> void + + def to_hash: -> { + auth: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + type auth = + { + credentials: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + class Auth < Stagehand::Internal::Type::BaseModel + attr_accessor credentials: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials + + attr_accessor type: :googleServiceAccount + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::scopes? + + def scopes=: ( + Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::scopes + ) -> Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::scopes + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + credentials: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials, + ?project_id: String, + ?scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::scopes, + ?universe_domain: String, + ?type: :googleServiceAccount + ) -> void + + def to_hash: -> { + credentials: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + type credentials = + { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_accessor client_email: String + + attr_accessor private_key: String + + 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_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_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: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::type_? + + def type=: ( + Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::type_ + ) -> Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::type_ + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + client_email: String, + private_key: String, + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::type_, + ?universe_domain: String + ) -> void + + def to_hash: -> { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + type type_ = :service_account + + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT: :service_account + + def self?.values: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::type_] + end + end + + type scopes = String | ::Array[String] + + module Scopes + extend Stagehand::Internal::Type::Union + + def self?.variants: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::scopes] + + StringArray: Stagehand::Internal::Type::Converter + end + end + + type provider_options = + { + vertex: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor vertex: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex + + def initialize: ( + vertex: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) -> void + + def to_hash: -> { + vertex: Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + type vertex = + { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class Vertex < Stagehand::Internal::Type::BaseModel + attr_accessor location: String + + attr_accessor project: 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] + + def initialize: ( + location: String, + project: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String] + ) -> void + + def to_hash: -> { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + end + end + end + + type generic_model_config_object = + { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::provider + } + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor model_name: String + + 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: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::provider? + + def provider=: ( + Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::provider + ) -> Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::provider + + def initialize: ( + model_name: String, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::provider + ) -> void + + def to_hash: -> { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::provider + } + + type provider = + :openai | :anthropic | :google | :microsoft | :bedrock + + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI: :openai + ANTHROPIC: :anthropic + GOOGLE: :google + MICROSOFT: :microsoft + BEDROCK: :bedrock + + def self?.values: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::provider] + end + end + def self?.variants: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::model] end diff --git a/sig/stagehand/models/session_extract_params.rbs b/sig/stagehand/models/session_extract_params.rbs index aedaaca..7db91e3 100644 --- a/sig/stagehand/models/session_extract_params.rbs +++ b/sig/stagehand/models/session_extract_params.rbs @@ -63,6 +63,7 @@ module Stagehand { ignore_selectors: ::Array[String], model: Stagehand::Models::SessionExtractParams::Options::model, + screenshot: bool, selector: String, timeout: Float } @@ -78,6 +79,10 @@ module Stagehand Stagehand::Models::SessionExtractParams::Options::model ) -> Stagehand::Models::SessionExtractParams::Options::model + attr_reader screenshot: bool? + + def screenshot=: (bool) -> bool + attr_reader selector: String? def selector=: (String) -> String @@ -89,6 +94,7 @@ module Stagehand def initialize: ( ?ignore_selectors: ::Array[String], ?model: Stagehand::Models::SessionExtractParams::Options::model, + ?screenshot: bool, ?selector: String, ?timeout: Float ) -> void @@ -96,15 +102,339 @@ module Stagehand def to_hash: -> { ignore_selectors: ::Array[String], model: Stagehand::Models::SessionExtractParams::Options::model, + screenshot: bool, selector: String, timeout: Float } - type model = Stagehand::ModelConfig | String + type model = + Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject + | Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject + | String module Model extend Stagehand::Internal::Type::Union + type vertex_model_config_object = + { + auth: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor auth: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth + + attr_accessor model_name: String + + attr_accessor provider: :vertex + + attr_accessor provider_options: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions + + 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] + + def initialize: ( + auth: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider_options: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: :vertex + ) -> void + + def to_hash: -> { + auth: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + type auth = + { + credentials: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + class Auth < Stagehand::Internal::Type::BaseModel + attr_accessor credentials: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials + + attr_accessor type: :googleServiceAccount + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader scopes: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::scopes? + + def scopes=: ( + Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::scopes + ) -> Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::scopes + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + credentials: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + ?project_id: String, + ?scopes: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::scopes, + ?universe_domain: String, + ?type: :googleServiceAccount + ) -> void + + def to_hash: -> { + credentials: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + type credentials = + { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_accessor client_email: String + + attr_accessor private_key: String + + 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_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_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: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_? + + def type=: ( + Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_ + ) -> Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_ + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + client_email: String, + private_key: String, + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + ?universe_domain: String + ) -> void + + def to_hash: -> { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + type type_ = :service_account + + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT: :service_account + + def self?.values: -> ::Array[Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_] + end + end + + type scopes = String | ::Array[String] + + module Scopes + extend Stagehand::Internal::Type::Union + + def self?.variants: -> ::Array[Stagehand::Models::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::scopes] + + StringArray: Stagehand::Internal::Type::Converter + end + end + + type provider_options = + { + vertex: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor vertex: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + + def initialize: ( + vertex: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) -> void + + def to_hash: -> { + vertex: Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + type vertex = + { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class Vertex < Stagehand::Internal::Type::BaseModel + attr_accessor location: String + + attr_accessor project: 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] + + def initialize: ( + location: String, + project: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String] + ) -> void + + def to_hash: -> { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + end + end + end + + type generic_model_config_object = + { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::provider + } + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor model_name: String + + 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: Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::provider? + + def provider=: ( + Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::provider + ) -> Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::provider + + def initialize: ( + model_name: String, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::provider + ) -> void + + def to_hash: -> { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::provider + } + + type provider = + :openai | :anthropic | :google | :microsoft | :bedrock + + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI: :openai + ANTHROPIC: :anthropic + GOOGLE: :google + MICROSOFT: :microsoft + BEDROCK: :bedrock + + def self?.values: -> ::Array[Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject::provider] + end + end + def self?.variants: -> ::Array[Stagehand::Models::SessionExtractParams::Options::model] end end diff --git a/sig/stagehand/models/session_observe_params.rbs b/sig/stagehand/models/session_observe_params.rbs index 4aad068..a73966f 100644 --- a/sig/stagehand/models/session_observe_params.rbs +++ b/sig/stagehand/models/session_observe_params.rbs @@ -54,6 +54,7 @@ module Stagehand type options = { + ignore_selectors: ::Array[String], model: Stagehand::Models::SessionObserveParams::Options::model, selector: String, timeout: Float, @@ -61,6 +62,10 @@ module Stagehand } class Options < Stagehand::Internal::Type::BaseModel + attr_reader ignore_selectors: ::Array[String]? + + def ignore_selectors=: (::Array[String]) -> ::Array[String] + attr_reader model: Stagehand::Models::SessionObserveParams::Options::model? def model=: ( @@ -82,6 +87,7 @@ module Stagehand ) -> ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable] def initialize: ( + ?ignore_selectors: ::Array[String], ?model: Stagehand::Models::SessionObserveParams::Options::model, ?selector: String, ?timeout: Float, @@ -89,17 +95,341 @@ module Stagehand ) -> void def to_hash: -> { + ignore_selectors: ::Array[String], model: Stagehand::Models::SessionObserveParams::Options::model, selector: String, timeout: Float, variables: ::Hash[Symbol, Stagehand::Models::SessionObserveParams::Options::variable] } - type model = Stagehand::ModelConfig | String + type model = + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject + | Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject + | String module Model extend Stagehand::Internal::Type::Union + type vertex_model_config_object = + { + auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth + + attr_accessor model_name: String + + attr_accessor provider: :vertex + + attr_accessor provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions + + 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] + + def initialize: ( + auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: :vertex + ) -> void + + def to_hash: -> { + auth: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth, + model_name: String, + provider: :vertex, + provider_options: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + type auth = + { + credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + class Auth < Stagehand::Internal::Type::BaseModel + attr_accessor credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials + + attr_accessor type: :googleServiceAccount + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes? + + def scopes=: ( + Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes + ) -> Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + ?project_id: String, + ?scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes, + ?universe_domain: String, + ?type: :googleServiceAccount + ) -> void + + def to_hash: -> { + credentials: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } + + type credentials = + { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + class Credentials < Stagehand::Internal::Type::BaseModel + attr_accessor client_email: String + + attr_accessor private_key: String + + 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_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_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: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_? + + def type=: ( + Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_ + ) -> Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_ + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + client_email: String, + private_key: String, + ?auth_provider_x509_cert_url: String, + ?auth_uri: String, + ?client_id: String, + ?client_x509_cert_url: String, + ?private_key_id: String, + ?project_id: String, + ?token_uri: String, + ?type: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + ?universe_domain: String + ) -> void + + def to_hash: -> { + client_email: String, + private_key: String, + :auth_provider_x509_cert_url => String, + auth_uri: String, + client_id: String, + :client_x509_cert_url => String, + private_key_id: String, + project_id: String, + token_uri: String, + type: Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_, + universe_domain: String + } + + type type_ = :service_account + + module Type + extend Stagehand::Internal::Type::Enum + + SERVICE_ACCOUNT: :service_account + + def self?.values: -> ::Array[Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::Credentials::type_] + end + end + + type scopes = String | ::Array[String] + + module Scopes + extend Stagehand::Internal::Type::Union + + def self?.variants: -> ::Array[Stagehand::Models::SessionObserveParams::Options::Model::VertexModelConfigObject::Auth::scopes] + + StringArray: Stagehand::Internal::Type::Converter + end + end + + type provider_options = + { + vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + class ProviderOptions < Stagehand::Internal::Type::BaseModel + attr_accessor vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + + def initialize: ( + vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + ) -> void + + def to_hash: -> { + vertex: Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex + } + + type vertex = + { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + + class Vertex < Stagehand::Internal::Type::BaseModel + attr_accessor location: String + + attr_accessor project: 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] + + def initialize: ( + location: String, + project: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String] + ) -> void + + def to_hash: -> { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + end + end + end + + type generic_model_config_object = + { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider + } + + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor model_name: String + + 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: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider? + + def provider=: ( + Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider + ) -> Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider + + def initialize: ( + model_name: String, + ?api_key: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String], + ?provider: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider + ) -> void + + def to_hash: -> { + model_name: String, + api_key: String, + base_url: String, + headers: ::Hash[Symbol, String], + provider: Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider + } + + type provider = + :openai | :anthropic | :google | :microsoft | :bedrock + + module Provider + extend Stagehand::Internal::Type::Enum + + OPENAI: :openai + ANTHROPIC: :anthropic + GOOGLE: :google + MICROSOFT: :microsoft + BEDROCK: :bedrock + + def self?.values: -> ::Array[Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject::provider] + end + end + def self?.variants: -> ::Array[Stagehand::Models::SessionObserveParams::Options::model] end diff --git a/test/stagehand/client_test.rb b/test/stagehand/client_test.rb index 4b96ac0..dc061f1 100644 --- a/test/stagehand/client_test.rb +++ b/test/stagehand/client_test.rb @@ -356,8 +356,8 @@ def test_client_redirect_307 assert_equal(recorded.method, _1.method) assert_equal(recorded.body, _1.body) assert_equal( - recorded.headers.transform_keys(&:downcase).fetch("content-type"), - _1.headers.transform_keys(&:downcase).fetch("content-type") + recorded.headers.transform_keys(&:downcase)["content-type"], + _1.headers.transform_keys(&:downcase)["content-type"] ) end end @@ -474,8 +474,9 @@ def test_default_headers stagehand.sessions.start(model_name: "openai/gpt-5.4-mini") assert_requested(:any, /./) do |req| - headers = req.headers.transform_keys(&:downcase).fetch_values("accept", "content-type") - headers.each { refute_empty(_1) } + headers = req.headers.transform_keys(&:downcase) + expected = req.body.nil? ? ["accept"] : %w[accept content-type] + headers.fetch_values(*expected).each { refute_empty(_1) } end end end