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

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

62 lines
1.8 KiB
TypeScript

import {
resolveBlueBubblesAccount,
resolveBlueBubblesEffectiveAllowPrivateNetwork,
resolveBlueBubblesPrivateNetworkConfigValue,
} from "./accounts.js";
import type { OpenClawConfig } from "./runtime-api.js";
import { normalizeResolvedSecretInputString } from "./secret-input.js";
export type BlueBubblesAccountResolveOpts = {
serverUrl?: string;
password?: string;
accountId?: string;
cfg?: OpenClawConfig;
};
export function resolveBlueBubblesServerAccount(params: BlueBubblesAccountResolveOpts): {
baseUrl: string;
password: string;
accountId: string;
allowPrivateNetwork: boolean;
allowPrivateNetworkConfig?: boolean;
} {
const account = resolveBlueBubblesAccount({
cfg: params.cfg ?? {},
accountId: params.accountId,
});
const baseUrl =
normalizeResolvedSecretInputString({
value: params.serverUrl,
path: "channels.bluebubbles.serverUrl",
}) ||
normalizeResolvedSecretInputString({
value: account.config.serverUrl,
path: `channels.bluebubbles.accounts.${account.accountId}.serverUrl`,
});
const password =
normalizeResolvedSecretInputString({
value: params.password,
path: "channels.bluebubbles.password",
}) ||
normalizeResolvedSecretInputString({
value: account.config.password,
path: `channels.bluebubbles.accounts.${account.accountId}.password`,
});
if (!baseUrl) {
throw new Error("BlueBubbles serverUrl is required");
}
if (!password) {
throw new Error("BlueBubbles password is required");
}
return {
baseUrl,
password,
accountId: account.accountId,
allowPrivateNetwork: resolveBlueBubblesEffectiveAllowPrivateNetwork({
baseUrl,
config: account.config,
}),
allowPrivateNetworkConfig: resolveBlueBubblesPrivateNetworkConfigValue(account.config),
};
}