"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginatedTasksResponseSchema = exports.TaskResponseSchema = exports.TaskQuerySchema = exports.ApplyTemplateSchema = exports.CreateTemplateFromTaskSchema = exports.DuplicateTaskSchema = exports.BulkDeleteTasksSchema = exports.BulkUpdateTasksSchema = exports.BulkCreateTasksSchema = exports.UpdateTaskSchema = exports.CreateTaskSchema = exports.TaskBaseSchema = exports.TaskComplexitySchema = exports.TaskTypeSchema = exports.TaskPrioritySchema = void 0; const zod_1 = require("zod"); // Enum schemas exports.TaskPrioritySchema = zod_1.z.enum(['lowest', 'low', 'medium', 'high', 'highest']); exports.TaskTypeSchema = zod_1.z.enum(['feature', 'bug', 'enhancement', 'research', 'maintenance']); exports.TaskComplexitySchema = zod_1.z.enum(['trivial', 'minor', 'major', 'critical']); // Base task schema exports.TaskBaseSchema = zod_1.z.object({ title: zod_1.z.string().min(1).max(255), description: zod_1.z.string().optional(), status: zod_1.z.string().uuid().optional(), priority: exports.TaskPrioritySchema.default('medium'), task_type: exports.TaskTypeSchema.optional(), complexity: exports.TaskComplexitySchema.optional(), story_points: zod_1.z.number().int().min(1).max(21).optional(), project: zod_1.z.string().uuid(), parent_task: zod_1.z.string().uuid().optional(), epic: zod_1.z.string().uuid().optional(), assigned_to: zod_1.z.string().uuid().optional(), ai_agent_assigned: zod_1.z.string().max(255).optional(), reviewer: zod_1.z.string().uuid().optional(), estimated_hours: zod_1.z.number().positive().optional(), progress_percentage: zod_1.z.number().int().min(0).max(100).default(0), start_date: zod_1.z.string().optional(), due_date: zod_1.z.string().optional(), task_master_id: zod_1.z.string().max(255).optional(), github_issue_url: zod_1.z.string().url().optional(), bmad_story_id: zod_1.z.string().max(255).optional(), external_refs: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(), ai_generated: zod_1.z.boolean().default(false), ai_context: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(), auto_status_updates: zod_1.z.boolean().default(false), acceptance_criteria: zod_1.z.string().optional(), definition_of_done: zod_1.z.string().optional(), notes: zod_1.z.string().optional(), }); // Create task schema exports.CreateTaskSchema = exports.TaskBaseSchema; // Update task schema (all fields optional) exports.UpdateTaskSchema = exports.TaskBaseSchema.partial(); // Bulk operation schemas exports.BulkCreateTasksSchema = zod_1.z.object({ tasks: zod_1.z.array(exports.CreateTaskSchema).min(1).max(100), }); exports.BulkUpdateTasksSchema = zod_1.z.object({ ids: zod_1.z.array(zod_1.z.string().uuid()).min(1).max(100), updates: exports.UpdateTaskSchema, }); exports.BulkDeleteTasksSchema = zod_1.z.object({ ids: zod_1.z.array(zod_1.z.string().uuid()).min(1).max(100), }); // Task duplication schema exports.DuplicateTaskSchema = zod_1.z.object({ taskId: zod_1.z.string().uuid(), includeSubtasks: zod_1.z.boolean().default(false), includeAttachments: zod_1.z.boolean().default(false), includeComments: zod_1.z.boolean().default(false), overrides: exports.UpdateTaskSchema.optional(), }); // Task template schemas exports.CreateTemplateFromTaskSchema = zod_1.z.object({ taskId: zod_1.z.string().uuid(), templateName: zod_1.z.string().min(1).max(255), templateDescription: zod_1.z.string().optional(), excludeFields: zod_1.z.array(zod_1.z.string()).optional(), }); exports.ApplyTemplateSchema = zod_1.z.object({ templateId: zod_1.z.string().uuid(), projectId: zod_1.z.string().uuid(), overrides: exports.UpdateTaskSchema.optional(), }); // Query parameter schemas exports.TaskQuerySchema = zod_1.z.object({ page: zod_1.z.coerce.number().int().positive().default(1), limit: zod_1.z.coerce.number().int().min(1).max(100).default(20), sort: zod_1.z.string().optional(), filter: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional(), search: zod_1.z.string().optional(), fields: zod_1.z.array(zod_1.z.string()).optional(), }); // Response schemas exports.TaskResponseSchema = exports.TaskBaseSchema.extend({ id: zod_1.z.string().uuid(), created_by: zod_1.z.string().uuid().optional(), created_at: zod_1.z.string(), updated_at: zod_1.z.string(), actual_hours: zod_1.z.number().optional(), completed_at: zod_1.z.string().optional(), }); exports.PaginatedTasksResponseSchema = zod_1.z.object({ data: zod_1.z.array(exports.TaskResponseSchema), meta: zod_1.z.object({ total: zod_1.z.number(), page: zod_1.z.number(), limit: zod_1.z.number(), totalPages: zod_1.z.number(), }), }); //# sourceMappingURL=task.validator.js.map