Files
PaperClipAI/tests/runner-e2e/chat-native-timeout-policy.ts
T

33 lines
1.6 KiB
TypeScript

export const CHAT_NATIVE_TIMEOUT_POLICY = {
kind: "production-default-no-active-turn-cap",
effectiveNativeTurnTimeoutMs: 0,
savedAgentTimeoutSec: 0,
lifetimeOwner: "unchanged-finite-scenario-cell-and-owned-cleanup",
} as const;
export function chatNativeTimeoutEvidence(input: {
selectedTurnTimeoutMs: number | undefined;
authoredLegacyTurnTimeoutMs: number;
attemptTimeoutMs: number;
observationBudgetMs: number;
savedAgentTimeoutSec: unknown;
}) {
if (input.selectedTurnTimeoutMs !== CHAT_NATIVE_TIMEOUT_POLICY.effectiveNativeTurnTimeoutMs
|| input.savedAgentTimeoutSec !== CHAT_NATIVE_TIMEOUT_POLICY.savedAgentTimeoutSec)
throw new Error("Catalog effective native timeout differs from the production-default policy");
if (!Number.isFinite(input.attemptTimeoutMs) || input.attemptTimeoutMs <= 30_000
|| !Number.isFinite(input.observationBudgetMs) || input.observationBudgetMs <= 0 || input.observationBudgetMs >= input.attemptTimeoutMs
|| !Number.isFinite(input.authoredLegacyTurnTimeoutMs) || input.authoredLegacyTurnTimeoutMs <= 0)
throw new Error("Catalog requires its unchanged finite outer budget and explicit authored legacy declaration");
return { ...CHAT_NATIVE_TIMEOUT_POLICY,
authoredLegacyTurnTimeoutMs: input.authoredLegacyTurnTimeoutMs,
scenarioCellBudgetMs: input.attemptTimeoutMs,
scenarioObservationBudgetMs: input.observationBudgetMs,
playwrightBudgetMs: input.attemptTimeoutMs + 90_000,
launcherWatchdogMs: input.attemptTimeoutMs + 90_000 + 300_000,
activeRunCancellationWaitMs: 45_000,
ownedProcessShutdownGraceMs: 45_000,
ownedProcessKillGraceMs: 5_000,
};
}