claude-flow-tbowman01
Version:
Enterprise-grade AI agent orchestration with ruv-swarm integration (Alpha Release)
512 lines • 13.1 kB
TypeScript
/**
* Core type definitions for Claude-Flow
*/
export interface LoggingConfig {
level: 'debug' | 'info' | 'warn' | 'error';
format: 'text' | 'json';
destination: 'console' | 'file' | 'both';
file?: {
path: string;
maxSize: number;
maxFiles: number;
};
enableTimestamps?: boolean;
enableContext?: boolean;
}
export interface OrchestratorMetrics {
uptime: number;
totalAgents: number;
activeAgents: number;
totalTasks: number;
completedTasks: number;
failedTasks: number;
queuedTasks: number;
avgTaskDuration: number;
memoryUsage: {
rss: number;
heapUsed: number;
heapTotal: number;
external: number;
arrayBuffers: number;
};
cpuUsage: {
user: number;
system: number;
};
timestamp: Date;
}
export interface AgentProfile {
id: string;
name: string;
type: 'coordinator' | 'researcher' | 'implementer' | 'analyst' | 'custom';
capabilities: string[];
systemPrompt: string;
maxConcurrentTasks: number;
priority: number;
environment?: Record<string, string>;
workingDirectory?: string;
shell?: string;
metadata?: Record<string, unknown>;
}
export interface AgentSession {
id: string;
agentId: string;
terminalId: string;
startTime: Date;
endTime?: Date;
status: 'active' | 'idle' | 'terminated' | 'error';
lastActivity: Date;
memoryBankId: string;
}
export interface Task {
id: string;
type: string;
description: string;
priority: number;
dependencies: string[];
assignedAgent?: string;
status: TaskStatus;
input: Record<string, unknown>;
output?: Record<string, unknown>;
error?: Error;
createdAt: Date;
startedAt?: Date;
completedAt?: Date;
metadata?: Record<string, unknown>;
}
export type TaskStatus = 'pending' | 'queued' | 'assigned' | 'running' | 'completed' | 'failed' | 'cancelled';
export interface MemoryEntry {
id: string;
agentId: string;
sessionId: string;
type: 'observation' | 'insight' | 'decision' | 'artifact' | 'error';
content: string;
context: Record<string, unknown>;
timestamp: Date;
tags: string[];
version: number;
parentId?: string;
metadata?: Record<string, unknown>;
}
export interface MemoryQuery {
agentId?: string;
sessionId?: string;
type?: MemoryEntry['type'];
tags?: string[];
startTime?: Date;
endTime?: Date;
search?: string;
limit?: number;
offset?: number;
namespace?: string;
}
export declare enum SystemEvents {
AGENT_SPAWNED = "agent:spawned",
AGENT_TERMINATED = "agent:terminated",
AGENT_ERROR = "agent:error",
AGENT_IDLE = "agent:idle",
AGENT_ACTIVE = "agent:active",
TASK_CREATED = "task:created",
TASK_ASSIGNED = "task:assigned",
TASK_STARTED = "task:started",
TASK_COMPLETED = "task:completed",
TASK_FAILED = "task:failed",
TASK_CANCELLED = "task:cancelled",
MEMORY_CREATED = "memory:created",
MEMORY_UPDATED = "memory:updated",
MEMORY_DELETED = "memory:deleted",
MEMORY_SYNCED = "memory:synced",
SYSTEM_READY = "system:ready",
SYSTEM_SHUTDOWN = "system:shutdown",
SYSTEM_ERROR = "system:error",
SYSTEM_HEALTHCHECK = "system:healthcheck",
RESOURCE_ACQUIRED = "resource:acquired",
RESOURCE_RELEASED = "resource:released",
DEADLOCK_DETECTED = "deadlock:detected",
MESSAGE_SENT = "message:sent",
MESSAGE_RECEIVED = "message:received"
}
export interface EventMap extends Record<string, unknown> {
[SystemEvents.AGENT_SPAWNED]: {
agentId: string;
profile: AgentProfile;
sessionId: string;
};
[SystemEvents.AGENT_TERMINATED]: {
agentId: string;
reason: string;
};
[SystemEvents.AGENT_ERROR]: {
agentId: string;
error: Error;
};
[SystemEvents.AGENT_IDLE]: {
agentId: string;
};
[SystemEvents.AGENT_ACTIVE]: {
agentId: string;
taskId: string;
};
[SystemEvents.TASK_CREATED]: {
task: Task;
};
[SystemEvents.TASK_ASSIGNED]: {
taskId: string;
agentId: string;
};
[SystemEvents.TASK_STARTED]: {
taskId: string;
agentId: string;
};
[SystemEvents.TASK_COMPLETED]: {
taskId: string;
result: unknown;
};
[SystemEvents.TASK_FAILED]: {
taskId: string;
error: Error;
};
[SystemEvents.TASK_CANCELLED]: {
taskId: string;
reason: string;
};
[SystemEvents.MEMORY_CREATED]: {
entry: MemoryEntry;
};
[SystemEvents.MEMORY_UPDATED]: {
entry: MemoryEntry;
previousVersion: number;
};
[SystemEvents.MEMORY_DELETED]: {
entryId: string;
};
[SystemEvents.MEMORY_SYNCED]: {
entries: MemoryEntry[];
};
[SystemEvents.SYSTEM_READY]: {
timestamp: Date;
};
[SystemEvents.SYSTEM_SHUTDOWN]: {
reason: string;
};
[SystemEvents.SYSTEM_ERROR]: {
error: Error;
component: string;
};
[SystemEvents.SYSTEM_HEALTHCHECK]: {
status: HealthStatus;
};
[SystemEvents.RESOURCE_ACQUIRED]: {
resourceId: string;
agentId: string;
};
[SystemEvents.RESOURCE_RELEASED]: {
resourceId: string;
agentId: string;
};
[SystemEvents.DEADLOCK_DETECTED]: {
agents: string[];
resources: string[];
};
[SystemEvents.MESSAGE_SENT]: {
from: string;
to: string;
message: Message;
};
[SystemEvents.MESSAGE_RECEIVED]: {
from: string;
to: string;
message: Message;
};
'metrics:collected': OrchestratorMetrics;
}
export interface Config {
orchestrator: OrchestratorConfig;
terminal: TerminalConfig;
memory: MemoryConfig;
coordination: CoordinationConfig;
mcp: MCPConfig;
logging: LoggingConfig;
credentials?: CredentialsConfig;
security?: SecurityConfig;
}
export interface OrchestratorConfig {
maxConcurrentAgents: number;
taskQueueSize: number;
healthCheckInterval: number;
shutdownTimeout: number;
maintenanceInterval?: number;
metricsInterval?: number;
persistSessions?: boolean;
dataDir?: string;
sessionRetentionMs?: number;
taskHistoryRetentionMs?: number;
taskMaxRetries?: number;
}
export interface TerminalConfig {
type: 'vscode' | 'native' | 'auto';
poolSize: number;
recycleAfter: number;
healthCheckInterval: number;
commandTimeout: number;
}
export interface MemoryConfig {
backend: 'sqlite' | 'markdown' | 'hybrid';
cacheSizeMB: number;
syncInterval: number;
conflictResolution: 'last-write' | 'crdt' | 'manual';
retentionDays: number;
sqlitePath?: string;
markdownDir?: string;
}
export interface CoordinationConfig {
maxRetries: number;
retryDelay: number;
deadlockDetection: boolean;
resourceTimeout: number;
messageTimeout: number;
}
export interface MCPConfig {
transport: 'stdio' | 'http' | 'websocket';
host?: string;
port?: number;
tlsEnabled?: boolean;
authToken?: string;
auth?: MCPAuthConfig;
loadBalancer?: MCPLoadBalancerConfig;
sessionTimeout?: number;
maxSessions?: number;
enableMetrics?: boolean;
corsEnabled?: boolean;
corsOrigins?: string[];
}
export interface LoggingConfig {
level: 'debug' | 'info' | 'warn' | 'error';
format: 'json' | 'text';
destination: 'console' | 'file' | 'both';
filePath?: string;
maxFileSize?: number;
maxFiles?: number;
}
export interface HealthStatus {
status: 'healthy' | 'degraded' | 'unhealthy';
components: Record<string, ComponentHealth>;
timestamp: Date;
}
export interface ComponentHealth {
name: string;
status: 'healthy' | 'degraded' | 'unhealthy';
lastCheck: Date;
error?: string;
metrics?: Record<string, number>;
}
export interface Message {
id: string;
type: string;
payload: unknown;
timestamp: Date;
priority: number;
expiry?: Date;
}
export interface Resource {
id: string;
type: string;
owner?: string;
locked: boolean;
lockedBy?: string;
lockedAt?: Date;
metadata?: Record<string, unknown>;
}
export interface MCPProtocolVersion {
major: number;
minor: number;
patch: number;
}
export interface MCPCapabilities {
logging?: {
level?: 'debug' | 'info' | 'warn' | 'error';
};
prompts?: {
listChanged?: boolean;
};
resources?: {
listChanged?: boolean;
subscribe?: boolean;
};
tools?: {
listChanged?: boolean;
};
sampling?: Record<string, unknown>;
}
export interface MCPInitializeParams {
protocolVersion: MCPProtocolVersion;
capabilities: MCPCapabilities;
clientInfo: {
name: string;
version: string;
};
}
export interface MCPInitializeResult {
protocolVersion: MCPProtocolVersion;
capabilities: MCPCapabilities;
serverInfo: {
name: string;
version: string;
};
instructions?: string;
}
export interface MCPTool {
name: string;
description: string;
inputSchema: Record<string, unknown>;
handler: (input: unknown, context?: MCPContext) => Promise<unknown>;
}
export interface MCPPrompt {
name: string;
description?: string;
arguments?: Array<{
name: string;
description?: string;
required?: boolean;
}>;
}
export interface MCPResource {
uri: string;
name: string;
description?: string;
mimeType?: string;
}
export interface MCPRequest {
jsonrpc: '2.0';
id: string | number;
method: string;
params?: unknown;
}
export interface MCPResponse {
jsonrpc: '2.0';
id: string | number;
result?: unknown;
error?: MCPError;
}
export interface MCPNotification {
jsonrpc: '2.0';
method: string;
params?: unknown;
}
export interface MCPError {
code: number;
message: string;
data?: unknown;
}
export interface MCPToolCall {
name: string;
arguments?: Record<string, unknown>;
}
export interface MCPToolResult {
content: Array<{
type: 'text' | 'image' | 'resource';
text?: string;
data?: string;
mimeType?: string;
}>;
isError?: boolean;
}
export interface MCPLogEntry {
level: 'debug' | 'info' | 'warn' | 'error';
data?: unknown;
logger?: string;
}
export interface MCPSession {
id: string;
clientInfo: {
name: string;
version: string;
};
protocolVersion: MCPProtocolVersion;
capabilities: MCPCapabilities;
isInitialized: boolean;
createdAt: Date;
lastActivity: Date;
transport: 'stdio' | 'http' | 'websocket';
authenticated: boolean;
authData?: {
token?: string;
user?: string;
permissions?: string[];
};
}
export interface MCPAuthConfig {
enabled: boolean;
method: 'token' | 'basic' | 'oauth';
tokens?: string[];
users?: Array<{
username: string;
password: string;
permissions: string[];
roles?: string[];
}>;
jwtSecret?: string;
sessionTimeout?: number;
}
export interface MCPLoadBalancerConfig {
enabled: boolean;
strategy: 'round-robin' | 'least-connections' | 'weighted';
maxRequestsPerSecond: number;
healthCheckInterval: number;
circuitBreakerThreshold: number;
}
export interface MCPMetrics {
totalRequests: number;
successfulRequests: number;
failedRequests: number;
averageResponseTime: number;
activeSessions: number;
toolInvocations: Record<string, number>;
errors: Record<string, number>;
lastReset: Date;
}
export interface ILogger {
debug(message: string, meta?: unknown): void;
info(message: string, meta?: unknown): void;
warn(message: string, meta?: unknown): void;
error(message: string, error?: unknown): void;
configure(config: LoggingConfig): Promise<void>;
}
export interface IEventBus {
emit(event: string, data?: unknown): void;
on(event: string, handler: (data: unknown) => void): void;
off(event: string, handler: (data: unknown) => void): void;
once(event: string, handler: (data: unknown) => void): void;
}
export interface Terminal {
id: string;
pid?: number;
type: 'vscode' | 'native';
status: 'active' | 'idle' | 'dead';
}
export interface TerminalCommand {
command: string;
args?: string[];
env?: Record<string, string>;
cwd?: string;
timeout?: number;
}
export interface MCPContext {
sessionId: string;
agentId?: string;
logger: ILogger;
}
export interface CredentialsConfig {
apiKey?: string;
token?: string;
password?: string;
secret?: string;
[key: string]: string | undefined;
}
export interface SecurityConfig {
encryptionEnabled: boolean;
auditLogging: boolean;
maskSensitiveValues: boolean;
allowEnvironmentOverrides: boolean;
}
//# sourceMappingURL=types.d.ts.map