@sethdouglasford/claude-flow
Version:
Claude Code Flow - Advanced AI-powered development workflows with SPARC methodology
133 lines • 4.1 kB
TypeScript
/**
* Conflict resolution mechanisms for multi-agent coordination
*/
import { ILogger } from "../core/logger.js";
import { IEventBus } from "../core/event-bus.js";
export interface ResourceConflict {
id: string;
resourceId: string;
agents: string[];
timestamp: Date;
resolved: boolean;
resolution?: ConflictResolution;
}
export interface TaskConflict {
id: string;
taskId: string;
agents: string[];
type: "assignment" | "dependency" | "output";
timestamp: Date;
resolved: boolean;
resolution?: ConflictResolution;
}
export interface ConflictResolution {
type: "priority" | "timestamp" | "vote" | "manual" | "retry";
winner?: string;
losers?: string[];
reason: string;
timestamp: Date;
}
export interface ResolutionContext {
agentPriorities?: Map<string, number>;
requestTimestamps?: Map<string, Date>;
votes?: Map<string, string[]>;
[key: string]: unknown;
}
export interface ConflictResolutionStrategy {
name: string;
resolve(conflict: ResourceConflict | TaskConflict, context: ResolutionContext): ConflictResolution;
}
/**
* Priority-based resolution strategy
*/
export declare class PriorityResolutionStrategy implements ConflictResolutionStrategy {
name: string;
resolve(conflict: ResourceConflict | TaskConflict, context: ResolutionContext): ConflictResolution;
}
/**
* First-come-first-served resolution strategy
*/
export declare class TimestampResolutionStrategy implements ConflictResolutionStrategy {
name: string;
resolve(conflict: ResourceConflict | TaskConflict, context: ResolutionContext): ConflictResolution;
}
/**
* Voting-based resolution strategy (for multi-agent consensus)
*/
export declare class VotingResolutionStrategy implements ConflictResolutionStrategy {
name: string;
resolve(conflict: ResourceConflict | TaskConflict, context: ResolutionContext): ConflictResolution;
}
/**
* Conflict resolution manager
*/
export declare class ConflictResolver {
private logger;
private eventBus;
private strategies;
private conflicts;
private resolutionHistory;
constructor(logger: ILogger, eventBus: IEventBus);
/**
* Register a conflict resolution strategy
*/
registerStrategy(strategy: ConflictResolutionStrategy): void;
/**
* Report a resource conflict
*/
reportResourceConflict(resourceId: string, agents: string[]): ResourceConflict;
/**
* Report a task conflict
*/
reportTaskConflict(taskId: string, agents: string[], type: TaskConflict["type"]): TaskConflict;
/**
* Resolve a conflict using a specific strategy
*/
resolveConflict(conflictId: string, strategyName: string, context: ResolutionContext): Promise<ConflictResolution>;
/**
* Auto-resolve conflicts based on configuration
*/
autoResolve(conflictId: string, preferredStrategy?: string): Promise<ConflictResolution>;
/**
* Get active conflicts
*/
getActiveConflicts(): Array<ResourceConflict | TaskConflict>;
/**
* Get conflict history
*/
getConflictHistory(limit?: number): ConflictResolution[];
/**
* Clear resolved conflicts older than a certain age
*/
cleanupOldConflicts(maxAgeMs: number): number;
/**
* Get conflict statistics
*/
getStats(): Record<string, unknown>;
}
/**
* Optimistic concurrency control for resource updates
*/
export declare class OptimisticLockManager {
private logger;
private versions;
private locks;
constructor(logger: ILogger);
/**
* Acquire an optimistic lock
*/
acquireLock(resourceId: string, agentId: string): number;
/**
* Validate and update with optimistic lock
*/
validateAndUpdate(resourceId: string, agentId: string, expectedVersion: number): boolean;
/**
* Release a lock without updating
*/
releaseLock(resourceId: string, agentId: string): void;
/**
* Clean up stale locks
*/
cleanupStaleLocks(maxAgeMs: number): number;
}
//# sourceMappingURL=conflict-resolution.d.ts.map