@sirmrmarty/n8n-nodes-tmux-orchestrator
Version:
n8n nodes for orchestrating Claude AI agents through tmux sessions
64 lines (63 loc) • 2.29 kB
TypeScript
export interface ManagedResource {
id: string;
type: 'interval' | 'timeout' | 'process' | 'custom';
resource: any;
cleanup: () => void | Promise<void>;
createdAt: number;
description?: string;
}
export interface ResourceManagerOptions {
autoCleanupOnExit?: boolean;
maxAge?: number;
maxResources?: number;
}
export declare class ResourceManager {
private static instance;
private resources;
private cleanupInterval?;
private options;
private constructor();
static getInstance(options?: ResourceManagerOptions): ResourceManager;
createInterval(callback: () => void | Promise<void>, delay: number, description?: string): {
id: string;
intervalId: NodeJS.Timeout;
};
createTimeout(callback: () => void | Promise<void>, delay: number, description?: string): {
id: string;
timeoutId: NodeJS.Timeout;
};
registerResource(type: 'process' | 'custom', resource: any, cleanup: () => void | Promise<void>, description?: string): string;
cleanup(id: string): Promise<boolean>;
cleanupByType(type: ManagedResource['type']): Promise<number>;
cleanupAll(): Promise<number>;
getStats(): {
total: number;
byType: Record<string, number>;
oldestAge: number;
averageAge: number;
};
listResources(): ManagedResource[];
createScope(description?: string): ResourceScope;
private generateId;
private setupExitHandlers;
private performPeriodicCleanup;
private enforceResourceLimits;
}
export declare class ResourceScope {
private resourceIds;
private manager;
private description?;
constructor(manager: ResourceManager, description?: string);
createInterval(callback: () => void | Promise<void>, delay: number, description?: string): {
id: string;
intervalId: NodeJS.Timeout;
};
createTimeout(callback: () => void | Promise<void>, delay: number, description?: string): {
id: string;
timeoutId: NodeJS.Timeout;
};
registerResource(type: 'process' | 'custom', resource: any, cleanup: () => void | Promise<void>, description?: string): string;
cleanup(): Promise<number>;
getResourceCount(): number;
}
export declare const resourceManager: ResourceManager;