zuno 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf9be3e305d36fb21db7c92926787237b8db4322a993d3e8c8a38448c439d7b4
4
- data.tar.gz: b004707c8eb242a35c631defafd13a13f0bf3533f9959e4b8ec2c62829097337
3
+ metadata.gz: b7d6ca01a3009551afda766233cc241c30eff87eb7226142552c21f9d68450d0
4
+ data.tar.gz: f71bd9073d2d14829502216a82e28d4f11e4bbb1de0b9f330befb4d2a6d02757
5
5
  SHA512:
6
- metadata.gz: 4153961f2ece3493d232af7f742c40be7fa09adbf76a82fb2722923630033e778f846c7489582f1e4bc06afafdc40663dcd237c4f70f6af0a4004da6dad5b09b
7
- data.tar.gz: 486f38c407011327c5a9c336341bcc742233cfda7112b8596f9f5050565791d7ab24a36777c6061fe14dbfc65126e310c9ad69f372423b221726533ab8c37fa9
6
+ metadata.gz: 2228bcd4b752897c4757ad869fbe92ad0c189cc24be1d265d718f80e2cc23104194c737658022b0caa35c25f98d4a94006ba19746f1b30c6fd56317d6d3cee36
7
+ data.tar.gz: a24da98ad4c6ce0214e26224d6e8f65886901865df8e1c05ab1f0572028c2d7f797328388bfdf035e7cfb52ecc52c9e5e207e101165e478df517589a0505ae81
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.1](https://github.com/dqnamo/zuno/compare/v1.1.0...v1.1.1) (2026-04-06)
4
+
5
+ ### Bug Fixes
6
+
7
+ * disable parallel tool calls by default for Gemini models routed through Vercel AI Gateway so function responses stay provider-compatible
8
+
3
9
  ## [1.1.0](https://github.com/dqnamo/zuno/compare/v1.0.2...v1.1.0) (2026-04-04)
4
10
 
5
11
  ### Features
data/lib/zuno/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zuno
4
- VERSION = "1.1.0"
4
+ VERSION = "1.1.1"
5
5
  end
data/lib/zuno.rb CHANGED
@@ -1118,6 +1118,12 @@ module Zuno
1118
1118
  payload["max_tokens"] = max_tokens unless max_tokens.nil?
1119
1119
  payload["tools"] = tools.values.map(&:as_provider_tool) unless tools.empty?
1120
1120
  payload["tool_choice"] = deep_stringify(tool_choice) unless tool_choice.nil?
1121
+ payload["parallel_tool_calls"] = false if disable_parallel_tool_calls_by_default?(
1122
+ model_id: model_id,
1123
+ provider: provider,
1124
+ tools: tools,
1125
+ provider_options: provider_options
1126
+ )
1121
1127
 
1122
1128
  request_options = reject_keys(provider_options, provider_adapter_config_keys(provider) + [ :tool_choice ])
1123
1129
  payload.merge!(deep_stringify(request_options)) if request_options.is_a?(Hash)
@@ -1125,6 +1131,22 @@ module Zuno
1125
1131
  end
1126
1132
  private_class_method :build_payload
1127
1133
 
1134
+ def disable_parallel_tool_calls_by_default?(model_id:, provider:, tools:, provider_options:)
1135
+ return false if tools.empty?
1136
+ return false unless provider.to_sym == :ai_gateway
1137
+ return false unless gemini_model?(model_id)
1138
+ return false if provider_options&.key?(:parallel_tool_calls) || provider_options&.key?("parallel_tool_calls")
1139
+
1140
+ true
1141
+ end
1142
+ private_class_method :disable_parallel_tool_calls_by_default?
1143
+
1144
+ def gemini_model?(model_id)
1145
+ normalized = model_id.to_s.downcase
1146
+ normalized.start_with?("google/") || normalized.include?("gemini")
1147
+ end
1148
+ private_class_method :gemini_model?
1149
+
1128
1150
  def provider_adapter_config_keys(provider)
1129
1151
  case provider.to_sym
1130
1152
  when :openrouter
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuno
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hyperaide
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-05 00:00:00.000000000 Z
11
+ date: 2026-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
- rubygems_version: 3.5.22
88
+ rubygems_version: 3.5.23
89
89
  signing_key:
90
90
  specification_version: 4
91
91
  summary: Ruby SDK with provider/model abstraction, single-shot generation, loops,