import { type ManagedProcess } from '../models/ManagedProcess.js'; import { type ProcessController } from '../services/ProcessController.js'; import { type ProcessLogBuffer } from '../services/ProcessLogBuffer.js'; export declare const BgProcessManagerTag: unique symbol; export interface BgProcessManager { startProcess: (config: { command: string; args?: string[]; cwd?: string; env?: Record; }) => Promise; stopProcess: (processId: string) => Promise; listProcesses: () => Promise; getProcessInfo: (processId: string) => Promise; restartProcess: (processId: string) => Promise; stopAllProcesses: () => Promise; getProcessLogs: (processId: string, lines?: number) => Promise<{ logs: Array<{ type: 'stdout' | 'stderr'; line: string; timestamp: Date; }>; lastUpdated: Date; } | undefined>; } /** * Process management service * Manages, monitors, and saves logs for processes */ export declare class BgProcessManagerImpl implements BgProcessManager { private readonly logBuffer; private readonly processController; private readonly processes; constructor(logBuffer: ProcessLogBuffer, processController: ProcessController); /** * Start a process * @param config Process configuration * @returns Managed process */ startProcess(config: { command: string; args?: string[]; cwd?: string; env?: Record; }): Promise; /** * Set up event handlers * @param processId Process ID * @param spawnResult Process spawn result */ private setupEventHandlers; /** * Update process status * @param processId Process ID * @param status New status * @param exitCode Exit code (optional) */ private updateProcessStatus; /** * Validate directory * @param dirPath Directory path * @returns Whether it is valid */ private validateDirectory; /** * Stop a process * @param processId Process ID */ stopProcess(processId: string): Promise; /** * Restart a process * @param processId Process ID * @returns New process ID */ restartProcess(processId: string): Promise; /** * Stop all processes */ stopAllProcesses(): Promise; /** * Get process list * @returns Array of managed processes */ listProcesses(): Promise; /** * Get process information * @param processId Process ID * @returns Managed process (undefined if not found) */ getProcessInfo(processId: string): Promise; /** * Get process logs * @param processId Process ID * @param lines Number of lines to retrieve (all if omitted) * @returns Log data (undefined if process not found) */ getProcessLogs(processId: string, lines?: number): Promise<{ logs: Array<{ type: 'stdout' | 'stderr'; line: string; timestamp: Date; }>; lastUpdated: Date; } | undefined>; /** * Generate process ID * @returns Unique process ID */ private generateProcessId; }