/**
 * ============================================================
 * Service Interfaces (서비스 인터페이스 정의)
 * 
 * 각 서비스(Agent, Brain, FileSystem 등)의 추상화 인터페이스를 정의합니다.
 * 의존성 주입(DI)과 단위 테스트를 위해 필수적입니다.
 * ============================================================
 */

import * as vscode from 'vscode';


// ─── 공용 오류 처리 타입 (Unified Error Handling) ───

/**
 * 오류 유형 분류.
 */
export enum ErrorType {
    /** 네트워크 타임아웃, API 응답 지연 등 재시도로 복구 가능한 오류 */
    TRANSIENT = 'TRANSIENT',
    /** 프롬프트 구조 문제, 모델 명백한 실패 등 수동 개입이 필요한 오류 */
    PERMANENT = 'PERMANENT',
    /** 인증 실패 (API Key 만료 등) */
    AUTH_FAILURE = 'AUTH_FAILURE',
    /** 사용자가 의도적으로 작업을 취소한 경우 */
    ABORT = 'ABORT'
}

/**
 * 오류 복구 규칙 정의.
 */
export interface RecoveryRule {
    type: ErrorType;
    description: string;
    maxRetries: number;
    backoffBaseMs: number;
    action: 'retry' | 'abort' | 'fail_with_message' | 'fallback';
    userMessage: string;
    fallbackDescription?: string;
}