orchestry-mcp
Version:
Orchestry MCP Server for multi-session task management
398 lines • 12.5 kB
TypeScript
/**
* Role-Based Task Management for Orchestry
*
* Manages task assignments based on LLM session roles and expertise
*/
import { DatabaseManager } from '../database-manager.js';
import { Priority } from '../../shared/types.js';
export type LLMRole = 'backend' | 'frontend' | 'fullstack' | 'devops' | 'database' | 'testing' | 'security' | 'ui-ux' | 'architect' | 'product-manager' | 'code-reviewer' | 'documentation';
export declare const ROLE_CAPABILITIES: Record<LLMRole, {
skills: string[];
preferredTasks: string[];
canReview: LLMRole[];
}>;
export declare const PRIORITY_MATRIX: {
taskTypes: {
security: string;
bug: string;
feature: string;
enhancement: string;
documentation: string;
refactor: string;
};
keywords: {
urgent: string;
asap: string;
blocker: string;
critical: string;
important: string;
breaking: string;
crash: string;
security: string;
vulnerability: string;
optimization: string;
'nice-to-have': string;
};
hasDependents: {
many: string;
some: string;
none: null;
};
};
export declare class RoleBasedTaskManager {
private dbManager;
private sessions;
constructor(dbManager: DatabaseManager);
/**
* Register a new LLM session with a role
*/
registerSession(sessionId: string, role: LLMRole, expertise?: string[]): {
sessionId: string;
role: LLMRole;
capabilities: {
skills: string[];
preferredTasks: string[];
canReview: LLMRole[];
};
};
/**
* Automatically assign a task to the best available session
*/
autoAssignTask(taskTitle: string, taskDescription: string, requiredSkills?: string[]): Promise<{
assignedTo: string;
role: LLMRole;
priority: Priority;
reason: string;
}>;
/**
* Determine priority based on content analysis
*/
private determinePriority;
/**
* Get recommended next task for a session based on role
*/
getNextTask(sessionId: string): Promise<{
task: any;
reason: string;
} | null>;
/**
* Load balancing - redistribute tasks if a session becomes unavailable
*/
redistributeTasks(unavailableSessionId: string): Promise<void>;
/**
* Get workload distribution across all sessions
*/
getWorkloadDistribution(): Record<LLMRole, {
sessions: number;
totalLoad: number;
averageLoad: number;
}>;
}
/**
* Enhanced collaboration tools with role-based features
*/
export declare class EnhancedCollaborationTools {
private dbManager;
private taskManager;
constructor(dbManager: DatabaseManager);
getEnhancedTools(): ({
name: string;
description: string;
inputSchema: {
type: string;
properties: {
role: {
type: string;
enum: string[];
description: string;
};
expertise: {
type: string;
items: {
type: string;
};
description: string;
};
sessionName: {
type: string;
description: string;
};
title?: undefined;
description?: undefined;
requiredSkills?: undefined;
explicitPriority?: undefined;
preferredRole?: undefined;
dependencies?: undefined;
estimatedHours?: undefined;
taskType?: undefined;
taskId?: undefined;
assignTo?: undefined;
priority?: undefined;
reason?: undefined;
targetRole?: undefined;
issue?: undefined;
context?: undefined;
newPriority?: undefined;
escalateToRole?: undefined;
};
required: string[];
};
} | {
name: string;
description: string;
inputSchema: {
type: string;
properties: {
title: {
type: string;
description: string;
};
description: {
type: string;
description: string;
};
requiredSkills: {
type: string;
items: {
type: string;
};
description: string;
};
explicitPriority: {
type: string;
enum: string[];
description: string;
};
preferredRole: {
type: string;
enum: string[];
description: string;
};
dependencies: {
type: string;
items: {
type: string;
};
description: string;
};
estimatedHours: {
type: string;
description: string;
};
role?: undefined;
expertise?: undefined;
sessionName?: undefined;
taskType?: undefined;
taskId?: undefined;
assignTo?: undefined;
priority?: undefined;
reason?: undefined;
targetRole?: undefined;
issue?: undefined;
context?: undefined;
newPriority?: undefined;
escalateToRole?: undefined;
};
required: string[];
};
} | {
name: string;
description: string;
inputSchema: {
type: string;
properties: {
taskType: {
type: string;
description: string;
};
role?: undefined;
expertise?: undefined;
sessionName?: undefined;
title?: undefined;
description?: undefined;
requiredSkills?: undefined;
explicitPriority?: undefined;
preferredRole?: undefined;
dependencies?: undefined;
estimatedHours?: undefined;
taskId?: undefined;
assignTo?: undefined;
priority?: undefined;
reason?: undefined;
targetRole?: undefined;
issue?: undefined;
context?: undefined;
newPriority?: undefined;
escalateToRole?: undefined;
};
required?: undefined;
};
} | {
name: string;
description: string;
inputSchema: {
type: string;
properties: {
taskId: {
type: string;
description: string;
};
assignTo: {
type: string;
description: string;
};
priority: {
type: string;
enum: string[];
description: string;
};
reason: {
type: string;
description: string;
};
role?: undefined;
expertise?: undefined;
sessionName?: undefined;
title?: undefined;
description?: undefined;
requiredSkills?: undefined;
explicitPriority?: undefined;
preferredRole?: undefined;
dependencies?: undefined;
estimatedHours?: undefined;
taskType?: undefined;
targetRole?: undefined;
issue?: undefined;
context?: undefined;
newPriority?: undefined;
escalateToRole?: undefined;
};
required: string[];
};
} | {
name: string;
description: string;
inputSchema: {
type: string;
properties: {
role?: undefined;
expertise?: undefined;
sessionName?: undefined;
title?: undefined;
description?: undefined;
requiredSkills?: undefined;
explicitPriority?: undefined;
preferredRole?: undefined;
dependencies?: undefined;
estimatedHours?: undefined;
taskType?: undefined;
taskId?: undefined;
assignTo?: undefined;
priority?: undefined;
reason?: undefined;
targetRole?: undefined;
issue?: undefined;
context?: undefined;
newPriority?: undefined;
escalateToRole?: undefined;
};
required?: undefined;
};
} | {
name: string;
description: string;
inputSchema: {
type: string;
properties: {
targetRole: {
type: string;
enum: string[];
description: string;
};
issue: {
type: string;
description: string;
};
context: {
type: string;
description: string;
};
priority: {
type: string;
enum: string[];
description: string;
};
role?: undefined;
expertise?: undefined;
sessionName?: undefined;
title?: undefined;
description?: undefined;
requiredSkills?: undefined;
explicitPriority?: undefined;
preferredRole?: undefined;
dependencies?: undefined;
estimatedHours?: undefined;
taskType?: undefined;
taskId?: undefined;
assignTo?: undefined;
reason?: undefined;
newPriority?: undefined;
escalateToRole?: undefined;
};
required: string[];
};
} | {
name: string;
description: string;
inputSchema: {
type: string;
properties: {
taskId: {
type: string;
description: string;
};
newPriority: {
type: string;
enum: string[];
description: string;
};
escalateToRole: {
type: string;
enum: string[];
description: string;
};
reason: {
type: string;
description: string;
};
role?: undefined;
expertise?: undefined;
sessionName?: undefined;
title?: undefined;
description?: undefined;
requiredSkills?: undefined;
explicitPriority?: undefined;
preferredRole?: undefined;
dependencies?: undefined;
estimatedHours?: undefined;
taskType?: undefined;
assignTo?: undefined;
priority?: undefined;
targetRole?: undefined;
issue?: undefined;
context?: undefined;
};
required: string[];
};
})[];
}
/**
* Priority queue for task management
*/
export declare class TaskPriorityQueue {
private queues;
addTask(task: any, priority: Priority): void;
getNextTask(): any | null;
getQueueStatus(): Record<Priority, number>;
}
//# sourceMappingURL=role-based-collaboration.d.ts.map