import { z } from "zod";
// Configuration schema
const ConfigSchema = z.object({
wordpressUrl: z.string().url().default("https://fluentboards.local"),
username: z.string().default("aiagent"),
appPassword: z.string().default("E3a3 3Hw5 tVlb HDDm QcUR WYoC"),
// Delete operation safety settings
deleteSafety: z.object({
enableDeletes: z.boolean().default(false).describe("Enable delete operations (boards, tasks, labels)"),
requireConfirmation: z.boolean().default(true).describe("Require confirmation parameter for delete operations"),
allowedDeleteTypes: z.array(z.enum(["board", "task", "label"])).default([]).describe("Specific delete types allowed when deletes are enabled"),
}).default({}),
// Board focus settings - focus operations on a specific board
boardFocus: z.object({
enabled: z.boolean().default(false).describe("Enable board focus mode - streamline operations for a specific board"),
boardId: z.number().int().positive().optional().describe("Specific board ID to focus operations on"),
}).default({}),
});
export type Config = z.infer<typeof ConfigSchema>;
// Parse and validate configuration
export const config = ConfigSchema.parse({
wordpressUrl: process.env.WORDPRESS_URL,
username: process.env.WORDPRESS_USERNAME,
appPassword: process.env.WORDPRESS_APP_PASSWORD,
// Delete safety settings from environment or defaults
deleteSafety: {
enableDeletes: process.env.ENABLE_DELETES === "true",
requireConfirmation: process.env.REQUIRE_DELETE_CONFIRMATION !== "false", // Default true unless explicitly false
allowedDeleteTypes: process.env.ALLOWED_DELETE_TYPES ?
process.env.ALLOWED_DELETE_TYPES.split(',').filter(type =>
['board', 'task', 'label'].includes(type)
) : [],
},
// Board focus settings from environment
boardFocus: {
enabled: !!process.env.BOARD_ID,
boardId: process.env.BOARD_ID ? parseInt(process.env.BOARD_ID, 10) : undefined,
},
});
export default config;