openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
38 lines (37 loc) • 1.93 kB
JavaScript
import { t as formatErrorMessage } from "./errors-Db3Ymjlb.js";
import { d as isTrustedSecretSurfaceUnavailableError, t as SECRET_DEGRADATION_RETRY_HINT } from "./runtime-degraded-state-D5EZZ925.js";
//#region src/agents/sandbox/provisioning-error.ts
const SANDBOX_PROVISIONING_ERROR_CODE = "sandbox_provisioning";
/** Model-independent sandbox setup failure that must not consume model fallbacks. */
var SandboxProvisioningError = class extends Error {
constructor(message, params) {
super(message, { cause: params.cause });
this.code = SANDBOX_PROVISIONING_ERROR_CODE;
this.name = "SandboxProvisioningError";
this.backendId = params.backendId;
}
};
/** Preserve an existing typed failure or attach sandbox ownership to a backend setup error. */
function toSandboxProvisioningError(error, backendId) {
if (error instanceof SandboxProvisioningError) return error;
const detail = formatErrorMessage(error) || `Sandbox backend "${backendId}" provisioning failed.`;
return new SandboxProvisioningError(isTrustedSecretSurfaceUnavailableError(error) ? `${detail} Fix the referenced secret, run \`${SECRET_DEGRADATION_RETRY_HINT}\`, then retry.` : detail, {
backendId,
cause: error
});
}
/** Recognize the provisioning marker through ordinary error-wrapper cause chains. */
function isSandboxProvisioningError(error, seen = /* @__PURE__ */ new Set()) {
if (error instanceof SandboxProvisioningError) return true;
if (!error || typeof error !== "object" || seen.has(error)) return false;
seen.add(error);
const candidate = error;
if (candidate.name === "SandboxProvisioningError" && candidate.code === SANDBOX_PROVISIONING_ERROR_CODE) return true;
return [
candidate.cause,
candidate.error,
...Array.isArray(candidate.errors) ? candidate.errors : []
].some((nested) => isSandboxProvisioningError(nested, seen));
}
//#endregion
export { toSandboxProvisioningError as n, isSandboxProvisioningError as t };