oclaw/openclaw/extensions/bluebubbles/src/config-apply.ts
oliver dbbe3add6a 重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。

Made-with: Cursor
2026-04-26 08:34:33 +08:00

84 lines
2.1 KiB
TypeScript

import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
type BlueBubblesConfigPatch = {
serverUrl?: string;
password?: unknown;
webhookPath?: string;
};
type AccountEnabledMode = boolean | "preserve-or-true";
type BlueBubblesAccountEntry = {
enabled?: boolean;
[key: string]: unknown;
};
function normalizePatch(
patch: BlueBubblesConfigPatch,
onlyDefinedFields: boolean,
): BlueBubblesConfigPatch {
if (!onlyDefinedFields) {
return patch;
}
const next: BlueBubblesConfigPatch = {};
if (patch.serverUrl !== undefined) {
next.serverUrl = patch.serverUrl;
}
if (patch.password !== undefined) {
next.password = patch.password;
}
if (patch.webhookPath !== undefined) {
next.webhookPath = patch.webhookPath;
}
return next;
}
export function applyBlueBubblesConnectionConfig(params: {
cfg: OpenClawConfig;
accountId: string;
patch: BlueBubblesConfigPatch;
onlyDefinedFields?: boolean;
accountEnabled?: AccountEnabledMode;
}): OpenClawConfig {
const patch = normalizePatch(params.patch, params.onlyDefinedFields === true);
if (params.accountId === DEFAULT_ACCOUNT_ID) {
return {
...params.cfg,
channels: {
...params.cfg.channels,
bluebubbles: {
...params.cfg.channels?.bluebubbles,
enabled: true,
...patch,
},
},
};
}
const currentAccount = params.cfg.channels?.bluebubbles?.accounts?.[params.accountId] as
| BlueBubblesAccountEntry
| undefined;
const enabled =
params.accountEnabled === "preserve-or-true"
? (currentAccount?.enabled ?? true)
: (params.accountEnabled ?? true);
return {
...params.cfg,
channels: {
...params.cfg.channels,
bluebubbles: {
...params.cfg.channels?.bluebubbles,
enabled: true,
accounts: {
...params.cfg.channels?.bluebubbles?.accounts,
[params.accountId]: {
...currentAccount,
enabled,
...patch,
},
},
},
},
};
}