evOo-local/packages/core/src/sandbox-command.ts
cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
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.
2026-09-20 17:15:16 +02:00

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
);
}