openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
50 lines (49 loc) • 2.02 kB
JavaScript
import { _ as uniqueStrings } from "./string-normalization-WNUDCpXX.js";
import { i as loadPluginMetadataSnapshot } from "./plugin-metadata-snapshot-Ctk9Oarq.js";
//#region src/secrets/channel-env-vars.ts
/** Discovers plugin-declared environment variable names for channel credential setup. */
function appendUniqueEnvVarCandidates(target, channelId, keys) {
const normalizedChannelId = channelId.trim();
if (!normalizedChannelId || keys.length === 0) return;
const bucket = target[normalizedChannelId] ??= [];
const seen = new Set(bucket);
for (const key of keys) {
const normalizedKey = key.trim();
if (!normalizedKey || seen.has(normalizedKey)) continue;
seen.add(normalizedKey);
bucket.push(normalizedKey);
}
}
/**
* Resolves plugin-declared channel environment variable names keyed by channel id.
* The result is deterministic so env-shell docs and prompt snapshots stay stable.
*/
function resolveChannelEnvVars(params) {
const snapshot = loadPluginMetadataSnapshot({
config: params?.config ?? {},
workspaceDir: params?.workspaceDir,
env: params?.env ?? process.env
});
const candidates = {};
for (const plugin of snapshot.plugins) {
if (!plugin.channelEnvVars) continue;
for (const [channelId, keys] of Object.entries(plugin.channelEnvVars).toSorted(([left], [right]) => left.localeCompare(right))) appendUniqueEnvVarCandidates(candidates, channelId, keys);
}
return candidates;
}
/**
* Returns the declared env var names for one channel id.
*/
function getChannelEnvVars(channelId, params) {
const channelEnvVars = resolveChannelEnvVars(params);
const envVars = Object.hasOwn(channelEnvVars, channelId) ? channelEnvVars[channelId] : void 0;
return Array.isArray(envVars) ? [...envVars] : [];
}
/**
* Lists every known channel env var name across installed plugin metadata.
*/
function listKnownChannelEnvVarNames(params) {
return uniqueStrings(Object.values(resolveChannelEnvVars(params)).flat());
}
//#endregion
export { listKnownChannelEnvVarNames as n, getChannelEnvVars as t };