Files
diegosouzapw--omniroute/src/lib/skills/schemas.ts
T
2026-07-13 13:39:12 +08:00

44 lines
1.1 KiB
TypeScript

import { z } from "zod";
import { SkillStatus, SkillMode } from "./types";
export const SkillSchema = z.object({
input: z.record(z.string(), z.unknown()),
output: z.record(z.string(), z.unknown()),
});
export const SkillCreateInputSchema = z
.object({
name: z.string().min(1).max(100),
version: z
.string()
.regex(/^\d+\.\d+\.\d+$/)
.default("1.0.0"),
description: z.string().max(500).optional(),
schema: SkillSchema,
handler: z.string().min(1),
enabled: z.boolean().default(true),
})
.strict();
export const SkillUpdateInputSchema = z
.object({
name: z.string().min(1).max(100).optional(),
version: z
.string()
.regex(/^\d+\.\d+\.\d+$/)
.optional(),
description: z.string().max(500).optional(),
schema: SkillSchema.optional(),
handler: z.string().min(1).optional(),
enabled: z.boolean().optional(),
})
.strict();
export const SkillConfigSchema = z.object({
enabled: z.boolean(),
mode: z.nativeEnum(SkillMode),
allowedSkills: z.array(z.string()),
timeout: z.number().int().positive().default(30000),
maxRetries: z.number().int().min(0).default(3),
});