UNPKG

buroventures-harald-code-core

Version:

Harald Code Core - Core functionality for AI-powered coding assistant

71 lines (70 loc) 2.78 kB
/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /** A structured result from a shell command execution. */ export interface ShellExecutionResult { /** The raw, unprocessed output buffer. */ rawOutput: Buffer; /** The combined, decoded stdout and stderr as a string. */ output: string; /** The decoded stdout as a string. */ stdout: string; /** The decoded stderr as a string. */ stderr: string; /** The process exit code, or null if terminated by a signal. */ exitCode: number | null; /** The signal that terminated the process, if any. */ signal: NodeJS.Signals | null; /** An error object if the process failed to spawn. */ error: Error | null; /** A boolean indicating if the command was aborted by the user. */ aborted: boolean; /** The process ID of the spawned shell. */ pid: number | undefined; } /** A handle for an ongoing shell execution. */ export interface ShellExecutionHandle { /** The process ID of the spawned shell. */ pid: number | undefined; /** A promise that resolves with the complete execution result. */ result: Promise<ShellExecutionResult>; } /** * Describes a structured event emitted during shell command execution. */ export type ShellOutputEvent = { /** The event contains a chunk of output data. */ type: 'data'; /** The stream from which the data originated. */ stream: 'stdout' | 'stderr'; /** The decoded string chunk. */ chunk: string; } | { /** Signals that the output stream has been identified as binary. */ type: 'binary_detected'; } | { /** Provides progress updates for a binary stream. */ type: 'binary_progress'; /** The total number of bytes received so far. */ bytesReceived: number; }; /** * A centralized service for executing shell commands with robust process * management, cross-platform compatibility, and streaming output capabilities. * */ export declare class ShellExecutionService { /** * Executes a shell command using `spawn`, capturing all output and lifecycle events. * * @param commandToExecute The exact command string to run. * @param cwd The working directory to execute the command in. * @param onOutputEvent A callback for streaming structured events about the execution, including data chunks and status updates. * @param abortSignal An AbortSignal to terminate the process and its children. * @returns An object containing the process ID (pid) and a promise that * resolves with the complete execution result. */ static execute(commandToExecute: string, cwd: string, onOutputEvent: (event: ShellOutputEvent) => void, abortSignal: AbortSignal): ShellExecutionHandle; }