import type { AiResponse } from './schema.js'; import type { ParseResult } from '../services/dueDateParser.js'; export interface GenerateInput { text: string; todayKst: string; // ISO YYYY-MM-DD in KST dueDateCandidates: ParseResult[]; vocab?: string[]; // v0.2.3 #3 — top-N kebab-case 태그. 미전달 시 빈 배열로 처리. } export interface HealthResult { ok: boolean; model?: string; reason?: string; } export interface InferenceProvider { readonly name: string; generate(input: GenerateInput): Promise; healthCheck(): Promise; /** v0.2.3.1 — 외부에서 in-flight generate 강제 중단. ProviderHolder.replace 시 사용. */ abort?: () => void; /** * v0.2.9 Cut B Task 9 — raw JSON 응답 호출. classifyStatus 같은 자체 prompt 호출용. * Ollama `/api/generate` 의 raw `response` 문자열을 그대로 반환한다 (보통 JSON 문자열). * 미구현 provider 는 undefined; classifyStatus 는 그 경우 안전 fallback 으로 동작. */ generateRaw?: (prompt: string) => Promise; }