/** * AI Provider Type Definitions * * TypeScript interfaces for the AI Provider module. * Supports Claude Code mode for spawning CLI processes. */ export type ProviderMode = 'claude_code'; export interface AIProvider { run(prompt: string, options?: RunOptions): Promise; test(options?: TestOptions): Promise; getStatus(): Promise; getMode(): ProviderMode; shutdown(): Promise; } export interface AIResponse { success: boolean; output: string; model?: string; durationMs?: number; /** Session ID for linking to JSONL logs (used for token tracking) */ sessionId?: string; error?: string; errorType?: ErrorType; suggestion?: string; } export interface ProviderStatus { mode: ProviderMode; isConfigured: boolean; isAuthenticated: boolean; isRateLimited: boolean; rateLimitMessage?: string; suggestion?: string; cliVersion?: string; activeProcesses?: number; maxParallelProcesses?: number; } export interface RunOptions { timeout?: number; workingDirectory?: string; /** Model to use: 'sonnet' (default) or 'opus' */ model?: 'sonnet' | 'opus'; /** Session ID for linking to JSONL logs (used for token tracking) */ sessionId?: string; onProgress?: (message: string) => void; } export interface TestOptions { prompt?: string; } export interface TestResult { success: boolean; mode: ProviderMode; model?: string; durationMs?: number; response?: string; error?: string; suggestion?: string; } export interface AIProviderConfig { mode: ProviderMode; maxParallelProcesses: number; requestTimeoutSeconds: number; maxRetries: number; workingDirectory?: string; circuitBreakerThreshold?: number; /** Enable file operations by skipping permission prompts. Required for autopilot. Default: true */ dangerouslySkipPermissions?: boolean; } export interface AIProviderConfigInput { mode?: ProviderMode; maxParallelProcesses?: number; requestTimeoutSeconds?: number; maxRetries?: number; } export interface ProcessManagerConfig { maxParallel: number; timeoutMs: number; workingDirectory: string; maxRetries: number; circuitBreakerThreshold: number; /** Enable file operations by skipping permission prompts. Required for autopilot. */ dangerouslySkipPermissions?: boolean; } export interface ProcessResult { success: boolean; output?: string; error?: string; errorType?: ErrorType; suggestion?: string; durationMs?: number; model?: string; } export interface ProcessStatus { isAuthenticated: boolean; accountEmail?: string; activeProcesses: number; isRateLimited: boolean; rateLimitMessage?: string; cliVersion?: string; suggestion?: string; } export interface SpawnResult { code: number | null; stdout: string; stderr: string; durationMs: number; } export type ErrorType = 'auth' | 'rate_limit' | 'timeout' | 'network' | 'cli_not_found' | 'unknown'; export type CircuitState = 'closed' | 'open' | 'half-open'; export interface CircuitBreakerConfig { failureThreshold: number; recoveryTimeMs: number; halfOpenRequests: number; } export interface RetryConfig { maxRetries: number; baseDelayMs: number; maxDelayMs: number; jitterFactor?: number; } export interface CLIVersionInfo { version: string; supportsOutputFormat: boolean; supportsPrintMode: boolean; supportsWorkingDirectory: boolean; } export interface MetricStats { count: number; min: number; max: number; avg: number; p50: number; p95: number; p99: number; } export type LogLevel = 'debug' | 'info' | 'warn' | 'error'; export interface LogEntry { timestamp: string; level: LogLevel; component: string; message: string; context?: Record; requestId?: string; } export interface Span { traceId: string; spanId: string; name: string; startTime: number; endTime?: number; status?: string; attributes: Record; setStatus(status: string, error?: unknown): void; end(): void; } export interface InstanceState { instances: InstanceInfo[]; } export interface InstanceInfo { instanceId: string; processCount: number; timestamp: number; } export interface AIProviderAPIResponse { success: boolean; data?: T; error?: string; suggestion?: string; } export interface GetConfigResponse { config: AIProviderConfig | null; } export interface GetStatusResponse { status: ProviderStatus; } export interface UpdateConfigResponse { config: AIProviderConfig; } export interface TestProviderResponse { result: TestResult; } //# sourceMappingURL=types.d.ts.map