UNPKG

mcp-adr-analysis-server

Version:

MCP server for analyzing Architectural Decision Records and project architecture

113 lines 4.4 kB
import { z } from 'zod'; /** * JSON-First TODO System Schemas * * This replaces inconsistent markdown parsing with structured JSON storage * that integrates seamlessly with the knowledge graph and scoring system. */ export const TodoTaskSchema = z.object({ id: z.string(), title: z.string(), description: z.string().optional(), status: z.enum(['pending', 'in_progress', 'completed', 'blocked', 'cancelled']), priority: z.enum(['low', 'medium', 'high', 'critical']), category: z.string().optional(), assignee: z.string().optional(), // Timestamps createdAt: z.string(), updatedAt: z.string(), completedAt: z.string().optional(), dueDate: z.string().optional(), // Relationships parentTaskId: z.string().optional(), subtasks: z.array(z.string()).default([]), dependencies: z.array(z.string()).default([]), blockedBy: z.array(z.string()).default([]), // ADR Integration linkedAdrs: z.array(z.string()).default([]), adrGeneratedTask: z.boolean().default(false), // Knowledge Graph Integration intentId: z.string().optional(), toolExecutions: z.array(z.string()).default([]), // Scoring Integration scoreWeight: z.number().default(1), // How much this task impacts overall score scoreCategory: z.enum(['task_completion', 'deployment_readiness', 'architecture_compliance', 'security_posture', 'code_quality']).default('task_completion'), // Progress tracking estimatedHours: z.number().optional(), actualHours: z.number().optional(), progressPercentage: z.number().default(0), // Metadata tags: z.array(z.string()).default([]), notes: z.string().optional(), lastModifiedBy: z.enum(['human', 'tool', 'adr_generator', 'knowledge_graph']).default('tool'), // Automation autoComplete: z.boolean().default(false), // Auto-complete when criteria met completionCriteria: z.string().optional(), // JSON string of completion rules // Version control version: z.number().default(1), changeLog: z.array(z.object({ timestamp: z.string(), action: z.enum(['created', 'updated', 'completed', 'blocked', 'cancelled', 'moved']), details: z.string(), modifiedBy: z.string() })).default([]) }); export const TodoSectionSchema = z.object({ id: z.string(), title: z.string(), description: z.string().optional(), order: z.number(), collapsed: z.boolean().default(false), tasks: z.array(z.string()), // Task IDs metadata: z.record(z.any()).optional() }); export const TodoJsonDataSchema = z.object({ version: z.string().default('1.0.0'), metadata: z.object({ projectName: z.string().optional(), lastUpdated: z.string(), totalTasks: z.number(), completedTasks: z.number(), lastSyncToMarkdown: z.string().optional(), autoSyncEnabled: z.boolean().default(true), lastGitPush: z.string().optional(), lastPushFiles: z.array(z.string()).optional() }), // Task storage tasks: z.record(TodoTaskSchema), // taskId -> Task sections: z.array(TodoSectionSchema), // Scoring integration scoringSync: z.object({ lastScoreUpdate: z.string(), taskCompletionScore: z.number(), priorityWeightedScore: z.number(), criticalTasksRemaining: z.number(), scoreHistory: z.array(z.object({ timestamp: z.string(), score: z.number(), trigger: z.string() })).default([]) }), // Knowledge graph integration knowledgeGraphSync: z.object({ lastSync: z.string(), linkedIntents: z.array(z.string()), pendingUpdates: z.array(z.object({ taskId: z.string(), updateType: z.enum(['status', 'progress', 'completion']), timestamp: z.string() })).default([]) }), // Automation rules automationRules: z.array(z.object({ id: z.string(), name: z.string(), trigger: z.enum(['task_completed', 'all_dependencies_met', 'score_threshold', 'time_based']), conditions: z.record(z.any()), actions: z.array(z.object({ type: z.enum(['complete_task', 'create_task', 'update_status', 'notify', 'update_score']), parameters: z.record(z.any()) })) })).default([]) }); //# sourceMappingURL=todo-json-schemas.js.map