UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

82 lines (81 loc) 4.28 kB
import { s as isRecord } from "./runtime-doctor-migrations-DJDQaWC5.js"; import { h as normalizeOptionalString } from "./channel-doctor-helpers-CKvCIMDR.js"; import "./src-DQHRnEuc.js"; import "./fs-safe-defaults-BbLMaB4h.js"; import "node:path"; import "node:fs"; import "@openclaw/fs-safe/path"; import { resolvePathViaExistingAncestorSync } from "@openclaw/fs-safe/advanced"; //#region packages/normalization-core/src/expect.ts /** Returns the value or throws with the named context; use for genuine invariants only. */ function expectDefined(value, context) { if (value === null || value === void 0) throw new Error("expected " + context + " to be defined"); return value; } //#endregion //#region src/config/types.secrets.ts /** Provider alias used when a SecretRef omits a source-specific provider. */ const DEFAULT_SECRET_PROVIDER_ALIAS = "default"; /** Strict env-var id shape accepted for env-backed SecretRefs. */ const ENV_SECRET_REF_ID_RE = /^[A-Z][A-Z0-9_]{0,127}$/; const ENV_SECRET_TEMPLATE_RE = /^\$\{([A-Z][A-Z0-9_]{0,127})\}$/; const ENV_SECRET_SHORTHAND_RE = /^\$([A-Z][A-Z0-9_]{0,127})$/; /** Narrow a value to the canonical SecretRef object shape. */ function isSecretRef(value) { if (!isRecord(value)) return false; if (Object.keys(value).length !== 3) return false; return (value.source === "env" || value.source === "file" || value.source === "exec" || value.source === "store") && typeof value.provider === "string" && value.provider.trim().length > 0 && typeof value.id === "string" && value.id.trim().length > 0; } function isLegacySecretRefWithoutProvider(value) { if (!isRecord(value)) return false; return (value.source === "env" || value.source === "file" || value.source === "exec" || value.source === "store") && typeof value.id === "string" && value.id.trim().length > 0 && value.provider === void 0; } /** Parse `$NAME` and `${NAME}` env-secret shorthand strings into env SecretRefs. */ function parseEnvTemplateSecretRef(value, provider = DEFAULT_SECRET_PROVIDER_ALIAS) { if (typeof value !== "string") return null; const trimmed = value.trim(); const match = ENV_SECRET_TEMPLATE_RE.exec(trimmed) ?? ENV_SECRET_SHORTHAND_RE.exec(trimmed); if (!match) return null; return { source: "env", provider: provider.trim() || "default", id: expectDefined(match[1], "types.secrets regex capture 1") }; } /** Coerce canonical and env-shorthand secret inputs into a SecretRef. * Retired string markers are parsed only by doctor migration above. */ function coerceSecretRef(value, defaults) { if (isSecretRef(value)) return value; if (isLegacySecretRefWithoutProvider(value)) { const provider = defaults?.[value.source] ?? "default"; return { source: value.source, provider, id: value.id }; } const envTemplate = parseEnvTemplateSecretRef(value, defaults?.env); if (envTemplate) return envTemplate; return null; } /** Return whether a value contains either a literal secret string or resolvable SecretRef shape. */ function hasConfiguredSecretInput(value, defaults) { if (normalizeSecretInputString(value)) return true; return coerceSecretRef(value, defaults) !== null; } /** Trim a literal secret input string while leaving non-string inputs unresolved. */ function normalizeSecretInputString(value) { return normalizeOptionalString(value); } //#endregion //#region packages/terminal-core/src/ansi-sequences.ts const ANSI_OSC_INTRODUCER_PATTERN = "(?:\\x1b\\]|\\x9d)"; const ANSI_STRING_TERMINATOR_PATTERN = "(?:\\x1b\\\\|\\x07|\\x9c)"; const ANSI_OSC_PATTERN = `${ANSI_OSC_INTRODUCER_PATTERN}[^\\x07\\x1b\\x9c]*${ANSI_STRING_TERMINATOR_PATTERN}`; const ANSI_COMPAT_CONTROL_SEQUENCE_PATTERN = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]"; new RegExp(ANSI_OSC_PATTERN, "y"); new RegExp(`${`${ANSI_OSC_INTRODUCER_PATTERN}[\\s\\S]*?${ANSI_STRING_TERMINATOR_PATTERN}`}|${ANSI_COMPAT_CONTROL_SEQUENCE_PATTERN}`, "y"); new Intl.Segmenter(void 0, { granularity: "grapheme" }); new RegExp(`[${String.fromCharCode(0)}-${String.fromCharCode(31)}${String.fromCharCode(127)}-${String.fromCharCode(159)}]`, "g"); //#endregion export { expectDefined as a, resolvePathViaExistingAncestorSync as i, hasConfiguredSecretInput as n, parseEnvTemplateSecretRef as r, ENV_SECRET_REF_ID_RE as t };