mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-12 22:30:51 +08:00
重构主控编排与运行时预热链路,统一工作区提示词/专家调度协议并补齐 wiki 记忆注入与写回闭环。
同时收敛启动与运维脚本默认行为(含 wiki worker)、更新 Admin 可观测性与相关测试,降低首轮时延并提高运行稳定性。 Made-with: Cursor
This commit is contained in:
parent
4a23b715a2
commit
dbbe3add6a
14438 changed files with 2693620 additions and 2546 deletions
84
openclaw/extensions/bluebubbles/src/config-apply.ts
Normal file
84
openclaw/extensions/bluebubbles/src/config-apply.ts
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
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,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue