openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
53 lines (52 loc) • 2.52 kB
JavaScript
import { c as isRecord } from "./record-coerce-DItp3I4t.js";
import { h as normalizeSecretInputString, s as coerceSecretRef } from "./types.secrets-kC0nOetj.js";
import { i as registerSecretValueForRedaction } from "./secret-redaction-registry-BOLC6DkF.js";
import { t as findEdgeAuthIssue } from "./gateway-edge-auth-headers-DIemWTJm.js";
import { t as gatewayOriginScope } from "./gateway-origin-scope-D4zHFrov.js";
import { t as materializeSecretInput } from "./resolve-secret-input-string-DRcwYgb7.js";
//#region src/gateway/edge-auth.ts
function normalizeEdgeAuthSecretInput(value, headerName) {
const ref = coerceSecretRef(value);
if (ref) return ref;
const literal = normalizeSecretInputString(value);
if (literal) return literal;
throw new Error(`invalid gateway.remote.edgeAuth header "${headerName}": expected a non-empty SecretInput`);
}
function normalizeEdgeAuthHeadersConfig(value) {
if (value === void 0 || value === null) return;
if (!isRecord(value)) throw new Error("invalid gateway.remote.edgeAuth: expected a header map");
const shapeIssue = findEdgeAuthIssue(value);
if (shapeIssue) throw new Error(shapeIssue.message);
const normalizedEntries = Object.entries(value).map(([headerName, input]) => {
return [headerName, normalizeEdgeAuthSecretInput(input, headerName)];
});
return Object.fromEntries(normalizedEntries);
}
async function resolveEdgeAuthHeaders(params) {
if (!params.value) return;
let protocol;
try {
protocol = new URL(params.targetUrl).protocol;
} catch {
throw new Error("gateway.remote.edgeAuth requires a wss:// connection target");
}
if (protocol !== "wss:") throw new Error("gateway.remote.edgeAuth requires a wss:// connection target");
const resolvedEntries = await Promise.all(Object.entries(params.value).map(async ([headerName, input]) => {
const value = await materializeSecretInput({
config: params.config,
value: input,
env: params.env
});
if (!value) throw new Error(`gateway.remote.edgeAuth header "${headerName}" resolved empty`);
registerSecretValueForRedaction(value);
return [headerName, value];
}));
return Object.freeze(Object.fromEntries(resolvedEntries));
}
function gatewayEdgeAuthValueForTarget(params) {
const remote = params.config.gateway?.remote;
if (!remote?.url || gatewayOriginScope(params.targetUrl) !== gatewayOriginScope(remote.url)) return;
return remote.edgeAuth;
}
//#endregion
export { normalizeEdgeAuthHeadersConfig as n, resolveEdgeAuthHeaders as r, gatewayEdgeAuthValueForTarget as t };