fix: lazy-load discord carbon runtime for npm install

This commit is contained in:
Peter Steinberger
2026-04-21 15:20:56 +01:00
parent ddd05f4e89
commit 3243c14547
5 changed files with 42 additions and 30 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;

View File

@@ -1,6 +1,6 @@
{
"name": "openclaw",
"version": "2026.4.20-beta.1",
"version": "2026.4.20-beta.2",
"description": "Multi-channel AI gateway with extensible messaging integrations",
"keywords": [],
"homepage": "https://github.com/openclaw/openclaw#readme",

View File

@@ -27646,6 +27646,6 @@ export const GENERATED_BASE_CONFIG_SCHEMA: BaseConfigSchemaResponse = {
tags: ["advanced", "url-secret"],
},
},
version: "2026.4.20-beta.1",
version: "2026.4.20-beta.2",
generatedAt: "2026-03-22T21:17:33.302Z",
};