From ed9fab1f726c05ef48d4a55507b09212d7ced713 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 08:52:09 +0000 Subject: [PATCH 1/4] chore(internal): codegen related update --- lib/stagehand/internal/util.rb | 31 +++++++++++++++++++++++++++++++ rbi/stagehand/internal/util.rbi | 20 ++++++++++++++++++++ sig/stagehand/internal/util.rbs | 10 ++++++++++ 3 files changed, 61 insertions(+) diff --git a/lib/stagehand/internal/util.rb b/lib/stagehand/internal/util.rb index 1b87520..7f2c0d3 100644 --- a/lib/stagehand/internal/util.rb +++ b/lib/stagehand/internal/util.rb @@ -490,6 +490,37 @@ def writable_enum(&blk) JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)} class << self + # @api private + # + # @param query [Hash{Symbol=>Object}] + # + # @return [Hash{Symbol=>Object}] + def encode_query_params(query) + out = {} + query.each { write_query_param_element!(out, _1, _2) } + out + end + + # @api private + # + # @param collection [Hash{Symbol=>Object}] + # @param key [String] + # @param element [Object] + # + # @return [nil] + private def write_query_param_element!(collection, key, element) + case element + in Hash + element.each do |name, value| + write_query_param_element!(collection, "#{key}[#{name}]", value) + end + in Array + collection[key] = element.map(&:to_s).join(",") + else + collection[key] = element.to_s + end + end + # @api private # # @param y [Enumerator::Yielder] diff --git a/rbi/stagehand/internal/util.rbi b/rbi/stagehand/internal/util.rbi index 2e2e702..92b854a 100644 --- a/rbi/stagehand/internal/util.rbi +++ b/rbi/stagehand/internal/util.rbi @@ -301,6 +301,26 @@ module Stagehand T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp) class << self + # @api private + sig do + params(query: Stagehand::Internal::AnyHash).returns( + Stagehand::Internal::AnyHash + ) + end + def encode_query_params(query) + end + + # @api private + sig do + params( + collection: Stagehand::Internal::AnyHash, + key: String, + element: T.anything + ).void + end + private def write_query_param_element!(collection, key, element) + end + # @api private sig do params( diff --git a/sig/stagehand/internal/util.rbs b/sig/stagehand/internal/util.rbs index e9a69a9..170a168 100644 --- a/sig/stagehand/internal/util.rbs +++ b/sig/stagehand/internal/util.rbs @@ -106,6 +106,16 @@ module Stagehand JSON_CONTENT: Regexp JSONL_CONTENT: Regexp + def encode_query_params: ( + ::Hash[Symbol, top] query + ) -> ::Hash[Symbol, top] + + private def write_query_param_element!: ( + ::Hash[Symbol, top] collection, + String key, + top element + ) -> nil + def self?.write_multipart_content: ( Enumerator::Yielder y, val: top, From ed6573f2ddab4f5f51d1262480cb663da5e003d0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 09:41:47 +0000 Subject: [PATCH 2/4] chore(ci): add build step --- .github/workflows/ci.yml | 34 ++++++++++ scripts/utils/upload-artifact.sh | 113 +++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100755 scripts/utils/upload-artifact.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index afcdebf..e131b94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,40 @@ on: - 'stl-preview-base/**' jobs: + build: + timeout-minutes: 10 + name: build + permissions: + contents: read + id-token: write + runs-on: ${{ github.repository == 'stainless-sdks/stagehand-ruby' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + if: |- + github.repository == 'stainless-sdks/stagehand-ruby' && + (github.event_name == 'push' || github.event.pull_request.head.repo.fork) + steps: + - uses: actions/checkout@v6 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: false + - run: |- + bundle install + + - name: Get GitHub OIDC Token + if: github.repository == 'stainless-sdks/stagehand-ruby' + id: github-oidc + uses: actions/github-script@v8 + with: + script: core.setOutput('github_token', await core.getIDToken()); + + - name: Build and upload gem artifacts + if: github.repository == 'stainless-sdks/stagehand-ruby' + env: + URL: https://pkg.stainless.com/s + AUTH: ${{ steps.github-oidc.outputs.github_token }} + SHA: ${{ github.sha }} + PACKAGE_NAME: stagehand + run: ./scripts/utils/upload-artifact.sh lint: timeout-minutes: 10 name: lint diff --git a/scripts/utils/upload-artifact.sh b/scripts/utils/upload-artifact.sh new file mode 100755 index 0000000..d12f5b9 --- /dev/null +++ b/scripts/utils/upload-artifact.sh @@ -0,0 +1,113 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# ANSI Color Codes +GREEN='\033[32m' +RED='\033[31m' +NC='\033[0m' # No Color + +DIST_DIR="dist" + +log_error() { + local msg="$1" + local headers="$2" + local body="$3" + echo -e "${RED}${msg}${NC}" + [[ -f "$headers" ]] && echo -e "${RED}Headers:$(cat "$headers")${NC}" + echo -e "${RED}Body: ${body}${NC}" + exit 1 +} + +upload_file() { + local file_name="$1" + local tmp_headers + tmp_headers=$(mktemp) + + if [ -f "$file_name" ]; then + echo -e "${GREEN}Processing file: $file_name${NC}" + pkg_file_name="${file_name#"${DIST_DIR}/"}" + + # Get signed URL for uploading artifact file + signed_url_response=$(curl -X POST -G "$URL" \ + -sS --retry 5 \ + -D "$tmp_headers" \ + --data-urlencode "filename=$pkg_file_name" \ + -H "Authorization: Bearer $AUTH" \ + -H "Content-Type: application/json") + + # Validate JSON and extract URL + if ! signed_url=$(echo "$signed_url_response" | jq -e -r '.url' 2>/dev/null) || [[ "$signed_url" == "null" ]]; then + log_error "Failed to get valid signed URL" "$tmp_headers" "$signed_url_response" + fi + + # Set content-type based on file extension + local extension="${file_name##*.}" + local content_type + case "$extension" in + gem) content_type="application/octet-stream" ;; + gz) content_type="application/gzip" ;; + rz) content_type="application/octet-stream" ;; + html) content_type="text/html" ;; + *) content_type="application/octet-stream" ;; + esac + + # Upload file + upload_response=$(curl -v -X PUT \ + --retry 5 \ + --retry-all-errors \ + -D "$tmp_headers" \ + -H "Content-Type: $content_type" \ + --data-binary "@${file_name}" "$signed_url" 2>&1) + + if ! echo "$upload_response" | grep -q "HTTP/[0-9.]* 200"; then + log_error "Failed to upload artifact file" "$tmp_headers" "$upload_response" + fi + + # Insert small throttle to reduce rate limiting risk + sleep 0.1 + fi +} + +walk_tree() { + local current_dir="$1" + + for entry in "$current_dir"/*; do + # Check that entry is valid + [ -e "$entry" ] || [ -h "$entry" ] || continue + + if [ -d "$entry" ]; then + walk_tree "$entry" + else + upload_file "$entry" + fi + done +} + +cd "$(dirname "$0")/../.." + +echo "::group::Building gem" +VERSION_FILE="lib/${PACKAGE_NAME}/version.rb" +if [[ ! -f "$VERSION_FILE" ]]; then + echo -e "${RED}Version file not found: ${VERSION_FILE}${NC}" + exit 1 +fi +SHORT_SHA="${SHA:0:7}" +sed -i.bak -E "s/(VERSION = \"[^\"]+)\"/\1.beta.${SHORT_SHA}\"/" "$VERSION_FILE" +rm -f "${VERSION_FILE}.bak" + +gem build +mkdir -p "${DIST_DIR}/gems" +mv ./*.gem "${DIST_DIR}/gems/" +echo "::endgroup::" + +echo "::group::Generating gem index" +gem generate_index --directory "$DIST_DIR" +echo "::endgroup::" + +echo "::group::Uploading to pkg.stainless.com" +walk_tree "$DIST_DIR" +echo "::endgroup::" + +echo -e "${GREEN}Gem artifacts uploaded to Stainless storage.${NC}" +echo -e "\033[32mInstallation: bundle remove stagehand && bundle add stagehand --source 'https://pkg.stainless.com/s/stagehand-ruby/$SHA'\033[0m" From f714af2d7d5b9b822362aa10f6f6facab3332eaf Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 08:40:55 +0000 Subject: [PATCH 3/4] chore(internal): codegen related update --- lib/stagehand/models/session_act_params.rb | 10 +++++++++- lib/stagehand/models/session_end_params.rb | 10 +++++++++- lib/stagehand/models/session_execute_params.rb | 10 +++++++++- lib/stagehand/models/session_extract_params.rb | 10 +++++++++- lib/stagehand/models/session_navigate_params.rb | 10 +++++++++- lib/stagehand/models/session_observe_params.rb | 10 +++++++++- lib/stagehand/models/session_replay_params.rb | 10 +++++++++- rbi/stagehand/models/session_act_params.rbi | 8 ++++++++ rbi/stagehand/models/session_end_params.rbi | 8 ++++++++ rbi/stagehand/models/session_execute_params.rbi | 8 ++++++++ rbi/stagehand/models/session_extract_params.rbi | 8 ++++++++ rbi/stagehand/models/session_navigate_params.rbi | 8 ++++++++ rbi/stagehand/models/session_observe_params.rbi | 8 ++++++++ rbi/stagehand/models/session_replay_params.rbi | 8 ++++++++ sig/stagehand/models/session_act_params.rbs | 5 +++++ sig/stagehand/models/session_end_params.rbs | 5 +++++ sig/stagehand/models/session_execute_params.rbs | 5 +++++ sig/stagehand/models/session_extract_params.rbs | 5 +++++ sig/stagehand/models/session_navigate_params.rbs | 5 +++++ sig/stagehand/models/session_observe_params.rbs | 5 +++++ sig/stagehand/models/session_replay_params.rbs | 5 +++++ 21 files changed, 154 insertions(+), 7 deletions(-) diff --git a/lib/stagehand/models/session_act_params.rb b/lib/stagehand/models/session_act_params.rb index c52fa34..a620911 100644 --- a/lib/stagehand/models/session_act_params.rb +++ b/lib/stagehand/models/session_act_params.rb @@ -9,6 +9,12 @@ class SessionActParams < Stagehand::Internal::Type::BaseModel extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + # @!attribute id + # Unique session identifier + # + # @return [String] + required :id, String + # @!attribute input # Natural language instruction or Action object # @@ -32,7 +38,9 @@ class SessionActParams < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::SessionActParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionActParams::XStreamResponse } - # @!method initialize(input:, frame_id: nil, options: nil, x_stream_response: nil, request_options: {}) + # @!method initialize(id:, input:, frame_id: nil, options: nil, x_stream_response: nil, request_options: {}) + # @param id [String] Unique session identifier + # # @param input [String, Stagehand::Models::Action] Natural language instruction or Action object # # @param frame_id [String, nil] Target frame ID for the action diff --git a/lib/stagehand/models/session_end_params.rb b/lib/stagehand/models/session_end_params.rb index b5a19f6..bde7451 100644 --- a/lib/stagehand/models/session_end_params.rb +++ b/lib/stagehand/models/session_end_params.rb @@ -7,13 +7,21 @@ class SessionEndParams < Stagehand::Internal::Type::BaseModel extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + # @!attribute id + # Unique session identifier + # + # @return [String] + required :id, String + # @!attribute x_stream_response # Whether to stream the response via SSE # # @return [Symbol, Stagehand::Models::SessionEndParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionEndParams::XStreamResponse } - # @!method initialize(x_stream_response: nil, request_options: {}) + # @!method initialize(id:, x_stream_response: nil, request_options: {}) + # @param id [String] Unique session identifier + # # @param x_stream_response [Symbol, Stagehand::Models::SessionEndParams::XStreamResponse] Whether to stream the response via SSE # # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}] diff --git a/lib/stagehand/models/session_execute_params.rb b/lib/stagehand/models/session_execute_params.rb index dc55973..0f8cd85 100644 --- a/lib/stagehand/models/session_execute_params.rb +++ b/lib/stagehand/models/session_execute_params.rb @@ -9,6 +9,12 @@ class SessionExecuteParams < Stagehand::Internal::Type::BaseModel extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + # @!attribute id + # Unique session identifier + # + # @return [String] + required :id, String + # @!attribute agent_config # # @return [Stagehand::Models::SessionExecuteParams::AgentConfig] @@ -39,7 +45,9 @@ class SessionExecuteParams < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::SessionExecuteParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionExecuteParams::XStreamResponse } - # @!method initialize(agent_config:, execute_options:, frame_id: nil, should_cache: nil, x_stream_response: nil, request_options: {}) + # @!method initialize(id:, agent_config:, execute_options:, frame_id: nil, should_cache: nil, x_stream_response: nil, request_options: {}) + # @param id [String] Unique session identifier + # # @param agent_config [Stagehand::Models::SessionExecuteParams::AgentConfig] # # @param execute_options [Stagehand::Models::SessionExecuteParams::ExecuteOptions] diff --git a/lib/stagehand/models/session_extract_params.rb b/lib/stagehand/models/session_extract_params.rb index 913d520..9836d1e 100644 --- a/lib/stagehand/models/session_extract_params.rb +++ b/lib/stagehand/models/session_extract_params.rb @@ -9,6 +9,12 @@ class SessionExtractParams < Stagehand::Internal::Type::BaseModel extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + # @!attribute id + # Unique session identifier + # + # @return [String] + required :id, String + # @!attribute frame_id # Target frame ID for the extraction # @@ -38,7 +44,9 @@ class SessionExtractParams < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::SessionExtractParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionExtractParams::XStreamResponse } - # @!method initialize(frame_id: nil, instruction: nil, options: nil, schema: nil, x_stream_response: nil, request_options: {}) + # @!method initialize(id:, frame_id: nil, instruction: nil, options: nil, schema: nil, x_stream_response: nil, request_options: {}) + # @param id [String] Unique session identifier + # # @param frame_id [String, nil] Target frame ID for the extraction # # @param instruction [String] Natural language instruction for what to extract diff --git a/lib/stagehand/models/session_navigate_params.rb b/lib/stagehand/models/session_navigate_params.rb index 62545b9..616446c 100644 --- a/lib/stagehand/models/session_navigate_params.rb +++ b/lib/stagehand/models/session_navigate_params.rb @@ -7,6 +7,12 @@ class SessionNavigateParams < Stagehand::Internal::Type::BaseModel extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + # @!attribute id + # Unique session identifier + # + # @return [String] + required :id, String + # @!attribute url # URL to navigate to # @@ -36,7 +42,9 @@ class SessionNavigateParams < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::SessionNavigateParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionNavigateParams::XStreamResponse } - # @!method initialize(url:, frame_id: nil, options: nil, stream_response: nil, x_stream_response: nil, request_options: {}) + # @!method initialize(id:, url:, frame_id: nil, options: nil, stream_response: nil, x_stream_response: nil, request_options: {}) + # @param id [String] Unique session identifier + # # @param url [String] URL to navigate to # # @param frame_id [String, nil] Target frame ID for the navigation diff --git a/lib/stagehand/models/session_observe_params.rb b/lib/stagehand/models/session_observe_params.rb index 8682fbe..a3d6f53 100644 --- a/lib/stagehand/models/session_observe_params.rb +++ b/lib/stagehand/models/session_observe_params.rb @@ -9,6 +9,12 @@ class SessionObserveParams < Stagehand::Internal::Type::BaseModel extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + # @!attribute id + # Unique session identifier + # + # @return [String] + required :id, String + # @!attribute frame_id # Target frame ID for the observation # @@ -32,7 +38,9 @@ class SessionObserveParams < Stagehand::Internal::Type::BaseModel # @return [Symbol, Stagehand::Models::SessionObserveParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionObserveParams::XStreamResponse } - # @!method initialize(frame_id: nil, instruction: nil, options: nil, x_stream_response: nil, request_options: {}) + # @!method initialize(id:, frame_id: nil, instruction: nil, options: nil, x_stream_response: nil, request_options: {}) + # @param id [String] Unique session identifier + # # @param frame_id [String, nil] Target frame ID for the observation # # @param instruction [String] Natural language instruction for what actions to find diff --git a/lib/stagehand/models/session_replay_params.rb b/lib/stagehand/models/session_replay_params.rb index b01594b..23b40f3 100644 --- a/lib/stagehand/models/session_replay_params.rb +++ b/lib/stagehand/models/session_replay_params.rb @@ -7,13 +7,21 @@ class SessionReplayParams < Stagehand::Internal::Type::BaseModel extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + # @!attribute id + # Unique session identifier + # + # @return [String] + required :id, String + # @!attribute x_stream_response # Whether to stream the response via SSE # # @return [Symbol, Stagehand::Models::SessionReplayParams::XStreamResponse, nil] optional :x_stream_response, enum: -> { Stagehand::SessionReplayParams::XStreamResponse } - # @!method initialize(x_stream_response: nil, request_options: {}) + # @!method initialize(id:, x_stream_response: nil, request_options: {}) + # @param id [String] Unique session identifier + # # @param x_stream_response [Symbol, Stagehand::Models::SessionReplayParams::XStreamResponse] Whether to stream the response via SSE # # @param request_options [Stagehand::RequestOptions, Hash{Symbol=>Object}] diff --git a/rbi/stagehand/models/session_act_params.rbi b/rbi/stagehand/models/session_act_params.rbi index be8d2f3..97e899b 100644 --- a/rbi/stagehand/models/session_act_params.rbi +++ b/rbi/stagehand/models/session_act_params.rbi @@ -11,6 +11,10 @@ module Stagehand T.any(Stagehand::SessionActParams, Stagehand::Internal::AnyHash) end + # Unique session identifier + sig { returns(String) } + attr_accessor :id + # Natural language instruction or Action object sig { returns(T.any(String, Stagehand::Action)) } attr_accessor :input @@ -43,6 +47,7 @@ module Stagehand sig do params( + id: String, input: T.any(String, Stagehand::Action::OrHash), frame_id: T.nilable(String), options: Stagehand::SessionActParams::Options::OrHash, @@ -52,6 +57,8 @@ module Stagehand ).returns(T.attached_class) end def self.new( + # Unique session identifier + id:, # Natural language instruction or Action object input:, # Target frame ID for the action @@ -66,6 +73,7 @@ module Stagehand sig do override.returns( { + id: String, input: T.any(String, Stagehand::Action), frame_id: T.nilable(String), options: Stagehand::SessionActParams::Options, diff --git a/rbi/stagehand/models/session_end_params.rbi b/rbi/stagehand/models/session_end_params.rbi index 20188a3..7ad0aac 100644 --- a/rbi/stagehand/models/session_end_params.rbi +++ b/rbi/stagehand/models/session_end_params.rbi @@ -11,6 +11,10 @@ module Stagehand T.any(Stagehand::SessionEndParams, Stagehand::Internal::AnyHash) end + # Unique session identifier + sig { returns(String) } + attr_accessor :id + # Whether to stream the response via SSE sig do returns( @@ -29,12 +33,15 @@ module Stagehand sig do params( + id: String, x_stream_response: Stagehand::SessionEndParams::XStreamResponse::OrSymbol, request_options: Stagehand::RequestOptions::OrHash ).returns(T.attached_class) end def self.new( + # Unique session identifier + id:, # Whether to stream the response via SSE x_stream_response: nil, request_options: {} @@ -44,6 +51,7 @@ module Stagehand sig do override.returns( { + id: String, x_stream_response: Stagehand::SessionEndParams::XStreamResponse::OrSymbol, request_options: Stagehand::RequestOptions diff --git a/rbi/stagehand/models/session_execute_params.rbi b/rbi/stagehand/models/session_execute_params.rbi index da6fb94..28a77e8 100644 --- a/rbi/stagehand/models/session_execute_params.rbi +++ b/rbi/stagehand/models/session_execute_params.rbi @@ -11,6 +11,10 @@ module Stagehand T.any(Stagehand::SessionExecuteParams, Stagehand::Internal::AnyHash) end + # Unique session identifier + sig { returns(String) } + attr_accessor :id + sig { returns(Stagehand::SessionExecuteParams::AgentConfig) } attr_reader :agent_config @@ -61,6 +65,7 @@ module Stagehand sig do params( + id: String, agent_config: Stagehand::SessionExecuteParams::AgentConfig::OrHash, execute_options: Stagehand::SessionExecuteParams::ExecuteOptions::OrHash, @@ -72,6 +77,8 @@ module Stagehand ).returns(T.attached_class) end def self.new( + # Unique session identifier + id:, agent_config:, execute_options:, # Target frame ID for the agent @@ -87,6 +94,7 @@ module Stagehand sig do override.returns( { + id: String, agent_config: Stagehand::SessionExecuteParams::AgentConfig, execute_options: Stagehand::SessionExecuteParams::ExecuteOptions, frame_id: T.nilable(String), diff --git a/rbi/stagehand/models/session_extract_params.rbi b/rbi/stagehand/models/session_extract_params.rbi index ba0e051..e23207c 100644 --- a/rbi/stagehand/models/session_extract_params.rbi +++ b/rbi/stagehand/models/session_extract_params.rbi @@ -11,6 +11,10 @@ module Stagehand T.any(Stagehand::SessionExtractParams, Stagehand::Internal::AnyHash) end + # Unique session identifier + sig { returns(String) } + attr_accessor :id + # Target frame ID for the extraction sig { returns(T.nilable(String)) } attr_accessor :frame_id @@ -55,6 +59,7 @@ module Stagehand sig do params( + id: String, frame_id: T.nilable(String), instruction: String, options: Stagehand::SessionExtractParams::Options::OrHash, @@ -65,6 +70,8 @@ module Stagehand ).returns(T.attached_class) end def self.new( + # Unique session identifier + id:, # Target frame ID for the extraction frame_id: nil, # Natural language instruction for what to extract @@ -81,6 +88,7 @@ module Stagehand sig do override.returns( { + id: String, frame_id: T.nilable(String), instruction: String, options: Stagehand::SessionExtractParams::Options, diff --git a/rbi/stagehand/models/session_navigate_params.rbi b/rbi/stagehand/models/session_navigate_params.rbi index 362b908..530ef1a 100644 --- a/rbi/stagehand/models/session_navigate_params.rbi +++ b/rbi/stagehand/models/session_navigate_params.rbi @@ -11,6 +11,10 @@ module Stagehand T.any(Stagehand::SessionNavigateParams, Stagehand::Internal::AnyHash) end + # Unique session identifier + sig { returns(String) } + attr_accessor :id + # URL to navigate to sig { returns(String) } attr_accessor :url @@ -52,6 +56,7 @@ module Stagehand sig do params( + id: String, url: String, frame_id: T.nilable(String), options: Stagehand::SessionNavigateParams::Options::OrHash, @@ -62,6 +67,8 @@ module Stagehand ).returns(T.attached_class) end def self.new( + # Unique session identifier + id:, # URL to navigate to url:, # Target frame ID for the navigation @@ -78,6 +85,7 @@ module Stagehand sig do override.returns( { + id: String, url: String, frame_id: T.nilable(String), options: Stagehand::SessionNavigateParams::Options, diff --git a/rbi/stagehand/models/session_observe_params.rbi b/rbi/stagehand/models/session_observe_params.rbi index faca183..f01ec73 100644 --- a/rbi/stagehand/models/session_observe_params.rbi +++ b/rbi/stagehand/models/session_observe_params.rbi @@ -11,6 +11,10 @@ module Stagehand T.any(Stagehand::SessionObserveParams, Stagehand::Internal::AnyHash) end + # Unique session identifier + sig { returns(String) } + attr_accessor :id + # Target frame ID for the observation sig { returns(T.nilable(String)) } attr_accessor :frame_id @@ -48,6 +52,7 @@ module Stagehand sig do params( + id: String, frame_id: T.nilable(String), instruction: String, options: Stagehand::SessionObserveParams::Options::OrHash, @@ -57,6 +62,8 @@ module Stagehand ).returns(T.attached_class) end def self.new( + # Unique session identifier + id:, # Target frame ID for the observation frame_id: nil, # Natural language instruction for what actions to find @@ -71,6 +78,7 @@ module Stagehand sig do override.returns( { + id: String, frame_id: T.nilable(String), instruction: String, options: Stagehand::SessionObserveParams::Options, diff --git a/rbi/stagehand/models/session_replay_params.rbi b/rbi/stagehand/models/session_replay_params.rbi index af237fb..8d055cd 100644 --- a/rbi/stagehand/models/session_replay_params.rbi +++ b/rbi/stagehand/models/session_replay_params.rbi @@ -11,6 +11,10 @@ module Stagehand T.any(Stagehand::SessionReplayParams, Stagehand::Internal::AnyHash) end + # Unique session identifier + sig { returns(String) } + attr_accessor :id + # Whether to stream the response via SSE sig do returns( @@ -29,12 +33,15 @@ module Stagehand sig do params( + id: String, x_stream_response: Stagehand::SessionReplayParams::XStreamResponse::OrSymbol, request_options: Stagehand::RequestOptions::OrHash ).returns(T.attached_class) end def self.new( + # Unique session identifier + id:, # Whether to stream the response via SSE x_stream_response: nil, request_options: {} @@ -44,6 +51,7 @@ module Stagehand sig do override.returns( { + id: String, x_stream_response: Stagehand::SessionReplayParams::XStreamResponse::OrSymbol, request_options: Stagehand::RequestOptions diff --git a/sig/stagehand/models/session_act_params.rbs b/sig/stagehand/models/session_act_params.rbs index 873e768..8fca865 100644 --- a/sig/stagehand/models/session_act_params.rbs +++ b/sig/stagehand/models/session_act_params.rbs @@ -2,6 +2,7 @@ module Stagehand module Models type session_act_params = { + id: String, input: Stagehand::Models::SessionActParams::input, frame_id: String?, options: Stagehand::SessionActParams::Options, @@ -13,6 +14,8 @@ module Stagehand extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + attr_accessor id: String + attr_accessor input: Stagehand::Models::SessionActParams::input attr_accessor frame_id: String? @@ -30,6 +33,7 @@ module Stagehand ) -> Stagehand::Models::SessionActParams::x_stream_response def initialize: ( + id: String, input: Stagehand::Models::SessionActParams::input, ?frame_id: String?, ?options: Stagehand::SessionActParams::Options, @@ -38,6 +42,7 @@ module Stagehand ) -> void def to_hash: -> { + id: String, input: Stagehand::Models::SessionActParams::input, frame_id: String?, options: Stagehand::SessionActParams::Options, diff --git a/sig/stagehand/models/session_end_params.rbs b/sig/stagehand/models/session_end_params.rbs index fab9e7a..a82942c 100644 --- a/sig/stagehand/models/session_end_params.rbs +++ b/sig/stagehand/models/session_end_params.rbs @@ -2,6 +2,7 @@ module Stagehand module Models type session_end_params = { + id: String, x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response } & Stagehand::Internal::Type::request_parameters @@ -10,6 +11,8 @@ module Stagehand extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + attr_accessor id: String + attr_reader x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response? def x_stream_response=: ( @@ -17,11 +20,13 @@ module Stagehand ) -> Stagehand::Models::SessionEndParams::x_stream_response def initialize: ( + id: String, ?x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response, ?request_options: Stagehand::request_opts ) -> void def to_hash: -> { + id: String, x_stream_response: Stagehand::Models::SessionEndParams::x_stream_response, request_options: Stagehand::RequestOptions } diff --git a/sig/stagehand/models/session_execute_params.rbs b/sig/stagehand/models/session_execute_params.rbs index 021692d..3936f2e 100644 --- a/sig/stagehand/models/session_execute_params.rbs +++ b/sig/stagehand/models/session_execute_params.rbs @@ -2,6 +2,7 @@ module Stagehand module Models type session_execute_params = { + id: String, agent_config: Stagehand::SessionExecuteParams::AgentConfig, execute_options: Stagehand::SessionExecuteParams::ExecuteOptions, frame_id: String?, @@ -14,6 +15,8 @@ module Stagehand extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + attr_accessor id: String + attr_accessor agent_config: Stagehand::SessionExecuteParams::AgentConfig attr_accessor execute_options: Stagehand::SessionExecuteParams::ExecuteOptions @@ -31,6 +34,7 @@ module Stagehand ) -> Stagehand::Models::SessionExecuteParams::x_stream_response def initialize: ( + id: String, agent_config: Stagehand::SessionExecuteParams::AgentConfig, execute_options: Stagehand::SessionExecuteParams::ExecuteOptions, ?frame_id: String?, @@ -40,6 +44,7 @@ module Stagehand ) -> void def to_hash: -> { + id: String, agent_config: Stagehand::SessionExecuteParams::AgentConfig, execute_options: Stagehand::SessionExecuteParams::ExecuteOptions, frame_id: String?, diff --git a/sig/stagehand/models/session_extract_params.rbs b/sig/stagehand/models/session_extract_params.rbs index 0883d42..2dd8f92 100644 --- a/sig/stagehand/models/session_extract_params.rbs +++ b/sig/stagehand/models/session_extract_params.rbs @@ -2,6 +2,7 @@ module Stagehand module Models type session_extract_params = { + id: String, frame_id: String?, instruction: String, options: Stagehand::SessionExtractParams::Options, @@ -14,6 +15,8 @@ module Stagehand extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + attr_accessor id: String + attr_accessor frame_id: String? attr_reader instruction: String? @@ -37,6 +40,7 @@ module Stagehand ) -> Stagehand::Models::SessionExtractParams::x_stream_response def initialize: ( + id: String, ?frame_id: String?, ?instruction: String, ?options: Stagehand::SessionExtractParams::Options, @@ -46,6 +50,7 @@ module Stagehand ) -> void def to_hash: -> { + id: String, frame_id: String?, instruction: String, options: Stagehand::SessionExtractParams::Options, diff --git a/sig/stagehand/models/session_navigate_params.rbs b/sig/stagehand/models/session_navigate_params.rbs index f02e2d9..80b0d59 100644 --- a/sig/stagehand/models/session_navigate_params.rbs +++ b/sig/stagehand/models/session_navigate_params.rbs @@ -2,6 +2,7 @@ module Stagehand module Models type session_navigate_params = { + id: String, url: String, frame_id: String?, options: Stagehand::SessionNavigateParams::Options, @@ -14,6 +15,8 @@ module Stagehand extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + attr_accessor id: String + attr_accessor url: String attr_accessor frame_id: String? @@ -35,6 +38,7 @@ module Stagehand ) -> Stagehand::Models::SessionNavigateParams::x_stream_response def initialize: ( + id: String, url: String, ?frame_id: String?, ?options: Stagehand::SessionNavigateParams::Options, @@ -44,6 +48,7 @@ module Stagehand ) -> void def to_hash: -> { + id: String, url: String, frame_id: String?, options: Stagehand::SessionNavigateParams::Options, diff --git a/sig/stagehand/models/session_observe_params.rbs b/sig/stagehand/models/session_observe_params.rbs index 8451b64..6f1392b 100644 --- a/sig/stagehand/models/session_observe_params.rbs +++ b/sig/stagehand/models/session_observe_params.rbs @@ -2,6 +2,7 @@ module Stagehand module Models type session_observe_params = { + id: String, frame_id: String?, instruction: String, options: Stagehand::SessionObserveParams::Options, @@ -13,6 +14,8 @@ module Stagehand extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + attr_accessor id: String + attr_accessor frame_id: String? attr_reader instruction: String? @@ -32,6 +35,7 @@ module Stagehand ) -> Stagehand::Models::SessionObserveParams::x_stream_response def initialize: ( + id: String, ?frame_id: String?, ?instruction: String, ?options: Stagehand::SessionObserveParams::Options, @@ -40,6 +44,7 @@ module Stagehand ) -> void def to_hash: -> { + id: String, frame_id: String?, instruction: String, options: Stagehand::SessionObserveParams::Options, diff --git a/sig/stagehand/models/session_replay_params.rbs b/sig/stagehand/models/session_replay_params.rbs index f419c8c..18dcd0a 100644 --- a/sig/stagehand/models/session_replay_params.rbs +++ b/sig/stagehand/models/session_replay_params.rbs @@ -2,6 +2,7 @@ module Stagehand module Models type session_replay_params = { + id: String, x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response } & Stagehand::Internal::Type::request_parameters @@ -10,6 +11,8 @@ module Stagehand extend Stagehand::Internal::Type::RequestParameters::Converter include Stagehand::Internal::Type::RequestParameters + attr_accessor id: String + attr_reader x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response? def x_stream_response=: ( @@ -17,11 +20,13 @@ module Stagehand ) -> Stagehand::Models::SessionReplayParams::x_stream_response def initialize: ( + id: String, ?x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response, ?request_options: Stagehand::request_opts ) -> void def to_hash: -> { + id: String, x_stream_response: Stagehand::Models::SessionReplayParams::x_stream_response, request_options: Stagehand::RequestOptions } From 26d94013a599535f687e8c42b5a98cb3fd4127d1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 08:41:13 +0000 Subject: [PATCH 4/4] release: 3.7.2 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 10 ++++++++++ Gemfile.lock | 2 +- lib/stagehand/version.rb | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c0786b3..21738b7 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.7.1" + ".": "3.7.2" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cb5fa3..71eb133 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 3.7.2 (2026-03-06) + +Full Changelog: [v3.7.1...v3.7.2](https://github.com/browserbase/stagehand-ruby/compare/v3.7.1...v3.7.2) + +### Chores + +* **ci:** add build step ([ed6573f](https://github.com/browserbase/stagehand-ruby/commit/ed6573f2ddab4f5f51d1262480cb663da5e003d0)) +* **internal:** codegen related update ([f714af2](https://github.com/browserbase/stagehand-ruby/commit/f714af2d7d5b9b822362aa10f6f6facab3332eaf)) +* **internal:** codegen related update ([ed9fab1](https://github.com/browserbase/stagehand-ruby/commit/ed9fab1f726c05ef48d4a55507b09212d7ced713)) + ## 3.7.1 (2026-02-27) Full Changelog: [v3.7.0...v3.7.1](https://github.com/browserbase/stagehand-ruby/compare/v3.7.0...v3.7.1) diff --git a/Gemfile.lock b/Gemfile.lock index f179e2c..e10efa6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - stagehand (3.7.1) + stagehand (3.7.2) cgi connection_pool diff --git a/lib/stagehand/version.rb b/lib/stagehand/version.rb index 0886c7c..50b7639 100644 --- a/lib/stagehand/version.rb +++ b/lib/stagehand/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Stagehand - VERSION = "3.7.1" + VERSION = "3.7.2" end