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

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

46 lines
1.5 KiB
TypeScript

import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
import {
createAccountScopedConversationBindingManager,
resetAccountScopedConversationBindingsForTests,
type AccountScopedConversationBindingManager,
type BindingTargetKind,
} from "openclaw/plugin-sdk/thread-bindings-runtime";
type BlueBubblesBindingTargetKind = "subagent" | "acp";
type BlueBubblesConversationBindingManager =
AccountScopedConversationBindingManager<BlueBubblesBindingTargetKind>;
const BLUEBUBBLES_CONVERSATION_BINDINGS_STATE_KEY = Symbol.for(
"openclaw.bluebubblesConversationBindingsState",
);
function toSessionBindingTargetKind(raw: BlueBubblesBindingTargetKind): BindingTargetKind {
return raw === "subagent" ? "subagent" : "session";
}
function toBlueBubblesTargetKind(raw: BindingTargetKind): BlueBubblesBindingTargetKind {
return raw === "subagent" ? "subagent" : "acp";
}
export function createBlueBubblesConversationBindingManager(params: {
accountId?: string;
cfg: OpenClawConfig;
}): BlueBubblesConversationBindingManager {
return createAccountScopedConversationBindingManager({
channel: "bluebubbles",
cfg: params.cfg,
accountId: params.accountId,
stateKey: BLUEBUBBLES_CONVERSATION_BINDINGS_STATE_KEY,
toStoredTargetKind: toBlueBubblesTargetKind,
toSessionBindingTargetKind,
});
}
export const __testing = {
resetBlueBubblesConversationBindingsForTests() {
resetAccountScopedConversationBindingsForTests({
stateKey: BLUEBUBBLES_CONVERSATION_BINDINGS_STATE_KEY,
});
},
};