/**
 * Epistemic Guard — 모름/추정/확실 3분류 강제 시스템 프롬프트 블록.
 *
 * Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-3 (Anti-Hallucination Layer).
 * 신뢰 조건 T1 "모르면 모른다고 말한다" 담당.
 *
 * CoVe(coveBlock) 와의 분업:
 *   - CoVe: 검색 *출처가 있을 때* 주장-출처 매핑을 검증 (그라운딩 점검)
 *   - Epistemic Guard: 출처 유무와 *무관하게* 모든 주장의 인식론적 등급 표시를 강제,
 *     특히 검색 근거가 *없는* turn 에서 단정 금지 + 역질문 우선 지시
 *
 * 즉 CoVe 가 못 덮는 "검색 결과 0건인데 모델이 그럴듯하게 지어내는" 케이스가
 * 이 블록의 주 타깃. 검색 근거가 약할수록 지시가 강해진다.
 */

export interface EpistemicGuardSignals {
    /** 선택된 검색 청크 수 (brain-trace 제외). */
    chunkCount: number;
    /** 업무 유형 감지됨 (Requirement Graph) — 업무 산출물은 더 엄격하게. */
    taskDetected: boolean;
}

export function buildEpistemicGuardBlock(signals: EpistemicGuardSignals): string {
    const lines: string[] = [];
    lines.push('[EPISTEMIC GUARD]');
    lines.push('모든 사실성 주장은 다음 3등급 중 하나로 인식하고, 등급이 낮으면 표시할 것:');
    lines.push('');
    lines.push('- **확실** — 검색 출처 또는 명백한 사실이 직접 지지. 표시 불필요.');
    lines.push('- **추정** — 근거가 간접적이거나 일반화. 문장에 "~로 추정", "일반적으로" 명시.');
    lines.push('- **모름 / 확인 필요** — 근거 없음. *지어내지 말고* "(확인 필요)" 표시 또는 솔직히 모른다고 말할 것.');
    lines.push('');
    lines.push('금지: 근거 없는 수치·날짜·고유명사·인용을 사실처럼 제시하는 것. 모름을 인정하는 답변이 그럴듯한 오답보다 항상 낫다.');

    if (signals.chunkCount === 0) {
        lines.push('');
        lines.push('⚠️ 이번 턴은 *검색 근거가 없음* — 모델 일반 지식만으로 답하는 상태다.');
        lines.push('- 구체적 수치·최신 정보·사용자 고유 정보(일정, 과거 회의 등)는 단정하지 말 것.');
        if (signals.taskDetected) {
            lines.push('- 업무 산출물 요청인데 근거가 없으므로, 필요한 원자료(회의 메모, 조사 범위 등)를 먼저 *질문*하는 것을 우선 고려할 것.');
        }
    }

    lines.push('[/EPISTEMIC GUARD]');
    return lines.join('\n');
}
