UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

139 lines (138 loc) 5.99 kB
import { c as isRecord } from "./record-coerce-DItp3I4t.js"; import "./shared-CeAc-MzA.js"; import { t as createGatewayCredentialPlan } from "./credential-planner-DAMjVc9j.js"; //#region src/secrets/runtime-gateway-auth-surfaces.ts /** Stable evaluation order for gateway credential surfaces that may hold SecretRefs. */ const GATEWAY_AUTH_SURFACE_PATHS = [ "gateway.auth.token", "gateway.auth.password", "gateway.remote.token", "gateway.remote.password" ]; function formatAuthMode(mode) { return mode ?? "unset"; } function describeRemoteConfiguredSurface(parts) { const reasons = []; if (parts.remoteMode) reasons.push("gateway.mode is \"remote\""); if (parts.remoteUrlConfigured) reasons.push("gateway.remote.url is configured"); if (parts.tailscaleRemoteExposure) reasons.push("gateway.tailscale.mode is \"serve\" or \"funnel\""); return reasons.join("; "); } function createState(params) { return { path: params.path, active: params.active, reason: params.reason, hasSecretRef: params.hasSecretRef }; } /** Evaluates which gateway credential SecretRefs can affect the effective auth plan. */ function evaluateGatewayAuthSurfaceStates(params) { const gateway = params.config.gateway; if (!isRecord(gateway)) return { "gateway.auth.token": createState({ path: "gateway.auth.token", active: false, reason: "gateway configuration is not set.", hasSecretRef: false }), "gateway.auth.password": createState({ path: "gateway.auth.password", active: false, reason: "gateway configuration is not set.", hasSecretRef: false }), "gateway.remote.token": createState({ path: "gateway.remote.token", active: false, reason: "gateway configuration is not set.", hasSecretRef: false }), "gateway.remote.password": createState({ path: "gateway.remote.password", active: false, reason: "gateway configuration is not set.", hasSecretRef: false }) }; const auth = isRecord(gateway?.auth) ? gateway.auth : void 0; const remote = isRecord(gateway?.remote) ? gateway.remote : void 0; const plan = createGatewayCredentialPlan({ config: params.config, env: params.env, defaults: params.defaults }); const authPasswordReason = (() => { if (!auth) return "gateway.auth is not configured."; if (plan.passwordCanWin) return plan.authMode === "password" ? "gateway.auth.mode is \"password\"." : "no token source can win, so password auth can win."; if (plan.authMode === "token" || plan.authMode === "none" || plan.authMode === "trusted-proxy") return `gateway.auth.mode is "${plan.authMode}".`; if (plan.envToken) return "gateway token env var is configured."; if (plan.localToken.configured) return "gateway.auth.token is configured."; if (plan.remoteToken.configured) return "gateway.remote.token is configured."; return "token auth can win."; })(); const authTokenReason = (() => { if (!auth) return "gateway.auth is not configured."; if (plan.authMode === "token") return "gateway.auth.mode is \"token\"."; if (plan.authMode === "password" || plan.authMode === "none" || plan.authMode === "trusted-proxy") return `gateway.auth.mode is "${plan.authMode}".`; if (plan.envToken) return "gateway token env var is configured."; if (plan.envPassword) return "gateway password env var is configured."; if (plan.localPassword.configured) return "gateway.auth.password is configured."; return "token auth can win (mode is unset and no password source is configured)."; })(); const remoteSurfaceReason = describeRemoteConfiguredSurface({ remoteMode: plan.remoteMode, remoteUrlConfigured: plan.remoteUrlConfigured, tailscaleRemoteExposure: plan.tailscaleRemoteExposure }); const remoteTokenReason = (() => { if (!remote) return "gateway.remote is not configured."; if (plan.remoteConfiguredSurface) return `remote surface is active: ${remoteSurfaceReason}.`; if (plan.remoteTokenFallbackActive) return "local token auth can win and no env/auth token is configured."; if (!plan.localTokenCanWin) return `token auth cannot win with gateway.auth.mode="${formatAuthMode(plan.authMode)}".`; if (plan.envToken) return "gateway token env var is configured."; if (plan.localToken.configured) return "gateway.auth.token is configured."; return "remote token fallback is not active."; })(); const remotePasswordReason = (() => { if (!remote) return "gateway.remote is not configured."; if (plan.remoteConfiguredSurface) return `remote surface is active: ${remoteSurfaceReason}.`; if (plan.remotePasswordFallbackActive) return "password auth can win and no env/auth password is configured."; if (!plan.passwordCanWin) { if (plan.authMode === "token" || plan.authMode === "none" || plan.authMode === "trusted-proxy") return `password auth cannot win with gateway.auth.mode="${plan.authMode}".`; return "a token source can win, so password auth cannot win."; } if (plan.envPassword) return "gateway password env var is configured."; if (plan.localPassword.configured) return "gateway.auth.password is configured."; return "remote password fallback is not active."; })(); return { "gateway.auth.token": createState({ path: "gateway.auth.token", active: plan.localTokenSurfaceActive, reason: authTokenReason, hasSecretRef: plan.localToken.hasSecretRef }), "gateway.auth.password": createState({ path: "gateway.auth.password", active: plan.passwordCanWin, reason: authPasswordReason, hasSecretRef: plan.localPassword.hasSecretRef }), "gateway.remote.token": createState({ path: "gateway.remote.token", active: plan.remoteTokenActive, reason: remoteTokenReason, hasSecretRef: plan.remoteToken.hasSecretRef }), "gateway.remote.password": createState({ path: "gateway.remote.password", active: plan.remotePasswordActive, reason: remotePasswordReason, hasSecretRef: plan.remotePassword.hasSecretRef }) }; } //#endregion export { evaluateGatewayAuthSurfaceStates as n, GATEWAY_AUTH_SURFACE_PATHS as t };