openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
72 lines (71 loc) • 3.63 kB
JavaScript
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js";
import { a as projectSafeChannelAccountSnapshotFields, o as redactChannelAccountSnapshotBaseUrl } from "./account-snapshot-fields-a22gRqLh.js";
import { a as resolveUnavailableChannelAccountSnapshot, i as resolveChannelAccountState, r as resolveChannelAccountLinked, t as applyChannelAccountState } from "./account-state-CPvd6WGN.js";
import { t as buildChannelAccountSnapshotFromInspection } from "./account-summary-oKRoWiin.js";
import { t as inspectChannelAccount } from "./account-inspection-DzzBSljF.js";
//#region src/channels/plugins/status.ts
/**
* Channel status snapshot builders.
*
* Combines plugin status hooks, account inspection, and safe account field projection.
*/
async function buildChannelAccountSnapshotFromAccount(params) {
let snapshot;
if (params.plugin.status?.buildAccountSnapshot) snapshot = await params.plugin.status.buildAccountSnapshot({
account: params.account,
cfg: params.cfg,
runtime: params.runtime,
probe: params.probe,
audit: params.audit
});
else snapshot = {
accountId: params.accountId,
...projectSafeChannelAccountSnapshotFields(params.account),
...projectSafeChannelAccountSnapshotFields(params.runtime)
};
const described = params.plugin.config.describeAccount?.(params.account, params.cfg);
const enabled = params.plugin.config.isEnabled ? params.plugin.config.isEnabled(params.account, params.cfg) : described?.enabled ?? snapshot.enabled ?? params.enabledFallback ?? true;
const configured = described?.configured ?? (params.plugin.config.isConfigured ? await params.plugin.config.isConfigured(params.account, params.cfg) : snapshot.configured ?? params.configuredFallback ?? true);
const linkState = configured && params.plugin.config.isLinked ? await params.plugin.config.isLinked(params.account, params.cfg) : void 0;
const state = resolveChannelAccountState({
enabled,
configured,
linked: resolveChannelAccountLinked(linkState, described?.linked ?? snapshot.linked),
runtime: snapshot,
disabledReason: params.plugin.config.disabledReason?.(params.account, params.cfg),
unconfiguredReason: params.plugin.config.unconfiguredReason?.(params.account, params.cfg),
unlinkedReason: params.plugin.config.unlinkedReason?.(params.account, params.cfg)
});
const projectedSnapshot = { ...snapshot };
applyChannelAccountState(projectedSnapshot, state);
return redactChannelAccountSnapshotBaseUrl({
...projectedSnapshot,
enabled,
accountId: normalizeOptionalString(snapshot.accountId) ? snapshot.accountId : params.accountId,
...params.probe !== void 0 && snapshot.probe === void 0 ? { probe: params.probe } : {}
});
}
async function buildReadOnlySourceChannelAccountSnapshot(params) {
const inspectedAccount = await inspectChannelAccount(params);
if (!inspectedAccount) return null;
return buildChannelAccountSnapshotFromInspection({
...params,
account: inspectedAccount
});
}
async function resolveChannelAccountSnapshot(params) {
const unavailable = resolveUnavailableChannelAccountSnapshot(params.cfg, {
channelId: params.plugin.id,
accountId: params.accountId,
runtime: params.runtime
});
if (unavailable) return unavailable;
const inspected = await buildReadOnlySourceChannelAccountSnapshot(params);
if (inspected) return inspected;
return await buildChannelAccountSnapshotFromAccount({
...params,
account: params.plugin.config.resolveAccount(params.cfg, params.accountId)
});
}
//#endregion
export { buildReadOnlySourceChannelAccountSnapshot as n, resolveChannelAccountSnapshot as r, buildChannelAccountSnapshotFromAccount as t };