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 +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/lib/claude_agent_sdk/message_parser.rb +5 -3
- data/lib/claude_agent_sdk/sdk_mcp_server.rb +10 -14
- data/lib/claude_agent_sdk/types.rb +11 -0
- data/lib/claude_agent_sdk/version.rb +1 -1
- data/lib/claude_agent_sdk.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1bb953f4036b0f107f4afe0bfb8d89281bb3d496cf15f89a6c5607e7b3b5e210
|
|
4
|
+
data.tar.gz: 84081e6b7aa1ebbe580b0e900f4142829278c3a458dc706807e4d141a0af70ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
336
|
-
|
|
337
|
-
|
|
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
|
data/lib/claude_agent_sdk.rb
CHANGED
|
@@ -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.
|
|
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-
|
|
10
|
+
date: 2026-02-21 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: async
|