openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
133 lines (132 loc) • 5.6 kB
JavaScript
import { c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js";
import { s as hasConfiguredSecretInput } from "./types.secrets-_0JOMGE5.js";
import { n as normalizeAccountId, t as DEFAULT_ACCOUNT_ID } from "./account-id-Df9e41E6.js";
import "./string-coerce-runtime-CEGJWkQ_.js";
import "./secret-input-runtime-BgOxdITP.js";
import { a as resolveMatrixDefaultOrOnlyAccountId, o as resolveMatrixAccountStringValues, r as resolveConfiguredMatrixAccountIds } from "./account-selection-CqvkLWBU.js";
import { a as resolveMatrixAccountConfig, o as resolveMatrixBaseConfig, t as findMatrixAccountConfig } from "./account-config-C2f9UtTn.js";
import { i as resolveScopedMatrixEnvConfig, n as resolveGlobalMatrixEnvConfig } from "./env-auth-B_5QIHM9.js";
import { n as credentialsMatchConfig, r as loadMatrixCredentials } from "./credentials-read-CqEv1dvv.js";
//#region extensions/matrix/src/matrix/accounts.ts
function clean(value) {
return normalizeOptionalString(value) ?? "";
}
function resolveMatrixAccountAuthView(params) {
const normalizedAccountId = normalizeAccountId(params.accountId);
const matrix = resolveMatrixBaseConfig(params.cfg);
const account = findMatrixAccountConfig(params.cfg, normalizedAccountId) ?? {};
const resolvedStrings = resolveMatrixAccountStringValues({
accountId: normalizedAccountId,
account: {
homeserver: clean(account.homeserver),
userId: clean(account.userId),
accessToken: typeof account.accessToken === "string" ? clean(account.accessToken) : "",
password: typeof account.password === "string" ? clean(account.password) : "",
deviceId: clean(account.deviceId),
deviceName: clean(account.deviceName)
},
scopedEnv: resolveScopedMatrixEnvConfig(normalizedAccountId, params.env),
channel: {
homeserver: clean(matrix.homeserver),
userId: clean(matrix.userId),
accessToken: typeof matrix.accessToken === "string" ? clean(matrix.accessToken) : "",
password: typeof matrix.password === "string" ? clean(matrix.password) : "",
deviceId: clean(matrix.deviceId),
deviceName: clean(matrix.deviceName)
},
globalEnv: resolveGlobalMatrixEnvConfig(params.env)
});
return {
homeserver: resolvedStrings.homeserver,
userId: resolvedStrings.userId,
accessToken: resolvedStrings.accessToken || void 0,
password: resolvedStrings.password || void 0
};
}
function resolveMatrixAccountUserId(params) {
const env = params.env ?? process.env;
const authView = resolveMatrixAccountAuthView({
cfg: params.cfg,
accountId: params.accountId,
env
});
const configuredUserId = authView.userId.trim();
if (configuredUserId) return configuredUserId;
const stored = loadMatrixCredentials(env, params.accountId);
if (!stored) return null;
if (authView.homeserver && stored.homeserver !== authView.homeserver) return null;
if (authView.accessToken && stored.accessToken !== authView.accessToken) return null;
return stored.userId.trim() || null;
}
function listMatrixAccountIds(cfg) {
const ids = resolveConfiguredMatrixAccountIds(cfg, process.env);
return ids.length > 0 ? ids : [DEFAULT_ACCOUNT_ID];
}
function resolveDefaultMatrixAccountId(cfg) {
return normalizeAccountId(resolveMatrixDefaultOrOnlyAccountId(cfg));
}
function resolveConfiguredMatrixBotUserIds(params) {
const env = params.env ?? process.env;
const currentAccountId = normalizeAccountId(params.accountId);
const accountIds = new Set(resolveConfiguredMatrixAccountIds(params.cfg, env));
if (resolveMatrixAccount({
cfg: params.cfg,
accountId: "default",
env
}).configured) accountIds.add(DEFAULT_ACCOUNT_ID);
const ids = /* @__PURE__ */ new Set();
for (const accountId of accountIds) {
if (normalizeAccountId(accountId) === currentAccountId) continue;
if (!resolveMatrixAccount({
cfg: params.cfg,
accountId,
env
}).configured) continue;
const userId = resolveMatrixAccountUserId({
cfg: params.cfg,
accountId,
env
});
if (userId) ids.add(userId);
}
return ids;
}
function resolveMatrixAccount(params) {
const env = params.env ?? process.env;
const accountId = normalizeAccountId(params.accountId ?? resolveDefaultMatrixAccountId(params.cfg));
const matrixBase = resolveMatrixBaseConfig(params.cfg);
const base = resolveMatrixAccountConfig({
cfg: params.cfg,
accountId,
env
});
const explicitAuthConfig = accountId === "default" ? base : findMatrixAccountConfig(params.cfg, accountId) ?? {};
const enabled = base.enabled !== false && matrixBase.enabled !== false;
const authView = resolveMatrixAccountAuthView({
cfg: params.cfg,
accountId,
env
});
const hasHomeserver = Boolean(authView.homeserver);
const hasUserId = Boolean(authView.userId);
const hasAccessToken = Boolean(authView.accessToken) || hasConfiguredSecretInput(explicitAuthConfig.accessToken);
const hasPassword = Boolean(authView.password);
const hasPasswordAuth = hasUserId && (hasPassword || hasConfiguredSecretInput(explicitAuthConfig.password));
const stored = loadMatrixCredentials(env, accountId);
const hasStored = stored && authView.homeserver ? credentialsMatchConfig(stored, {
homeserver: authView.homeserver,
userId: authView.userId || ""
}) : false;
const configured = hasHomeserver && (hasAccessToken || hasPasswordAuth || hasStored);
return {
accountId,
enabled,
name: normalizeOptionalString(base.name),
configured,
homeserver: authView.homeserver || void 0,
userId: authView.userId || void 0,
config: base
};
}
//#endregion
export { resolveMatrixAccount as i, resolveConfiguredMatrixBotUserIds as n, resolveDefaultMatrixAccountId as r, listMatrixAccountIds as t };