@boundless-oss/atlas
Version:
Atlas - MCP Server for comprehensive startup project management
114 lines (105 loc) • 2.56 kB
text/typescript
export interface Issue {
id: string;
type: 'bug' | 'feature' | 'enhancement' | 'documentation' | 'question';
title: string;
description: string;
status: 'open' | 'in-progress' | 'resolved' | 'closed' | 'wont-fix';
priority: 'critical' | 'high' | 'medium' | 'low';
createdAt: string;
createdBy: string;
updatedAt: string;
assignedTo?: string;
labels: string[];
affectedModules: string[];
relatedIssues: string[];
resolution?: string;
closedAt?: string;
attachments: Attachment[];
comments: Comment[];
metadata?: Record<string, any>;
}
export interface Comment {
id: string;
issueId: string;
author: string;
content: string;
createdAt: string;
editedAt?: string;
type: 'comment' | 'status-change' | 'assignment' | 'resolution';
}
export interface Attachment {
id: string;
filename: string;
path: string;
size: number;
mimeType: string;
uploadedAt: string;
uploadedBy: string;
}
export interface IssueFilter {
type?: Issue['type'][];
status?: Issue['status'][];
priority?: Issue['priority'][];
assignedTo?: string;
createdBy?: string;
labels?: string[];
affectedModules?: string[];
dateRange?: {
start: string;
end: string;
};
searchQuery?: string;
}
export interface IssueStats {
total: number;
byType: Record<Issue['type'], number>;
byStatus: Record<Issue['status'], number>;
byPriority: Record<Issue['priority'], number>;
averageResolutionTime: number;
oldestOpenIssue?: Issue;
mostActiveModule?: string;
trends: {
period: 'daily' | 'weekly' | 'monthly';
opened: number[];
closed: number[];
};
}
export interface IssueTemplate {
type: Issue['type'];
name: string;
description: string;
sections: TemplateSection[];
defaultLabels: string[];
defaultPriority: Issue['priority'];
}
export interface TemplateSection {
title: string;
prompt: string;
required: boolean;
type: 'text' | 'multiline' | 'checklist' | 'selection';
options?: string[];
}
export interface Milestone {
id: string;
title: string;
description: string;
dueDate: string;
status: 'active' | 'completed' | 'overdue';
issues: string[];
progress: {
total: number;
completed: number;
percentage: number;
};
}
export interface IssueWorkflow {
fromStatus: Issue['status'];
toStatus: Issue['status'];
requiresComment: boolean;
requiresAssignee: boolean;
autoActions: WorkflowAction[];
}
export interface WorkflowAction {
type: 'notify' | 'label' | 'assign' | 'close-related';
config: Record<string, any>;
}