claude-flow-tbowman01
Version:
Enterprise-grade AI agent orchestration with ruv-swarm integration (Alpha Release)
228 lines • 6.87 kB
TypeScript
import { EventEmitter } from 'events';
import { Logger } from '../core/logger.js';
import { ConfigManager } from '../core/config.js';
export interface ProjectPhase {
id: string;
name: string;
description: string;
status: 'planned' | 'in-progress' | 'completed' | 'blocked' | 'cancelled';
startDate?: Date;
endDate?: Date;
estimatedDuration: number;
actualDuration?: number;
dependencies: string[];
assignedTeam: string[];
deliverables: string[];
risks: ProjectRisk[];
milestones: ProjectMilestone[];
budget: {
estimated: number;
actual: number;
currency: string;
};
resources: ProjectResource[];
completionPercentage: number;
qualityMetrics: {
testCoverage: number;
codeQuality: number;
documentation: number;
securityScore: number;
};
}
export interface ProjectRisk {
id: string;
description: string;
probability: 'low' | 'medium' | 'high';
impact: 'low' | 'medium' | 'high';
mitigation: string;
status: 'open' | 'mitigated' | 'closed';
assignedTo: string;
createdAt: Date;
updatedAt: Date;
}
export interface ProjectMilestone {
id: string;
name: string;
description: string;
targetDate: Date;
actualDate?: Date;
status: 'pending' | 'achieved' | 'missed' | 'at-risk';
dependencies: string[];
deliverables: string[];
successCriteria: string[];
}
export interface ProjectResource {
id: string;
name: string;
type: 'human' | 'infrastructure' | 'software' | 'hardware';
availability: number;
cost: {
amount: number;
currency: string;
period: 'hour' | 'day' | 'week' | 'month';
};
skills: string[];
allocation: {
phaseId: string;
percentage: number;
startDate: Date;
endDate: Date;
}[];
}
export interface Project {
id: string;
name: string;
description: string;
type: 'web-app' | 'api' | 'microservice' | 'infrastructure' | 'research' | 'migration' | 'custom';
status: 'planning' | 'active' | 'on-hold' | 'completed' | 'cancelled';
priority: 'low' | 'medium' | 'high' | 'critical';
owner: string;
stakeholders: string[];
phases: ProjectPhase[];
budget: {
total: number;
spent: number;
remaining: number;
currency: string;
};
timeline: {
plannedStart: Date;
plannedEnd: Date;
actualStart?: Date;
actualEnd?: Date;
};
tags: string[];
metadata: Record<string, any>;
createdAt: Date;
updatedAt: Date;
auditLog: ProjectAuditEntry[];
collaboration: {
teamMembers: TeamMember[];
communication: CommunicationChannel[];
sharedResources: string[];
};
qualityGates: QualityGate[];
complianceRequirements: ComplianceRequirement[];
}
export interface TeamMember {
id: string;
name: string;
email: string;
role: string;
skills: string[];
availability: number;
permissions: string[];
joinDate: Date;
status: 'active' | 'inactive' | 'on-leave';
}
export interface CommunicationChannel {
id: string;
name: string;
type: 'slack' | 'teams' | 'email' | 'webhook' | 'custom';
configuration: Record<string, any>;
isActive: boolean;
}
export interface QualityGate {
id: string;
name: string;
phase: string;
criteria: {
metric: string;
threshold: number;
operator: '>' | '<' | '>=' | '<=' | '==' | '!=';
}[];
status: 'pending' | 'passed' | 'failed' | 'skipped';
executedAt?: Date;
results: Record<string, number>;
}
export interface ComplianceRequirement {
id: string;
name: string;
framework: string;
description: string;
status: 'not-started' | 'in-progress' | 'compliant' | 'non-compliant';
evidence: string[];
reviewer: string;
reviewDate?: Date;
dueDate: Date;
}
export interface ProjectAuditEntry {
id: string;
timestamp: Date;
userId: string;
action: string;
target: string;
details: Record<string, any>;
ipAddress?: string;
userAgent?: string;
}
export interface ProjectMetrics {
totalProjects: number;
activeProjects: number;
completedProjects: number;
averageProjectDuration: number;
budgetVariance: number;
resourceUtilization: number;
qualityScore: number;
riskScore: number;
teamProductivity: number;
customerSatisfaction: number;
}
export interface ProjectReport {
id: string;
projectId: string;
type: 'status' | 'financial' | 'quality' | 'risk' | 'resource' | 'compliance';
title: string;
summary: string;
details: Record<string, any>;
recommendations: string[];
generatedAt: Date;
generatedBy: string;
format: 'json' | 'pdf' | 'html' | 'csv';
recipients: string[];
}
export declare class ProjectManager extends EventEmitter {
private projects;
private projectsPath;
private logger;
private config;
constructor(projectsPath?: string, logger?: Logger, config?: ConfigManager);
initialize(): Promise<void>;
createProject(projectData: Partial<Project>): Promise<Project>;
updateProject(projectId: string, updates: Partial<Project>): Promise<Project>;
deleteProject(projectId: string, userId?: string): Promise<void>;
getProject(projectId: string): Promise<Project | null>;
listProjects(filters?: {
status?: Project['status'];
type?: Project['type'];
priority?: Project['priority'];
owner?: string;
tags?: string[];
}): Promise<Project[]>;
addPhase(projectId: string, phase: Omit<ProjectPhase, 'id'>): Promise<ProjectPhase>;
updatePhase(projectId: string, phaseId: string, updates: Partial<ProjectPhase>): Promise<ProjectPhase>;
addTeamMember(projectId: string, member: TeamMember): Promise<void>;
removeTeamMember(projectId: string, memberId: string): Promise<void>;
getProjectMetrics(projectId?: string): Promise<ProjectMetrics>;
generateReport(projectId: string, type: ProjectReport['type'], userId?: string): Promise<ProjectReport>;
private loadProjects;
private saveProject;
private addAuditEntry;
private calculateProjectProgress;
private getUpcomingMilestones;
private calculateCostBreakdown;
private projectFinalCost;
private calculateQualityMetrics;
private generateQualityRecommendations;
private getAllRisks;
private generateRiskMatrix;
private generateRiskMitigation;
private getTotalResources;
private calculateResourceAllocation;
private calculateResourceUtilization;
private calculateCapacity;
private calculateComplianceStatus;
private identifyComplianceGaps;
private generateComplianceRecommendations;
}
//# sourceMappingURL=project-manager.d.ts.map