fix(config): apply filtered doctor compat at read time

This commit is contained in:
Vincent Koc
2026-04-06 20:45:07 +01:00
parent 78639eff76
commit 7d54f2a3c2
11 changed files with 252 additions and 50 deletions

View File

@@ -0,0 +1 @@
export { normalizeCompatibilityConfig, legacyConfigRules } from "./src/doctor-contract.js";

View File

@@ -1,12 +1,32 @@
import { resolveChannelPreviewStreamMode } from "openclaw/plugin-sdk/channel-streaming";
export type DiscordPreviewStreamMode = "off" | "partial" | "block";
function parsePreviewStreamingMode(value: unknown): DiscordPreviewStreamMode | undefined {
return value === "off" || value === "partial" || value === "block" ? value : undefined;
}
export function resolveDiscordPreviewStreamMode(
params: {
streamMode?: unknown;
streaming?: unknown;
} = {},
): DiscordPreviewStreamMode {
return resolveChannelPreviewStreamMode(params, "off");
const parsedStreaming =
params.streaming && typeof params.streaming === "object" && !Array.isArray(params.streaming)
? parsePreviewStreamingMode(
(params.streaming as Record<string, unknown>).mode ??
(params.streaming as Record<string, unknown>).streaming,
)
: parsePreviewStreamingMode(params.streaming);
if (parsedStreaming) {
return parsedStreaming;
}
const legacy = parsePreviewStreamingMode(params.streamMode);
if (legacy) {
return legacy;
}
if (typeof params.streaming === "boolean") {
return params.streaming ? "partial" : "off";
}
return "off";
}