zuno 1.1.2 → 1.1.3

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: 3e675bc01e1dd129fc934977e8dc4f9b339e68138001e752745d5cfa047f5f52
4
- data.tar.gz: ce34957f81e60c54e092958e912aec67cc22463e8e288f8b1cf1926aec3a5357
3
+ metadata.gz: eb25ddc2d1606495164eaf608263ab31546df25bc47b60f61858d15faaeaac7e
4
+ data.tar.gz: 369f67849b30fa68d81b597144171fed613dc25ebce06addff336bed2d4337ed
5
5
  SHA512:
6
- metadata.gz: b2a15a7d459741e5390436aa1c6d52cd2d4eb2181fb28192df141a524546857983daca479ac0a42b4ff649c07b56e2fc590dee8964d9c7cbb660b98e74053511
7
- data.tar.gz: 65af2937a76208ab478df9c05baa9a716b763ecffe2751ed0f4a6aece5b3dce0a2e0c9e260636f774d0305612cbb7f28626e9073c1c4989a004fe2a01a66e378
6
+ metadata.gz: 8c6e08918da4bf006a9198503598a19e90de0eae7ff82bb90753796e87f9d1bf7f74c7a8df867676b98146d51c3b651f876584b14f484010f5b6309cddea08d6
7
+ data.tar.gz: 4b49269f11c1085f343eee2c45e4aee57c82e3245f6693413e625ca027449ec494a924615beeaedec88e7cb4528559534b96bc87677f4844f730c4ff8fc48634
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.3](https://github.com/dqnamo/zuno/compare/v1.1.2...v1.1.3) (2026-04-06)
4
+
5
+ ### Bug Fixes
6
+
7
+ * avoid retrying tool blocks with keyword args after internal `ArgumentError`s so hash-style tools preserve their input payloads
8
+
3
9
  ## [1.1.2](https://github.com/dqnamo/zuno/compare/v1.1.1...v1.1.2) (2026-04-06)
4
10
 
5
11
  ### Bug Fixes
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.2"
4
+ VERSION = "1.1.3"
5
5
  end
data/lib/zuno.rb CHANGED
@@ -148,11 +148,16 @@ module Zuno
148
148
  raise ToolError, "Tool '#{name}' is missing an execute block" unless execute_proc.respond_to?(:call)
149
149
 
150
150
  symbolized_args = arguments.each_with_object({}) { |(key, value), acc| acc[key.to_sym] = value }
151
+ parameter_kinds = execute_proc.parameters.map(&:first)
152
+ accepts_keywords = parameter_kinds.any? { |kind| [:keyreq, :key, :keyrest].include?(kind) }
153
+ accepts_positionals = parameter_kinds.any? { |kind| [:req, :opt, :rest].include?(kind) }
151
154
 
152
- begin
153
- execute_proc.call(arguments)
154
- rescue ArgumentError, TypeError
155
+ if accepts_keywords && !accepts_positionals
155
156
  execute_proc.call(**symbolized_args)
157
+ elsif parameter_kinds.empty?
158
+ execute_proc.call
159
+ else
160
+ execute_proc.call(arguments)
156
161
  end
157
162
  end
158
163
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuno
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hyperaide
@@ -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.23
88
+ rubygems_version: 3.5.22
89
89
  signing_key:
90
90
  specification_version: 4
91
91
  summary: Ruby SDK with provider/model abstraction, single-shot generation, loops,