Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "3.21.0"
".": "3.22.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 8
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/stagehand-c7910965e66e73ad8b65b6cc391d431094b2a6c6577c3e9d82feaa8138e74cff.yml
openapi_spec_hash: 37748bb69c22a9ce721d9b5a5861f964
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase/stagehand-4d0d50b4f18fd74f58aca0b84d6968d1228499f2fa4e5714516f13ff6f820c9d.yml
openapi_spec_hash: f7b1a869f3e412aea4d4bd42467791bb
config_hash: 1fb12ae9b478488bc1e56bfbdc210b01
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 3.22.0 (2026-06-09)

Full Changelog: [v3.21.0...v3.22.0](https://github.com/browserbase/stagehand-ruby/compare/v3.21.0...v3.22.0)

### Features

* [STG-2090] Add Azure Entra model auth support ([1f8bf4b](https://github.com/browserbase/stagehand-ruby/commit/1f8bf4b2421c4c85887535aff089a81392aef841))

## 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)
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
stagehand (3.21.0)
stagehand (3.22.0)
cgi
connection_pool

Expand Down
4 changes: 3 additions & 1 deletion lib/stagehand/internal/type/union.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ module Type
# case model_config
# when Stagehand::ModelConfig::VertexModelConfigObject
# puts(model_config.auth)
# when Stagehand::ModelConfig::GenericModelConfigObject
# when Stagehand::ModelConfig::AzureEntraModelConfigObject
# puts(model_config.model_name)
# when Stagehand::ModelConfig::AzureAPIKeyModelConfigObject
# puts(model_config.provider)
# else
# puts(model_config)
# end
Expand Down
258 changes: 257 additions & 1 deletion lib/stagehand/models/model_config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ module ModelConfig

variant -> { Stagehand::ModelConfig::VertexModelConfigObject }

variant -> { Stagehand::ModelConfig::AzureEntraModelConfigObject }

variant -> { Stagehand::ModelConfig::AzureAPIKeyModelConfigObject }

variant -> { Stagehand::ModelConfig::GenericModelConfigObject }

class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
Expand Down Expand Up @@ -268,6 +272,258 @@ class Vertex < Stagehand::Internal::Type::BaseModel
end
end

class AzureEntraModelConfigObject < Stagehand::Internal::Type::BaseModel
# @!attribute auth
# Azure provider authentication configuration
#
# @return [Stagehand::Models::ModelConfig::AzureEntraModelConfigObject::Auth]
required :auth, -> { Stagehand::ModelConfig::AzureEntraModelConfigObject::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
# Azure OpenAI model provider
#
# @return [Symbol, :azure]
required :provider, const: :azure

# @!attribute provider_options
# Azure provider-specific model configuration
#
# @return [Stagehand::Models::ModelConfig::AzureEntraModelConfigObject::ProviderOptions]
required :provider_options,
-> { Stagehand::ModelConfig::AzureEntraModelConfigObject::ProviderOptions },
api_name: :providerOptions

# @!attribute base_url
# Base URL for the model provider
#
# @return [String, nil]
optional :base_url, String, api_name: :baseURL

# @!attribute headers
# Custom headers 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:, base_url: nil, headers: nil, provider: :azure)
# @param auth [Stagehand::Models::ModelConfig::AzureEntraModelConfigObject::Auth] Azure provider authentication configuration
#
# @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
#
# @param provider_options [Stagehand::Models::ModelConfig::AzureEntraModelConfigObject::ProviderOptions] Azure provider-specific model configuration
#
# @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, :azure] Azure OpenAI model provider

# @see Stagehand::Models::ModelConfig::AzureEntraModelConfigObject#auth
class Auth < Stagehand::Internal::Type::BaseModel
# @!attribute token
# Microsoft Entra ID bearer token for Azure OpenAI
#
# @return [String]
required :token, String

# @!attribute type
# Use a Microsoft Entra ID bearer token for authentication
#
# @return [Symbol, :azureEntraId]
required :type, const: :azureEntraId

# @!method initialize(token:, type: :azureEntraId)
# Azure provider authentication configuration
#
# @param token [String] Microsoft Entra ID bearer token for Azure OpenAI
#
# @param type [Symbol, :azureEntraId] Use a Microsoft Entra ID bearer token for authentication
end

# @see Stagehand::Models::ModelConfig::AzureEntraModelConfigObject#provider_options
class ProviderOptions < Stagehand::Internal::Type::BaseModel
# @!attribute azure
# Azure OpenAI provider-specific settings
#
# @return [Stagehand::Models::ModelConfig::AzureEntraModelConfigObject::ProviderOptions::Azure]
required :azure, -> { Stagehand::ModelConfig::AzureEntraModelConfigObject::ProviderOptions::Azure }

# @!method initialize(azure:)
# Azure provider-specific model configuration
#
# @param azure [Stagehand::Models::ModelConfig::AzureEntraModelConfigObject::ProviderOptions::Azure] Azure OpenAI provider-specific settings

# @see Stagehand::Models::ModelConfig::AzureEntraModelConfigObject::ProviderOptions#azure
class Azure < Stagehand::Internal::Type::BaseModel
# @!attribute api_version
# Azure OpenAI API version
#
# @return [String, nil]
optional :api_version, String, api_name: :apiVersion

# @!attribute base_url
# Base URL for the Azure OpenAI provider
#
# @return [String, nil]
optional :base_url, String, api_name: :baseURL

# @!attribute headers
# Custom headers sent with every request to the Azure OpenAI provider
#
# @return [Hash{Symbol=>String}, nil]
optional :headers, Stagehand::Internal::Type::HashOf[String]

# @!attribute resource_name
# Azure OpenAI resource name
#
# @return [String, nil]
optional :resource_name, String, api_name: :resourceName

# @!attribute use_deployment_based_urls
# Whether to use deployment-based Azure OpenAI URLs
#
# @return [Boolean, nil]
optional :use_deployment_based_urls,
Stagehand::Internal::Type::Boolean,
api_name: :useDeploymentBasedUrls

# @!method initialize(api_version: nil, base_url: nil, headers: nil, resource_name: nil, use_deployment_based_urls: nil)
# Azure OpenAI provider-specific settings
#
# @param api_version [String] Azure OpenAI API version
#
# @param base_url [String] Base URL for the Azure OpenAI provider
#
# @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Azure OpenAI provider
#
# @param resource_name [String] Azure OpenAI resource name
#
# @param use_deployment_based_urls [Boolean] Whether to use deployment-based Azure OpenAI URLs
end
end
end

class AzureAPIKeyModelConfigObject < 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 provider
# Azure OpenAI model provider
#
# @return [Symbol, :azure]
required :provider, const: :azure

# @!attribute provider_options
# Azure provider-specific model configuration
#
# @return [Stagehand::Models::ModelConfig::AzureAPIKeyModelConfigObject::ProviderOptions]
required :provider_options,
-> { Stagehand::ModelConfig::AzureAPIKeyModelConfigObject::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(model_name:, provider_options:, api_key: nil, base_url: nil, headers: nil, provider: :azure)
# @param model_name [String] Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
#
# @param provider_options [Stagehand::Models::ModelConfig::AzureAPIKeyModelConfigObject::ProviderOptions] Azure 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, :azure] Azure OpenAI model provider

# @see Stagehand::Models::ModelConfig::AzureAPIKeyModelConfigObject#provider_options
class ProviderOptions < Stagehand::Internal::Type::BaseModel
# @!attribute azure
# Azure OpenAI provider-specific settings
#
# @return [Stagehand::Models::ModelConfig::AzureAPIKeyModelConfigObject::ProviderOptions::Azure]
required :azure, -> { Stagehand::ModelConfig::AzureAPIKeyModelConfigObject::ProviderOptions::Azure }

# @!method initialize(azure:)
# Azure provider-specific model configuration
#
# @param azure [Stagehand::Models::ModelConfig::AzureAPIKeyModelConfigObject::ProviderOptions::Azure] Azure OpenAI provider-specific settings

# @see Stagehand::Models::ModelConfig::AzureAPIKeyModelConfigObject::ProviderOptions#azure
class Azure < Stagehand::Internal::Type::BaseModel
# @!attribute api_version
# Azure OpenAI API version
#
# @return [String, nil]
optional :api_version, String, api_name: :apiVersion

# @!attribute base_url
# Base URL for the Azure OpenAI provider
#
# @return [String, nil]
optional :base_url, String, api_name: :baseURL

# @!attribute headers
# Custom headers sent with every request to the Azure OpenAI provider
#
# @return [Hash{Symbol=>String}, nil]
optional :headers, Stagehand::Internal::Type::HashOf[String]

# @!attribute resource_name
# Azure OpenAI resource name
#
# @return [String, nil]
optional :resource_name, String, api_name: :resourceName

# @!attribute use_deployment_based_urls
# Whether to use deployment-based Azure OpenAI URLs
#
# @return [Boolean, nil]
optional :use_deployment_based_urls,
Stagehand::Internal::Type::Boolean,
api_name: :useDeploymentBasedUrls

# @!method initialize(api_version: nil, base_url: nil, headers: nil, resource_name: nil, use_deployment_based_urls: nil)
# Azure OpenAI provider-specific settings
#
# @param api_version [String] Azure OpenAI API version
#
# @param base_url [String] Base URL for the Azure OpenAI provider
#
# @param headers [Hash{Symbol=>String}] Custom headers sent with every request to the Azure OpenAI provider
#
# @param resource_name [String] Azure OpenAI resource name
#
# @param use_deployment_based_urls [Boolean] Whether to use deployment-based Azure OpenAI URLs
end
end
end

class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
# @!attribute model_name
# Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
Expand Down Expand Up @@ -328,7 +584,7 @@ module Provider
end

# @!method self.variants
# @return [Array(Stagehand::Models::ModelConfig::VertexModelConfigObject, Stagehand::Models::ModelConfig::GenericModelConfigObject)]
# @return [Array(Stagehand::Models::ModelConfig::VertexModelConfigObject, Stagehand::Models::ModelConfig::AzureEntraModelConfigObject, Stagehand::Models::ModelConfig::AzureAPIKeyModelConfigObject, Stagehand::Models::ModelConfig::GenericModelConfigObject)]
end
end
end
Loading