From 2727cc967c63b7e5ecf16e9b503e7ee1b605559a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 21:01:20 +0000 Subject: [PATCH 1/2] feat: [STG-2090] Add Azure Entra model auth support --- .stats.yml | 4 +- src/stagehand/types/session_act_params.py | 121 ++++++++- src/stagehand/types/session_execute_params.py | 242 +++++++++++++++++- src/stagehand/types/session_extract_params.py | 121 ++++++++- src/stagehand/types/session_observe_params.py | 121 ++++++++- 5 files changed, 602 insertions(+), 7 deletions(-) diff --git a/.stats.yml b/.stats.yml index 15099cab..90ce0789 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-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 diff --git a/src/stagehand/types/session_act_params.py b/src/stagehand/types/session_act_params.py index 71bdfcdb..49b4defb 100644 --- a/src/stagehand/types/session_act_params.py +++ b/src/stagehand/types/session_act_params.py @@ -19,6 +19,13 @@ "OptionsModelVertexModelConfigObjectAuthCredentials", "OptionsModelVertexModelConfigObjectProviderOptions", "OptionsModelVertexModelConfigObjectProviderOptionsVertex", + "OptionsModelAzureEntraModelConfigObject", + "OptionsModelAzureEntraModelConfigObjectAuth", + "OptionsModelAzureEntraModelConfigObjectProviderOptions", + "OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure", + "OptionsModelAzureAPIKeyModelConfigObject", + "OptionsModelAzureAPIKeyModelConfigObjectProviderOptions", + "OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure", "OptionsModelGenericModelConfigObject", "OptionsVariables", "OptionsVariablesUnionMember3", @@ -136,6 +143,112 @@ class OptionsModelVertexModelConfigObject(TypedDict, total=False): """Custom headers sent with every request to the model provider""" +class OptionsModelAzureEntraModelConfigObjectAuth(TypedDict, total=False): + """Azure provider authentication configuration""" + + token: Required[str] + """Microsoft Entra ID bearer token for Azure OpenAI""" + + type: Required[Literal["azureEntraId"]] + """Use a Microsoft Entra ID bearer token for authentication""" + + +class OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class OptionsModelAzureEntraModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class OptionsModelAzureEntraModelConfigObject(TypedDict, total=False): + auth: Required[OptionsModelAzureEntraModelConfigObjectAuth] + """Azure provider authentication configuration""" + + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[OptionsModelAzureEntraModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + +class OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class OptionsModelAzureAPIKeyModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class OptionsModelAzureAPIKeyModelConfigObject(TypedDict, total=False): + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[OptionsModelAzureAPIKeyModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + api_key: Annotated[str, PropertyInfo(alias="apiKey")] + """API key for the model provider""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + class OptionsModelGenericModelConfigObject(TypedDict, total=False): model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" @@ -153,7 +266,13 @@ class OptionsModelGenericModelConfigObject(TypedDict, total=False): """AI provider for the model (or provide a baseURL endpoint instead)""" -OptionsModel: TypeAlias = Union[OptionsModelVertexModelConfigObject, OptionsModelGenericModelConfigObject, str] +OptionsModel: TypeAlias = Union[ + OptionsModelVertexModelConfigObject, + OptionsModelAzureEntraModelConfigObject, + OptionsModelAzureAPIKeyModelConfigObject, + OptionsModelGenericModelConfigObject, + str, +] class OptionsVariablesUnionMember3(TypedDict, total=False): diff --git a/src/stagehand/types/session_execute_params.py b/src/stagehand/types/session_execute_params.py index 5c045977..820e76dc 100644 --- a/src/stagehand/types/session_execute_params.py +++ b/src/stagehand/types/session_execute_params.py @@ -17,6 +17,13 @@ "AgentConfigExecutionModelVertexModelConfigObjectAuthCredentials", "AgentConfigExecutionModelVertexModelConfigObjectProviderOptions", "AgentConfigExecutionModelVertexModelConfigObjectProviderOptionsVertex", + "AgentConfigExecutionModelAzureEntraModelConfigObject", + "AgentConfigExecutionModelAzureEntraModelConfigObjectAuth", + "AgentConfigExecutionModelAzureEntraModelConfigObjectProviderOptions", + "AgentConfigExecutionModelAzureEntraModelConfigObjectProviderOptionsAzure", + "AgentConfigExecutionModelAzureAPIKeyModelConfigObject", + "AgentConfigExecutionModelAzureAPIKeyModelConfigObjectProviderOptions", + "AgentConfigExecutionModelAzureAPIKeyModelConfigObjectProviderOptionsAzure", "AgentConfigExecutionModelGenericModelConfigObject", "AgentConfigModel", "AgentConfigModelVertexModelConfigObject", @@ -24,6 +31,13 @@ "AgentConfigModelVertexModelConfigObjectAuthCredentials", "AgentConfigModelVertexModelConfigObjectProviderOptions", "AgentConfigModelVertexModelConfigObjectProviderOptionsVertex", + "AgentConfigModelAzureEntraModelConfigObject", + "AgentConfigModelAzureEntraModelConfigObjectAuth", + "AgentConfigModelAzureEntraModelConfigObjectProviderOptions", + "AgentConfigModelAzureEntraModelConfigObjectProviderOptionsAzure", + "AgentConfigModelAzureAPIKeyModelConfigObject", + "AgentConfigModelAzureAPIKeyModelConfigObjectProviderOptions", + "AgentConfigModelAzureAPIKeyModelConfigObjectProviderOptionsAzure", "AgentConfigModelGenericModelConfigObject", "ExecuteOptions", "ExecuteOptionsVariables", @@ -143,6 +157,116 @@ class AgentConfigExecutionModelVertexModelConfigObject(TypedDict, total=False): """Custom headers sent with every request to the model provider""" +class AgentConfigExecutionModelAzureEntraModelConfigObjectAuth(TypedDict, total=False): + """Azure provider authentication configuration""" + + token: Required[str] + """Microsoft Entra ID bearer token for Azure OpenAI""" + + type: Required[Literal["azureEntraId"]] + """Use a Microsoft Entra ID bearer token for authentication""" + + +class AgentConfigExecutionModelAzureEntraModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class AgentConfigExecutionModelAzureEntraModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[AgentConfigExecutionModelAzureEntraModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class AgentConfigExecutionModelAzureEntraModelConfigObject(TypedDict, total=False): + auth: Required[AgentConfigExecutionModelAzureEntraModelConfigObjectAuth] + """Azure provider authentication configuration""" + + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[ + AgentConfigExecutionModelAzureEntraModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions") + ] + ] + """Azure provider-specific model configuration""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + +class AgentConfigExecutionModelAzureAPIKeyModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class AgentConfigExecutionModelAzureAPIKeyModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[AgentConfigExecutionModelAzureAPIKeyModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class AgentConfigExecutionModelAzureAPIKeyModelConfigObject(TypedDict, total=False): + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[ + AgentConfigExecutionModelAzureAPIKeyModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions") + ] + ] + """Azure provider-specific model configuration""" + + api_key: Annotated[str, PropertyInfo(alias="apiKey")] + """API key for the model provider""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + class AgentConfigExecutionModelGenericModelConfigObject(TypedDict, total=False): model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" @@ -161,7 +285,11 @@ class AgentConfigExecutionModelGenericModelConfigObject(TypedDict, total=False): AgentConfigExecutionModel: TypeAlias = Union[ - AgentConfigExecutionModelVertexModelConfigObject, AgentConfigExecutionModelGenericModelConfigObject, str + AgentConfigExecutionModelVertexModelConfigObject, + AgentConfigExecutionModelAzureEntraModelConfigObject, + AgentConfigExecutionModelAzureAPIKeyModelConfigObject, + AgentConfigExecutionModelGenericModelConfigObject, + str, ] @@ -258,6 +386,112 @@ class AgentConfigModelVertexModelConfigObject(TypedDict, total=False): """Custom headers sent with every request to the model provider""" +class AgentConfigModelAzureEntraModelConfigObjectAuth(TypedDict, total=False): + """Azure provider authentication configuration""" + + token: Required[str] + """Microsoft Entra ID bearer token for Azure OpenAI""" + + type: Required[Literal["azureEntraId"]] + """Use a Microsoft Entra ID bearer token for authentication""" + + +class AgentConfigModelAzureEntraModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class AgentConfigModelAzureEntraModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[AgentConfigModelAzureEntraModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class AgentConfigModelAzureEntraModelConfigObject(TypedDict, total=False): + auth: Required[AgentConfigModelAzureEntraModelConfigObjectAuth] + """Azure provider authentication configuration""" + + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[AgentConfigModelAzureEntraModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + +class AgentConfigModelAzureAPIKeyModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class AgentConfigModelAzureAPIKeyModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[AgentConfigModelAzureAPIKeyModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class AgentConfigModelAzureAPIKeyModelConfigObject(TypedDict, total=False): + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[AgentConfigModelAzureAPIKeyModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + api_key: Annotated[str, PropertyInfo(alias="apiKey")] + """API key for the model provider""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + class AgentConfigModelGenericModelConfigObject(TypedDict, total=False): model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" @@ -276,7 +510,11 @@ class AgentConfigModelGenericModelConfigObject(TypedDict, total=False): AgentConfigModel: TypeAlias = Union[ - AgentConfigModelVertexModelConfigObject, AgentConfigModelGenericModelConfigObject, str + AgentConfigModelVertexModelConfigObject, + AgentConfigModelAzureEntraModelConfigObject, + AgentConfigModelAzureAPIKeyModelConfigObject, + AgentConfigModelGenericModelConfigObject, + str, ] diff --git a/src/stagehand/types/session_extract_params.py b/src/stagehand/types/session_extract_params.py index 4a0b2d9f..fe88e179 100644 --- a/src/stagehand/types/session_extract_params.py +++ b/src/stagehand/types/session_extract_params.py @@ -17,6 +17,13 @@ "OptionsModelVertexModelConfigObjectAuthCredentials", "OptionsModelVertexModelConfigObjectProviderOptions", "OptionsModelVertexModelConfigObjectProviderOptionsVertex", + "OptionsModelAzureEntraModelConfigObject", + "OptionsModelAzureEntraModelConfigObjectAuth", + "OptionsModelAzureEntraModelConfigObjectProviderOptions", + "OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure", + "OptionsModelAzureAPIKeyModelConfigObject", + "OptionsModelAzureAPIKeyModelConfigObjectProviderOptions", + "OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure", "OptionsModelGenericModelConfigObject", "SessionExtractParamsNonStreaming", "SessionExtractParamsStreaming", @@ -132,6 +139,112 @@ class OptionsModelVertexModelConfigObject(TypedDict, total=False): """Custom headers sent with every request to the model provider""" +class OptionsModelAzureEntraModelConfigObjectAuth(TypedDict, total=False): + """Azure provider authentication configuration""" + + token: Required[str] + """Microsoft Entra ID bearer token for Azure OpenAI""" + + type: Required[Literal["azureEntraId"]] + """Use a Microsoft Entra ID bearer token for authentication""" + + +class OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class OptionsModelAzureEntraModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class OptionsModelAzureEntraModelConfigObject(TypedDict, total=False): + auth: Required[OptionsModelAzureEntraModelConfigObjectAuth] + """Azure provider authentication configuration""" + + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[OptionsModelAzureEntraModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + +class OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class OptionsModelAzureAPIKeyModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class OptionsModelAzureAPIKeyModelConfigObject(TypedDict, total=False): + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[OptionsModelAzureAPIKeyModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + api_key: Annotated[str, PropertyInfo(alias="apiKey")] + """API key for the model provider""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + class OptionsModelGenericModelConfigObject(TypedDict, total=False): model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" @@ -149,7 +262,13 @@ class OptionsModelGenericModelConfigObject(TypedDict, total=False): """AI provider for the model (or provide a baseURL endpoint instead)""" -OptionsModel: TypeAlias = Union[OptionsModelVertexModelConfigObject, OptionsModelGenericModelConfigObject, str] +OptionsModel: TypeAlias = Union[ + OptionsModelVertexModelConfigObject, + OptionsModelAzureEntraModelConfigObject, + OptionsModelAzureAPIKeyModelConfigObject, + OptionsModelGenericModelConfigObject, + str, +] class Options(TypedDict, total=False): diff --git a/src/stagehand/types/session_observe_params.py b/src/stagehand/types/session_observe_params.py index 12550ac8..a0db68b3 100644 --- a/src/stagehand/types/session_observe_params.py +++ b/src/stagehand/types/session_observe_params.py @@ -17,6 +17,13 @@ "OptionsModelVertexModelConfigObjectAuthCredentials", "OptionsModelVertexModelConfigObjectProviderOptions", "OptionsModelVertexModelConfigObjectProviderOptionsVertex", + "OptionsModelAzureEntraModelConfigObject", + "OptionsModelAzureEntraModelConfigObjectAuth", + "OptionsModelAzureEntraModelConfigObjectProviderOptions", + "OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure", + "OptionsModelAzureAPIKeyModelConfigObject", + "OptionsModelAzureAPIKeyModelConfigObjectProviderOptions", + "OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure", "OptionsModelGenericModelConfigObject", "OptionsVariables", "OptionsVariablesUnionMember3", @@ -131,6 +138,112 @@ class OptionsModelVertexModelConfigObject(TypedDict, total=False): """Custom headers sent with every request to the model provider""" +class OptionsModelAzureEntraModelConfigObjectAuth(TypedDict, total=False): + """Azure provider authentication configuration""" + + token: Required[str] + """Microsoft Entra ID bearer token for Azure OpenAI""" + + type: Required[Literal["azureEntraId"]] + """Use a Microsoft Entra ID bearer token for authentication""" + + +class OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class OptionsModelAzureEntraModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[OptionsModelAzureEntraModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class OptionsModelAzureEntraModelConfigObject(TypedDict, total=False): + auth: Required[OptionsModelAzureEntraModelConfigObjectAuth] + """Azure provider authentication configuration""" + + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[OptionsModelAzureEntraModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + +class OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure(TypedDict, total=False): + """Azure OpenAI provider-specific settings""" + + api_version: Annotated[str, PropertyInfo(alias="apiVersion")] + """Azure OpenAI API version""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the Azure OpenAI provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the Azure OpenAI provider""" + + resource_name: Annotated[str, PropertyInfo(alias="resourceName")] + """Azure OpenAI resource name""" + + use_deployment_based_urls: Annotated[bool, PropertyInfo(alias="useDeploymentBasedUrls")] + """Whether to use deployment-based Azure OpenAI URLs""" + + +class OptionsModelAzureAPIKeyModelConfigObjectProviderOptions(TypedDict, total=False): + """Azure provider-specific model configuration""" + + azure: Required[OptionsModelAzureAPIKeyModelConfigObjectProviderOptionsAzure] + """Azure OpenAI provider-specific settings""" + + +class OptionsModelAzureAPIKeyModelConfigObject(TypedDict, total=False): + model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] + """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" + + provider: Required[Literal["azure"]] + """Azure OpenAI model provider""" + + provider_options: Required[ + Annotated[OptionsModelAzureAPIKeyModelConfigObjectProviderOptions, PropertyInfo(alias="providerOptions")] + ] + """Azure provider-specific model configuration""" + + api_key: Annotated[str, PropertyInfo(alias="apiKey")] + """API key for the model provider""" + + base_url: Annotated[str, PropertyInfo(alias="baseURL")] + """Base URL for the model provider""" + + headers: Dict[str, str] + """Custom headers sent with every request to the model provider""" + + class OptionsModelGenericModelConfigObject(TypedDict, total=False): model_name: Required[Annotated[str, PropertyInfo(alias="modelName")]] """Model name string with provider prefix (e.g., 'openai/gpt-5-nano')""" @@ -148,7 +261,13 @@ class OptionsModelGenericModelConfigObject(TypedDict, total=False): """AI provider for the model (or provide a baseURL endpoint instead)""" -OptionsModel: TypeAlias = Union[OptionsModelVertexModelConfigObject, OptionsModelGenericModelConfigObject, str] +OptionsModel: TypeAlias = Union[ + OptionsModelVertexModelConfigObject, + OptionsModelAzureEntraModelConfigObject, + OptionsModelAzureAPIKeyModelConfigObject, + OptionsModelGenericModelConfigObject, + str, +] class OptionsVariablesUnionMember3(TypedDict, total=False): From f9d5d9558c2295d73767f7cdc93302e26f1d42d8 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 21:01:46 +0000 Subject: [PATCH 2/2] release: 3.22.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- src/stagehand/_version.py | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a397c094..544a78b3 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.21.0" + ".": "3.22.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e3292a0..ca53d491 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 3.22.0 (2026-06-09) + +Full Changelog: [v3.21.0...v3.22.0](https://github.com/browserbase/stagehand-python/compare/v3.21.0...v3.22.0) + +### Features + +* [STG-2090] Add Azure Entra model auth support ([2727cc9](https://github.com/browserbase/stagehand-python/commit/2727cc967c63b7e5ecf16e9b503e7ee1b605559a)) + ## 3.21.0 (2026-05-29) Full Changelog: [v3.20.0...v3.21.0](https://github.com/browserbase/stagehand-python/compare/v3.20.0...v3.21.0) diff --git a/pyproject.toml b/pyproject.toml index 7a595051..a824d4a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "stagehand" -version = "3.21.0" +version = "3.22.0" description = "The official Python library for the stagehand API" dynamic = ["readme"] license = "MIT" diff --git a/src/stagehand/_version.py b/src/stagehand/_version.py index 6dcaaca6..ee7fca47 100644 --- a/src/stagehand/_version.py +++ b/src/stagehand/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "stagehand" -__version__ = "3.21.0" # x-release-please-version +__version__ = "3.22.0" # x-release-please-version