fix: use idle timeout for codex turns

This commit is contained in:
AgentRun Codex
2026-06-11 12:52:46 +08:00
parent dafcfc7ce4
commit f49695a821
11 changed files with 115 additions and 72 deletions
-14
View File
@@ -483,15 +483,7 @@ async function runCodexStdioTurnWithSession(options: CodexStdioTurnOptions, sess
};
options.abortSignal?.addEventListener("abort", abortTurn, { once: true });
const turnIdleTimeoutMs = positiveTimeout(options.timeoutMs);
let hardTimeout: NodeJS.Timeout | null = null;
let idleTimeout: NodeJS.Timeout | null = null;
hardTimeout = setTimeout(() => {
if (terminal) return;
terminal = { status: "failed", failureKind: "backend-timeout", message: `codex stdio turn hard timed out after ${turnIdleTimeoutMs}ms` };
emitEvent({ type: "error", payload: { failureKind: terminal.failureKind, message: terminal.message, phase: "turn:hard-timeout" } });
beginInterruptAndStop("hard timeout", "turn:hard-timeout");
terminalResolve();
}, turnIdleTimeoutMs);
const refreshTurnActivity = (): void => {
if (terminal) return;
if (idleTimeout) clearTimeout(idleTimeout);
@@ -508,11 +500,6 @@ async function runCodexStdioTurnWithSession(options: CodexStdioTurnOptions, sess
clearTimeout(idleTimeout);
idleTimeout = null;
};
const stopTurnHardTimeout = (): void => {
if (!hardTimeout) return;
clearTimeout(hardTimeout);
hardTimeout = null;
};
refreshTurnActivity();
const stopNotifications = session.addNotificationHandler((message) => {
refreshTurnActivity();
@@ -611,7 +598,6 @@ async function runCodexStdioTurnWithSession(options: CodexStdioTurnOptions, sess
stopNotifications();
options.abortSignal?.removeEventListener("abort", abortTurn);
stopTurnIdleTimeout();
stopTurnHardTimeout();
}
if (!terminal) terminal = { status: "failed", failureKind: "backend-response-invalid", message: "codex app-server finished without terminal status" };
const pendingInterrupt: Promise<void> | null = interruptInFlight as Promise<void> | null;