/** * The daemon deliberately speaks a small, line-delimited protocol. A request * is complete only after its newline has been received, which keeps the * client/server boundary deterministic on both Unix sockets and Windows named * pipes. */ export declare const COMET_DAEMON_PROTOCOL_VERSION: 1; export declare const DEFAULT_COMET_DAEMON_IDLE_TIMEOUT_MS: number; export declare const DEFAULT_COMET_DAEMON_REQUEST_TIMEOUT_MS = 8000; export declare const DEFAULT_COMET_DAEMON_CONNECTION_TIMEOUT_MS = 10000; export declare const COMET_DAEMON_MESSAGE_LIMIT: number; export type CometDaemonControl = 'ping' | 'status' | 'stop'; export interface CometDaemonRequest { protocolVersion: typeof COMET_DAEMON_PROTOCOL_VERSION; requestId: string; buildId: string; environmentFingerprint: string; kind: 'cli' | 'control'; runtime?: 'classic' | 'native'; permissionContext: string; projectRoot: string; cwd: string; argv?: string[]; control?: CometDaemonControl; } export interface CometDaemonResponse { protocolVersion: typeof COMET_DAEMON_PROTOCOL_VERSION; requestId: string; ok: boolean; exitCode?: number; stdout?: string; stderr?: string; data?: unknown; error?: string; status?: CometDaemonStatus; } export interface CometDaemonStatus { pid: number; buildId: string; endpoint: string; idleTimeoutMs: number; idleForMs: number; activeRequests: number; startedAt: string; requestCount: number; memoryRssBytes: number; memoryHeapUsedBytes: number; lastRequest?: CometDaemonRequestMetrics; totalWork: CometDaemonWorkMetrics; } export interface CometDaemonRequestMetrics { durationMs: number; queueMs: number; gitCommands: number; /** Sum of Git subprocess elapsed times; overlapping subprocesses can exceed request duration. */ gitDurationMs: number; filesystemReads: number | null; filesystemWrites: number | null; } export interface CometDaemonWorkMetrics { gitCommands: number; gitDurationMs: number; filesystemReads: number | null; filesystemWrites: number | null; } export interface CometDaemonEndpoint { endpoint: string; key: string; isNamedPipe: boolean; environmentFingerprint?: string; } export interface CometDaemonHandlerResult { exitCode: number; stdout?: string; stderr?: string; data?: unknown; } export type CometDaemonHandler = (request: CometDaemonRequest) => Promise; export interface CometDaemonServerOptions { endpoint: CometDaemonEndpoint | string; buildId: string; projectRoot?: string; idleTimeoutMs?: number; handler: CometDaemonHandler; permissionContext?: string; environmentFingerprint?: string; connectionTimeoutMs?: number; } export interface CometDaemonServer { readonly endpoint: string; readonly buildId: string; close(): Promise; status(): CometDaemonStatus; } export interface CometDaemonRequestOptions { endpoint: CometDaemonEndpoint | string; buildId: string; projectRoot: string; cwd?: string; argv?: readonly string[]; control?: CometDaemonControl; runtime?: 'classic' | 'native'; permissionContext?: string; requestId?: string; timeoutMs?: number; environmentFingerprint?: string; } export declare function resolveCometDaemonPermissionContext(): string; /** * Bind the daemon to the complete caller environment without sending the * values over IPC. The fingerprint is only an endpoint/request discriminator; * the server still inherits the actual environment from its launcher. * Daemon launcher bookkeeping is excluded because it is intentionally unique * to the short-lived launcher/server handshake rather than command semantics. */ export declare function resolveCometDaemonEnvironmentFingerprint(environment?: NodeJS.ProcessEnv): string; /** * Derive an isolated endpoint from the project and runtime build. Unix * sockets live in a per-user 0700 directory; Windows named pipes inherit the * OS named-pipe ACL instead of leaving a socket file in a shared temp folder. */ export declare function resolveCometDaemonEndpoint(projectRoot: string, buildId: string, permissionContext?: string, environmentFingerprint?: string): CometDaemonEndpoint; export declare function createCometDaemonServer(options: CometDaemonServerOptions): Promise; export declare function sendCometDaemonRequest(options: CometDaemonRequestOptions): Promise; //# sourceMappingURL=comet-daemon.d.ts.map