From e852710d8cc4d8f7628a93cd4c999a9e1dccd71d Mon Sep 17 00:00:00 2001 From: Dickson Tsai Date: Sat, 19 Jul 2025 20:43:07 -0700 Subject: [PATCH] Remove hardcoded timeout for control messages to match Typescript SDK --- src/claude_code_sdk/_errors.py | 4 +++- .../_internal/transport/subprocess_cli.py | 20 +++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/claude_code_sdk/_errors.py b/src/claude_code_sdk/_errors.py index 8f3e759..c86bf23 100644 --- a/src/claude_code_sdk/_errors.py +++ b/src/claude_code_sdk/_errors.py @@ -1,5 +1,7 @@ """Error types for Claude SDK.""" +from typing import Any + class ClaudeSDKError(Exception): """Base exception for all Claude SDK errors.""" @@ -49,6 +51,6 @@ class CLIJSONDecodeError(ClaudeSDKError): class MessageParseError(ClaudeSDKError): """Raised when unable to parse a message from CLI output.""" - def __init__(self, message: str, data: dict | None = None): + def __init__(self, message: str, data: dict[str, Any] | None = None): self.data = data super().__init__(message) diff --git a/src/claude_code_sdk/_internal/transport/subprocess_cli.py b/src/claude_code_sdk/_internal/transport/subprocess_cli.py index b39f903..34b7034 100644 --- a/src/claude_code_sdk/_internal/transport/subprocess_cli.py +++ b/src/claude_code_sdk/_internal/transport/subprocess_cli.py @@ -394,19 +394,13 @@ class SubprocessCLITransport(Transport): # Send request await self._stdin_stream.send(json.dumps(control_request) + "\n") - # Wait for response with timeout - try: - with anyio.fail_after(30.0): # 30 second timeout - while request_id not in self._pending_control_responses: - await anyio.sleep(0.1) + # Wait for response + while request_id not in self._pending_control_responses: + await anyio.sleep(0.1) - response = self._pending_control_responses.pop(request_id) + response = self._pending_control_responses.pop(request_id) - if response.get("subtype") == "error": - raise CLIConnectionError( - f"Control request failed: {response.get('error')}" - ) + if response.get("subtype") == "error": + raise CLIConnectionError(f"Control request failed: {response.get('error')}") - return response - except TimeoutError: - raise CLIConnectionError("Control request timed out") from None + return response