openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
46 lines (45 loc) • 1.67 kB
JavaScript
import { r as asNullableRecord } from "./record-coerce-DItp3I4t.js";
import { i as resolveChannelDefaultAccountId } from "./helpers-VcK_WJ24.js";
import { t as listReadOnlyChannelPluginsForConfig } from "./read-only-0zbnWxaR.js";
import { n as resolveInspectedChannelAccount } from "./account-inspection-DzzBSljF.js";
//#region src/status/link-channel.ts
/** Returns link status for the first configured read-only channel that exposes linked state. */
async function resolveLinkChannelContext(cfg, options = {}) {
const sourceConfig = options.sourceConfig ?? cfg;
for (const plugin of listReadOnlyChannelPluginsForConfig(cfg, {
activationSourceConfig: sourceConfig,
includeSetupFallbackPlugins: false
})) {
const defaultAccountId = resolveChannelDefaultAccountId({
plugin,
cfg
});
const context = await resolveInspectedChannelAccount({
plugin,
cfg,
sourceConfig,
accountId: defaultAccountId
});
if (context.kind === "unavailable") continue;
const { account, snapshot } = context;
const summary = context.kind === "resolved" && plugin.status?.buildChannelSummary ? await plugin.status.buildChannelSummary({
account,
cfg,
defaultAccountId,
snapshot
}) : snapshot;
const summaryRecord = asNullableRecord(summary);
const linked = summaryRecord && typeof summaryRecord.linked === "boolean" ? summaryRecord.linked : null;
if (linked === null) continue;
return {
linked,
authAgeMs: summaryRecord && typeof summaryRecord.authAgeMs === "number" ? summaryRecord.authAgeMs : null,
account,
accountId: defaultAccountId,
plugin
};
}
return null;
}
//#endregion
export { resolveLinkChannelContext };