UNPKG

@boundless-oss/atlas

Version:

Atlas - MCP Server for comprehensive startup project management

467 lines (417 loc) 11.4 kB
export interface Sprint { id: string; name: string; goal: string; status: 'active' | 'completed' | 'cancelled'; startDate: Date; endDate: Date; duration: number; // days team: string[]; storyIds: string[]; epicIds?: string[]; // Associated epics capacity: number; // story points velocity: number; // actual velocity achieved burndownData: BurndownDataPoint[]; // Cross-module references milestoneId?: string; // Reference to roadmap milestone releaseId?: string; // Reference to release planning } import { AcceptanceCriterion, TaskDependency, TimeTracking, Attachment, Comment, CustomField, Subtask } from '../shared/task-types.js'; export interface Story { id: string; title: string; description: string; status: 'backlog' | 'todo' | 'in_progress' | 'review' | 'testing' | 'done' | 'blocked' | 'cancelled'; priority: 'low' | 'medium' | 'high' | 'critical'; storyPoints: number; acceptanceCriteria: AcceptanceCriterion[]; // Changed from string[] to structured criteria assignee?: string; epic?: string; sprintId?: string; createdAt: Date; updatedAt: Date; hoursSpent: number; tags: string[]; // New enhanced features dependencies: TaskDependency[]; timeTracking: TimeTracking; attachments: Attachment[]; comments: Comment[]; customFields: CustomField[]; subtasks: Subtask[]; watchers: string[]; // Additional metadata dueDate?: Date; startDate?: Date; completedAt?: Date; blockedReason?: string; groomedWithUserFeedback?: boolean; // Indicates if story has been groomed with user feedback // Keep backward compatibility acceptanceCriteriaLegacy?: string[]; // For migration purposes // Cross-module references relatedIssueIds?: string[]; // References to issue-tracking module requirementId?: string; // Reference to product-requirements module featureId?: string; // Reference to feature in product roadmap bugIds?: string[]; // References to bug tracking // Documentation references designDocumentUrl?: string; // URL to design document implementationDocumentUrl?: string; // URL to implementation/technical document documentationStatus?: 'pending' | 'in-progress' | 'approved' | 'outdated'; // Documentation approval status documentationLastReviewed?: Date; // Last time documents were reviewed documentationReviewers?: string[]; // Who reviewed/approved the documents } export interface Epic { id: string; title: string; description: string; status: 'planned' | 'active' | 'completed' | 'cancelled'; priority: 'low' | 'medium' | 'high' | 'critical'; goals: string[]; owner?: string; createdAt: Date; updatedAt: Date; storyIds: string[]; stories?: string[]; // Alias for compatibility progress: number; // percentage metadata?: { estimatedEffort?: string; hasDependencies?: boolean; dependencyDetails?: string; risks?: string; targetUsers?: string; businessValue?: string; createdVia?: string; }; // Cross-module references roadmapItemId?: string; // Reference to product roadmap requirementIds?: string[]; // References to product requirements featureIds?: string[]; // References to features } export interface SprintPlanningSession { id: string; sprintId: string; date: Date; attendees: string[]; capacity: number; commitments: string[]; // story IDs notes: string; outcome: 'ready' | 'needs_work' | 'blocked'; } export interface SprintRetrospective { id: string; sprintId: string; date: Date; attendees: string[]; whatWentWell: string[]; whatCanImprove: string[]; actionItems: string[]; sprintRating?: number; // 1-10 } export interface StandupReport { id: string; sprintId: string; attendee: string; date: Date; yesterday: string[]; today: string[]; blockers: string[]; } export interface VelocityReport { teamName: string; sprintsAnalyzed: number; periodStart: Date; periodEnd: Date; averageVelocity: number; highestVelocity: number; lowestVelocity: number; trend: 'improving' | 'declining' | 'stable'; sprintData: SprintVelocityData[]; insights: string[]; recommendations: string[]; } export interface SprintVelocityData { sprintName: string; velocity: number; completionRate: number; startDate: Date; endDate: Date; } export interface BurndownChart { sprintId: string; totalStoryPoints: number; completedPoints: number; sprintDays: number; dailyData: BurndownDataPoint[]; onTrack: boolean; daysRemaining: number; trend?: string; } export interface BurndownDataPoint { day: number; idealPoints: number; actualPoints: number; remainingPoints: number; completedPoints: number; } export interface SprintStatus { sprint: Sprint; stories: Story[]; // Full story objects epics: Epic[]; // Full epic objects related to the sprint totalStories: number; completedStories: number; inProgressStories: number; remainingStories: number; totalStoryPoints: number; completedStoryPoints: number; remainingStoryPoints: number; sprintHealth: string; blockers: string[]; currentVelocity: number; metrics: { velocity: number; capacity: number; utilization: number; burndownData: BurndownChart; health: 'excellent' | 'good' | 'at-risk' | 'critical'; daysElapsed: number; daysRemaining: number; sprintDuration: number; }; team: { members: string[]; availability: number; blockers: string[]; }; } export interface BacklogFilter { epic?: string; priority?: string; assignee?: string; status?: string; maxStoryPoints?: number; } // Input option interfaces for API calls export interface CreateSprintOptions { name: string; goal: string; duration: number; startDate?: Date; team?: string[]; initialStoryIds?: string[]; } export interface CreateStoryOptions { title: string; description: string; storyPoints: number; priority: 'low' | 'medium' | 'high' | 'critical'; acceptanceCriteria: string[] | AcceptanceCriterion[]; // Support both legacy and new format epic?: string; assignee?: string; sprintId?: string; tags?: string[]; dependencies?: TaskDependency[]; timeEstimate?: number; watchers?: string[]; groomedWithUserFeedback?: boolean; designDocumentUrl?: string; implementationDocumentUrl?: string; documentationStatus?: 'pending' | 'in-progress' | 'approved' | 'outdated'; } export interface CreateEpicOptions { title: string; description: string; goals: string[]; priority: 'low' | 'medium' | 'high' | 'critical'; owner?: string; } export interface SprintPlanningOptions { sprintId: string; attendees: string[]; capacity?: number; commitments: string[]; } export interface StandupOptions { sprintId: string; attendee: string; yesterday: string[]; today: string[]; blockers: string[]; } export interface RetrospectiveOptions { sprintId: string; attendees: string[]; whatWentWell: string[]; whatCanImprove: string[]; actionItems: string[]; } export interface StoryUpdateOptions { status?: 'backlog' | 'todo' | 'in_progress' | 'review' | 'testing' | 'done' | 'blocked' | 'cancelled'; hoursSpent?: number; notes?: string; title?: string; description?: string; priority?: 'low' | 'medium' | 'high' | 'critical'; storyPoints?: number; assignee?: string; tags?: string[]; acceptanceCriteria?: string[] | AcceptanceCriterion[]; dependencies?: TaskDependency[]; timeTracking?: TimeTracking; groomedWithUserFeedback?: boolean; epic?: string; designDocumentUrl?: string; implementationDocumentUrl?: string; documentationStatus?: 'pending' | 'in-progress' | 'approved' | 'outdated'; documentationLastReviewed?: Date; documentationReviewers?: string[]; } export interface VelocityOptions { teamName?: string; lastNSprints: number; } export interface EpicUpdateOptions { title?: string; description?: string; status?: 'planned' | 'active' | 'completed' | 'cancelled'; priority?: 'low' | 'medium' | 'high' | 'critical'; goals?: string[]; owner?: string; metadata?: { estimatedEffort?: string; hasDependencies?: boolean; dependencyDetails?: string; risks?: string; targetUsers?: string; businessValue?: string; }; } export interface SprintUpdateOptions { name?: string; goal?: string; status?: 'active' | 'completed' | 'cancelled'; endDate?: Date; team?: string[]; capacity?: number; } // Team and capacity planning interfaces export interface TeamMember { name: string; role: string; capacity: number; // hours per sprint skills: string[]; availability: number; // percentage } export interface SprintCapacity { totalHours: number; totalStoryPoints: number; teamMembers: TeamMemberCapacity[]; workingDays: number; } export interface TeamMemberCapacity { name: string; allocatedHours: number; allocatedStoryPoints: number; assignments: string[]; // story IDs } // Agile metrics and analytics export interface AgileMetrics { velocity: VelocityMetrics; quality: QualityMetrics; predictability: PredictabilityMetrics; team: TeamMetrics; } export interface VelocityMetrics { current: number; average: number; trend: 'up' | 'down' | 'stable'; consistency: number; // 0-100% } export interface QualityMetrics { defectRate: number; reworkRate: number; testCoverage?: number; codeReviewCoverage?: number; } export interface PredictabilityMetrics { commitmentAccuracy: number; // percentage scopeCreep: number; // percentage deliveryConsistency: number; // percentage } export interface TeamMetrics { memberSatisfaction?: number; collaborationScore?: number; knowledgeSharing?: number; impedimentResolution: number; // average days } // Story estimation and sizing export interface EstimationSession { id: string; storyIds: string[]; participants: string[]; method: 'planning_poker' | 'story_points' | 't_shirt_sizes'; results: EstimationResult[]; date: Date; } export interface EstimationResult { storyId: string; estimates: Record<string, number>; // participant -> estimate finalEstimate: number; confidence: number; // 0-100% notes?: string; } // Definition of Done and acceptance criteria export interface DefinitionOfDone { id: string; title: string; criteria: DoDCriteria[]; applicableFor: string[]; // story types, epics, etc. createdBy: string; createdAt: Date; } export interface DoDCriteria { description: string; required: boolean; category: 'development' | 'testing' | 'documentation' | 'deployment'; verificationMethod?: string; } // Sprint goals and objectives export interface SprintGoal { id: string; sprintId: string; title: string; description: string; success_criteria: string[]; priority: 'primary' | 'secondary'; progress: number; // 0-100% status: 'not_started' | 'in_progress' | 'achieved' | 'at_risk'; } // Release planning export interface Release { id: string; name: string; version: string; targetDate: Date; sprintIds: string[]; epicIds: string[]; goals: string[]; status: 'in_progress' | 'released' | 'cancelled'; releaseNotes?: string; } export interface ReleaseStatus { release: Release; completedEpics: number; totalEpics: number; completedStoryPoints: number; totalStoryPoints: number; onTrack: boolean; risks: string[]; mitigations: string[]; }