diff options
| author | main <main@swarm.moe> | 2026-03-25 18:10:21 -0400 |
|---|---|---|
| committer | main <main@swarm.moe> | 2026-03-25 18:10:21 -0400 |
| commit | 0dda9748e55bcffe6194c4b1d15f10c7753e8b29 (patch) | |
| tree | 85f98ba42cbc0362da2540e18467c893307fa361 | |
| parent | 7f28cb7356092934a25ab5fd277dce38b91eb8c0 (diff) | |
| download | phone_opus-0dda9748e55bcffe6194c4b1d15f10c7753e8b29.zip | |
Lift Claude progress watchdog to 20 minutes
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | crates/phone-opus/src/mcp/service.rs | 2 |
2 files changed, 2 insertions, 2 deletions
@@ -35,7 +35,7 @@ Each `consult` call runs Claude Code with: - `phone_opus` gives Claude a separate persistent home and XDG state under its own state root - `/tmp` and `/var/tmp` stay writable - when the consulted `cwd` sits inside a writable tree such as `/tmp/...`, that consulted tree is remounted read-only so Claude cannot accidentally edit the target repo -- a progress watchdog that aborts consults if Claude makes no observable progress for 30 seconds, using transcript growth and pipe activity as the liveness signal +- a progress watchdog that aborts consults if Claude makes no observable progress for 20 minutes, using transcript growth and pipe activity as the liveness signal - successful consult outputs are mirrored to `/tmp/phone_opus-consults` as timestamped JSON files with a prompt-derived slug and light auto-pruning - internet access remains available diff --git a/crates/phone-opus/src/mcp/service.rs b/crates/phone-opus/src/mcp/service.rs index 38e472e..4a65e6d 100644 --- a/crates/phone-opus/src/mcp/service.rs +++ b/crates/phone-opus/src/mcp/service.rs @@ -895,7 +895,7 @@ const CONSULT_OUTPUT_ROOT: &str = "/tmp/phone_opus-consults"; const CONSULT_OUTPUT_KEEP_COUNT: usize = 256; const CONSULT_OUTPUT_MAX_AGE: Duration = Duration::from_secs(7 * 24 * 60 * 60); const CLAUDE_PROGRESS_POLL_INTERVAL: Duration = Duration::from_millis(250); -const DEFAULT_CLAUDE_STALL_TIMEOUT: Duration = Duration::from_secs(30); +const DEFAULT_CLAUDE_STALL_TIMEOUT: Duration = Duration::from_secs(20 * 60); const CONSULT_TIMESTAMP_FORMAT: &[time::format_description::FormatItem<'static>] = time::macros::format_description!("[year][month][day]T[hour][minute][second]Z"); const CLAUDE_MIRROR_FILES: [&str; 4] = [ |