Module: ClaudeAgentSDK::Streaming

Defined in:
lib/claude_agent_sdk/streaming.rb

Overview

Streaming input helpers for Claude Agent SDK

Class Method Summary collapse

Class Method Details

.from_array(messages, session_id: 'default') ⇒ Enumerator

Create an Enumerator from an array of messages

Examples:

messages = ['Hello', 'What is 2+2?', 'Thanks!']
stream = ClaudeAgentSDK::Streaming.from_array(messages)

Parameters:

  • messages (Array<String>)

    Array of message strings

  • session_id (String) (defaults to: 'default')

    Session identifier

Returns:

  • (Enumerator)

    Enumerator yielding JSON-encoded messages



36
37
38
39
40
41
42
# File 'lib/claude_agent_sdk/streaming.rb', line 36

def self.from_array(messages, session_id: 'default')
  Enumerator.new do |yielder|
    messages.each do |content|
      yielder << user_message(content, session_id: session_id)
    end
  end
end

.from_block(session_id: 'default') { ... } ⇒ Enumerator

Create an Enumerator from a block

Examples:

stream = ClaudeAgentSDK::Streaming.from_block do |yielder|
  yielder.yield('First message')
  sleep 1
  yielder.yield('Second message')
end

Parameters:

  • session_id (String) (defaults to: 'default')

    Session identifier

Yields:

  • Block that yields message strings

Returns:

  • (Enumerator)

    Enumerator yielding JSON-encoded messages



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/claude_agent_sdk/streaming.rb', line 56

def self.from_block(session_id: 'default', &block)
  Enumerator.new do |yielder|
    collector = Object.new
    def collector.yield(content)
      @content = content
    end
    def collector.content
      @content
    end

    inner_enum = Enumerator.new(&block)
    inner_enum.each do |content|
      yielder << user_message(content, session_id: session_id)
    end
  end
end

.user_message(content, session_id: 'default', parent_tool_use_id: nil) ⇒ String

Create a user message for streaming input

Parameters:

  • content (String)

    The message content

  • session_id (String) (defaults to: 'default')

    Session identifier

  • parent_tool_use_id (String, nil) (defaults to: nil)

    Parent tool use ID if responding to a tool

Returns:

  • (String)

    JSON-encoded message



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/claude_agent_sdk/streaming.rb', line 14

def self.user_message(content, session_id: 'default', parent_tool_use_id: nil)
  message = {
    type: 'user',
    message: {
      role: 'user',
      content: content
    },
    parent_tool_use_id: parent_tool_use_id,
    session_id: session_id
  }
  JSON.generate(message) + "\n"
end