- src/main/ai/classifyStatus.ts: prompt + JSON parse + 안전 fallback (archived). - InferenceProvider.generateRaw 추가 (optional) + LocalOllamaProvider 구현 (Ollama /api/generate format:'json' 으로 raw JSON 응답 반환). - inboxApi 의 ai:classify-status 핸들러를 stub 에서 정식 호출로 교체 (deps.repo.findById + deps.providerHolder.get + classifyStatus()). - 신규 테스트 7건 (classifyStatus 단위) + IPC 3건 (note 없음 / AI throw / 정상). - 회귀: 513 → 522 통과.
26 lines
1.1 KiB
TypeScript
26 lines
1.1 KiB
TypeScript
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<AiResponse>;
|
|
healthCheck(): Promise<HealthResult>;
|
|
/** 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<string>;
|
|
}
|