You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(app-server): SpawnedCodexAppServerClient.initialize is unbounded (same hang class as #29) #31
BrokerCodexAppServerClient.initialize got bounded handshake timeouts in #30 (connect 2s + initialize 5s, EBROKERTIMEOUT → direct fallback). Its sibling SpawnedCodexAppServerClient.initialize has the same unbounded shape and was left out of scope there.
If a spawned codex app-server child accepts stdin and then stalls before answering initialize (slow auth check, cold model-provider bootstrap, Windows PATH stall), the client hangs forever — the same failure class #30 closed on the broker path, just on the direct path.
This also weakens the #30 fallback: when withAppServer retries direct after a broker-handshake timeout, the retry itself has no initialize deadline.
Put an optional timeoutMs on AppServerClientBase.request() (default undefined — no deadline, backward compatible), wired from both initialize() overrides and from captureTurn's startRequest. Then:
BrokerCodexAppServerClient.initialize drops its inline Promise.race (~40 lines) and calls this.request(\"initialize\", {...}, { timeoutMs }).
SpawnedCodexAppServerClient.initialize gets the bound for free.
The withAppServer OR-chain (BROKER_BUSY_RPC_CODE || EBROKERTIMEOUT || ENOENT || ECONNREFUSED) collapses to a single broker-transport-error predicate by tagging broker-fatal errors at their source.
TDD
Reproduce first: drive SpawnedCodexAppServerClient.initialize against a fake codex app-server that accepts stdin but never answers initialize, race against a watchdog → today it hangs. Then bound it.
Activity
fix(app-server): bound request() so a wedged spawned app-server can't…
chore: bump fork version to 1.0.6-fork.5
fix: reject sub-millisecond initialize timeout overrides
fix: make the spawned app-server handshake deadline overridable (#55) (…