UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

103 lines (102 loc) 3.47 kB
import { i as formatErrorMessage } from "./errors-BXgSefBE.js"; import { c as isRecord } from "./utils-CCC-BEJH.js"; import { i as resolveChannelDefaultAccountId } from "./helpers-BLGguEiN.js"; import { t as inspectReadOnlyChannelAccount } from "./read-only-account-inspect-BVDfcwnb.js"; //#region src/commands/channel-account-context.ts function getBooleanField(value, key) { const record = isRecord(value) ? value : null; if (!record) return; return typeof record[key] === "boolean" ? record[key] : void 0; } function formatContextDiagnostic(params) { return `${params.commandName ? `${params.commandName}: ` : ""}channels.${params.pluginId}.accounts.${params.accountId}: ${params.message}`; } /** Resolve default channel account state for commands that need enabled/configured checks. */ async function resolveDefaultChannelAccountContext(plugin, cfg, options) { const mode = options?.mode ?? "strict"; const accountIds = plugin.config.listAccountIds(cfg); const defaultAccountId = resolveChannelDefaultAccountId({ plugin, cfg, accountIds }); if (mode === "strict") { const account = plugin.config.resolveAccount(cfg, defaultAccountId); return { accountIds, defaultAccountId, account, enabled: plugin.config.isEnabled ? plugin.config.isEnabled(account, cfg) : true, configured: plugin.config.isConfigured ? await plugin.config.isConfigured(account, cfg) : true, diagnostics: [], degraded: false }; } const diagnostics = []; let degraded = false; let account = plugin.config.inspectAccount?.(cfg, defaultAccountId) ?? await inspectReadOnlyChannelAccount({ channelId: plugin.id, cfg, accountId: defaultAccountId }); if (!account) try { account = plugin.config.resolveAccount(cfg, defaultAccountId); } catch (error) { degraded = true; diagnostics.push(formatContextDiagnostic({ commandName: options?.commandName, pluginId: plugin.id, accountId: defaultAccountId, message: `failed to resolve account (${formatErrorMessage(error)}); skipping read-only checks.` })); return { accountIds, defaultAccountId, account: {}, enabled: false, configured: false, diagnostics, degraded }; } else degraded = true; const inspectEnabled = getBooleanField(account, "enabled"); let enabled = inspectEnabled ?? true; if (inspectEnabled === void 0 && plugin.config.isEnabled) try { enabled = plugin.config.isEnabled(account, cfg); } catch (error) { degraded = true; enabled = false; diagnostics.push(formatContextDiagnostic({ commandName: options?.commandName, pluginId: plugin.id, accountId: defaultAccountId, message: `failed to evaluate enabled state (${formatErrorMessage(error)}); treating as disabled.` })); } const inspectConfigured = getBooleanField(account, "configured"); let configured = inspectConfigured ?? true; if (inspectConfigured === void 0 && plugin.config.isConfigured) try { configured = await plugin.config.isConfigured(account, cfg); } catch (error) { degraded = true; configured = false; diagnostics.push(formatContextDiagnostic({ commandName: options?.commandName, pluginId: plugin.id, accountId: defaultAccountId, message: `failed to evaluate configured state (${formatErrorMessage(error)}); treating as unconfigured.` })); } return { accountIds, defaultAccountId, account, enabled, configured, diagnostics, degraded }; } //#endregion export { resolveDefaultChannelAccountContext as t };