UNPKG

extension-develop

Version:
72 lines (71 loc) 2.45 kB
import { DevOptions } from '../../../develop-lib/config-types'; export interface InstanceInfo { instanceId: string; processId: number; port: number; webSocketPort: number; browser: DevOptions['browser']; extensionId?: string; managerExtensionId: string; profilePath: string; projectPath: string; startTime: number; status: 'running' | 'terminated' | 'error'; } export interface InstanceRegistry { instances: Record<string, InstanceInfo>; lastCleanup: number; } export declare class InstanceManager { private readonly registryPath; private readonly basePort; private readonly baseWebSocketPort; private readonly cleanupInterval; private healthChecks; constructor(projectPath: string, basePort?: number, baseWebSocketPort?: number); private getDataDirectory; private generateInstanceId; private generateManagerExtensionId; private ensureRegistryDir; private loadRegistry; private saveRegistry; private isPortAvailable; /** * Smart port allocation that considers existing instances */ private allocateSmartPorts; private findAvailableWebSocketPort; private cleanupTerminatedInstances; /** * Check if a process is still running */ private isProcessRunning; /** * Enhanced process monitoring for AI usage */ private monitorProcessHealth; private arePortsInUse; /** * Force cleanup all processes for this project */ forceCleanupProjectProcesses(projectPath: string): Promise<void>; createInstance(browser: DevOptions['browser'], projectPath: string, requestedPort?: number): Promise<InstanceInfo>; updateInstance(instanceId: string, updates: Partial<InstanceInfo>): Promise<void>; terminateInstance(instanceId: string): Promise<void>; getRunningInstances(): Promise<InstanceInfo[]>; getInstance(instanceId: string): Promise<InstanceInfo | null>; isInstanceRunning(instanceId: string): Promise<boolean>; getInstanceByPort(port: number): Promise<InstanceInfo | null>; getInstanceByWebSocketPort(webSocketPort: number): Promise<InstanceInfo | null>; cleanupAllInstances(): Promise<void>; /** * Force cleanup of all orphaned instances */ forceCleanupOrphanedInstances(): Promise<void>; getStats(): Promise<{ total: number; running: number; terminated: number; error: number; }>; }