ruv-swarm
Version:
High-performance neural network swarm orchestration in WebAssembly
164 lines (142 loc) • 3.54 kB
text/typescript
/**
* Core types and interfaces for RuvSwarm
*/
export interface SwarmOptions {
topology?: SwarmTopology;
maxAgents?: number;
connectionDensity?: number;
syncInterval?: number;
wasmPath?: string;
}
export type SwarmTopology = 'mesh' | 'hierarchical' | 'distributed' | 'centralized' | 'hybrid';
export interface AgentConfig {
id: string;
type: AgentType;
cognitiveProfile?: CognitiveProfile;
capabilities?: string[];
memory?: AgentMemory;
}
export type AgentType =
| 'researcher'
| 'coder'
| 'analyst'
| 'architect'
| 'reviewer'
| 'debugger'
| 'tester'
| 'documenter'
| 'optimizer'
| 'custom';
export interface CognitiveProfile {
analytical: number;
creative: number;
systematic: number;
intuitive: number;
collaborative: number;
independent: number;
}
export interface AgentMemory {
shortTerm: Map<string, any>;
longTerm: Map<string, any>;
episodic: EpisodicMemory[];
}
export interface EpisodicMemory {
timestamp: number;
context: string;
data: any;
importance: number;
}
export interface Task {
id: string;
description: string;
priority: TaskPriority;
dependencies?: string[];
assignedAgents?: string[];
status: TaskStatus;
result?: any;
error?: Error;
}
export type TaskPriority = 'low' | 'medium' | 'high' | 'critical';
export type TaskStatus = 'pending' | 'assigned' | 'in_progress' | 'completed' | 'failed';
export interface SwarmState {
agents: Map<string, Agent>;
tasks: Map<string, Task>;
topology: SwarmTopology;
connections: Connection[];
metrics: SwarmMetrics;
}
export interface Connection {
from: string;
to: string;
weight: number;
type: ConnectionType;
}
export type ConnectionType = 'data' | 'control' | 'feedback' | 'coordination';
export interface SwarmMetrics {
totalTasks: number;
completedTasks: number;
failedTasks: number;
averageCompletionTime: number;
agentUtilization: Map<string, number>;
throughput: number;
}
export interface Agent {
id: string;
config: AgentConfig;
state: AgentState;
connections: string[];
execute(task: Task): Promise<any>;
communicate(message: Message): Promise<void>;
update(state: Partial<AgentState>): void;
}
export interface AgentState {
status: AgentStatus;
currentTask?: string;
load: number;
performance: AgentPerformance;
}
export type AgentStatus = 'idle' | 'busy' | 'error' | 'offline';
export interface AgentPerformance {
tasksCompleted: number;
tasksFailed: number;
averageExecutionTime: number;
successRate: number;
}
export interface Message {
id: string;
from: string;
to: string | string[];
type: MessageType;
payload: any;
timestamp: number;
}
export type MessageType =
| 'task_assignment'
| 'task_result'
| 'status_update'
| 'coordination'
| 'knowledge_share'
| 'error';
export interface SwarmEventEmitter {
on(event: SwarmEvent, handler: (data: any) => void): void;
off(event: SwarmEvent, handler: (data: any) => void): void;
emit(event: SwarmEvent, data: any): void;
}
export type SwarmEvent =
| 'agent:added'
| 'agent:removed'
| 'agent:status_changed'
| 'task:created'
| 'task:assigned'
| 'task:completed'
| 'task:failed'
| 'swarm:topology_changed'
| 'swarm:error';
export interface WasmModule {
init(): Promise<void>;
createSwarm(options: SwarmOptions): number;
addAgent(swarmId: number, config: AgentConfig): number;
assignTask(swarmId: number, task: Task): void;
getState(swarmId: number): SwarmState;
destroy(swarmId: number): void;
}