/**
 * builtin 명령 `/sh` 의 로컬 shell passthrough 실행을 담당하는 파일이다.
 * 인터랙티브 shell 세션과 raw command 실행을 같은 인터페이스로 다룰 수 있게 정리한다.
 */
/**
 * `/sh` 실행 모드다.
 */
export type ShExecutionMode = 'command' | 'interactive';
/**
 * `/sh` 실행 스펙이다.
 */
export type ShExecutionSpec = {
    /**
     * 사용자가 `/sh` 뒤에 입력한 원문이다.
     */
    rawCommand: string;
    /**
     * 실제 실행 모드다.
     */
    mode: ShExecutionMode;
    /**
     * history/report에 남길 재현용 명령 문자열이다.
     */
    previewCommand: string;
    /**
     * 실행에 사용할 shell 절대 경로다.
     */
    shellPath: string;
};
/**
 * shell 실행 종료 결과다.
 */
export type ShExecutionResult = {
    /**
     * 프로세스 종료 코드다.
     */
    exitCode: number | null;
    /**
     * history에는 본문을 저장하지 않고 터미널에만 출력했는지 여부다.
     */
    liveOnly: true;
    /**
     * 종료 신호다.
     */
    signal: NodeJS.Signals | null;
};
/**
 * @description `/sh` 입력으로부터 실제 shell 실행 스펙을 구성한다.
 * 인자가 없으면 인터랙티브 shell을 열고, 인자가 있으면 raw command를 그대로 shell에 넘긴다.
 *
 * @param rawCommand `/sh` 뒤 원문
 * @returns 실행 스펙
 */
export declare function createShExecutionSpec(rawCommand: string): ShExecutionSpec;
/**
 * @description `/sh` 실행 스펙에 따라 로컬 shell을 현재 터미널에 그대로 붙여 실행한다.
 * 출력은 터미널에만 표시하고 history에는 종료 상태만 남긴다.
 *
 * @param spec 실행 스펙
 * @param cwd shell 실행 기준 디렉터리
 * @returns 종료 결과
 */
export declare function executeShCommand(spec: ShExecutionSpec, cwd: string): Promise<ShExecutionResult>;
/**
 * @description shell 종료 상태를 사람이 읽기 쉬운 문자열로 변환한다.
 * @param result 종료 결과
 * @returns 종료 상태 라벨
 */
export declare function formatShExitLabel(result: Pick<ShExecutionResult, 'exitCode' | 'signal'>): string;
/**
 * @description history/report에 남길 `/sh` 실행 결과 본문을 구성한다.
 * @param spec 실행 스펙
 * @param result 종료 결과
 * @returns markdown 본문
 */
export declare function formatShExecutionOutput(spec: ShExecutionSpec, result: ShExecutionResult): string;
//# sourceMappingURL=runtime.d.ts.map