diff --git a/packages/paperclip-runner/src/live/runnerd-codex-transport.test.ts b/packages/paperclip-runner/src/live/runnerd-codex-transport.test.ts index a6f5519819..bcbd052b55 100644 --- a/packages/paperclip-runner/src/live/runnerd-codex-transport.test.ts +++ b/packages/paperclip-runner/src/live/runnerd-codex-transport.test.ts @@ -104,6 +104,17 @@ it("identifies an active provider turn that must stop before suspension", () => providerSettled: false, }); + expect( + runnerdRecoveryInternals.providerDrainStateFromSnapshot({ + activeTurnId: "acpx-turn-1", + pendingEvents: [], + }), + ).toEqual({ + pendingEventCount: 0, + activeProviderTurnId: "acpx-turn-1", + providerSettled: false, + }); + expect( runnerdRecoveryInternals.providerDrainStateFromSnapshot({ activeProviderTurnId: null, diff --git a/packages/paperclip-runner/src/live/runnerd-codex-transport.ts b/packages/paperclip-runner/src/live/runnerd-codex-transport.ts index 786c21f7bb..b013fd1986 100644 --- a/packages/paperclip-runner/src/live/runnerd-codex-transport.ts +++ b/packages/paperclip-runner/src/live/runnerd-codex-transport.ts @@ -340,10 +340,9 @@ function providerDrainStateFromSnapshot(state: Record): { ? state.queuedEvents.length : 0; const activeProviderTurnId = - typeof state.activeProviderTurnId === "string" && - state.activeProviderTurnId.length > 0 - ? state.activeProviderTurnId - : null; + [state.activeProviderTurnId, state.activeTurnId].find( + (value): value is string => typeof value === "string" && value.length > 0, + ) ?? null; return { pendingEventCount: pending + queued, activeProviderTurnId,