From 5106687a8c7a491cf3594370ebd91fba63da7634 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 17:46:25 +0000 Subject: [PATCH 1/9] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 391cde3..57aa7a5 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-e629569417ad17cad5c73180109b4c3ae778f38063fc72146fa82f82de145911.yml +openapi_spec_hash: 42e4eedbc0fcc772bb271191a067bce1 config_hash: 1fb12ae9b478488bc1e56bfbdc210b01 From 304ebd8ea3e7c9b6621d5382fc1f4c51ce64fb8d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 18:23:20 +0000 Subject: [PATCH 2/9] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 57aa7a5..094ac49 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-e629569417ad17cad5c73180109b4c3ae778f38063fc72146fa82f82de145911.yml -openapi_spec_hash: 42e4eedbc0fcc772bb271191a067bce1 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/stagehand-49b40c7425adba9e67fc102838c5216c45ca1f7ef4c10823c5665fd413538504.yml +openapi_spec_hash: 6880dc029df2e88dfe8943c0dec5a3a5 config_hash: 1fb12ae9b478488bc1e56bfbdc210b01 From 0acc093944e72ee488393ec1fb73dc16450cc825 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 18:26:04 +0000 Subject: [PATCH 3/9] feat: [feat]: add `ignoreSelectors` to `observe()` --- .stats.yml | 4 ++-- lib/stagehand/models/session_observe_params.rb | 10 +++++++++- rbi/stagehand/models/session_observe_params.rbi | 11 +++++++++++ sig/stagehand/models/session_observe_params.rbs | 7 +++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 094ac49..0339c57 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-49b40c7425adba9e67fc102838c5216c45ca1f7ef4c10823c5665fd413538504.yml -openapi_spec_hash: 6880dc029df2e88dfe8943c0dec5a3a5 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/stagehand-eae8400fade7b2c8329c4148f56de92e147c34c0feecb420c015aab6544a9acc.yml +openapi_spec_hash: 0a9eff1ac1d464e89cbd9db64709b08a config_hash: 1fb12ae9b478488bc1e56bfbdc210b01 diff --git a/lib/stagehand/models/session_observe_params.rb b/lib/stagehand/models/session_observe_params.rb index b2c2f74..8564643 100644 --- a/lib/stagehand/models/session_observe_params.rb +++ b/lib/stagehand/models/session_observe_params.rb @@ -52,6 +52,12 @@ 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') # @@ -79,10 +85,12 @@ 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 ignore_selectors [Array] Selectors for elements and subtrees that should be excluded from observation + # # @param model [Stagehand::Models::ModelConfig, 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 diff --git a/rbi/stagehand/models/session_observe_params.rbi b/rbi/stagehand/models/session_observe_params.rbi index ba48ed4..240e691 100644 --- a/rbi/stagehand/models/session_observe_params.rbi +++ b/rbi/stagehand/models/session_observe_params.rbi @@ -100,6 +100,13 @@ 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))) } attr_reader :model @@ -161,6 +168,7 @@ module Stagehand sig do params( + ignore_selectors: T::Array[String], model: T.any(Stagehand::ModelConfig::OrHash, String), selector: String, timeout: Float, @@ -177,6 +185,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,6 +203,7 @@ module Stagehand sig do override.returns( { + ignore_selectors: T::Array[String], model: T.any(Stagehand::ModelConfig, String), selector: String, timeout: Float, diff --git a/sig/stagehand/models/session_observe_params.rbs b/sig/stagehand/models/session_observe_params.rbs index 4aad068..063b837 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,6 +95,7 @@ module Stagehand ) -> void def to_hash: -> { + ignore_selectors: ::Array[String], model: Stagehand::Models::SessionObserveParams::Options::model, selector: String, timeout: Float, From 9590ccac39407c027e9e2ea3649a719b00660170 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 02:01:24 +0000 Subject: [PATCH 4/9] ci: pin GitHub Actions to commit SHAs Pin all GitHub Actions referenced in generated workflows (both first-party `actions/*` and third-party) to immutable commit SHAs. Updating pinned actions is now a deliberate codegen-side bump rather than implicit on every workflow run. --- .github/workflows/ci.yml | 14 +++++++------- .github/workflows/publish-gem.yml | 4 ++-- .github/workflows/release-doctor.yml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) 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: | From 6149c11d9ab60a0cac69f1e26e3a2f42425ad616 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 14 May 2026 02:01:27 +0000 Subject: [PATCH 5/9] fix(client): elide content type header on requests without body --- lib/stagehand/internal/transport/base_client.rb | 2 ++ test/stagehand/client_test.rb | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) 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/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 From 4b65f221055c7d0d3d7426845fbd0e49ba13d2df Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 20 May 2026 19:16:37 +0000 Subject: [PATCH 6/9] feat: STG-1756 add Vertex auth params to Stagehand spec --- .stats.yml | 4 +- lib/stagehand/models/model_config.rb | 167 +++++++++++++- rbi/stagehand/models/model_config.rbi | 319 ++++++++++++++++++++++++++ sig/stagehand/models/model_config.rbs | 178 +++++++++++++- 4 files changed, 664 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 0339c57..220445b 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-eae8400fade7b2c8329c4148f56de92e147c34c0feecb420c015aab6544a9acc.yml -openapi_spec_hash: 0a9eff1ac1d464e89cbd9db64709b08a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/stagehand-e77d6b15f0a94b16a54ef87a84d2cabe49eb11cff5ceba76f00dd788ff483eab.yml +openapi_spec_hash: a1dab7fe72a772d188a15305124ebd73 config_hash: 1fb12ae9b478488bc1e56bfbdc210b01 diff --git a/lib/stagehand/models/model_config.rb b/lib/stagehand/models/model_config.rb index 806ca18..56ae21d 100644 --- a/lib/stagehand/models/model_config.rb +++ b/lib/stagehand/models/model_config.rb @@ -21,29 +21,193 @@ class ModelConfig < Stagehand::Internal::Type::BaseModel # @return [String, nil] optional :base_url, String, api_name: :baseURL + # @!attribute google_auth_options + # google-auth-library options used to authenticate Vertex AI models + # + # @return [Stagehand::Models::ModelConfig::GoogleAuthOptions, nil] + optional :google_auth_options, + -> { Stagehand::ModelConfig::GoogleAuthOptions }, + api_name: :googleAuthOptions + # @!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 location + # Google Cloud location for Vertex AI models + # + # @return [String, nil] + optional :location, String + + # @!attribute project + # Google Cloud project ID for Vertex AI models + # + # @return [String, nil] + optional :project, 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) + # @!method initialize(model_name:, api_key: nil, base_url: nil, google_auth_options: nil, headers: nil, location: nil, project: 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 google_auth_options [Stagehand::Models::ModelConfig::GoogleAuthOptions] google-auth-library options used to authenticate Vertex AI models + # # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider # + # @param location [String] Google Cloud location for Vertex AI models + # + # @param project [String] Google Cloud project ID for Vertex AI models + # # @param provider [Symbol, Stagehand::Models::ModelConfig::Provider] AI provider for the model (or provide a baseURL endpoint instead) + # @see Stagehand::Models::ModelConfig#google_auth_options + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials + # + # @return [Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials, nil] + optional :credentials, -> { Stagehand::ModelConfig::GoogleAuthOptions::Credentials } + + # @!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::GoogleAuthOptions::Scopes } + + # @!attribute universe_domain + # Google Cloud universe domain + # + # @return [String, nil] + optional :universe_domain, String, api_name: :universeDomain + + # @!method initialize(credentials: nil, project_id: nil, scopes: nil, universe_domain: nil) + # google-auth-library options used to authenticate Vertex AI models + # + # @param credentials [Stagehand::Models::ModelConfig::GoogleAuthOptions::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 + + # @see Stagehand::Models::ModelConfig::GoogleAuthOptions#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::GoogleAuthOptions::Credentials::Type, nil] + optional :type, enum: -> { Stagehand::ModelConfig::GoogleAuthOptions::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::GoogleAuthOptions::Credentials::Type] + # @param universe_domain [String] + + # @see Stagehand::Models::ModelConfig::GoogleAuthOptions::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::GoogleAuthOptions#scopes + module Scopes + extend Stagehand::Internal::Type::Union + + variant String + + variant -> { Stagehand::Models::ModelConfig::GoogleAuthOptions::Scopes::StringArray } + + # @!method self.variants + # @return [Array(String, Array)] + + # @type [Stagehand::Internal::Type::Converter] + StringArray = Stagehand::Internal::Type::ArrayOf[String] + end + end + # AI provider for the model (or provide a baseURL endpoint instead) # # @see Stagehand::Models::ModelConfig#provider @@ -55,6 +219,7 @@ module Provider GOOGLE = :google MICROSOFT = :microsoft BEDROCK = :bedrock + VERTEX = :vertex # @!method self.values # @return [Array] diff --git a/rbi/stagehand/models/model_config.rbi b/rbi/stagehand/models/model_config.rbi index 5d1bc44..ebba7d6 100644 --- a/rbi/stagehand/models/model_config.rbi +++ b/rbi/stagehand/models/model_config.rbi @@ -26,6 +26,17 @@ module Stagehand sig { params(base_url: String).void } attr_writer :base_url + # google-auth-library options used to authenticate Vertex AI models + sig { returns(T.nilable(Stagehand::ModelConfig::GoogleAuthOptions)) } + attr_reader :google_auth_options + + sig do + params( + google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions::OrHash + ).void + end + attr_writer :google_auth_options + # Custom headers sent with every request to the model provider sig { returns(T.nilable(T::Hash[Symbol, String])) } attr_reader :headers @@ -33,6 +44,20 @@ module Stagehand sig { params(headers: T::Hash[Symbol, String]).void } attr_writer :headers + # Google Cloud location for Vertex AI models + sig { returns(T.nilable(String)) } + attr_reader :location + + sig { params(location: String).void } + attr_writer :location + + # Google Cloud project ID for Vertex AI models + sig { returns(T.nilable(String)) } + attr_reader :project + + sig { params(project: String).void } + attr_writer :project + # AI provider for the model (or provide a baseURL endpoint instead) sig { returns(T.nilable(Stagehand::ModelConfig::Provider::OrSymbol)) } attr_reader :provider @@ -45,7 +70,11 @@ module Stagehand model_name: String, api_key: String, base_url: String, + google_auth_options: + Stagehand::ModelConfig::GoogleAuthOptions::OrHash, headers: T::Hash[Symbol, String], + location: String, + project: String, provider: Stagehand::ModelConfig::Provider::OrSymbol ).returns(T.attached_class) end @@ -56,8 +85,14 @@ module Stagehand api_key: nil, # Base URL for the model provider base_url: nil, + # google-auth-library options used to authenticate Vertex AI models + google_auth_options: nil, # Custom headers sent with every request to the model provider headers: nil, + # Google Cloud location for Vertex AI models + location: nil, + # Google Cloud project ID for Vertex AI models + project: nil, # AI provider for the model (or provide a baseURL endpoint instead) provider: nil ) @@ -69,7 +104,10 @@ module Stagehand model_name: String, api_key: String, base_url: String, + google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, headers: T::Hash[Symbol, String], + location: String, + project: String, provider: Stagehand::ModelConfig::Provider::OrSymbol } ) @@ -77,6 +115,286 @@ module Stagehand def to_hash end + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Stagehand::ModelConfig::GoogleAuthOptions, + Stagehand::Internal::AnyHash + ) + end + + # Google Cloud service account credentials + sig do + returns( + T.nilable(Stagehand::ModelConfig::GoogleAuthOptions::Credentials) + ) + end + attr_reader :credentials + + sig do + params( + credentials: + Stagehand::ModelConfig::GoogleAuthOptions::Credentials::OrHash + ).void + end + attr_writer :credentials + + # 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::GoogleAuthOptions::Scopes::Variants + ) + ) + end + attr_reader :scopes + + sig do + params( + scopes: Stagehand::ModelConfig::GoogleAuthOptions::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 + + # google-auth-library options used to authenticate Vertex AI models + sig do + params( + credentials: + Stagehand::ModelConfig::GoogleAuthOptions::Credentials::OrHash, + project_id: String, + scopes: Stagehand::ModelConfig::GoogleAuthOptions::Scopes::Variants, + universe_domain: String + ).returns(T.attached_class) + end + def self.new( + # Google Cloud service account credentials + credentials: nil, + # 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 + ) + end + + sig do + override.returns( + { + credentials: + Stagehand::ModelConfig::GoogleAuthOptions::Credentials, + project_id: String, + scopes: + Stagehand::ModelConfig::GoogleAuthOptions::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::GoogleAuthOptions::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::GoogleAuthOptions::Credentials::Type::OrSymbol + ) + ) + end + attr_reader :type + + sig do + params( + type: + Stagehand::ModelConfig::GoogleAuthOptions::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::GoogleAuthOptions::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::GoogleAuthOptions::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::GoogleAuthOptions::Credentials::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + SERVICE_ACCOUNT = + T.let( + :service_account, + Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Stagehand::ModelConfig::GoogleAuthOptions::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::GoogleAuthOptions::Scopes::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) + end + end + # AI provider for the model (or provide a baseURL endpoint instead) module Provider extend Stagehand::Internal::Type::Enum @@ -93,6 +411,7 @@ module Stagehand T.let(:microsoft, Stagehand::ModelConfig::Provider::TaggedSymbol) BEDROCK = T.let(:bedrock, Stagehand::ModelConfig::Provider::TaggedSymbol) + VERTEX = T.let(:vertex, Stagehand::ModelConfig::Provider::TaggedSymbol) sig do override.returns( diff --git a/sig/stagehand/models/model_config.rbs b/sig/stagehand/models/model_config.rbs index 60d3ebf..80b6956 100644 --- a/sig/stagehand/models/model_config.rbs +++ b/sig/stagehand/models/model_config.rbs @@ -5,7 +5,10 @@ module Stagehand model_name: String, api_key: String, base_url: String, + google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, headers: ::Hash[Symbol, String], + location: String, + project: String, provider: Stagehand::Models::ModelConfig::provider } @@ -20,10 +23,24 @@ module Stagehand def base_url=: (String) -> String + attr_reader google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions? + + def google_auth_options=: ( + Stagehand::ModelConfig::GoogleAuthOptions + ) -> Stagehand::ModelConfig::GoogleAuthOptions + attr_reader headers: ::Hash[Symbol, String]? def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + attr_reader location: String? + + def location=: (String) -> String + + attr_reader project: String? + + def project=: (String) -> String + attr_reader provider: Stagehand::Models::ModelConfig::provider? def provider=: ( @@ -34,7 +51,10 @@ module Stagehand model_name: String, ?api_key: String, ?base_url: String, + ?google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, ?headers: ::Hash[Symbol, String], + ?location: String, + ?project: String, ?provider: Stagehand::Models::ModelConfig::provider ) -> void @@ -42,11 +62,166 @@ module Stagehand model_name: String, api_key: String, base_url: String, + google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, headers: ::Hash[Symbol, String], + location: String, + project: String, provider: Stagehand::Models::ModelConfig::provider } - type provider = :openai | :anthropic | :google | :microsoft | :bedrock + type google_auth_options = + { + credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials, + project_id: String, + scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes, + universe_domain: String + } + + class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + attr_reader credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials? + + def credentials=: ( + Stagehand::ModelConfig::GoogleAuthOptions::Credentials + ) -> Stagehand::ModelConfig::GoogleAuthOptions::Credentials + + attr_reader project_id: String? + + def project_id=: (String) -> String + + attr_reader scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes? + + def scopes=: ( + Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes + ) -> Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes + + attr_reader universe_domain: String? + + def universe_domain=: (String) -> String + + def initialize: ( + ?credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials, + ?project_id: String, + ?scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes, + ?universe_domain: String + ) -> void + + def to_hash: -> { + credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials, + project_id: String, + scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::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::GoogleAuthOptions::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::GoogleAuthOptions::Credentials::type_? + + def type=: ( + Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials::type_ + ) -> Stagehand::Models::ModelConfig::GoogleAuthOptions::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::GoogleAuthOptions::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::GoogleAuthOptions::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::GoogleAuthOptions::Credentials::type_] + end + end + + type scopes = String | ::Array[String] + + module Scopes + extend Stagehand::Internal::Type::Union + + def self?.variants: -> ::Array[Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes] + + StringArray: Stagehand::Internal::Type::Converter + end + end + + type provider = + :openai | :anthropic | :google | :microsoft | :bedrock | :vertex module Provider extend Stagehand::Internal::Type::Enum @@ -56,6 +231,7 @@ module Stagehand GOOGLE: :google MICROSOFT: :microsoft BEDROCK: :bedrock + VERTEX: :vertex def self?.values: -> ::Array[Stagehand::Models::ModelConfig::provider] end From 7b65ca776e1e13c489f13991b012fa24aecc60e6 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 20 May 2026 21:00:42 +0000 Subject: [PATCH 7/9] feat: Add `screenshot` option to Extract --- .stats.yml | 4 ++-- lib/stagehand/models/session_extract_params.rb | 14 +++++++++++++- rbi/stagehand/models/session_extract_params.rbi | 13 +++++++++++++ sig/stagehand/models/session_extract_params.rbs | 7 +++++++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 220445b..9043f09 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-e77d6b15f0a94b16a54ef87a84d2cabe49eb11cff5ceba76f00dd788ff483eab.yml -openapi_spec_hash: a1dab7fe72a772d188a15305124ebd73 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/stagehand-80502d74c1be605e77d45ff2b54297fe34ce85dbad1e8f2dfa30ba6d09601219.yml +openapi_spec_hash: fd62f768756a400c3ecd695bfcf3845a config_hash: 1fb12ae9b478488bc1e56bfbdc210b01 diff --git a/lib/stagehand/models/session_extract_params.rb b/lib/stagehand/models/session_extract_params.rb index 1b304fb..8124184 100644 --- a/lib/stagehand/models/session_extract_params.rb +++ b/lib/stagehand/models/session_extract_params.rb @@ -72,6 +72,13 @@ class Options < Stagehand::Internal::Type::BaseModel # @return [Stagehand::Models::ModelConfig, 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,11 +91,16 @@ 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 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 # # @param timeout [Float] Timeout in ms for the extraction diff --git a/rbi/stagehand/models/session_extract_params.rbi b/rbi/stagehand/models/session_extract_params.rbi index 2fc2eb4..841a61d 100644 --- a/rbi/stagehand/models/session_extract_params.rbi +++ b/rbi/stagehand/models/session_extract_params.rbi @@ -127,6 +127,14 @@ module Stagehand 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 @@ -145,6 +153,7 @@ module Stagehand params( ignore_selectors: T::Array[String], model: T.any(Stagehand::ModelConfig::OrHash, String), + screenshot: T::Boolean, selector: String, timeout: Float ).returns(T.attached_class) @@ -154,6 +163,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 @@ -166,6 +178,7 @@ module Stagehand { ignore_selectors: T::Array[String], model: T.any(Stagehand::ModelConfig, String), + screenshot: T::Boolean, selector: String, timeout: Float } diff --git a/sig/stagehand/models/session_extract_params.rbs b/sig/stagehand/models/session_extract_params.rbs index aedaaca..251245b 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,6 +102,7 @@ module Stagehand def to_hash: -> { ignore_selectors: ::Array[String], model: Stagehand::Models::SessionExtractParams::Options::model, + screenshot: bool, selector: String, timeout: Float } From f9752bc3297bb9feef4d4b46d7faeac2a5e73335 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 19:43:01 +0000 Subject: [PATCH 8/9] feat: [STG-1756] forward Vertex model config --- .stats.yml | 4 +- lib/stagehand/internal/type/union.rb | 11 + lib/stagehand/models/model_config.rb | 459 ++++-- lib/stagehand/models/session_act_params.rb | 335 +++- .../models/session_execute_params.rb | 671 +++++++- .../models/session_extract_params.rb | 335 +++- .../models/session_observe_params.rb | 335 +++- rbi/stagehand/models/model_config.rbi | 806 ++++++---- rbi/stagehand/models/session_act_params.rbi | 712 ++++++++- .../models/session_execute_params.rbi | 1422 ++++++++++++++++- .../models/session_extract_params.rbi | 712 ++++++++- .../models/session_observe_params.rbi | 712 ++++++++- sig/stagehand/models.rbs | 2 +- sig/stagehand/models/model_config.rbs | 420 +++-- sig/stagehand/models/session_act_params.rbs | 325 +++- .../models/session_execute_params.rbs | 650 +++++++- .../models/session_extract_params.rbs | 325 +++- .../models/session_observe_params.rbs | 325 +++- 18 files changed, 7892 insertions(+), 669 deletions(-) diff --git a/.stats.yml b/.stats.yml index 9043f09..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-80502d74c1be605e77d45ff2b54297fe34ce85dbad1e8f2dfa30ba6d09601219.yml -openapi_spec_hash: fd62f768756a400c3ecd695bfcf3845a +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/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 56ae21d..92281b1 100644 --- a/lib/stagehand/models/model_config.rb +++ b/lib/stagehand/models/model_config.rb @@ -2,228 +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 google_auth_options - # google-auth-library options used to authenticate Vertex AI models - # - # @return [Stagehand::Models::ModelConfig::GoogleAuthOptions, nil] - optional :google_auth_options, - -> { Stagehand::ModelConfig::GoogleAuthOptions }, - api_name: :googleAuthOptions - - # @!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 location - # Google Cloud location for Vertex AI models - # - # @return [String, nil] - optional :location, String - - # @!attribute project - # Google Cloud project ID for Vertex AI models - # - # @return [String, nil] - optional :project, 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, google_auth_options: nil, headers: nil, location: nil, project: 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 google_auth_options [Stagehand::Models::ModelConfig::GoogleAuthOptions] google-auth-library options used to authenticate Vertex AI models - # - # @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the model provider - # - # @param location [String] Google Cloud location for Vertex AI models - # - # @param project [String] Google Cloud project ID for Vertex AI models - # - # @param provider [Symbol, Stagehand::Models::ModelConfig::Provider] AI provider for the model (or provide a baseURL endpoint instead) - - # @see Stagehand::Models::ModelConfig#google_auth_options - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - # @!attribute credentials - # Google Cloud service account credentials - # - # @return [Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials, nil] - optional :credentials, -> { Stagehand::ModelConfig::GoogleAuthOptions::Credentials } - - # @!attribute project_id - # Google Cloud project ID used by google-auth-library + 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 [String, nil] - optional :project_id, String, api_name: :projectId + # @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 scopes - # Google auth scopes for the desired API request + # @!attribute api_key + # API key for the model provider # - # @return [String, Array, nil] - optional :scopes, union: -> { Stagehand::ModelConfig::GoogleAuthOptions::Scopes } + # @return [String, nil] + optional :api_key, String, api_name: :apiKey - # @!attribute universe_domain - # Google Cloud universe domain + # @!attribute base_url + # Base URL for the model provider # # @return [String, nil] - optional :universe_domain, String, api_name: :universeDomain + optional :base_url, String, api_name: :baseURL - # @!method initialize(credentials: nil, project_id: nil, scopes: nil, universe_domain: nil) - # google-auth-library options used to authenticate Vertex AI models + # @!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 credentials [Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials] Google Cloud service account credentials + # @param provider_options [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions] Vertex provider-specific model configuration # - # @param project_id [String] Google Cloud project ID used by google-auth-library + # @param api_key [String] API key for the model provider # - # @param scopes [String, Array] Google auth scopes for the desired API request + # @param base_url [String] Base URL for the model provider # - # @param universe_domain [String] Google Cloud universe domain + # @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::GoogleAuthOptions#credentials - class Credentials < Stagehand::Internal::Type::BaseModel - # @!attribute client_email + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject#auth + class Auth < Stagehand::Internal::Type::BaseModel + # @!attribute credentials + # Google Cloud service account credentials # - # @return [String] - required :client_email, String + # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials] + required :credentials, -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials } - # @!attribute private_key + # @!attribute type + # Use inline Google Cloud service account credentials for provider authentication # - # @return [String] - required :private_key, String + # @return [Symbol, :googleServiceAccount] + required :type, const: :googleServiceAccount - # @!attribute auth_provider_x509_cert_url + # @!attribute project_id + # Google Cloud project ID used by google-auth-library # # @return [String, nil] - optional :auth_provider_x509_cert_url, String + optional :project_id, String, api_name: :projectId - # @!attribute auth_uri + # @!attribute scopes + # Google auth scopes for the desired API request # - # @return [String, nil] - optional :auth_uri, String + # @return [String, Array, nil] + optional :scopes, union: -> { Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes } - # @!attribute client_id + # @!attribute universe_domain + # Google Cloud universe domain # # @return [String, nil] - optional :client_id, String + optional :universe_domain, String, api_name: :universeDomain - # @!attribute client_x509_cert_url + # @!method initialize(credentials:, project_id: nil, scopes: nil, universe_domain: nil, type: :googleServiceAccount) + # Vertex provider authentication configuration # - # @return [String, nil] - optional :client_x509_cert_url, String - - # @!attribute private_key_id + # @param credentials [Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials] Google Cloud service account credentials # - # @return [String, nil] - optional :private_key_id, String - - # @!attribute project_id + # @param project_id [String] Google Cloud project ID used by google-auth-library # - # @return [String, nil] - optional :project_id, String - - # @!attribute token_uri + # @param scopes [String, Array] Google auth scopes for the desired API request # - # @return [String, nil] - optional :token_uri, String + # @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 - # @!attribute type + # Google auth scopes for the desired API request # - # @return [Symbol, Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials::Type, nil] - optional :type, enum: -> { Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type } + # @see Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth#scopes + module Scopes + extend Stagehand::Internal::Type::Union - # @!attribute universe_domain + 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 [String, nil] - optional :universe_domain, String + # @return [Stagehand::Models::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex] + required :vertex, -> { Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex } - # @!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 + # @!method initialize(vertex:) + # Vertex provider-specific model configuration # - # @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::GoogleAuthOptions::Credentials::Type] - # @param universe_domain [String] - - # @see Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials#type - module Type - extend Stagehand::Internal::Type::Enum - - SERVICE_ACCOUNT = :service_account - - # @!method self.values - # @return [Array] + # @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 - # Google auth scopes for the desired API request + class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel + # @!attribute model_name + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') # - # @see Stagehand::Models::ModelConfig::GoogleAuthOptions#scopes - module Scopes - extend Stagehand::Internal::Type::Union + # @return [String] + required :model_name, String, api_name: :modelName - variant String + # @!attribute api_key + # API key for the model provider + # + # @return [String, nil] + optional :api_key, String, api_name: :apiKey - variant -> { Stagehand::Models::ModelConfig::GoogleAuthOptions::Scopes::StringArray } + # @!attribute base_url + # Base URL for the model provider + # + # @return [String, nil] + optional :base_url, String, api_name: :baseURL - # @!method self.variants - # @return [Array(String, Array)] + # @!attribute headers + # Custom headers sent with every request to the model provider + # + # @return [Hash{Symbol=>String}, nil] + optional :headers, Stagehand::Internal::Type::HashOf[String] - # @type [Stagehand::Internal::Type::Converter] - StringArray = Stagehand::Internal::Type::ArrayOf[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 - # 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 - VERTEX = :vertex - - # @!method self.values - # @return [Array] - 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 8124184..ae043c3 100644 --- a/lib/stagehand/models/session_extract_params.rb +++ b/lib/stagehand/models/session_extract_params.rb @@ -69,7 +69,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::SessionExtractParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionExtractParams::Options::Model::GenericModelConfigObject, String, nil] optional :model, union: -> { Stagehand::SessionExtractParams::Options::Model } # @!attribute screenshot @@ -97,7 +97,7 @@ class Options < Stagehand::Internal::Type::BaseModel # # @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 # @@ -111,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 8564643..7ca65fe 100644 --- a/lib/stagehand/models/session_observe_params.rb +++ b/lib/stagehand/models/session_observe_params.rb @@ -61,7 +61,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::SessionObserveParams::Options::Model::VertexModelConfigObject, Stagehand::Models::SessionObserveParams::Options::Model::GenericModelConfigObject, String, nil] optional :model, union: -> { Stagehand::SessionObserveParams::Options::Model } # @!attribute selector @@ -91,7 +91,7 @@ class Options < Stagehand::Internal::Type::BaseModel # # @param ignore_selectors [Array] Selectors for elements and subtrees that should be excluded from observation # - # @param model [Stagehand::Models::ModelConfig, String] Model configuration object or model name string (e.g., 'openai/gpt-5-nano') + # @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 # @@ -105,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/rbi/stagehand/models/model_config.rbi b/rbi/stagehand/models/model_config.rbi index ebba7d6..d43b6d9 100644 --- a/rbi/stagehand/models/model_config.rbi +++ b/rbi/stagehand/models/model_config.rbi @@ -2,327 +2,315 @@ 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 - - # 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 - - # google-auth-library options used to authenticate Vertex AI models - sig { returns(T.nilable(Stagehand::ModelConfig::GoogleAuthOptions)) } - attr_reader :google_auth_options - - sig do - params( - google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions::OrHash - ).void - end - attr_writer :google_auth_options - - # 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 - - # Google Cloud location for Vertex AI models - sig { returns(T.nilable(String)) } - attr_reader :location - - sig { params(location: String).void } - attr_writer :location - - # Google Cloud project ID for Vertex AI models - sig { returns(T.nilable(String)) } - attr_reader :project - - sig { params(project: String).void } - attr_writer :project - - # AI provider for the model (or provide a baseURL endpoint instead) - sig { returns(T.nilable(Stagehand::ModelConfig::Provider::OrSymbol)) } - attr_reader :provider - - sig { params(provider: Stagehand::ModelConfig::Provider::OrSymbol).void } - attr_writer :provider - - sig do - params( - model_name: String, - api_key: String, - base_url: String, - google_auth_options: - Stagehand::ModelConfig::GoogleAuthOptions::OrHash, - headers: T::Hash[Symbol, String], - location: String, - project: 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, - # google-auth-library options used to authenticate Vertex AI models - google_auth_options: nil, - # Custom headers sent with every request to the model provider - headers: nil, - # Google Cloud location for Vertex AI models - location: nil, - # Google Cloud project ID for Vertex AI models - project: 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, - google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, - headers: T::Hash[Symbol, String], - location: String, - project: String, - provider: Stagehand::ModelConfig::Provider::OrSymbol - } - ) - end - def to_hash - end - - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel OrHash = T.type_alias do T.any( - Stagehand::ModelConfig::GoogleAuthOptions, + Stagehand::ModelConfig::VertexModelConfigObject, Stagehand::Internal::AnyHash ) end - # Google Cloud service account credentials - sig do - returns( - T.nilable(Stagehand::ModelConfig::GoogleAuthOptions::Credentials) - ) - end - attr_reader :credentials + # Vertex provider authentication configuration + sig { returns(Stagehand::ModelConfig::VertexModelConfigObject::Auth) } + attr_reader :auth sig do params( - credentials: - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::OrHash + auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth::OrHash ).void end - attr_writer :credentials + attr_writer :auth - # Google Cloud project ID used by google-auth-library - sig { returns(T.nilable(String)) } - attr_reader :project_id + # Model name string with provider prefix (e.g., 'openai/gpt-5-nano') + sig { returns(String) } + attr_accessor :model_name - sig { params(project_id: String).void } - attr_writer :project_id + # Vertex AI model provider + sig { returns(Symbol) } + attr_accessor :provider - # Google auth scopes for the desired API request + # Vertex provider-specific model configuration sig do returns( - T.nilable( - Stagehand::ModelConfig::GoogleAuthOptions::Scopes::Variants - ) + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions ) end - attr_reader :scopes + attr_reader :provider_options sig do params( - scopes: Stagehand::ModelConfig::GoogleAuthOptions::Scopes::Variants + provider_options: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::OrHash ).void end - attr_writer :scopes + 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 - # Google Cloud universe domain + # Base URL for the model provider sig { returns(T.nilable(String)) } - attr_reader :universe_domain + attr_reader :base_url - sig { params(universe_domain: String).void } - attr_writer :universe_domain + 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 - # google-auth-library options used to authenticate Vertex AI models sig do params( - credentials: - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::OrHash, - project_id: String, - scopes: Stagehand::ModelConfig::GoogleAuthOptions::Scopes::Variants, - universe_domain: String + 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: Symbol ).returns(T.attached_class) end def self.new( - # Google Cloud service account credentials - credentials: nil, - # 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 + # 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( { - credentials: - Stagehand::ModelConfig::GoogleAuthOptions::Credentials, - project_id: String, - scopes: - Stagehand::ModelConfig::GoogleAuthOptions::Scopes::Variants, - universe_domain: String + 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 Credentials < Stagehand::Internal::Type::BaseModel + class Auth < Stagehand::Internal::Type::BaseModel OrHash = T.type_alias do T.any( - Stagehand::ModelConfig::GoogleAuthOptions::Credentials, + Stagehand::ModelConfig::VertexModelConfigObject::Auth, 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 + # Google Cloud service account credentials + sig do + returns( + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials + ) + end + attr_reader :credentials - sig { returns(T.nilable(String)) } - attr_reader :private_key_id + sig do + params( + credentials: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::OrHash + ).void + end + attr_writer :credentials - sig { params(private_key_id: String).void } - attr_writer :private_key_id + # 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 - sig { returns(T.nilable(String)) } - attr_reader :token_uri - - sig { params(token_uri: String).void } - attr_writer :token_uri - + # Google auth scopes for the desired API request sig do returns( T.nilable( - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type::OrSymbol + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants ) ) end - attr_reader :type + attr_reader :scopes sig do params( - type: - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type::OrSymbol + scopes: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants ).void end - attr_writer :type + 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 - # Google Cloud service account credentials + # Vertex provider authentication configuration 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, + credentials: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::OrHash, project_id: String, - token_uri: String, - type: - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type::OrSymbol, - universe_domain: String + scopes: + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants, + universe_domain: String, + type: Symbol ).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, + # Google Cloud service account credentials + credentials:, + # Google Cloud project ID used by google-auth-library project_id: nil, - token_uri: nil, - type: nil, - universe_domain: 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, @@ -333,94 +321,362 @@ module Stagehand project_id: String, token_uri: String, type: - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type::OrSymbol, + 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 - def to_hash - end + 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 + 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 + ) - TaggedSymbol = - T.type_alias do - T.all( - Symbol, - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type + sig do + override.returns( + T::Array[ + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol + ] ) end - OrSymbol = T.type_alias { T.any(Symbol, String) } + def self.values + end + end + end - SERVICE_ACCOUNT = - T.let( - :service_account, - Stagehand::ModelConfig::GoogleAuthOptions::Credentials::Type::TaggedSymbol - ) + # 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::GoogleAuthOptions::Credentials::Type::TaggedSymbol + Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants ] ) end - def self.values + def self.variants end + + StringArray = + T.let( + Stagehand::Internal::Type::ArrayOf[String], + Stagehand::Internal::Type::Converter + ) end end - # Google auth scopes for the desired API request - module Scopes - extend Stagehand::Internal::Type::Union + 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 - Variants = T.type_alias { T.any(String, T::Array[String]) } + 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( - T::Array[ - Stagehand::ModelConfig::GoogleAuthOptions::Scopes::Variants - ] + { + vertex: + Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex + } ) end - def self.variants + def to_hash end - StringArray = - T.let( - Stagehand::Internal::Type::ArrayOf[String], - Stagehand::Internal::Type::Converter + 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 - # 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 + + # 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 - TaggedSymbol = - T.type_alias { T.all(Symbol, Stagehand::ModelConfig::Provider) } - OrSymbol = T.type_alias { T.any(Symbol, String) } + sig do + params( + provider: + Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol + ).void + end + attr_writer :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) - VERTEX = T.let(:vertex, Stagehand::ModelConfig::Provider::TaggedSymbol) + 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 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 841a61d..970dce0 100644 --- a/rbi/stagehand/models/session_extract_params.rbi +++ b/rbi/stagehand/models/session_extract_params.rbi @@ -119,11 +119,28 @@ 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 @@ -152,7 +169,12 @@ 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 @@ -177,7 +199,12 @@ 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 @@ -191,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 240e691..8bde0a2 100644 --- a/rbi/stagehand/models/session_observe_params.rbi +++ b/rbi/stagehand/models/session_observe_params.rbi @@ -108,11 +108,28 @@ 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::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 @@ -169,7 +186,12 @@ module Stagehand sig do params( ignore_selectors: T::Array[String], - model: T.any(Stagehand::ModelConfig::OrHash, String), + model: + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject::OrHash, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject::OrHash, + String + ), selector: String, timeout: Float, variables: @@ -204,7 +226,12 @@ module Stagehand override.returns( { ignore_selectors: T::Array[String], - model: T.any(Stagehand::ModelConfig, String), + model: + T.any( + Stagehand::SessionObserveParams::Options::Model::VertexModelConfigObject, + Stagehand::SessionObserveParams::Options::Model::GenericModelConfigObject, + String + ), selector: String, timeout: Float, variables: @@ -227,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 80b6956..7962f75 100644 --- a/sig/stagehand/models/model_config.rbs +++ b/sig/stagehand/models/model_config.rbs @@ -1,240 +1,332 @@ module Stagehand module Models type model_config = - { - model_name: String, - api_key: String, - base_url: String, - google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, - headers: ::Hash[Symbol, String], - location: String, - project: 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? - - def api_key=: (String) -> String - - attr_reader base_url: String? - - def base_url=: (String) -> String - - attr_reader google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions? + 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 google_auth_options=: ( - Stagehand::ModelConfig::GoogleAuthOptions - ) -> Stagehand::ModelConfig::GoogleAuthOptions + class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel + attr_accessor auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth - attr_reader headers: ::Hash[Symbol, String]? + attr_accessor model_name: String - def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] + attr_accessor provider: :vertex - attr_reader location: String? + attr_accessor provider_options: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions - def location=: (String) -> String + attr_reader api_key: String? - attr_reader project: String? + def api_key=: (String) -> String - def project=: (String) -> String + attr_reader base_url: String? - attr_reader provider: Stagehand::Models::ModelConfig::provider? + def base_url=: (String) -> String - def provider=: ( - Stagehand::Models::ModelConfig::provider - ) -> Stagehand::Models::ModelConfig::provider + attr_reader headers: ::Hash[Symbol, String]? - def initialize: ( - model_name: String, - ?api_key: String, - ?base_url: String, - ?google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, - ?headers: ::Hash[Symbol, String], - ?location: String, - ?project: String, - ?provider: Stagehand::Models::ModelConfig::provider - ) -> void + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - def to_hash: -> { - model_name: String, - api_key: String, - base_url: String, - google_auth_options: Stagehand::ModelConfig::GoogleAuthOptions, - headers: ::Hash[Symbol, String], - location: String, - project: String, - provider: Stagehand::Models::ModelConfig::provider - } + 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 - type google_auth_options = - { - credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials, - project_id: String, - scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes, - universe_domain: String + 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] } - class GoogleAuthOptions < Stagehand::Internal::Type::BaseModel - attr_reader credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials? + type auth = + { + credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, + project_id: String, + scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes, + universe_domain: String + } - def credentials=: ( - Stagehand::ModelConfig::GoogleAuthOptions::Credentials - ) -> Stagehand::ModelConfig::GoogleAuthOptions::Credentials + class Auth < Stagehand::Internal::Type::BaseModel + attr_accessor credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials - attr_reader project_id: String? + attr_accessor type: :googleServiceAccount - def project_id=: (String) -> String + attr_reader project_id: String? - attr_reader scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes? + def project_id=: (String) -> String - def scopes=: ( - Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes - ) -> Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes + attr_reader scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes? - attr_reader universe_domain: String? + def scopes=: ( + Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes + ) -> Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes - def universe_domain=: (String) -> String + attr_reader universe_domain: String? - def initialize: ( - ?credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials, - ?project_id: String, - ?scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes, - ?universe_domain: String - ) -> void + def universe_domain=: (String) -> String - def to_hash: -> { - credentials: Stagehand::ModelConfig::GoogleAuthOptions::Credentials, - project_id: String, - scopes: Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes, - universe_domain: 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 - 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, + def to_hash: -> { + credentials: Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials, + type: :googleServiceAccount, project_id: String, - token_uri: String, - type: Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials::type_, + scopes: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::scopes, universe_domain: String } - class Credentials < Stagehand::Internal::Type::BaseModel - attr_accessor client_email: 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 + } - attr_accessor private_key: String + class Credentials < Stagehand::Internal::Type::BaseModel + attr_accessor client_email: String - attr_reader auth_provider_x509_cert_url: String? + attr_accessor private_key: String - def auth_provider_x509_cert_url=: (String) -> String + attr_reader auth_provider_x509_cert_url: String? - attr_reader auth_uri: String? + def auth_provider_x509_cert_url=: (String) -> String - def auth_uri=: (String) -> String + attr_reader auth_uri: String? - attr_reader client_id: String? + def auth_uri=: (String) -> String - def client_id=: (String) -> String + attr_reader client_id: String? - attr_reader client_x509_cert_url: String? + def client_id=: (String) -> String - def client_x509_cert_url=: (String) -> String + attr_reader client_x509_cert_url: String? - attr_reader private_key_id: String? + def client_x509_cert_url=: (String) -> String - def private_key_id=: (String) -> String + attr_reader private_key_id: String? - attr_reader project_id: String? + def private_key_id=: (String) -> String - def project_id=: (String) -> String + attr_reader project_id: String? - attr_reader token_uri: String? + def project_id=: (String) -> String - def token_uri=: (String) -> String + attr_reader token_uri: String? - attr_reader type: Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials::type_? + def token_uri=: (String) -> String - def type=: ( - Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials::type_ - ) -> Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials::type_ + attr_reader type: Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_? - attr_reader universe_domain: String? + def type=: ( + Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_ + ) -> Stagehand::Models::ModelConfig::VertexModelConfigObject::Auth::Credentials::type_ - def universe_domain=: (String) -> String + 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: ( - 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::GoogleAuthOptions::Credentials::type_, - ?universe_domain: String + vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex ) -> 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::GoogleAuthOptions::Credentials::type_, - universe_domain: String + vertex: Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex } - type type_ = :service_account + type vertex = + { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } - module Type - extend Stagehand::Internal::Type::Enum + class Vertex < Stagehand::Internal::Type::BaseModel + attr_accessor location: String - SERVICE_ACCOUNT: :service_account + attr_accessor project: String - def self?.values: -> ::Array[Stagehand::Models::ModelConfig::GoogleAuthOptions::Credentials::type_] - end - end + attr_reader base_url: String? + + def base_url=: (String) -> String - type scopes = String | ::Array[String] + attr_reader headers: ::Hash[Symbol, String]? - module Scopes - extend Stagehand::Internal::Type::Union + def headers=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String] - def self?.variants: -> ::Array[Stagehand::Models::ModelConfig::GoogleAuthOptions::scopes] + def initialize: ( + location: String, + project: String, + ?base_url: String, + ?headers: ::Hash[Symbol, String] + ) -> void - StringArray: Stagehand::Internal::Type::Converter + def to_hash: -> { + location: String, + project: String, + base_url: String, + headers: ::Hash[Symbol, String] + } + end end end - type provider = - :openai | :anthropic | :google | :microsoft | :bedrock | :vertex + 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? - module Provider - extend Stagehand::Internal::Type::Enum + def base_url=: (String) -> String - OPENAI: :openai - ANTHROPIC: :anthropic - GOOGLE: :google - MICROSOFT: :microsoft - BEDROCK: :bedrock - VERTEX: :vertex + attr_reader headers: ::Hash[Symbol, String]? - def self?.values: -> ::Array[Stagehand::Models::ModelConfig::provider] + 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 251245b..7db91e3 100644 --- a/sig/stagehand/models/session_extract_params.rbs +++ b/sig/stagehand/models/session_extract_params.rbs @@ -107,11 +107,334 @@ module Stagehand 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 063b837..a73966f 100644 --- a/sig/stagehand/models/session_observe_params.rbs +++ b/sig/stagehand/models/session_observe_params.rbs @@ -102,11 +102,334 @@ module Stagehand 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 From f688a70f367c45c532e08e30e85fdf804ea7d3cc Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 19:43:29 +0000 Subject: [PATCH 9/9] release: 3.21.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ Gemfile.lock | 2 +- lib/stagehand/version.rb | 2 +- 4 files changed, 19 insertions(+), 3 deletions(-) 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/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/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