openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
63 lines (62 loc) • 2.25 kB
JavaScript
import { l as resolveFeishuRuntimeAccount, r as listEnabledFeishuAccounts } from "./accounts-BTmGOBDX.js";
import { l as fetchBotIdentityForMonitor } from "./monitor.state-CdxjylIQ.js";
//#region extensions/feishu/src/monitor.ts
let monitorAccountRuntimePromise;
async function loadMonitorAccountRuntime() {
monitorAccountRuntimePromise ??= import("./monitor.account-DC3C4FTC.js");
return await monitorAccountRuntimePromise;
}
async function monitorFeishuProvider(opts = {}) {
const cfg = opts.config;
if (!cfg) throw new Error("Config is required for Feishu monitor");
const log = opts.runtime?.log ?? console.log;
if (opts.accountId) {
const account = resolveFeishuRuntimeAccount({
cfg,
accountId: opts.accountId
}, { requireEventSecrets: true });
if (!account.enabled || !account.configured) throw new Error(`Feishu account "${opts.accountId}" not configured or disabled`);
const { monitorSingleAccount } = await loadMonitorAccountRuntime();
return monitorSingleAccount({
cfg,
account,
channelRuntime: opts.channelRuntime,
runtime: opts.runtime,
abortSignal: opts.abortSignal
});
}
const accounts = listEnabledFeishuAccounts(cfg);
if (accounts.length === 0) throw new Error("No enabled Feishu accounts configured");
log(`feishu: starting ${accounts.length} account(s): ${accounts.map((a) => a.accountId).join(", ")}`);
const { monitorSingleAccount } = await loadMonitorAccountRuntime();
const monitorPromises = [];
for (const account of accounts) {
if (opts.abortSignal?.aborted) {
log("feishu: abort signal received during startup preflight; stopping startup");
break;
}
const { botOpenId, botName } = await fetchBotIdentityForMonitor(account, {
runtime: opts.runtime,
abortSignal: opts.abortSignal
});
if (opts.abortSignal?.aborted) {
log("feishu: abort signal received during startup preflight; stopping startup");
break;
}
monitorPromises.push(monitorSingleAccount({
cfg,
account,
channelRuntime: opts.channelRuntime,
runtime: opts.runtime,
abortSignal: opts.abortSignal,
botOpenIdSource: {
kind: "prefetched",
botOpenId,
botName
}
}));
}
await Promise.all(monitorPromises);
}
//#endregion
export { monitorFeishuProvider };