feat: add base tool input schema

This commit is contained in:
2026-06-11 14:03:14 +01:00
parent 311f49435e
commit 58fe45b1b3
4 changed files with 275 additions and 5 deletions
+46 -1
View File
@@ -1 +1,46 @@
// Zod input validation schemas for all tools.
// Zod validation schemas for common tool input.
import { z } from "zod";
export const baseInputSchema = z.object({
question: z.string().min(1),
context: z.string().optional(),
constraints: z.array(z.string()).optional(),
expectedOutput: z.string().optional(),
projectSummary: z.string().optional(),
taskSummary: z.string().optional(),
relevantFiles: z
.array(
z.object({
path: z.string().min(1),
content: z.string(),
language: z.string().optional(),
}),
)
.optional(),
logs: z.string().optional(),
}).strict();
/** @param {unknown} raw */
export function validateToolInput(raw) {
const result = baseInputSchema.safeParse(raw);
if (result.success) {
return { ok: true, data: result.data };
}
return {
ok: false,
errors: result.error.issues.map((i) => i.path.join(".") + ": " + i.message),
};
}
/** @param {unknown} raw */
export function assertValidToolInput(raw) {
const result = validateToolInput(raw);
if (result.ok) return result.data;
const err = new Error(
"Input validation error:\n" + result.errors.map((e) => " - " + e).join("\n"),
);
err.kind = "ValidationError";
throw err;
}