Module: ClaudeAgentSDK
- Defined in:
- lib/claude_agent_sdk.rb,
lib/claude_agent_sdk/query.rb,
lib/claude_agent_sdk/types.rb,
lib/claude_agent_sdk/errors.rb,
lib/claude_agent_sdk/version.rb,
lib/claude_agent_sdk/streaming.rb,
lib/claude_agent_sdk/transport.rb,
lib/claude_agent_sdk/message_parser.rb,
lib/claude_agent_sdk/sdk_mcp_server.rb,
lib/claude_agent_sdk/subprocess_cli_transport.rb
Overview
Claude Agent SDK for Ruby
Defined Under Namespace
Modules: Streaming Classes: AgentDefinition, AssistantMessage, CLIConnectionError, CLIJSONDecodeError, CLINotFoundError, ClaudeAgentOptions, ClaudeSDKError, Client, HookMatcher, McpHttpServerConfig, McpSSEServerConfig, McpSdkServerConfig, McpStdioServerConfig, MessageParseError, MessageParser, PermissionResultAllow, PermissionResultDeny, PermissionRuleValue, PermissionUpdate, ProcessError, Query, ResultMessage, SdkMcpPrompt, SdkMcpResource, SdkMcpServer, SdkMcpTool, StreamEvent, SubprocessCLITransport, SystemMessage, TextBlock, ThinkingBlock, ToolPermissionContext, ToolResultBlock, ToolUseBlock, Transport, UserMessage
Constant Summary collapse
- VERSION =
'0.1.4'
Class Method Summary collapse
-
.create_prompt(name:, description: nil, arguments: nil, &generator) ⇒ SdkMcpPrompt
Helper function to create a prompt definition.
-
.create_resource(uri:, name:, description: nil, mime_type: nil, &reader) ⇒ SdkMcpResource
Helper function to create a resource definition.
-
.create_sdk_mcp_server(name:, version: '1.0.0', tools: [], resources: [], prompts: []) ⇒ Hash
Create an SDK MCP server.
-
.create_tool(name, description, input_schema, &handler) ⇒ SdkMcpTool
Helper function to create a tool definition.
-
.query(prompt:, options: nil) {|Message| ... } ⇒ Enumerator
Query Claude Code for one-shot or unidirectional streaming interactions.
Class Method Details
.create_prompt(name:, description: nil, arguments: nil, &generator) ⇒ SdkMcpPrompt
Helper function to create a prompt definition
303 304 305 306 307 308 309 310 311 312 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 303 def self.create_prompt(name:, description: nil, arguments: nil, &generator) raise ArgumentError, 'Block required for prompt generator' unless generator SdkMcpPrompt.new( name: name, description: description, arguments: arguments, generator: generator ) end |
.create_resource(uri:, name:, description: nil, mime_type: nil, &reader) ⇒ SdkMcpResource
Helper function to create a resource definition
245 246 247 248 249 250 251 252 253 254 255 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 245 def self.create_resource(uri:, name:, description: nil, mime_type: nil, &reader) raise ArgumentError, 'Block required for resource reader' unless reader SdkMcpResource.new( uri: uri, name: name, description: description, mime_type: mime_type, reader: reader ) end |
.create_sdk_mcp_server(name:, version: '1.0.0', tools: [], resources: [], prompts: []) ⇒ Hash
Create an SDK MCP server
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 355 def self.create_sdk_mcp_server(name:, version: '1.0.0', tools: [], resources: [], prompts: []) server = SdkMcpServer.new( name: name, version: version, tools: tools, resources: resources, prompts: prompts ) # Return configuration for ClaudeAgentOptions { type: 'sdk', name: name, instance: server } end |
.create_tool(name, description, input_schema, &handler) ⇒ SdkMcpTool
Helper function to create a tool definition
193 194 195 196 197 198 199 200 201 202 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 193 def self.create_tool(name, description, input_schema, &handler) raise ArgumentError, 'Block required for tool handler' unless handler SdkMcpTool.new( name: name, description: description, input_schema: input_schema, handler: handler ) end |
.query(prompt:, options: nil) {|Message| ... } ⇒ Enumerator
Query Claude Code for one-shot or unidirectional streaming interactions
This function is ideal for simple, stateless queries where you don’t need bidirectional communication or conversation management.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/claude_agent_sdk.rb', line 50 def self.query(prompt:, options: nil, &block) return enum_for(:query, prompt: prompt, options: ) unless block ||= ClaudeAgentOptions.new ENV['CLAUDE_CODE_ENTRYPOINT'] = 'sdk-rb' Async do transport = SubprocessCLITransport.new(prompt, ) begin transport.connect # If prompt is an Enumerator, write each message to stdin if prompt.is_a?(Enumerator) || prompt.respond_to?(:each) Async do begin prompt.each do || transport.write() end ensure transport.end_input end end end # Read and yield messages transport. do |data| = MessageParser.parse(data) block.call() end ensure transport.close end end.wait end |