Remove hardcoded timeout for control messages to match Typescript SDK

This commit is contained in:
Dickson Tsai 2025-07-19 20:43:07 -07:00
parent 5325dea9fd
commit e852710d8c
No known key found for this signature in database
2 changed files with 10 additions and 14 deletions

View file

@ -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)

View file

@ -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