openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
30 lines (29 loc) • 1.8 kB
JavaScript
import { t as asNonArrayRecord } from "./record-coerce-TIsquoVR.mjs";
import { r as addSafeTimeoutDelayGraceMs } from "./timeouts-Th9Axx4o.mjs";
import { s as normalizeExecTarget } from "./exec-approvals-core-GflUelcW.mjs";
//#region src/agents/exec-tool-timeout.ts
function resolveExecDefaultTimeoutSec(timeoutSec) {
return timeoutSec && timeoutSec > 0 ? timeoutSec : 1800;
}
function resolveNodeExecTimeouts(timeoutSec, defaultTimeoutSec) {
const runTimeoutSec = typeof timeoutSec === "number" && Number.isFinite(timeoutSec) ? timeoutSec : defaultTimeoutSec;
const baseTimeoutSec = Number.isFinite(runTimeoutSec) && runTimeoutSec > 0 ? runTimeoutSec : defaultTimeoutSec;
const invokeDeadlineMs = !Number.isFinite(baseTimeoutSec) || baseTimeoutSec <= 0 ? 1e4 : Math.max(1e4, addSafeTimeoutDelayGraceMs(baseTimeoutSec * 1e3, 5e3));
return {
runTimeoutMs: Number.isFinite(runTimeoutSec) && runTimeoutSec > 0 ? addSafeTimeoutDelayGraceMs(runTimeoutSec * 1e3, 0, { minMs: 0 }) : 0,
invokeDeadlineMs,
invokeWaitMs: addSafeTimeoutDelayGraceMs(invokeDeadlineMs, 5e3)
};
}
function createExecToolExecutionTimeoutResolver(defaults) {
const defaultTimeoutSec = resolveExecDefaultTimeoutSec(defaults?.timeoutSec);
const defaultHost = defaults?.host;
return (args) => {
const params = asNonArrayRecord(args);
const requestedHost = normalizeExecTarget(typeof params.host === "string" ? params.host : void 0);
if ((requestedHost && requestedHost !== "auto" ? requestedHost : defaultHost) !== "node") return;
return resolveNodeExecTimeouts(typeof params.timeoutSeconds === "number" ? params.timeoutSeconds : void 0, defaultTimeoutSec).invokeWaitMs;
};
}
//#endregion
export { resolveExecDefaultTimeoutSec as n, resolveNodeExecTimeouts as r, createExecToolExecutionTimeoutResolver as t };