/** * Server Registry - tracks dev servers registered with the gateway * * Identity model: * Project = directory path (persistent scope) * Server = PID string (ephemeral instance, belongs to a project) * Browser = random uid (belongs to a server instance) */ /** Stable project short ID: basename-hash4 (e.g. "nextjs-turbopack-a3f7") */ export declare function makeProjectId(directory: string): string; export interface RegisteredServer { id: string; projectId: string; directory: string; type: 'vite' | 'nextjs' | 'storybook' | 'generic'; port: number; pid: number; name?: string; rpcEndpoint?: string; mcpEndpoint?: string; logPaths: Record; logDir: string; registeredAt: number; } /** Server instance ID = PID (always available, always correct) */ export declare function makeServerId(pid: number): string; /** Create per-project log directory and return channel file paths */ export declare function initProjectLogDir(directory: string, channels?: string[]): { logDir: string; logPaths: Record; }; export declare class ServerRegistry { private servers; private directoryIndex; private projectIdIndex; private connectionOrder; add(server: RegisteredServer): void; remove(id: string): void; get(id: string): RegisteredServer | undefined; getByDirectory(directory: string): RegisteredServer | undefined; getByProjectId(projectId: string): RegisteredServer | undefined; getAll(): RegisteredServer[]; getByType(type: RegisteredServer['type']): RegisteredServer[]; getByPort(port: number): RegisteredServer | undefined; getLatest(): RegisteredServer | undefined; has(id: string): boolean; size(): number; /** List all registered project directories */ directories(): string[]; /** * Remove servers whose processes are no longer running. * Skips servers registered within the last 30s (grace period for process forks). */ cleanupDeadServers(): string[]; } //# sourceMappingURL=registry.d.ts.map