feat: add base tool input schema
This commit is contained in:
+46
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user