Per-eval / per-call runtime knobs for the loop: Python-sandbox eval timeouts
(with clamping and a shell-timeout-aware widener), the svar/ask-code! stream
watchdog defaults, and the dynamic vars the loop binds per call.
A LEAF — depends on nothing else in the engine, so the loop and its tests read these settings from one place instead of carrying them in the loop namespace.
Per-eval / per-call runtime knobs for the loop: Python-sandbox eval timeouts (with clamping and a shell-timeout-aware widener), the `svar/ask-code!` stream watchdog defaults, and the dynamic vars the loop binds per call. A LEAF — depends on nothing else in the engine, so the loop and its tests read these settings from one place instead of carrying them in the loop namespace.
Dynamic timeout in milliseconds for Python code evaluation.
Dynamic timeout in milliseconds for Python code evaluation.
Dynamic context for RLM debug logging.
Dynamic context for RLM debug logging.
Default inter-chunk idle timeout for Vis svar/ask-code! calls.
3min gives slow reasoning streams room while avoiding long hangs when
provider stops sending bytes entirely.
Default inter-chunk idle timeout for Vis `svar/ask-code!` calls. 3min gives slow reasoning streams room while avoiding long hangs when provider stops sending bytes entirely.
Default model/progress timeout for Vis svar/ask-code! streams (ms).
Catches the failure mode idle-timeout-ms cannot: the transport
keeps emitting bytes (SSE : ping comments, blank separators, or
any framing-layer keepalive that returns from .readLine) which
resets the idle watchdog forever, yet zero response.*.delta /
message.* events ever arrive. Without this watchdog the iteration
loop blocks on .readLine until the model finally streams output.
4 minutes (240000 ms) is the considered ceiling: > Anthropic's documented 185s worst case for legitimate extended thinking on Opus 4.5 (anthropics/claude-agent-sdk-typescript#44), high enough that a deep reasoning model with a real long pre-token phase still succeeds, low enough that a stuck provider surfaces a real error in under 5 minutes instead of stalling the whole turn.
Disable per call with :semantic-timeout-ms nil.
Default model/progress timeout for Vis `svar/ask-code!` streams (ms). Catches the failure mode `idle-timeout-ms` cannot: the transport keeps emitting bytes (SSE `: ping` comments, blank separators, or any framing-layer keepalive that returns from `.readLine`) which resets the idle watchdog forever, yet zero `response.*.delta` / `message.*` events ever arrive. Without this watchdog the iteration loop blocks on `.readLine` until the model finally streams output. 4 minutes (240000 ms) is the considered ceiling: > Anthropic's documented 185s worst case for legitimate extended thinking on Opus 4.5 (anthropics/claude-agent-sdk-typescript#44), high enough that a deep reasoning model with a real long pre-token phase still succeeds, low enough that a stuck provider surfaces a real error in under 5 minutes instead of stalling the whole turn. Disable per call with `:semantic-timeout-ms nil`.
Default time-to-first-token timeout for Vis svar/ask-code! calls.
60s avoids false positives from Codex queue/cold-start spikes while
still bounding truly stuck pre-header connections. A separate retry
handles the one-off watchdog interrupt case.
Default time-to-first-token timeout for Vis `svar/ask-code!` calls. 60s avoids false positives from Codex queue/cold-start spikes while still bounding truly stuck pre-header connections. A separate retry handles the one-off watchdog interrupt case.
(clamp-eval-timeout-ms candidate)Clamp a candidate eval timeout to [MIN_EVAL_TIMEOUT_MS, MAX_EVAL_TIMEOUT_MS].
Clamp a candidate eval timeout to [MIN_EVAL_TIMEOUT_MS, MAX_EVAL_TIMEOUT_MS].
Default timeout in milliseconds for code evaluation in the Python sandbox.
Default timeout in milliseconds for code evaluation in the Python sandbox.
(explicit-shell-timeout-secs code)Best-effort scan for explicit shell/subprocess timeout overrides in Python code. The real shell tool still owns validation/clamping; this only prevents the outer eval watchdog (default 120s) from preempting a longer requested shell timeout.
Best-effort scan for explicit shell/subprocess timeout overrides in Python code. The real shell tool still owns validation/clamping; this only prevents the outer eval watchdog (default 120s) from preempting a longer requested shell timeout.
Hard ceiling for :eval-timeout-ms.
Hard ceiling for :eval-timeout-ms.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |