From 7f4dd21227e80e0fa45ed80dab7a9bf30954119d Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Fri, 3 Apr 2026 11:37:22 -0500 Subject: [PATCH] fix: honor zalo action discovery account config --- extensions/zalo/src/actions.test.ts | 32 +++++++++++++++++++++++++++++ extensions/zalo/src/actions.ts | 10 ++++----- 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 extensions/zalo/src/actions.test.ts diff --git a/extensions/zalo/src/actions.test.ts b/extensions/zalo/src/actions.test.ts new file mode 100644 index 00000000000..d14360fb807 --- /dev/null +++ b/extensions/zalo/src/actions.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "./runtime-api.js"; +import { zaloMessageActions } from "./actions.js"; + +describe("zaloMessageActions.describeMessageTool", () => { + it("honors the selected Zalo account during discovery", () => { + const cfg: OpenClawConfig = { + channels: { + zalo: { + enabled: true, + botToken: "root-token", + accounts: { + default: { + enabled: false, + botToken: "default-token", + }, + work: { + enabled: true, + botToken: "work-token", + }, + }, + }, + }, + }; + + expect(zaloMessageActions.describeMessageTool?.({ cfg, accountId: "default" })).toBeNull(); + expect(zaloMessageActions.describeMessageTool?.({ cfg, accountId: "work" })).toEqual({ + actions: ["send"], + capabilities: [], + }); + }); +}); diff --git a/extensions/zalo/src/actions.ts b/extensions/zalo/src/actions.ts index 89b284df789..80d3b0b2501 100644 --- a/extensions/zalo/src/actions.ts +++ b/extensions/zalo/src/actions.ts @@ -1,5 +1,5 @@ import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime"; -import { listEnabledZaloAccounts } from "./accounts.js"; +import { listEnabledZaloAccounts, resolveZaloAccount } from "./accounts.js"; import type { ChannelMessageActionAdapter, ChannelMessageActionName, @@ -14,15 +14,15 @@ const loadZaloActionsRuntime = createLazyRuntimeNamedExport( const providerId = "zalo"; -function listEnabledAccounts(cfg: OpenClawConfig) { - return listEnabledZaloAccounts(cfg).filter( +function listEnabledAccounts(cfg: OpenClawConfig, accountId?: string | null) { + return (accountId ? [resolveZaloAccount({ cfg, accountId })] : listEnabledZaloAccounts(cfg)).filter( (account) => account.enabled && account.tokenSource !== "none", ); } export const zaloMessageActions: ChannelMessageActionAdapter = { - describeMessageTool: ({ cfg }) => { - const accounts = listEnabledAccounts(cfg); + describeMessageTool: ({ cfg, accountId }) => { + const accounts = listEnabledAccounts(cfg, accountId); if (accounts.length === 0) { return null; }