claude-agent-sdk 0.7.1 → 0.7.2

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: 303a5cd2321bb9c04f17d68990abfb8f72c6a88624874f199afaf7769befca33
4
- data.tar.gz: 3831d1fdec75b38072083d231dcf03a87407244bda805e51661d771be23105ac
3
+ metadata.gz: 1bb953f4036b0f107f4afe0bfb8d89281bb3d496cf15f89a6c5607e7b3b5e210
4
+ data.tar.gz: 84081e6b7aa1ebbe580b0e900f4142829278c3a458dc706807e4d141a0af70ff
5
5
  SHA512:
6
- metadata.gz: 569f331952bcef9c7426fc61bd1c36f082acf721e9ab5a899783ea06fdee5accfcb2f903c536ba9cf99ee50e96aceb254d9305751631643f532c549b39b48ff6
7
- data.tar.gz: 2c22f2cde6cf7c5e059ebbdfe515f559979b4cd273b28e1d7113cf55e9e739a201725f81f2ee602623242c12f7c557edbb0b5ade8a1088e997d4ddd01566561c
6
+ metadata.gz: eda57b17c43f2efa673e31cba432db7022af999e8c8de82065bc4e21c13325a07480cc632004226847d383881916605218332b129f0524d2b3a1c0b291dee3d1
7
+ data.tar.gz: e5e9f25bb361ecaaf84a9972e55d94ed1eb18e5ae50c7abc8831f9a3a01c36e510835a8d253f71c0ba0df7f88de04ca024125ac4627a4274c84629e56ba3f57c
data/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.7.2] - 2026-02-21
9
+
10
+ ### Fixed
11
+ - **Empty input schema crash:** Tools with no parameters (`input_schema: {}`) caused `MCP::Tool::InputSchema` validation failure (`required` array must have at least 1 item per JSON Schema draft-04). Now omits `required` when empty.
12
+ - **RuboCop offense:** Removed redundant `else` clause in `MessageParser.parse`
13
+
8
14
  ## [0.7.1] - 2026-02-21
9
15
 
10
16
  ### Fixed
data/README.md CHANGED
@@ -39,7 +39,7 @@ Add this line to your application's Gemfile:
39
39
  gem 'claude-agent-sdk', github: 'ya-luotao/claude-agent-sdk-ruby'
40
40
 
41
41
  # Or use a stable version from RubyGems
42
- gem 'claude-agent-sdk', '~> 0.7.0'
42
+ gem 'claude-agent-sdk', '~> 0.7.2'
43
43
  ```
44
44
 
45
45
  And then execute:
@@ -25,9 +25,9 @@ module ClaudeAgentSDK
25
25
  parse_stream_event(data)
26
26
  when 'rate_limit_event'
27
27
  parse_rate_limit_event(data)
28
- else
29
- raise MessageParseError.new("Unknown message type: #{message_type}", data: data)
30
28
  end
29
+ # Forward-compatible: returns nil for unrecognized message types so
30
+ # newer CLI versions don't crash older SDK versions.
31
31
  rescue KeyError => e
32
32
  raise MessageParseError.new("Missing required field: #{e.message}", data: data)
33
33
  end
@@ -115,7 +115,9 @@ module ClaudeAgentSDK
115
115
  is_error: block[:is_error]
116
116
  )
117
117
  else
118
- raise MessageParseError.new("Unknown content block type: #{block[:type]}")
118
+ # Forward-compatible: preserve unrecognized content block types (e.g., "document", "image")
119
+ # so newer CLI versions don't crash older SDK versions.
120
+ UnknownBlock.new(type: block[:type], data: block)
119
121
  end
120
122
  end
121
123
  end
@@ -164,10 +164,9 @@ module ClaudeAgentSDK
164
164
 
165
165
  def input_schema_value
166
166
  schema = convert_schema(@tool_def.input_schema)
167
- MCP::Tool::InputSchema.new(
168
- properties: schema[:properties] || {},
169
- required: schema[:required] || []
170
- )
167
+ opts = { properties: schema[:properties] || {} }
168
+ opts[:required] = schema[:required] if schema[:required]&.any?
169
+ MCP::Tool::InputSchema.new(**opts)
171
170
  end
172
171
 
173
172
  def call(server_context: nil, **args)
@@ -204,11 +203,10 @@ module ClaudeAgentSDK
204
203
  properties[param_name] = type_to_json_schema(param_type)
205
204
  end
206
205
 
207
- return {
208
- type: 'object',
209
- properties: properties,
210
- required: properties.keys.map(&:to_s)
211
- }
206
+ result = { type: 'object', properties: properties }
207
+ required_keys = properties.keys.map(&:to_s)
208
+ result[:required] = required_keys unless required_keys.empty?
209
+ return result
212
210
  end
213
211
 
214
212
  # Default fallback
@@ -332,11 +330,9 @@ module ClaudeAgentSDK
332
330
  properties[param_name] = type_to_json_schema(param_type)
333
331
  end
334
332
 
335
- return {
336
- type: 'object',
337
- properties: properties,
338
- required: properties.keys
339
- }
333
+ result = { type: 'object', properties: properties }
334
+ result[:required] = properties.keys unless properties.empty?
335
+ return result
340
336
  end
341
337
 
342
338
  # Default fallback
@@ -77,6 +77,17 @@ module ClaudeAgentSDK
77
77
  end
78
78
  end
79
79
 
80
+ # Generic content block for types the SDK doesn't explicitly handle (e.g., "document", "image").
81
+ # Preserves the raw hash data for forward compatibility with newer CLI versions.
82
+ class UnknownBlock
83
+ attr_accessor :type, :data
84
+
85
+ def initialize(type:, data:)
86
+ @type = type
87
+ @data = data
88
+ end
89
+ end
90
+
80
91
  # Message Types
81
92
 
82
93
  # User message
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClaudeAgentSDK
4
- VERSION = '0.7.1'
4
+ VERSION = '0.7.2'
5
5
  end
@@ -119,7 +119,7 @@ module ClaudeAgentSDK
119
119
  # Read and yield messages from the query handler (filters out control messages)
120
120
  query_handler.receive_messages do |data|
121
121
  message = MessageParser.parse(data)
122
- block.call(message)
122
+ block.call(message) if message
123
123
  end
124
124
  ensure
125
125
  # query_handler.close stops the background read task and closes the transport
@@ -275,7 +275,7 @@ module ClaudeAgentSDK
275
275
 
276
276
  @query_handler.receive_messages do |data|
277
277
  message = MessageParser.parse(data)
278
- block.call(message)
278
+ block.call(message) if message
279
279
  end
280
280
  end
281
281
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claude-agent-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Community Contributors
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-02-20 00:00:00.000000000 Z
10
+ date: 2026-02-21 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: async