Module: ClaudeCodeSDK

Defined in:
lib/claude_code_sdk.rb,
lib/claude_code_sdk/types.rb,
lib/claude_code_sdk/errors.rb,
lib/claude_code_sdk/version.rb,
lib/claude_code_sdk/messages.rb,
lib/claude_code_sdk/configuration.rb,
lib/claude_code_sdk/transport/base.rb,
lib/claude_code_sdk/internal/client.rb,
lib/claude_code_sdk/transport/simple_cli.rb,
lib/claude_code_sdk/transport/subprocess_cli.rb

Defined Under Namespace

Modules: Content, Internal, PermissionMode, Transport Classes: AssistantMessage, CLIConnectionError, CLIJSONDecodeError, CLINotFoundError, Configuration, Error, Message, Options, ProcessError, ResultMessage, SystemMessage, ThinkingMessage, UserMessage

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.ask(prompt) ⇒ String

Convenience method for simple text queries



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/claude_code_sdk.rb', line 58

def ask(prompt)
  response_text = []

  query(prompt) do |message|
    if message.is_a?(AssistantMessage)
      message.content.each do |block|
        response_text << block.text if block.is_a?(Content::TextBlock)
      end
    end
  end

  response_text.join("\n")
end

.configure {|Configuration| ... } ⇒ Object

Configure global defaults

Examples:

ClaudeCodeSDK.configure do |config|
  config.default_system_prompt = "You are helpful"
  config.default_cwd = "/home/user/projects"
end

Yields:



80
81
82
# File 'lib/claude_code_sdk.rb', line 80

def configure
  yield Configuration.instance
end

.query(prompt, options = nil) {|Message| ... } ⇒ Array<Message>

Query Claude Code with a prompt

Examples:

With a block

ClaudeCodeSDK.query("Hello Claude") do |message|
  puts message.text if message.is_a?(AssistantMessage)
end

Without a block

messages = ClaudeCodeSDK.query("Hello Claude")
messages.each { |msg| puts msg }

With options

ClaudeCodeSDK.query("Help me code",
  system_prompt: "You are a Ruby expert",
  allowed_tools: ["read_file", "write_file"]
)

Yields:

  • (Message)

    Messages from the conversation



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/claude_code_sdk.rb', line 39

def query(prompt, options = nil, &block)
  # Convert hash to Options if needed
  options = Options.new(**options) if options.is_a?(Hash)

  client = Internal::Client.new

  if block_given?
    client.query(prompt: prompt, options: options, &block)
  else
    messages = []
    client.query(prompt: prompt, options: options) { |msg| messages << msg }
    messages
  end
end