mirror of
https://github.com/yusufipk/dikte.git
synced 2026-09-11 19:06:11 +00:00
The claude and codex CLIs spawn shells to do their work, and killing only the direct child left those shells holding the pipes: the stdout loop never saw EOF, so the run hung forever with the watchdog already fired, and cleanup's subprocess.run could hang inside the stdlib the same way after its own timeout. Both now run the CLI with its output in files rather than pipes and put the whole tree down on a timeout, taskkill /T on Windows and a process group everywhere else. Whether a dead resume means "start a fresh conversation" was decided by English substrings of stderr, which a localized CLI never says; a resumed run that exits nonzero with no answer now retries fresh once, whatever the words were. Recognised API trouble is the exception: a spent quota, a signed-out CLI or a dead network is not the session's fault, and is reported as itself rather than retried into a second copy of the same failure. Co-Authored-By: Claude Fable 5 <[email protected]>