fix: bug: gardener hangs forever when Claude finishes without writing phase file (#261) (#263)

Fixes #261

## Changes
Fixed gardener hanging forever when Claude skips phase protocol. Three changes: (1) gardener-agent.sh: replaced 999999s timeout with 7200s (2h, matching dev-agent); (2) lib/agent-session.sh: added idle-prompt detection to monitor_phase_loop — if Claude returns to the ❯ prompt for 3 consecutive polls with no phase file written, exits immediately with _MONITOR_LOOP_EXIT=idle_prompt (only fires when phase file is empty, so awaiting_ci/review waits are unaffected); (3) gardener prompt: removed 'no time limit' wording, replaced with explicit phase-write requirement.

Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/disinto/pulls/263
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
This commit is contained in:
johba 2026-03-19 13:47:10 +01:00
parent e024b0de03
commit d5c2c213a3
5 changed files with 58 additions and 13 deletions

View file

@ -60,9 +60,9 @@ get_candidates() {
if (match(p, /^[a-z][a-zA-Z0-9_]*_[a-zA-Z0-9_]+/)) {
word = substr(p, RSTART, RLENGTH)
rest = substr(p, RSTART + RLENGTH, 1)
# Skip: case labels (word)), Python/jq patterns (word:),
# Skip: case labels (word) or word|), Python/jq patterns (word:),
# object method calls (word.method), assignments (word=)
if (rest == ")" || rest == ":" || rest == "." || rest == "=") continue
if (rest == ")" || rest == "|" || rest == ":" || rest == "." || rest == "=") continue
print word
}
}