Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline (Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/* packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
28 lines
957 B
TypeScript
28 lines
957 B
TypeScript
export const DEFAULT_SANDBOX_COMMAND_TIMEOUT_MS = 5 * 60_000;
|
|
export const MAX_SANDBOX_COMMAND_TIMEOUT_MS = 60 * 60_000;
|
|
|
|
export function sandboxCommandTimeoutMs(
|
|
env: Record<string, string | undefined> = process.env,
|
|
): number {
|
|
const configured = Number(env.SANDBOX_COMMAND_TIMEOUT_MS);
|
|
return validSandboxCommandTimeout(configured) ? configured : DEFAULT_SANDBOX_COMMAND_TIMEOUT_MS;
|
|
}
|
|
|
|
export function boundedSandboxCommandTimeoutMs(
|
|
requested: number | undefined,
|
|
fallback?: number,
|
|
): number {
|
|
if (validSandboxCommandTimeout(requested)) return requested;
|
|
if (fallback === undefined) return sandboxCommandTimeoutMs();
|
|
return validSandboxCommandTimeout(fallback) ? fallback : DEFAULT_SANDBOX_COMMAND_TIMEOUT_MS;
|
|
}
|
|
|
|
function validSandboxCommandTimeout(value: number | undefined): value is number {
|
|
return (
|
|
value !== undefined &&
|
|
Number.isSafeInteger(value) &&
|
|
value > 0 &&
|
|
value <= MAX_SANDBOX_COMMAND_TIMEOUT_MS
|
|
);
|
|
}
|