From 51c6daa3bd1d65e809b5196bf63333013427338a Mon Sep 17 00:00:00 2001 From: Rishet11 <154429365+Rishet11@users.noreply.github.com> Date: Sat, 15 Aug 2026 17:32:55 +0530 Subject: [PATCH] fix(server): treat a missing Codex rollout as a recoverable resume error (#6671) --- .../src/provider/Layers/CodexSessionRuntime.test.ts | 12 ++++++++++++ .../src/provider/Layers/CodexSessionRuntime.ts | 1 + 2 files changed, 13 insertions(+) diff --git a/apps/server/src/provider/Layers/CodexSessionRuntime.test.ts b/apps/server/src/provider/Layers/CodexSessionRuntime.test.ts index ec32b1dae718858e8b897734a81576cb683bc695..2a2de683920970a6b35ef3e72faef16125e8be22 100644 --- a/apps/server/src/provider/Layers/CodexSessionRuntime.test.ts +++ b/apps/server/src/provider/Layers/CodexSessionRuntime.test.ts @@ -498,6 +498,18 @@ describe("isRecoverableThreadResumeError", () => { ); }); + it("matches a missing rollout for a known thread id", () => { + NodeAssert.equal( + isRecoverableThreadResumeError( + new CodexErrors.CodexAppServerRequestError({ + code: -32603, + errorMessage: "no rollout found for thread id 019fdf74-aaa9-7950-b252-7cc7a8650470", + }), + ), + true, + ); + }); + it("ignores non-recoverable resume errors", () => { NodeAssert.equal( isRecoverableThreadResumeError( diff --git a/apps/server/src/provider/Layers/CodexSessionRuntime.ts b/apps/server/src/provider/Layers/CodexSessionRuntime.ts index 4af2624159979b0eba80ff3787ad66f09c12fc0f..8f887c1b5929b12bbe29da66018829908254c9c2 100644 --- a/apps/server/src/provider/Layers/CodexSessionRuntime.ts +++ b/apps/server/src/provider/Layers/CodexSessionRuntime.ts @@ -58,6 +58,7 @@ const RECOVERABLE_THREAD_RESUME_ERROR_SNIPPETS = [ "no such thread", "unknown thread", "does not exist", + "no rollout found", ]; export function hasConfiguredMcpServer(appServerArgs: ReadonlyArray | undefined): boolean { -- 2.54.0