Skip to content
Merged
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.1.0"
".": "3.2.0"
}
6 changes: 3 additions & 3 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%2Fstagehand-089c8670f1d7c2e9fa8e5c97010db7c24b8f162eb7cfe76ffa41d70fa46efe2f.yml
openapi_spec_hash: 7a226aee8f3f2ab16febbe6bb35e1657
config_hash: 242651c4871c2869ba3c2e3d337505b9
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-43e6dd4ce19381de488d296e9036fea15bfea9a6f946cf8ccf4e02aecc8fb765.yml
openapi_spec_hash: f736e7a8acea0d73e1031c86ea803246
config_hash: 75b561cd2ba925e4f2a62ec2f1d13738
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 3.2.0 (2026-01-27)

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

### Features

* add auto-bedrock support based on bedrock/provider.model-name ([fb3762b](https://github.com/browserbase/stagehand-ruby/commit/fb3762b610c4f3049bc74790424556c770bffcf4))

## 3.1.0 (2026-01-27)

Full Changelog: [v3.0.3...v3.1.0](https://github.com/browserbase/stagehand-ruby/compare/v3.0.3...v3.1.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.1.0)
stagehand (3.2.0)
cgi
connection_pool

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ To use this gem, install via Bundler by adding the following to your application
<!-- x-release-please-start-version -->

```ruby
gem "stagehand", "~> 3.1.0"
gem "stagehand", "~> 3.2.0"
```

<!-- x-release-please-end -->
Expand Down
32 changes: 29 additions & 3 deletions lib/stagehand/models/session_execute_params.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,18 @@ class SessionExecuteParams < Stagehand::Internal::Type::BaseModel

class AgentConfig < Stagehand::Internal::Type::BaseModel
# @!attribute cua
# Enable Computer Use Agent mode
# Deprecated. Use mode: 'cua' instead. If both are provided, mode takes
# precedence.
#
# @return [Boolean, nil]
optional :cua, Stagehand::Internal::Type::Boolean

# @!attribute mode
# Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
#
# @return [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Mode, nil]
optional :mode, enum: -> { Stagehand::SessionExecuteParams::AgentConfig::Mode }

# @!attribute model
# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
#
Expand All @@ -77,15 +84,34 @@ class AgentConfig < Stagehand::Internal::Type::BaseModel
# @return [String, nil]
optional :system_prompt, String, api_name: :systemPrompt

# @!method initialize(cua: nil, model: nil, provider: nil, system_prompt: nil)
# @param cua [Boolean] Enable Computer Use Agent mode
# @!method initialize(cua: nil, mode: nil, model: nil, provider: nil, system_prompt: nil)
# Some parameter documentations has been truncated, see
# {Stagehand::Models::SessionExecuteParams::AgentConfig} for more details.
#
# @param cua [Boolean] Deprecated. Use mode: 'cua' instead. If both are provided, mode takes precedence
#
# @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 provider [Symbol, Stagehand::Models::SessionExecuteParams::AgentConfig::Provider] AI provider for the agent (legacy, use model: openai/gpt-5-nano instead)
#
# @param system_prompt [String] Custom system prompt for the agent

# Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
#
# @see Stagehand::Models::SessionExecuteParams::AgentConfig#mode
module Mode
extend Stagehand::Internal::Type::Enum

DOM = :dom
HYBRID = :hybrid
CUA = :cua

# @!method self.values
# @return [Array<Symbol>]
end

# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
#
# @see Stagehand::Models::SessionExecuteParams::AgentConfig#model
Expand Down
2 changes: 1 addition & 1 deletion lib/stagehand/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# frozen_string_literal: true

module Stagehand
VERSION = "3.1.0"
VERSION = "3.2.0"
end
65 changes: 63 additions & 2 deletions rbi/stagehand/models/session_execute_params.rbi
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,31 @@ module Stagehand
)
end

# Enable Computer Use Agent mode
# Deprecated. Use mode: 'cua' instead. If both are provided, mode takes
# precedence.
sig { returns(T.nilable(T::Boolean)) }
attr_reader :cua

sig { params(cua: T::Boolean).void }
attr_writer :cua

# Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
sig do
returns(
T.nilable(
Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol
)
)
end
attr_reader :mode

sig do
params(
mode: Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol
).void
end
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))) }
attr_reader :model
Expand Down Expand Up @@ -153,15 +171,19 @@ module Stagehand
sig do
params(
cua: T::Boolean,
mode: Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol,
model: T.any(Stagehand::ModelConfig::OrHash, String),
provider:
Stagehand::SessionExecuteParams::AgentConfig::Provider::OrSymbol,
system_prompt: String
).returns(T.attached_class)
end
def self.new(
# Enable Computer Use Agent mode
# Deprecated. Use mode: 'cua' instead. If both are provided, mode takes
# precedence.
cua: nil,
# Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
mode: nil,
# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
model: nil,
# AI provider for the agent (legacy, use model: openai/gpt-5-nano instead)
Expand All @@ -175,6 +197,8 @@ module Stagehand
override.returns(
{
cua: T::Boolean,
mode:
Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol,
model: T.any(Stagehand::ModelConfig, String),
provider:
Stagehand::SessionExecuteParams::AgentConfig::Provider::OrSymbol,
Expand All @@ -185,6 +209,43 @@ module Stagehand
def to_hash
end

# Tool mode for the agent (dom, hybrid, cua). If set, overrides cua.
module Mode
extend Stagehand::Internal::Type::Enum

TaggedSymbol =
T.type_alias do
T.all(Symbol, Stagehand::SessionExecuteParams::AgentConfig::Mode)
end
OrSymbol = T.type_alias { T.any(Symbol, String) }

DOM =
T.let(
:dom,
Stagehand::SessionExecuteParams::AgentConfig::Mode::TaggedSymbol
)
HYBRID =
T.let(
:hybrid,
Stagehand::SessionExecuteParams::AgentConfig::Mode::TaggedSymbol
)
CUA =
T.let(
:cua,
Stagehand::SessionExecuteParams::AgentConfig::Mode::TaggedSymbol
)

sig do
override.returns(
T::Array[
Stagehand::SessionExecuteParams::AgentConfig::Mode::TaggedSymbol
]
)
end
def self.values
end
end

# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
module Model
extend Stagehand::Internal::Type::Union
Expand Down
21 changes: 21 additions & 0 deletions sig/stagehand/models/session_execute_params.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ module Stagehand
type agent_config =
{
cua: bool,
mode: Stagehand::Models::SessionExecuteParams::AgentConfig::mode,
model: Stagehand::Models::SessionExecuteParams::AgentConfig::model,
provider: Stagehand::Models::SessionExecuteParams::AgentConfig::provider,
system_prompt: String
Expand All @@ -61,6 +62,12 @@ module Stagehand

def cua=: (bool) -> bool

attr_reader mode: Stagehand::Models::SessionExecuteParams::AgentConfig::mode?

def mode=: (
Stagehand::Models::SessionExecuteParams::AgentConfig::mode
) -> Stagehand::Models::SessionExecuteParams::AgentConfig::mode

attr_reader model: Stagehand::Models::SessionExecuteParams::AgentConfig::model?

def model=: (
Expand All @@ -79,18 +86,32 @@ module Stagehand

def initialize: (
?cua: bool,
?mode: Stagehand::Models::SessionExecuteParams::AgentConfig::mode,
?model: Stagehand::Models::SessionExecuteParams::AgentConfig::model,
?provider: Stagehand::Models::SessionExecuteParams::AgentConfig::provider,
?system_prompt: String
) -> void

def to_hash: -> {
cua: bool,
mode: Stagehand::Models::SessionExecuteParams::AgentConfig::mode,
model: Stagehand::Models::SessionExecuteParams::AgentConfig::model,
provider: Stagehand::Models::SessionExecuteParams::AgentConfig::provider,
system_prompt: String
}

type mode = :dom | :hybrid | :cua

module Mode
extend Stagehand::Internal::Type::Enum

DOM: :dom
HYBRID: :hybrid
CUA: :cua

def self?.values: -> ::Array[Stagehand::Models::SessionExecuteParams::AgentConfig::mode]
end

type model = Stagehand::ModelConfig | String

module Model
Expand Down