diff --git a/docs/04-api-contracts.md b/docs/04-api-contracts.md index 68a43a3..b5d2634 100644 --- a/docs/04-api-contracts.md +++ b/docs/04-api-contracts.md @@ -15,7 +15,11 @@ each command returns `Result` where `WaError` carries a `kind` (mach // `record` (default false) controls audio RETENTION (ADR-0009). When false, working audio is // deleted on finalize and only the transcript/notes persist. It can be toggled mid-meeting. // templateId (Phase 8, T8.1, FR-NOTE-5) picks a NoteTemplate — see list_note_templates below. -start_recording(input: { meetingTitle?: string; calendarEventId?: string; record?: boolean; templateId?: string }): MeetingId +// language (T8.7, FR-TRX-4, M4.2): omitted/"auto" requests auto-detection; an ISO-639-1 code +// (e.g. "es") forces that language. Falls back to Settings.whisper_language when omitted. +// Only takes effect with a multilingual model loaded (ModelInfo.multilingual) — an English-only +// model forces "en" regardless (see resolve_language in src-tauri/src/transcription/mod.rs). +start_recording(input: { meetingTitle?: string; calendarEventId?: string; record?: boolean; templateId?: string; language?: string }): MeetingId stop_recording(input: { meetingId: MeetingId }): MeetingSummaryRef pause_recording(input: { meetingId: MeetingId }): void resume_recording(input: { meetingId: MeetingId }): void @@ -27,11 +31,17 @@ hardware_status(): { backends: BackendInfo[]; active: BackendId; modelSize: stri set_preferred_backend(input: { backend: BackendId | "auto" }): void // ---- Transcription / models ---- -reprocess_transcript(input: { meetingId: MeetingId; model: string }): void // batch mode (FR-TRX-3) +// language (T8.7, M4.2): omitted reuses the meeting's current language rather than resetting it. +reprocess_transcript(input: { meetingId: MeetingId; model: string; language?: string }): void // batch mode (FR-TRX-3) +// ModelInfo gained `multilingual: boolean` (T8.7, FR-TRX-4, M4.2) — false for `.en` (English-only) +// ggml variants, true for the multilingual ones; gates the Settings language picker. list_models(): ModelInfo[] list_diarization_models(): ModelInfo[] // fixed seg+emb pair (T4.7, FR-MODEL-1) download_model(input: { kind: "whisper" | "diar-seg" | "diar-emb"; id: string }): void // emits progress events remove_model(input: { id: string }): void // disambiguated by id, not kind — ids never collide across catalogs +// Static catalog of whisper.cpp-recognized ISO-639-1 codes for the Settings language dropdown +// (T8.7, FR-TRX-4, M4.2); "Auto-detect" is a frontend-only addition, not in this list. +list_whisper_languages(): { code: string; label: string }[] // ---- Speakers ---- rename_speaker(input: { meetingId: MeetingId; label: string; name: string }): void @@ -106,6 +116,9 @@ run_agent(input: { briefId: string; tool: "claude" | "codex" | "opencode" | "cop create_issue_from_brief(input: { briefId: string; tracker: "github"; assignCopilot?: boolean }): { url: string } // FR-AGENT-2 // ---- Settings ---- +// Settings gained `whisper_language: string | null` (T8.7, FR-TRX-4, M4.2) — the default +// transcription language applied at the next start_recording; null = auto-detect. Mirrors +// this doc's settings.json `transcription.language` (03-data-model.md). get_settings(): Settings update_settings(input: Partial): Settings // Reports the full egress allowlist so the UI can prove exactly what may leave the device (FR-SEC-2).