claude-agent-sdk 0.1.1 → 0.1.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: 4ce875efdba662100db9de2523598a28193fda59c45f5e720ab5c69724e5e83e
4
- data.tar.gz: 1cd9a2342b14ba9ec4c8775bc8fa4b47fa519112f5a43fdcb87e832c9c8f2f43
3
+ metadata.gz: d5f1881eb9fa20f805736f864736977c80f839d88042b3ba6e36ac23f7550548
4
+ data.tar.gz: 2ccee5ba2a1d59d312737eac4a36464cd15a160c3989b4a5d663ef49c7962b9e
5
5
  SHA512:
6
- metadata.gz: 3142185738aa66feb78e7770d91b67a1c81303db80a8b8730e9c9388e8c754588a3dc3737a2eedff1bac36f025a664cd6b02f16adbd2436324644f6015fb188c
7
- data.tar.gz: f13e3d95e5f47c0da0a0a48f8b9fc969996f6f6d17f51ff418dbeebda8adb72acb22281e895ab4b5b3f4f2e26952285a17d7f51fd55d0ac953a4e80fb5660d10
6
+ metadata.gz: 23cb7eff0c9f6a48ba1599c793cdabef7f8f98524c0a6eaf07abbb62407e4363a6e0d63f5764b1383ae8297b389a7db042ed9670a5e43c6d5e263321a42f9361
7
+ data.tar.gz: fa7e760167ff757870f54c6f0175f25bb3d9480843053ae82d9a95c82c6dd29ad478f3901496c72a2bc74cdca1d596db25ddaef09a724df3743005fec907ca94
data/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@ 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.1.2] - 2025-10-14
9
+
10
+ ### Fixed
11
+ - **Critical:** Replaced `Async::Process` with Ruby's built-in `Open3` for subprocess management
12
+ - Fixed "uninitialized constant Async::Process" error that prevented the gem from working
13
+ - Process management now uses standard Ruby threads instead of async tasks
14
+ - All 86 tests passing
15
+
8
16
  ## [0.1.1] - 2025-10-14
9
17
 
10
18
  ### Fixed
@@ -162,23 +162,14 @@ module ClaudeAgentSDK
162
162
  should_pipe_stderr = @options.stderr || @options.extra_args.key?('debug-to-stderr')
163
163
 
164
164
  begin
165
- # Start process
166
- @process = Async::Process::Child.new(
167
- *cmd,
168
- stdin: :pipe,
169
- stdout: :pipe,
170
- stderr: should_pipe_stderr ? :pipe : nil,
171
- chdir: @cwd&.to_s,
172
- env: process_env
173
- )
165
+ # Start process using Open3
166
+ opts = { chdir: @cwd&.to_s }.compact
174
167
 
175
- @stdout = @process.stdout
176
- @stdin = @process.stdin if @is_streaming
168
+ @stdin, @stdout, @stderr, @process = Open3.popen3(process_env, *cmd, opts)
177
169
 
178
170
  # Handle stderr if piped
179
- if should_pipe_stderr && @process.stderr
180
- @stderr = @process.stderr
181
- @stderr_task = Async do
171
+ if should_pipe_stderr && @stderr
172
+ @stderr_task = Thread.new do
182
173
  handle_stderr
183
174
  rescue StandardError
184
175
  # Ignore errors during stderr reading
@@ -186,7 +177,8 @@ module ClaudeAgentSDK
186
177
  end
187
178
 
188
179
  # Close stdin for non-streaming mode
189
- @process.stdin.close unless @is_streaming
180
+ @stdin.close unless @is_streaming
181
+ @stdin = nil unless @is_streaming
190
182
 
191
183
  @ready = true
192
184
  rescue Errno::ENOENT => e
@@ -223,8 +215,11 @@ module ClaudeAgentSDK
223
215
  @ready = false
224
216
  return unless @process
225
217
 
226
- # Cancel stderr task
227
- @stderr_task&.stop
218
+ # Kill stderr thread
219
+ if @stderr_task&.alive?
220
+ @stderr_task.kill
221
+ @stderr_task.join(1) rescue nil
222
+ end
228
223
 
229
224
  # Close streams
230
225
  begin
@@ -232,6 +227,11 @@ module ClaudeAgentSDK
232
227
  rescue StandardError
233
228
  # Ignore
234
229
  end
230
+ begin
231
+ @stdout&.close
232
+ rescue StandardError
233
+ # Ignore
234
+ end
235
235
  begin
236
236
  @stderr&.close
237
237
  rescue StandardError
@@ -240,8 +240,8 @@ module ClaudeAgentSDK
240
240
 
241
241
  # Terminate process
242
242
  begin
243
- @process.terminate
244
- @process.wait
243
+ Process.kill('TERM', @process.pid) if @process.alive?
244
+ @process.value
245
245
  rescue StandardError
246
246
  # Ignore
247
247
  end
@@ -250,12 +250,13 @@ module ClaudeAgentSDK
250
250
  @stdout = nil
251
251
  @stdin = nil
252
252
  @stderr = nil
253
+ @stderr_task = nil
253
254
  @exit_error = nil
254
255
  end
255
256
 
256
257
  def write(data)
257
258
  raise CLIConnectionError, 'ProcessTransport is not ready for writing' unless @ready && @stdin
258
- raise CLIConnectionError, "Cannot write to terminated process" if @process && @process.status
259
+ raise CLIConnectionError, "Cannot write to terminated process" if @process && !@process.alive?
259
260
 
260
261
  raise CLIConnectionError, "Cannot write to process that exited with error: #{@exit_error}" if @exit_error
261
262
 
@@ -326,7 +327,7 @@ module ClaudeAgentSDK
326
327
  end
327
328
 
328
329
  # Check process completion
329
- status = @process.wait
330
+ status = @process.value
330
331
  returncode = status.exitstatus
331
332
 
332
333
  if returncode && returncode != 0
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClaudeAgentSDK
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: claude-agent-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Community Contributors