vibe-coder-mcp
Version:
Production-ready MCP server with complete agent integration, multi-transport support, and comprehensive development automation tools for AI-assisted workflows.
105 lines • 3.21 kB
TypeScript
export interface LockInfo {
id: string;
resource: string;
owner: string;
sessionId?: string;
operation: 'read' | 'write' | 'execute';
acquiredAt: Date;
expiresAt: Date;
metadata?: Record<string, unknown>;
}
export interface LockAcquisitionResult {
success: boolean;
lock?: LockInfo;
error?: string;
waitTime?: number;
conflictingLock?: LockInfo;
}
export interface DeadlockDetectionResult {
hasDeadlock: boolean;
cycle?: string[];
affectedLocks?: LockInfo[];
resolutionStrategy?: 'timeout' | 'priority' | 'random';
}
export interface ConcurrentAccessConfig {
lockDirectory: string;
defaultLockTimeout: number;
maxLockTimeout: number;
deadlockDetectionInterval: number;
lockCleanupInterval: number;
maxRetryAttempts: number;
retryDelayMs: number;
enableDeadlockDetection: boolean;
enableLockAuditTrail: boolean;
}
export interface LockAuditEvent {
id: string;
type: 'acquire' | 'release' | 'timeout' | 'deadlock' | 'conflict';
lockId: string;
resource: string;
owner: string;
sessionId?: string;
timestamp: Date;
duration?: number;
metadata?: Record<string, unknown>;
}
export declare class ConcurrentAccessManager {
private static instance;
private config;
private userConfig;
private initialized;
private activeLocks;
private lockWaiters;
private auditEvents;
private deadlockDetectionTimer;
private cleanupTimer;
private lockCounter;
private auditCounter;
private constructor();
private getConfig;
private ensureInitialized;
static getInstance(config?: Partial<ConcurrentAccessConfig>): ConcurrentAccessManager;
static resetInstance(): void;
static hasInstance(): boolean;
acquireLock(resource: string, owner: string, operation?: 'read' | 'write' | 'execute', options?: {
timeout?: number;
sessionId?: string;
metadata?: Record<string, unknown>;
waitForRelease?: boolean;
}): Promise<LockAcquisitionResult>;
releaseLock(lockId: string): Promise<boolean>;
private atomicLockAcquisition;
private waitForLockRelease;
private findConflictingLock;
private isLockExpired;
private notifyWaiters;
private removeWaiter;
private getOSAwareLockDirectory;
private initializeLockDirectory;
private startBackgroundTasks;
private detectDeadlocks;
private hasCycle;
private findLockHolder;
private cleanupExpiredLocks;
private cleanupStaleLocks;
private readLockFile;
private removeFileLock;
private sanitizeResourceName;
private logAuditEvent;
getActiveLocks(): LockInfo[];
getLockStatistics(): {
activeLocks: number;
expiredLocks: number;
waitingRequests: number;
totalAcquisitions: number;
totalReleases: number;
totalTimeouts: number;
totalDeadlocks: number;
averageLockDuration: number;
};
clearAllLocks(): Promise<void>;
dispose(): Promise<void>;
shutdown(): Promise<void>;
}
export declare function getConcurrentAccessManager(): ConcurrentAccessManager;
//# sourceMappingURL=concurrent-access.d.ts.map