fix(slack): respect top-level requireMention config

The `channels.slack.requireMention` setting was defined in the schema
but never passed to `resolveSlackChannelConfig()`, which always
defaulted to `true`. This meant setting `requireMention: false` at the
top level had no effect—channels still required mentions.

Pass `slackCfg.requireMention` as `defaultRequireMention` to the
resolver and use it as the fallback instead of hardcoded `true`.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jonathan Wilkins
2026-01-13 14:21:23 +00:00
committed by Peter Steinberger
parent 6ffd7111a6
commit 09ce6ff99e
9 changed files with 96 additions and 5 deletions

View File

@@ -70,8 +70,9 @@ export function resolveSlackChannelConfig(params: {
systemPrompt?: string;
}
>;
defaultRequireMention?: boolean;
}): SlackChannelConfigResolved | null {
const { channelId, channelName, channels } = params;
const { channelId, channelName, channels, defaultRequireMention } = params;
const entries = channels ?? {};
const keys = Object.keys(entries);
const normalizedName = channelName ? normalizeSlackSlug(channelName) : "";
@@ -102,11 +103,12 @@ export function resolveSlackChannelConfig(params: {
}
const fallback = entries["*"];
const requireMentionDefault = defaultRequireMention ?? true;
if (keys.length === 0) {
return { allowed: true, requireMention: true };
return { allowed: true, requireMention: requireMentionDefault };
}
if (!matched && !fallback) {
return { allowed: false, requireMention: true };
return { allowed: false, requireMention: requireMentionDefault };
}
const resolved = matched ?? fallback ?? {};
@@ -114,7 +116,8 @@ export function resolveSlackChannelConfig(params: {
firstDefined(resolved.enabled, resolved.allow, fallback?.enabled, fallback?.allow, true) ??
true;
const requireMention =
firstDefined(resolved.requireMention, fallback?.requireMention, true) ?? true;
firstDefined(resolved.requireMention, fallback?.requireMention, requireMentionDefault) ??
requireMentionDefault;
const allowBots = firstDefined(resolved.allowBots, fallback?.allowBots);
const users = firstDefined(resolved.users, fallback?.users);
const skills = firstDefined(resolved.skills, fallback?.skills);