import { z } from "zod"; export const fetchConfigSchema = z.object({ defaultMethod: z.enum(["GET", "POST"]).default("GET"), defaultHeaders: z.record(z.string(), z.string()).default({}), timeout: z.number().int().positive().max(60000).default(10000), maxResponseSize: z.number().int().positive().max(1048576).default(102400), allowedDomains: z.array(z.string().min(1)).default(["*"]), blockedDomains: z.array(z.string().min(1)).default([]), parseMode: z.enum(["raw", "markdown", "json"]).default("markdown"), }); export type FetchToolConfig = z.infer; export const DEFAULT_FETCH_CONFIG: FetchToolConfig = { defaultMethod: "GET", defaultHeaders: {}, timeout: 10000, maxResponseSize: 102400, allowedDomains: ["*"], blockedDomains: [], parseMode: "markdown", }; export function parseFetchConfig(raw: unknown): FetchToolConfig { const parsed = fetchConfigSchema.safeParse(raw); if (!parsed.success) { throw new Error(`Invalid fetch config: ${parsed.error.message}`); } return parsed.data; }