/** * @fileoverview Claude Code Daemon - stream-json based subprocess manager * @module mobile/daemon * @version 1.5.2 * * Manages Claude Code as a subprocess using stream-json mode for * bidirectional JSON communication. * * @example * import { ClaudeDaemon } from './daemon'; * const daemon = new ClaudeDaemon('/path/to/project', 'session_123'); * await daemon.spawn(); * daemon.send('Hello Claude!'); * daemon.on('output', (data) => console.log(data)); */ import { EventEmitter } from 'events'; /** * ANSI escape code regex pattern */ export declare const ANSI_REGEX: RegExp; /** * Output event data */ export interface OutputEvent { type: 'stdout' | 'stderr'; text: string; raw: string; parsed?: unknown; sessionId: string; } /** * Error event data */ export interface ErrorEvent { error: Error; sessionId: string; } /** * Exit event data */ export interface ExitEvent { code: number | null; signal: NodeJS.Signals | null; sessionId: string; manual?: boolean; } /** * Tool use event data */ export interface ToolUseEvent { tool: string; toolId: string; input: unknown; sessionId: string; } /** * Tool complete event data */ export interface ToolCompleteEvent { index: number; sessionId: string; } /** * Response complete event data */ export interface ResponseCompleteEvent { sessionId: string; result: unknown; duration_ms?: number; } /** * ClaudeDaemon class - manages Claude Code subprocess via stream-json * @extends EventEmitter * * @fires ClaudeDaemon#output - When stdout data is received * @fires ClaudeDaemon#error - When an error occurs * @fires ClaudeDaemon#exit - When the process exits */ export declare class ClaudeDaemon extends EventEmitter { private projectDir; private sessionId; private process; private _pid; private _isRunning; private buffer; private cliSessionId; /** * Create a new ClaudeDaemon instance * @param projectDir - Working directory for Claude Code * @param sessionId - Unique session identifier */ constructor(projectDir: string, sessionId: string); /** * Check if the daemon is currently running */ get isRunning(): boolean; /** * Get the process ID */ get pid(): number | null; /** * Spawn the Claude Code subprocess with stream-json mode * @returns Promise that resolves when process is ready * @throws Error if spawn fails or process is already running */ spawn(): Promise; /** * Send a message to Claude via stdin (stream-json format) * @param message - Message to send * @throws Error if process is not running */ send(message: string): void; /** * Kill the Claude Code subprocess * @param signal - Signal to send to process */ kill(signal?: NodeJS.Signals): void; /** * Check if the daemon is currently running * @returns True if running */ isActive(): boolean; /** * Get the process ID * @returns Process ID or null */ getPid(): number | null; } //# sourceMappingURL=daemon.d.ts.map