ccproxy.plugins.claude_sdk¶
ccproxy.plugins.claude_sdk
¶
Claude SDK integration module.
ClaudeSDKClient
¶
Minimal Claude SDK client wrapper that handles core SDK interactions.
This class provides a clean interface to the Claude Code SDK while handling error translation and basic query execution. Supports both stateless query() calls and pooled connection reuse for improved performance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
ClaudeSDKSettings
|
Plugin-specific configuration for Claude SDK |
required |
session_manager
|
SessionManager | None
|
Optional SessionManager instance for dependency injection |
None
|
Source code in ccproxy/plugins/claude_sdk/client.py
query_completion
async
¶
Execute a query using the Claude Code SDK and return a StreamHandle.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
message
|
SDKMessage
|
SDKMessage to send to Claude SDK |
required |
options
|
ClaudeAgentOptions
|
Claude Code options configuration |
required |
request_id
|
str | None
|
Optional request ID for correlation |
None
|
session_id
|
str | None
|
Optional session ID for conversation continuity |
None
|
Returns:
| Type | Description |
|---|---|
StreamHandle
|
StreamHandle that can create listeners for the stream |
Raises:
| Type | Description |
|---|---|
ClaudeSDKError
|
If the query fails |
Source code in ccproxy/plugins/claude_sdk/client.py
validate_health
async
¶
Validate that the Claude SDK is healthy.
Returns:
| Type | Description |
|---|---|
bool
|
True if healthy, False otherwise |
Source code in ccproxy/plugins/claude_sdk/client.py
interrupt_session
async
¶
Interrupt a specific session due to client disconnection.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
session_id
|
str
|
The session ID to interrupt |
required |
Returns:
| Type | Description |
|---|---|
bool
|
True if session was found and interrupted, False otherwise |
Source code in ccproxy/plugins/claude_sdk/client.py
StreamTimeoutError
¶
Bases: ClaudeSDKError
Stream timeout error when no SDK message is received within timeout.
Source code in ccproxy/plugins/claude_sdk/exceptions.py
AssistantMessage
¶
Bases: BaseModel
Assistant message from Claude SDK.
convert_content_blocks
classmethod
¶
Convert Claude SDK dataclass blocks to Pydantic models.
Source code in ccproxy/plugins/claude_sdk/models.py
ResultMessage
¶
ResultMessageBlock
¶
SDKMessage
¶
Bases: BaseModel
Message format used to send queries over the Claude SDK.
This represents the internal message structure expected by the Claude Code SDK client for query operations.
SDKMessageMode
¶
ThinkingBlock
¶
Bases: BaseModel
Thinking content block from Claude SDK.
Note: Thinking blocks are not normally sent by Claude Code SDK, but this model is included for defensive programming to handle any future SDK changes or edge cases where thinking content might be included in SDK responses.
ToolResultBlock
¶
ToolUseBlock
¶
UserMessage
¶
Bases: BaseModel
User message from Claude SDK.
convert_content_blocks
classmethod
¶
Convert Claude SDK dataclass blocks to Pydantic models.
Source code in ccproxy/plugins/claude_sdk/models.py
OptionsHandler
¶
Handles creation and management of Claude SDK options.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
ClaudeSDKSettings
|
Plugin-specific configuration for Claude SDK |
required |
Source code in ccproxy/plugins/claude_sdk/options.py
create_options
¶
create_options(
model,
temperature=None,
max_tokens=None,
system_message=None,
**additional_options,
)
Create Claude SDK options from API parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str
|
The model name |
required |
temperature
|
float | None
|
Temperature for response generation |
None
|
max_tokens
|
int | None
|
Maximum tokens in response |
None
|
system_message
|
str | None
|
System message to include |
None
|
**additional_options
|
Any
|
Additional options to set on the ClaudeAgentOptions instance |
{}
|
Returns:
| Type | Description |
|---|---|
ClaudeAgentOptions
|
Configured ClaudeAgentOptions instance |
Source code in ccproxy/plugins/claude_sdk/options.py
extract_system_message
staticmethod
¶
Extract system message from Anthropic messages format.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
messages
|
list[dict[str, Any]]
|
List of messages in Anthropic format |
required |
Returns:
| Type | Description |
|---|---|
str | None
|
System message content if found, None otherwise |
Source code in ccproxy/plugins/claude_sdk/options.py
get_supported_models
staticmethod
¶
validate_model
staticmethod
¶
convert_sdk_result_message
¶
convert_sdk_result_message(
session_id,
subtype="",
duration_ms=0,
duration_api_ms=0,
is_error=False,
num_turns=0,
usage=None,
total_cost_usd=None,
result=None,
)
Convert raw result message data to ResultMessage model.
Source code in ccproxy/plugins/claude_sdk/models.py
convert_sdk_system_message
¶
Convert raw system message data to SystemMessage model.
convert_sdk_text_block
¶
convert_sdk_tool_result_block
¶
Convert raw tool result data to ToolResultBlock model.
Source code in ccproxy/plugins/claude_sdk/models.py
convert_sdk_tool_use_block
¶
Convert raw tool use data to ToolUseBlock model.
create_sdk_message
¶
Create an SDKMessage instance for sending queries to Claude SDK.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
content
|
str
|
The text content to send to Claude |
required |
session_id
|
str | None
|
Optional session ID for conversation continuity |
None
|
parent_tool_use_id
|
str | None
|
Optional parent tool use ID |
None
|
Returns:
| Type | Description |
|---|---|
SDKMessage
|
SDKMessage instance ready to send to Claude SDK |
Source code in ccproxy/plugins/claude_sdk/models.py
to_sdk_variant
¶
Convert a base model to its SDK variant using model_validate().
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
base_model
|
BaseModel
|
The base model instance to convert |
required |
sdk_class
|
type[T]
|
The target SDK class to convert to |
required |
Returns:
| Type | Description |
|---|---|
T
|
Instance of the SDK class with data from the base model |
Example
text_block = TextBlock(text="message") text_block_sdk = to_sdk_variant(text_block, TextBlockSDK)