extension-develop
Version:
The develop step of Extension.js
72 lines (71 loc) • 2.45 kB
TypeScript
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;
}>;
}