/** * WorkerTransport — runs qoder-worker-runtime inside a Node worker thread. * * This transport keeps the existing SDK stream-json protocol but replaces the * child-process boundary with worker stdin/stdout/stderr streams. It is meant * for hosts that already own a Node runtime, including Node SEA hosts, and want * to avoid spawning a second qoder SEA process. */ import type { QueryTransportProvider, Transport } from './transport.js'; import type { ProcessTransportOptions } from './process-transport.js'; import type { StdoutMessage } from '../types/control.js'; import type { DiagnosticsSink } from './sdk-diagnostics.js'; import { type RuntimeLaunchOptions } from './runtime-launch-options.js'; import { hasResolvableQoderWorkerRuntime, resolveQoderWorkerRuntimePath } from './worker-runtime-path.js'; export { hasResolvableQoderWorkerRuntime, resolveQoderWorkerRuntimePath }; export declare class QoderWorkerRuntimeError extends Error { readonly code: "QODER_WORKER_RUNTIME_ERROR"; readonly exitCode?: number; readonly stderr?: string; constructor(message: string, options?: { exitCode?: number; stderr?: string; cause?: unknown; }); } export interface WorkerTransportOptions { /** Path to qoder-worker-runtime.obf.mjs or an equivalent worker entry. */ pathToQoderWorkerRuntime?: string; /** * Grace period in milliseconds before terminating the worker after stdin is closed. * Defaults to CLOSE_GRACE_MS. */ closeGraceMs?: number; /** Extra Node worker execArgv. Defaults to an empty list to avoid host flags leaking. */ execArgv?: string[]; /** Additional workerData merged under the top-level object. */ workerData?: Record; } export interface WorkerRuntimeTransportOptions extends RuntimeLaunchOptions, WorkerTransportOptions { /** stderr handling mode */ stderr?: 'inherit' | 'pipe' | 'ignore'; /** Optional callback for worker stderr output */ stderrHandler?: (data: string) => void; /** Abort controller */ abortController?: AbortController; /** SDK-internal diagnostics sink. */ diagnostics?: DiagnosticsSink; /** Called once when the worker exits with an auth-related status. */ onAuthExpired?: () => void; } export declare class WorkerTransport implements QueryTransportProvider { static readonly default: WorkerTransport; private readonly options; constructor(options?: WorkerTransportOptions); create(options: ProcessTransportOptions): Transport; } export declare class WorkerRuntimeTransport implements Transport { private worker; private options; private ready; private closed; private initializePromise; private authExpiredFired; private pendingInput; private diagnostics?; private workerExitError; private stderrTail; private observedExitCode; private launchOptionsBuilder; private closeTimer; private abortSignal?; private abortListener?; constructor(options?: WorkerRuntimeTransportOptions); initialize(): Promise; private _doInitialize; write(data: string): void; isReady(): boolean; endInput(): void; readMessages(): AsyncGenerator; close(): void; get threadId(): number | undefined; private writeReadyLine; private flushPendingInput; private endReadyInput; private destroyWorkerStreams; private appendStderr; private createWorkerError; private createWorkerExitError; private getStderrTail; private recordWorkerExit; private recordSuppressedWorkerExit; private formatStderrTailForDiagnostics; private waitForWorkerExit; private clearCloseTimer; private cleanupAbortListener; private cleanupAuthPayload; private fireAuthExpired; }