MCP GitHub Issue Server

import { z } from 'zod'; import { ValidationConstants, pathSchema } from '../../../validation/core/index.js'; import { taskMetadataSchema } from './metadata-schema.js'; import { TaskType, TaskStatus } from '../../../types/task.js'; /** * Schema for task update input */ export const updateTaskSchema = z.object({ name: z.string().min(1).max(ValidationConstants.task.nameMaxLength).optional(), description: z.string().max(ValidationConstants.task.descriptionMaxLength).optional(), type: z.nativeEnum(TaskType).optional(), status: z.nativeEnum(TaskStatus).optional(), notes: z .array(z.string().max(ValidationConstants.metadata.maxStringLength)) .max(ValidationConstants.metadata.maxNotes) .optional(), reasoning: z.string().max(ValidationConstants.task.descriptionMaxLength).optional(), dependencies: z.array(pathSchema).max(ValidationConstants.task.maxDependencies).optional(), metadata: taskMetadataSchema.optional(), // Status-specific metadata statusMetadata: z .object({ assignee: z.string().optional(), progress_indicators: z.array(z.string()).optional(), completedBy: z.string().optional(), verificationStatus: z.enum(['passed', 'failed']).optional(), completionChecks: z.array(z.string()).optional(), errorType: z.string().optional(), errorDetails: z.string().optional(), recoveryAttempts: z.number().optional(), blockedBy: z.array(z.string()).optional(), blockedReason: z.string().optional(), }) .optional(), // Note categories with consistent constraints planningNotes: z .array(z.string().max(ValidationConstants.task.descriptionMaxLength)) .max(ValidationConstants.metadata.maxNotes) .optional(), progressNotes: z .array(z.string().max(ValidationConstants.task.descriptionMaxLength)) .max(ValidationConstants.metadata.maxNotes) .optional(), completionNotes: z .array(z.string().max(ValidationConstants.task.descriptionMaxLength)) .max(ValidationConstants.metadata.maxNotes) .optional(), troubleshootingNotes: z .array(z.string().max(ValidationConstants.task.descriptionMaxLength)) .max(ValidationConstants.metadata.maxNotes) .optional(), }); export type UpdateTaskInput = z.infer<typeof updateTaskSchema>;