fix: lazy-load discord carbon runtime for npm install

Forward-port release branch fix without beta version file changes.

(cherry picked from commit 3243c14547)
This commit is contained in:
Peter Steinberger
2026-04-21 16:40:18 +01:00
parent 99c3ec15df
commit 34a52ea777
3 changed files with 40 additions and 28 deletions

View File

@@ -70,7 +70,7 @@ import { discordSetupAdapter } from "./setup-adapter.js";
import { createDiscordPluginBase, discordConfigAdapter } from "./shared.js";
import { collectDiscordStatusIssues } from "./status-issues.js";
import { parseDiscordTarget } from "./target-parsing.js";
import { DiscordUiContainer } from "./ui.js";
import { normalizeDiscordAccentColor, resolveDiscordAccentColor } from "./ui-colors.js";
type DiscordSendFn = typeof import("./send.js").sendMessageDiscord;
type DiscordCarbonModule = typeof import("@buape/carbon");
@@ -251,7 +251,7 @@ function buildDiscordCrossContextComponents(params: {
cfg: OpenClawConfig;
accountId?: string | null;
}) {
const { Separator, TextDisplay } = loadDiscordCarbonModule();
const { Container, Separator, TextDisplay } = loadDiscordCarbonModule();
const trimmed = params.message.trim();
const components: Array<DiscordTextDisplay | DiscordSeparator> = [];
if (trimmed) {
@@ -259,7 +259,15 @@ function buildDiscordCrossContextComponents(params: {
components.push(new Separator({ divider: true, spacing: "small" }));
}
components.push(new TextDisplay(`*From ${params.originLabel}*`));
return [new DiscordUiContainer({ cfg: params.cfg, accountId: params.accountId, components })];
const configuredAccent = resolveDiscordAccentColor({
cfg: params.cfg,
accountId: params.accountId,
});
return [
new Container(components, {
accentColor: normalizeDiscordAccentColor(configuredAccent) ?? configuredAccent,
}),
];
}
const resolveDiscordAllowlistGroupOverrides = createNestedAllowlistOverrideResolver({

View File

@@ -0,0 +1,27 @@
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
import { inspectDiscordAccount } from "./account-inspect.js";
export const DEFAULT_DISCORD_ACCENT_COLOR = "#5865F2";
type ResolveDiscordAccentColorParams = {
cfg: OpenClawConfig;
accountId?: string | null;
};
export function normalizeDiscordAccentColor(raw?: string | null): string | null {
const trimmed = (raw ?? "").trim();
if (!trimmed) {
return null;
}
const normalized = trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
if (!/^#[0-9a-fA-F]{6}$/.test(normalized)) {
return null;
}
return normalized.toUpperCase();
}
export function resolveDiscordAccentColor(params: ResolveDiscordAccentColorParams): string {
const account = inspectDiscordAccount({ cfg: params.cfg, accountId: params.accountId });
const configured = normalizeDiscordAccentColor(account.config.ui?.components?.accentColor);
return configured ?? DEFAULT_DISCORD_ACCENT_COLOR;
}

View File

@@ -1,34 +1,11 @@
import { Container } from "@buape/carbon";
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
import { inspectDiscordAccount } from "./account-inspect.js";
import { normalizeDiscordAccentColor, resolveDiscordAccentColor } from "./ui-colors.js";
const DEFAULT_DISCORD_ACCENT_COLOR = "#5865F2";
export { normalizeDiscordAccentColor, resolveDiscordAccentColor } from "./ui-colors.js";
type DiscordContainerComponents = ConstructorParameters<typeof Container>[0];
type ResolveDiscordAccentColorParams = {
cfg: OpenClawConfig;
accountId?: string | null;
};
export function normalizeDiscordAccentColor(raw?: string | null): string | null {
const trimmed = (raw ?? "").trim();
if (!trimmed) {
return null;
}
const normalized = trimmed.startsWith("#") ? trimmed : `#${trimmed}`;
if (!/^#[0-9a-fA-F]{6}$/.test(normalized)) {
return null;
}
return normalized.toUpperCase();
}
export function resolveDiscordAccentColor(params: ResolveDiscordAccentColorParams): string {
const account = inspectDiscordAccount({ cfg: params.cfg, accountId: params.accountId });
const configured = normalizeDiscordAccentColor(account.config.ui?.components?.accentColor);
return configured ?? DEFAULT_DISCORD_ACCENT_COLOR;
}
export class DiscordUiContainer extends Container {
constructor(params: {
cfg: OpenClawConfig;