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.2.0'
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
491 492 493 494 495 496 497 498 499 500 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 491 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
433 434 435 436 437 438 439 440 441 442 443 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 433 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
543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 543 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
381 382 383 384 385 386 387 388 389 390 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 381 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 |