@bobmatnyc/claude-pm-portfolio-manager
Version:
Claude PM Portfolio Management Dashboard - React-based monitoring and reporting for Claude PM managed projects
134 lines (133 loc) • 3.91 kB
TypeScript
export interface Agent {
id: string;
name: string;
role: AgentRole;
specializations: string[];
status: AgentStatus;
lastActivity: Date;
currentAssignments: Assignment[];
performanceMetrics: PerformanceMetrics;
collaborationPatterns: CollaborationPattern[];
availability: Availability;
}
export interface AgentRole {
type: AgentRoleType;
description: string;
capabilities: string[];
responsibilities: string[];
requiredSkills: string[];
authority: AuthorityLevel;
}
export type AgentRoleType = 'architect' | 'engineer' | 'qa' | 'security' | 'devops' | 'research' | 'data' | 'performance' | 'documentation' | 'integration' | 'code-review' | 'orchestrator';
export type AgentStatus = 'active' | 'idle' | 'working' | 'offline' | 'maintenance' | 'overloaded';
export type AuthorityLevel = 'low' | 'medium' | 'high' | 'critical';
export interface Assignment {
id: string;
ticketId: string;
ticketTitle: string;
ticketType: 'epic' | 'issue' | 'task' | 'pr';
priority: 'critical' | 'high' | 'medium' | 'low';
startDate: Date;
estimatedCompletion?: Date;
progress: number;
status: 'pending' | 'in_progress' | 'blocked' | 'completed';
timeSpent: number;
blockers?: string[];
}
export interface PerformanceMetrics {
completionRate: number;
averageTaskTime: number;
qualityScore: number;
collaborationScore: number;
responsiveness: number;
ticketsCompleted: number;
ticketsInProgress: number;
ticketsPending: number;
uptime: number;
efficiency: number;
}
export interface CollaborationPattern {
agentId: string;
agentName: string;
agentRole: AgentRoleType;
collaborationType: 'handoff' | 'parallel' | 'review' | 'support';
frequency: number;
successRate: number;
lastCollaboration: Date;
}
export interface Availability {
isAvailable: boolean;
capacity: number;
nextAvailableSlot?: Date;
scheduledMaintenance?: Date;
workingHours: {
start: string;
end: string;
timezone: string;
};
}
export interface AgentActivity {
id: string;
agentId: string;
timestamp: Date;
type: ActivityType;
description: string;
ticketId?: string;
duration?: number;
metadata?: Record<string, any>;
}
export type ActivityType = 'task_started' | 'task_completed' | 'task_blocked' | 'ticket_assigned' | 'ticket_unassigned' | 'collaboration_started' | 'collaboration_ended' | 'status_changed' | 'performance_updated' | 'maintenance_started' | 'maintenance_ended';
export interface AgentRegistry {
agents: Agent[];
totalAgents: number;
activeAgents: number;
workingAgents: number;
idleAgents: number;
offlineAgents: number;
lastUpdated: Date;
}
export interface AgentAssignmentRequest {
ticketId: string;
requiredRole: AgentRoleType;
requiredSkills?: string[];
priority: 'critical' | 'high' | 'medium' | 'low';
estimatedDuration?: number;
deadline?: Date;
preferredAgentId?: string;
}
export interface AgentAssignmentResponse {
success: boolean;
assignedAgent?: Agent;
estimatedStartTime?: Date;
estimatedCompletion?: Date;
alternativeAgents?: Agent[];
reason?: string;
}
export interface AgentCapacityInfo {
agentId: string;
currentLoad: number;
maxCapacity: number;
availableCapacity: number;
queuedTasks: number;
estimatedAvailability: Date;
}
export interface AgentSkillMatrix {
agentId: string;
skills: {
[skillName: string]: {
level: number;
experience: number;
certifications?: string[];
lastUsed: Date;
};
};
}
export interface AgentNetworkStatus {
agentId: string;
isOnline: boolean;
latency: number;
lastHeartbeat: Date;
version: string;
memoryUsage: number;
cpuUsage: number;
}