openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
101 lines (100 loc) • 4.54 kB
JavaScript
import { s as hasConfiguredSecretInput } from "./types.secrets-_0JOMGE5.js";
import { n as normalizeAccountId } from "./account-id-Df9e41E6.js";
import { n as resolveNormalizedAccountEntry } from "./account-lookup-DL1YTqjF.js";
import { c as resolveMergedAccountConfig } from "./account-helpers-pcH3lGFY.js";
import { t as listConfiguredAccountIds } from "./account-configured-ids-C2qgDow6.js";
import "./secret-input-runtime-BgOxdITP.js";
//#region extensions/matrix/src/matrix/account-config.ts
function resolveMatrixBaseConfig(cfg) {
return cfg.channels?.matrix ?? {};
}
function resolveMatrixAccountsMap(cfg) {
const accounts = resolveMatrixBaseConfig(cfg).accounts;
if (!accounts || typeof accounts !== "object") return {};
return accounts;
}
function selectInheritedMatrixRoomEntries(params) {
const entries = params.entries;
if (!entries) return;
const selected = Object.fromEntries(Object.entries(entries).filter(([, value]) => {
const scopedAccount = typeof value?.account === "string" ? normalizeAccountId(value.account) : void 0;
return scopedAccount === void 0 || scopedAccount === params.accountId;
}));
return Object.keys(selected).length > 0 ? selected : void 0;
}
function mergeMatrixRoomEntries(inherited, accountEntries, hasAccountOverride) {
if (!inherited && !accountEntries) return;
if (hasAccountOverride && Object.keys(accountEntries ?? {}).length === 0) return;
const merged = { ...inherited };
for (const [key, value] of Object.entries(accountEntries ?? {})) {
const inheritedValue = merged[key];
merged[key] = inheritedValue && value ? {
...inheritedValue,
...value
} : value ?? inheritedValue;
}
return Object.keys(merged).length > 0 ? merged : void 0;
}
function listNormalizedMatrixAccountIds(cfg) {
return listConfiguredAccountIds({
accounts: resolveMatrixAccountsMap(cfg),
normalizeAccountId
});
}
function findMatrixAccountConfig(cfg, accountId) {
return resolveNormalizedAccountEntry(resolveMatrixAccountsMap(cfg), accountId, normalizeAccountId);
}
function hasExplicitMatrixAccountConfig(cfg, accountId) {
const normalized = normalizeAccountId(accountId);
if (findMatrixAccountConfig(cfg, normalized)) return true;
if (normalized !== "default") return false;
const matrix = resolveMatrixBaseConfig(cfg);
return typeof matrix.enabled === "boolean" || typeof matrix.name === "string" || typeof matrix.homeserver === "string" || typeof matrix.userId === "string" || hasConfiguredSecretInput(matrix.accessToken) || hasConfiguredSecretInput(matrix.password) || typeof matrix.deviceId === "string" || typeof matrix.deviceName === "string" || typeof matrix.avatarUrl === "string";
}
function resolveMatrixAccountConfig(params) {
const accountId = normalizeAccountId(params.accountId);
const base = resolveMatrixBaseConfig(params.cfg);
const merged = resolveMergedAccountConfig({
channelConfig: base,
accounts: params.cfg.channels?.matrix?.accounts,
accountId,
normalizeAccountId,
nestedObjectKeys: [
"dm",
"actions",
"execApprovals",
"botLoopProtection"
]
});
const accountConfig = findMatrixAccountConfig(params.cfg, accountId);
const groups = mergeMatrixRoomEntries(selectInheritedMatrixRoomEntries({
entries: base.groups,
accountId
}), accountConfig?.groups, Boolean(accountConfig && Object.hasOwn(accountConfig, "groups")));
const rooms = mergeMatrixRoomEntries(selectInheritedMatrixRoomEntries({
entries: base.rooms,
accountId
}), accountConfig?.rooms, Boolean(accountConfig && Object.hasOwn(accountConfig, "rooms")));
const { groups: _ignoredGroups, rooms: _ignoredRooms, ...rest } = merged;
return {
...rest,
...groups ? { groups } : {},
...rooms ? { rooms } : {}
};
}
function resolveMatrixAccountAllowlistConfig(params) {
const accountId = normalizeAccountId(params.accountId);
const base = resolveMatrixBaseConfig(params.cfg);
const accountConfig = findMatrixAccountConfig(params.cfg, accountId);
const accountDm = accountConfig?.dm;
let dmAllowFrom = base.dm?.allowFrom;
if (accountDm && Object.hasOwn(accountDm, "allowFrom")) dmAllowFrom = accountDm.allowFrom;
let groupAllowFrom = base.groupAllowFrom;
if (accountConfig && Object.hasOwn(accountConfig, "groupAllowFrom")) groupAllowFrom = accountConfig.groupAllowFrom;
return {
dmAllowFrom,
groupAllowFrom
};
}
//#endregion
export { resolveMatrixAccountConfig as a, resolveMatrixAccountAllowlistConfig as i, hasExplicitMatrixAccountConfig as n, resolveMatrixBaseConfig as o, listNormalizedMatrixAccountIds as r, findMatrixAccountConfig as t };