@veas/protocol
Version:
Universal protocol for knowledge management and project tracking systems - enabling seamless interoperability between platforms and AI assistants
132 lines • 3.48 kB
TypeScript
import type { Entity } from '../common/index.js';
export interface Project extends Entity {
name: string;
key: string;
description?: string;
status: ProjectStatus;
visibility: ProjectVisibility;
ownerId: string;
organizationId?: string;
metadata?: Record<string, unknown>;
}
export type ProjectStatus = 'active' | 'archived' | 'draft';
export type ProjectVisibility = 'public' | 'private' | 'organization';
export interface CreateProjectData {
name: string;
key?: string;
description?: string;
status?: ProjectStatus;
visibility?: ProjectVisibility;
templateId?: string;
metadata?: Record<string, unknown>;
}
export interface UpdateProjectData {
name?: string;
description?: string;
status?: ProjectStatus;
visibility?: ProjectVisibility;
metadata?: Record<string, unknown>;
}
export interface Issue extends Entity {
projectId: string;
key: string;
title: string;
description?: string;
type: IssueType;
status: IssueStatus;
priority: IssuePriority;
assigneeId?: string;
reporterId: string;
parentId?: string;
labels?: string[];
estimate?: number;
timeSpent?: number;
dueDate?: Date;
metadata?: Record<string, unknown>;
}
export type IssueType = 'epic' | 'story' | 'task' | 'bug' | 'feature' | 'custom';
export type IssueStatus = 'todo' | 'in_progress' | 'done' | 'cancelled' | 'custom';
export type IssuePriority = 'critical' | 'high' | 'medium' | 'low';
export interface CreateIssueData {
projectId: string;
title: string;
description?: string;
type: IssueType;
status?: IssueStatus;
priority?: IssuePriority;
assigneeId?: string;
parentId?: string;
labels?: string[];
estimate?: number;
dueDate?: Date;
metadata?: Record<string, unknown>;
}
export interface UpdateIssueData {
title?: string;
description?: string;
type?: IssueType;
status?: IssueStatus;
priority?: IssuePriority;
assigneeId?: string;
labels?: string[];
estimate?: number;
timeSpent?: number;
dueDate?: Date;
metadata?: Record<string, unknown>;
}
export interface Sprint extends Entity {
projectId: string;
name: string;
goal?: string;
startDate: Date;
endDate: Date;
status: SprintStatus;
}
export type SprintStatus = 'planned' | 'active' | 'completed' | 'cancelled';
export interface CreateSprintData {
projectId: string;
name: string;
goal?: string;
startDate: Date;
endDate: Date;
}
export interface UpdateSprintData {
name?: string;
goal?: string;
startDate?: Date;
endDate?: Date;
status?: SprintStatus;
}
export interface Comment extends Entity {
issueId: string;
authorId: string;
content: string;
editedAt?: Date;
}
export interface CreateCommentData {
issueId: string;
content: string;
}
export interface UpdateCommentData {
content: string;
}
export interface ProjectFilters {
status?: ProjectStatus;
visibility?: ProjectVisibility;
ownerId?: string;
organizationId?: string;
search?: string;
}
export interface IssueFilters {
projectId?: string;
type?: IssueType | IssueType[];
status?: IssueStatus | IssueStatus[];
priority?: IssuePriority | IssuePriority[];
assigneeId?: string;
reporterId?: string;
parentId?: string;
labels?: string[];
search?: string;
includeSubtasks?: boolean;
}
//# sourceMappingURL=types.d.ts.map