fix(plugins): tighten lazy setup typing

This commit is contained in:
Peter Steinberger 2026-03-15 19:47:49 -07:00
parent fdfefcaa11
commit a97e1e1611
No known key found for this signature in database
3 changed files with 15 additions and 9 deletions

View File

@ -7,6 +7,7 @@ import {
buildChannelConfigSchema,
getChatChannelMeta,
inspectSlackAccount,
isSlackInteractiveRepliesEnabled,
listSlackAccountIds,
resolveDefaultSlackAccountId,
resolveSlackAccount,
@ -68,8 +69,7 @@ export const slackSetupPlugin: ChannelPlugin<ResolvedSlackAccount> = {
},
agentPrompt: {
messageToolHints: ({ cfg, accountId }) =>
cfg.channels?.slack?.accounts?.[accountId ?? "default"]?.capabilities?.interactiveReplies ===
true || cfg.channels?.slack?.capabilities?.interactiveReplies === true
isSlackInteractiveRepliesEnabled({ cfg, accountId })
? [
"- Slack interactive replies: use `[[slack_buttons: Label:value, Other:other]]` to add action buttons that route clicks back as Slack interaction system events.",
"- Slack selects: use `[[slack_select: Placeholder | Label:value, Other:other]]` to add a static select menu that routes the chosen value back as a Slack interaction system event.",

View File

@ -280,7 +280,7 @@ async function maybeConfigureDmPolicies(params: {
resolveAdapter?: (channel: ChannelChoice) => ChannelOnboardingAdapter | undefined;
}): Promise<OpenClawConfig> {
const { selection, prompter, accountIdsByChannel } = params;
const resolve = params.resolveAdapter;
const resolve = params.resolveAdapter ?? (() => undefined);
const dmPolicies = selection
.map((channel) => resolve(channel)?.dmPolicy)
.filter(Boolean) as ChannelOnboardingDmPolicy[];

View File

@ -51,17 +51,23 @@ export async function loadBundledChannelOnboardingPlugin(
): Promise<ChannelPlugin | undefined> {
switch (channel) {
case "discord":
return (await import("../../../extensions/discord/setup-entry.js")).default.plugin;
return (await import("../../../extensions/discord/setup-entry.js")).default
.plugin as ChannelPlugin;
case "imessage":
return (await import("../../../extensions/imessage/setup-entry.js")).default.plugin;
return (await import("../../../extensions/imessage/setup-entry.js")).default
.plugin as ChannelPlugin;
case "signal":
return (await import("../../../extensions/signal/setup-entry.js")).default.plugin;
return (await import("../../../extensions/signal/setup-entry.js")).default
.plugin as ChannelPlugin;
case "slack":
return (await import("../../../extensions/slack/setup-entry.js")).default.plugin;
return (await import("../../../extensions/slack/setup-entry.js")).default
.plugin as ChannelPlugin;
case "telegram":
return (await import("../../../extensions/telegram/setup-entry.js")).default.plugin;
return (await import("../../../extensions/telegram/setup-entry.js")).default
.plugin as ChannelPlugin;
case "whatsapp":
return (await import("../../../extensions/whatsapp/setup-entry.js")).default.plugin;
return (await import("../../../extensions/whatsapp/setup-entry.js")).default
.plugin as ChannelPlugin;
default:
return undefined;
}