From ccfdfec43f1dafb73473d36de516a4f19e09998f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 6 Apr 2026 20:26:54 +0100 Subject: [PATCH] refactor: dedupe doctor account streaming matchers --- extensions/discord/src/doctor-contract.ts | 6 +----- extensions/slack/src/doctor-contract.ts | 6 +----- extensions/telegram/src/doctor-contract.ts | 6 +----- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/extensions/discord/src/doctor-contract.ts b/extensions/discord/src/doctor-contract.ts index e63ea44eaf7..f31bca06e68 100644 --- a/extensions/discord/src/doctor-contract.ts +++ b/extensions/discord/src/doctor-contract.ts @@ -16,10 +16,6 @@ function hasLegacyDiscordStreamingAliases(value: unknown): boolean { return hasLegacyStreamingAliases(value, { includePreviewChunk: true }); } -function hasLegacyDiscordAccountStreamingAliases(value: unknown): boolean { - return hasLegacyAccountStreamingAliases(value, hasLegacyDiscordStreamingAliases); -} - const LEGACY_TTS_PROVIDER_KEYS = ["openai", "elevenlabs", "microsoft", "edge"] as const; function hasLegacyTtsProviderKeys(value: unknown): boolean { @@ -128,7 +124,7 @@ export const legacyConfigRules: ChannelDoctorLegacyConfigRule[] = [ path: ["channels", "discord", "accounts"], message: "channels.discord.accounts..streamMode, streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.discord.accounts..streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.", - match: hasLegacyDiscordAccountStreamingAliases, + match: (value) => hasLegacyAccountStreamingAliases(value, hasLegacyDiscordStreamingAliases), }, { path: ["channels", "discord", "voice", "tts"], diff --git a/extensions/slack/src/doctor-contract.ts b/extensions/slack/src/doctor-contract.ts index 30c8d8d5bb1..559ae3080ca 100644 --- a/extensions/slack/src/doctor-contract.ts +++ b/extensions/slack/src/doctor-contract.ts @@ -16,10 +16,6 @@ function hasLegacySlackStreamingAliases(value: unknown): boolean { return hasLegacyStreamingAliases(value, { includeNativeTransport: true }); } -function hasLegacySlackAccountStreamingAliases(value: unknown): boolean { - return hasLegacyAccountStreamingAliases(value, hasLegacySlackStreamingAliases); -} - export const legacyConfigRules: ChannelDoctorLegacyConfigRule[] = [ { path: ["channels", "slack"], @@ -31,7 +27,7 @@ export const legacyConfigRules: ChannelDoctorLegacyConfigRule[] = [ path: ["channels", "slack", "accounts"], message: "channels.slack.accounts..streamMode, streaming (scalar), chunkMode, blockStreaming, blockStreamingCoalesce, and nativeStreaming are legacy; use channels.slack.accounts..streaming.{mode,chunkMode,block.enabled,block.coalesce,nativeTransport}.", - match: hasLegacySlackAccountStreamingAliases, + match: (value) => hasLegacyAccountStreamingAliases(value, hasLegacySlackStreamingAliases), }, ]; diff --git a/extensions/telegram/src/doctor-contract.ts b/extensions/telegram/src/doctor-contract.ts index f2b626363df..be3ef1d00c0 100644 --- a/extensions/telegram/src/doctor-contract.ts +++ b/extensions/telegram/src/doctor-contract.ts @@ -15,10 +15,6 @@ function hasLegacyTelegramStreamingAliases(value: unknown): boolean { return hasLegacyStreamingAliases(value, { includePreviewChunk: true }); } -function hasLegacyTelegramAccountStreamingAliases(value: unknown): boolean { - return hasLegacyAccountStreamingAliases(value, hasLegacyTelegramStreamingAliases); -} - function resolveCompatibleDefaultGroupEntry(section: Record): { groups: Record; entry: Record; @@ -53,7 +49,7 @@ export const legacyConfigRules: ChannelDoctorLegacyConfigRule[] = [ path: ["channels", "telegram", "accounts"], message: "channels.telegram.accounts..streamMode, streaming (scalar), chunkMode, blockStreaming, draftChunk, and blockStreamingCoalesce are legacy; use channels.telegram.accounts..streaming.{mode,chunkMode,preview.chunk,block.enabled,block.coalesce}.", - match: hasLegacyTelegramAccountStreamingAliases, + match: (value) => hasLegacyAccountStreamingAliases(value, hasLegacyTelegramStreamingAliases), }, ];