UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

50 lines (49 loc) • 2.6 kB
import { i as extractErrorCode } from "./error-coercion-1P2One0X.mjs"; import { n as formatConfigIssueLines } from "./issue-format-IKggtHBm.mjs"; //#region src/config/io.invalid-config.ts /** * Shared invalid-config formatting, logging, and error helpers for config reads and mutations. * All terminal-facing text is sanitized here so callers can reuse the same failure surface. */ /** Read failures do not establish that authored configuration needs repair. */ function isConfigReadFailure(snapshot) { return Boolean(snapshot.readError || snapshot.issues.some((issue) => issue.errorCode === "CONFIG_READ_FAILED")); } function configFailureHeading(snapshot) { return isConfigReadFailure(snapshot) ? "OpenClaw config could not be read" : "OpenClaw config is invalid"; } /** Formats validation issues as terminal-safe bullet lines for config load failures. */ function formatInvalidConfigDetails(issues) { return formatConfigIssueLines(issues, "-", { normalizeRoot: true }).join("\n"); } /** Creates a tagged error without logging; throwInvalidConfig owns diagnostic emission. */ function createInvalidConfigError(configPath, details, options = {}) { return Object.assign(/* @__PURE__ */ new Error(`Invalid config at ${configPath}:\n${details}`), { name: "InvalidConfigError", code: "INVALID_CONFIG", details, recovery: options.recovery ?? "doctor", diagnosticEmitted: false }); } function isInvalidConfigError(err) { return extractErrorCode(err) === "INVALID_CONFIG"; } function isDoctorRecoverableInvalidConfigError(err) { return isInvalidConfigError(err) && err.recovery !== "manual"; } /** An unavailable read cannot establish invalid authored settings or authorize Doctor repair. */ function createConfigReadError(configPath, details) { return Object.assign(/* @__PURE__ */ new Error(`Config could not be read at ${configPath}:\n${details}`), { code: "CONFIG_READ_FAILED" }); } /** Logs and throws the standard invalid-config error for a validation result. */ function throwInvalidConfig(params) { const details = formatInvalidConfigDetails(params.issues); const error = createInvalidConfigError(params.configPath, details); if (!params.loggedConfigPaths.peek(error.message)) params.logger.error(error.message); params.loggedConfigPaths.check(error.message); error.diagnosticEmitted = true; throw error; } //#endregion export { isConfigReadFailure as a, throwInvalidConfig as c, formatInvalidConfigDetails as i, createConfigReadError as n, isDoctorRecoverableInvalidConfigError as o, createInvalidConfigError as r, isInvalidConfigError as s, configFailureHeading as t };