From 65fb3f4f069c5566003b7dbe668102482170f140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Hasi=C5=84ski?= Date: Sat, 29 Aug 2026 12:16:05 +0200 Subject: [PATCH 1/2] Bump sqlite3 dev dependency to >= 2.9.5 sqlite3 ~> 1.4 was flagged by a Dependabot alert (use-after-free when redefining SQLite functions, fixed in 2.9.5). Only used by the ActiveRecord in-memory persistence spec; CI covers Ruby 3.1-3.4. --- ruby_llm-responses_api.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby_llm-responses_api.gemspec b/ruby_llm-responses_api.gemspec index f1f2530..770f60a 100644 --- a/ruby_llm-responses_api.gemspec +++ b/ruby_llm-responses_api.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rspec', '~> 3.0' spec.add_development_dependency 'rubocop', '~> 1.0' - spec.add_development_dependency 'sqlite3', '~> 1.4' + spec.add_development_dependency 'sqlite3', '>= 2.9.5' spec.add_development_dependency 'vcr', '~> 6.0' spec.add_development_dependency 'webmock', '~> 3.0' spec.add_development_dependency 'websocket-client-simple', '~> 0.8' From 0f2d460e46679859110c47f776f8aebbf3727932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20Hasi=C5=84ski?= Date: Sat, 29 Aug 2026 12:20:26 +0200 Subject: [PATCH 2/2] Drop EOL Ruby 3.1 from CI matrix; fix new RuboCop cop sqlite3 >= 2.9.5 (the patched line) requires Ruby >= 3.2, so the CI test job can no longer run on 3.1 (EOL since 2025). Runtime required_ruby_version stays >= 3.1 since sqlite3 is a dev-only dep. Also autocorrect Style/DirectiveScope (new in RuboCop 1.90): disable/enable pairs around one statement -> disable-next. --- .github/workflows/ci.yml | 2 +- lib/ruby_llm/providers/openai_responses.rb | 3 +-- lib/ruby_llm/providers/openai_responses/chat.rb | 3 +-- lib/ruby_llm/providers/openai_responses/web_socket.rb | 3 +-- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8907e78..f8d74d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ['3.1', '3.2', '3.3', '3.4'] + ruby-version: ['3.2', '3.3', '3.4'] steps: - uses: actions/checkout@v4 diff --git a/lib/ruby_llm/providers/openai_responses.rb b/lib/ruby_llm/providers/openai_responses.rb index 10ec604..b48f517 100644 --- a/lib/ruby_llm/providers/openai_responses.rb +++ b/lib/ruby_llm/providers/openai_responses.rb @@ -17,7 +17,7 @@ def api_base end # Override to support WebSocket transport via with_params(transport: :websocket). - # rubocop:disable Metrics/ParameterLists + # rubocop:disable-next Metrics/ParameterLists def complete(messages, tools:, temperature:, model:, params: {}, headers: {}, schema: nil, thinking: nil, tool_prefs: nil, &block) if params[:transport]&.to_sym == :websocket @@ -28,7 +28,6 @@ def complete(messages, tools:, temperature:, model:, params: {}, headers: {}, super end end - # rubocop:enable Metrics/ParameterLists def headers { diff --git a/lib/ruby_llm/providers/openai_responses/chat.rb b/lib/ruby_llm/providers/openai_responses/chat.rb index 6fe0ca9..f1f457d 100644 --- a/lib/ruby_llm/providers/openai_responses/chat.rb +++ b/lib/ruby_llm/providers/openai_responses/chat.rb @@ -12,7 +12,7 @@ def completion_url module_function - # rubocop:disable Metrics/ParameterLists + # rubocop:disable-next Metrics/ParameterLists def render_payload(messages, tools:, temperature:, model:, stream: false, schema: nil, thinking: nil, tool_prefs: nil) # rubocop:disable Lint/UnusedMethodArgument tool_prefs ||= {} @@ -37,7 +37,6 @@ def render_payload(messages, tools:, temperature:, model:, stream: false, payload end - # rubocop:enable Metrics/ParameterLists # Apply tools and tool preferences to the payload. def apply_tools(payload, tools, tool_prefs) diff --git a/lib/ruby_llm/providers/openai_responses/web_socket.rb b/lib/ruby_llm/providers/openai_responses/web_socket.rb index d0e2a46..938b2f0 100644 --- a/lib/ruby_llm/providers/openai_responses/web_socket.rb +++ b/lib/ruby_llm/providers/openai_responses/web_socket.rb @@ -34,7 +34,7 @@ class WebSocket # rubocop:disable Metrics/ClassLength # @param project_id [String, nil] OpenAI project ID # @param client_class [#connect, nil] WebSocket client class (for testing) # @param response_timeout [Numeric] seconds to wait for a response event - # rubocop:disable Metrics/ParameterLists + # rubocop:disable-next Metrics/ParameterLists def initialize(api_key:, api_base: 'https://api.openai.com/v1', organization_id: nil, project_id: nil, client_class: nil, response_timeout: 60) @api_key = api_key @@ -51,7 +51,6 @@ def initialize(api_key:, api_base: 'https://api.openai.com/v1', organization_id: @last_response_id = nil @message_queue = nil end - # rubocop:enable Metrics/ParameterLists # Open the WebSocket connection. Blocks until the connection is established. # @param timeout [Numeric] seconds to wait for the connection (default: 10)