diff --git a/src/config/config.discord-agent-components.test.ts b/src/config/config.discord-agent-components.test.ts new file mode 100644 index 00000000000..4e4995ad34a --- /dev/null +++ b/src/config/config.discord-agent-components.test.ts @@ -0,0 +1,60 @@ +import { describe, expect, it } from "vitest"; +import { validateConfigObject } from "./config.js"; + +describe("discord agentComponents config", () => { + it("accepts channels.discord.agentComponents.enabled", () => { + const res = validateConfigObject({ + channels: { + discord: { + agentComponents: { + enabled: true, + }, + }, + }, + }); + + expect(res.ok).toBe(true); + }); + + it("accepts channels.discord.accounts..agentComponents.enabled", () => { + const res = validateConfigObject({ + channels: { + discord: { + accounts: { + work: { + agentComponents: { + enabled: false, + }, + }, + }, + }, + }, + }); + + expect(res.ok).toBe(true); + }); + + it("rejects unknown fields under channels.discord.agentComponents", () => { + const res = validateConfigObject({ + channels: { + discord: { + agentComponents: { + enabled: true, + invalidField: true, + }, + }, + }, + }); + + expect(res.ok).toBe(false); + if (!res.ok) { + expect( + res.issues.some( + (issue) => + issue.path === "channels.discord.agentComponents" && + issue.message.toLowerCase().includes("unrecognized"), + ), + ).toBe(true); + } + }); +}); diff --git a/src/config/zod-schema.providers-core.ts b/src/config/zod-schema.providers-core.ts index 6bd70283f7c..ac1287460bd 100644 --- a/src/config/zod-schema.providers-core.ts +++ b/src/config/zod-schema.providers-core.ts @@ -491,6 +491,12 @@ export const DiscordAccountSchema = z }) .strict() .optional(), + agentComponents: z + .object({ + enabled: z.boolean().optional(), + }) + .strict() + .optional(), ui: DiscordUiSchema, slashCommand: z .object({