diff --git a/src/beaver_gateway/agents/claude.py b/src/beaver_gateway/agents/claude.py index d242c84..a1846ef 100644 --- a/src/beaver_gateway/agents/claude.py +++ b/src/beaver_gateway/agents/claude.py @@ -153,14 +153,19 @@ class ClaudeCodeOptions(BaseModel): caveats) as ``UserMessage`` events. Off by default — they're not part of the real conversation.""" - startup_delay: float = 10.0 + startup_delay: float = 60.0 """Upper bound (seconds) on waiting for claude's TUI to enable bracketed-paste mode after spawn. claude-code-api polls PTY output - for the DECSET 2004 marker and returns as soon as it arrives; this - caps how long to wait if it never does. 10s by default is a free - headroom — on a fast host the marker arrives in well under a second - and we proceed immediately — but it saves slow hosts (Raspberry Pi - etc) where the TUI can take a few seconds to render.""" + for the DECSET 2004 marker and returns as soon as it arrives, so a + generous cap costs nothing on a warm host — it only bounds the case + where the marker never shows. + + It has to be generous, because timing out here means writing the + prompt into a terminal that hasn't enabled bracketed paste, where our + ``ESC[200~`` framing is parsed as junk and the message is silently + dropped. Observed on a cold Raspberry Pi: 10s elapsed with *zero* + bytes of PTY output, the prompt went into the void, and the turn hung + until a human typed into the session by hand.""" file_wait_timeout: float = 30.0 """How long to wait for the session JSONL to appear after spawn. diff --git a/uv.lock b/uv.lock index b072a3c..6a7c147 100644 --- a/uv.lock +++ b/uv.lock @@ -287,7 +287,7 @@ local = [ { name = "raycast-api", version = "0.1.0", source = { editable = "../raycast-api" } }, ] prod = [ - { name = "claude-code-api", version = "0.1.0", source = { git = "https://git.kotikot.com/beaver/claude-code-api.git#89065c2f4ed8db5607ae49e236a8e398719c8072" } }, + { name = "claude-code-api", version = "0.1.0", source = { git = "https://git.kotikot.com/beaver/claude-code-api.git#aa7beea1e014ba0dd8cd4980fee4b9302c57b212" } }, { name = "raycast-api", version = "0.1.0", source = { git = "https://git.kotikot.com/beaver/raycast-api.git#e73894c8e435da5c0709f92f69f11bcd0dab9afe" } }, ] @@ -419,7 +419,7 @@ wheels = [ [[package]] name = "claude-code-api" version = "0.1.0" -source = { git = "https://git.kotikot.com/beaver/claude-code-api.git#89065c2f4ed8db5607ae49e236a8e398719c8072" } +source = { git = "https://git.kotikot.com/beaver/claude-code-api.git#aa7beea1e014ba0dd8cd4980fee4b9302c57b212" } resolution-markers = [ "python_full_version >= '3.14'", "python_full_version < '3.14'",