| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
The manual merge of main mistyped the env parsing lines: ',' became '||' (dropping the fallback argument), temperature used intFromEnv instead of floatFromEnv, and one call was misspelled as pintFromEnv. Restore the intended calls, with timeoutMs also validated via intFromEnv.
| Back | FazBrowse Home | New Git URL |
Was running this against a flaky proxy the other day and hit something annoying: the agent would just sit there — no output, nothing. Turns out fetch() doesn't have a timeout. Node silently drops the timeout option if you pass it, so if a provider accepts the connection and then never answers, you're stuck until you hit Ctrl+C.
So the LLM client now takes a timeoutMs (default 5 min, overridable with CORECODER_TIMEOUT_MS) and every request races against a timer. If the timer wins, it aborts the fetch and the retry loop treats it as a transient error and retries. Your own Ctrl+C still comes through as an AbortError — the timeout can't swallow it.
Three tests cover it:
Writing the tests caught something fun: my fetch stub didn't reject when handed an already-aborted signal, so the second test hung forever. Real fetch rejects immediately in that case, so I fixed the stub, not the client.
Design note: the timeout covers getting a response, not the streaming body — a model that's actively streaming can legitimately take a while, and that's Ctrl+C territory. Say the word if you'd rather have a whole-call timeout instead.