/**
 * AI 서비스 내부 실행기에서만 사용하는 공통 타입 계약을 정의한다.
 * 서비스 빌더와 실행 인프라가 같은 결과 구조와 실패 분류를 공유하도록 맞춘다.
 */
import type { ServiceFailureKind } from './shared';
import type { ServiceCommandAttemptSpec } from '../../types/index';
/**
 * 주홍이가 AI CLI를 호출하는 실행 모드다.
 * 서비스 빌더는 이 값을 보고 프롬프트 포맷과 인자 구성을 다르게 만든다.
 */
export type ServiceMode = 'chat' | 'commit' | 'review' | 'gen-html' | 'gen-storybook' | 'minify-md' | 'talk-to-figma';
/**
 * Claude CLI에 전달하는 추론 강도 enum이다.
 * 내부적으로는 주홍이 공통 `ReasoningEffort` 와 유사하지만 Claude가 허용하는 값만 제한한다.
 */
export type ClaudeEffort = 'low' | 'medium' | 'high';
/**
 * subprocess 한 번 실행 후 수집한 표준 출력 결과다.
 * 재시도 로직은 여러 실행 결과를 이 구조로 통일해 비교한다.
 */
export type ServiceCommandExecutionResult = {
    /**
     * subprocess 종료 코드다.
     * 프로세스가 비정상적으로 종료되면 `null` 일 수 있다.
     */
    status: number | null;
    /**
     * subprocess 표준 에러 출력이다.
     */
    stderr: string;
    /**
     * stdout/stderr를 이미 실시간 스트리밍으로 사용자에게 노출했는지 여부다.
     */
    streamedOutput: boolean;
    /**
     * subprocess 표준 출력이다.
     */
    stdout: string;
};
/**
 * 재시도 중 실패한 단일 시도 한 건을 표현하는 구조다.
 * 어떤 모델/옵션 조합이 왜 실패했는지 후속 분기에서 판단할 때 사용한다.
 */
export type FailedServiceAttempt = {
    /**
     * 실패한 실행 계획 메타데이터다.
     */
    attempt: ServiceCommandAttemptSpec;
    /**
     * 실패 원인을 분류한 내부 카테고리다.
     */
    failureKind: ServiceFailureKind;
    /**
     * 실제 subprocess 실행 결과다.
     */
    result: ServiceCommandExecutionResult;
};
//# sourceMappingURL=types.d.ts.map