diff --git a/extensions/matrix/src/actions.test.ts b/extensions/matrix/src/actions.test.ts index 6750f7d9fb7..ef57fbdc54f 100644 --- a/extensions/matrix/src/actions.test.ts +++ b/extensions/matrix/src/actions.test.ts @@ -166,4 +166,50 @@ describe("matrixMessageActions", () => { expect(actions).toEqual([]); }); + + it("honors the selected Matrix account during discovery", () => { + const cfg = { + channels: { + matrix: { + defaultAccount: "assistant", + accounts: { + assistant: { + homeserver: "https://matrix.example.org", + userId: "@assistant:example.org", + accessToken: "assistant-token", + actions: { + messages: true, + reactions: false, + }, + }, + ops: { + homeserver: "https://matrix.example.org", + userId: "@ops:example.org", + accessToken: "ops-token", + actions: { + messages: true, + reactions: true, + }, + }, + }, + }, + }, + } as CoreConfig; + + const assistantActions = + matrixMessageActions.describeMessageTool!({ + cfg, + accountId: "assistant", + } as never).actions; + const opsActions = + matrixMessageActions.describeMessageTool!({ + cfg, + accountId: "ops", + } as never).actions; + + expect(assistantActions).not.toContain("react"); + expect(assistantActions).not.toContain("reactions"); + expect(opsActions).toContain("react"); + expect(opsActions).toContain("reactions"); + }); }); diff --git a/extensions/matrix/src/actions.ts b/extensions/matrix/src/actions.ts index c6be07a94d1..ef2826d98f2 100644 --- a/extensions/matrix/src/actions.ts +++ b/extensions/matrix/src/actions.ts @@ -107,14 +107,14 @@ function buildMatrixProfileToolSchema(): NonNullable { + describeMessageTool: ({ cfg, accountId }) => { const resolvedCfg = cfg as CoreConfig; - if (requiresExplicitMatrixDefaultAccount(resolvedCfg)) { + if (!accountId && requiresExplicitMatrixDefaultAccount(resolvedCfg)) { return { actions: [], capabilities: [] }; } const account = resolveMatrixAccount({ cfg: resolvedCfg, - accountId: resolveDefaultMatrixAccountId(resolvedCfg), + accountId: accountId ?? resolveDefaultMatrixAccountId(resolvedCfg), }); if (!account.enabled || !account.configured) { return { actions: [], capabilities: [] };