From 2aa09230c2cf0f8563de926357770074047e6c5c Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Fri, 27 Mar 2026 23:11:41 -0500 Subject: [PATCH] fix(regression): preserve feishu pairing account context --- extensions/feishu/src/channel.test.ts | 39 +++++++++++++++++++++++++++ extensions/feishu/src/channel.ts | 3 ++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/extensions/feishu/src/channel.test.ts b/extensions/feishu/src/channel.test.ts index d468dc5ce1c..852d42e3f29 100644 --- a/extensions/feishu/src/channel.test.ts +++ b/extensions/feishu/src/channel.test.ts @@ -144,6 +144,45 @@ describe("feishuPlugin.status.probeAccount", () => { }); }); +describe("feishuPlugin.pairing.notifyApproval", () => { + beforeEach(async () => { + vi.resetModules(); + ({ feishuPlugin } = await import("./channel.js")); + sendMessageFeishuMock.mockReset(); + sendMessageFeishuMock.mockResolvedValue({ messageId: "pairing-msg", chatId: "ou_user" }); + }); + + it("preserves accountId when sending pairing approvals", async () => { + const cfg = { + channels: { + feishu: { + accounts: { + work: { + appId: "cli_work", + appSecret: "secret_work", + enabled: true, + }, + }, + }, + }, + } as OpenClawConfig; + + await feishuPlugin.pairing?.notifyApproval?.({ + cfg, + id: "ou_user", + accountId: "work", + }); + + expect(sendMessageFeishuMock).toHaveBeenCalledWith( + expect.objectContaining({ + cfg, + to: "ou_user", + accountId: "work", + }), + ); + }); +}); + describe("feishuPlugin actions", () => { const cfg = { channels: { diff --git a/extensions/feishu/src/channel.ts b/extensions/feishu/src/channel.ts index f8c0529bf87..9910027af5b 100644 --- a/extensions/feishu/src/channel.ts +++ b/extensions/feishu/src/channel.ts @@ -1161,12 +1161,13 @@ export const feishuPlugin: ChannelPlugin { + notify: async ({ cfg, id, message, accountId }) => { const { sendMessageFeishu } = await loadFeishuChannelRuntime(); await sendMessageFeishu({ cfg, to: id, text: message, + accountId, }); }, },