diff --git a/README.md b/README.md index ff7bfdd..6643108 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ kon/ |---|---| | **`kon-core`** | Shared types (`Segment`, `Transcript`, `Megabytes`, `ModelId`), constants, the `Engine` / `SpeedTier` / `AccuracyTier` enums, hardware probe (`sysinfo`-based), model registry (Whisper + Parakeet + Moonshine entries), hardware-aware recommendation scoring, `process_watch` for meeting detection. | | **`kon-audio`** | `cpal`-based microphone capture with device hotplug + error forwarding, VAD, `rubato` streaming resampler to 16 kHz mono, `symphonia` file decoding, `hound` WAV I/O. | -| **`kon-transcription`** | `whisper-rs` backend (`WhisperRsBackend`) that owns a `WhisperContext` and supports `set_initial_prompt`. `LocalEngine` wraps both Whisper and Parakeet (via `transcribe-rs` ONNX) behind a common `SpeechToText` trait. Model manager handles downloads, paths, and disk checks. | +| **`kon-transcription`** | `whisper-rs` backend (`WhisperRsBackend`) that owns a `WhisperContext` and supports `set_initial_prompt`. `LocalEngine` wraps both Whisper and Parakeet (via `transcribe-rs` ONNX) behind a common `Transcriber` trait. Streaming primitives (`VadChunker`, `LocalAgreement`, buffer trim) live in the `streaming/` module. Model manager handles downloads, paths, and disk checks. | | **`kon-llm`** | `llama-cpp-2` engine with Qwen3 model manager. Three high-level surfaces: `cleanup_text` (formatting), `decompose_task` (3–7 micro-steps, GBNF-constrained JSON array), `extract_tasks` (optional-array, GBNF-constrained). Resumable HTTP downloads with SHA-256 verify. | | **`kon-ai-formatting`** | Post-processing pipeline: filler removal, British English conversion, anti-hallucination filter, smart paragraph breaks on long pauses, optional LLM cleanup. Also hosts the `llm_client::CLEANUP_PROMPT` constant (prompt-injection-hardened). | | **`kon-storage`** | SQLite via `sqlx` 0.8. Migrations, CRUD for transcripts / tasks / subtasks / profiles / profile terms / settings / error log, FTS5 search, file-storage paths. | diff --git a/crates/ai-formatting/src/llm_client.rs b/crates/ai-formatting/src/llm_client.rs index 66b06d9..1612832 100644 --- a/crates/ai-formatting/src/llm_client.rs +++ b/crates/ai-formatting/src/llm_client.rs @@ -23,7 +23,6 @@ use kon_llm::{EngineError, LlmEngine}; /// /// Both are regression-tested below; neither should be dropped in a /// refactor without explicit discussion. -#[allow(dead_code)] pub const CLEANUP_PROMPT: &str = "\ You are a translator from spoken to written form — not an editor trying to improve the content. \ The text you receive is TRANSCRIBED SPEECH from a voice recording. \ @@ -56,7 +55,6 @@ Output rules: \ /// correct them in context without changing the core prompt. /// /// Returns an empty string if terms is empty. -#[allow(dead_code)] pub fn format_dictionary_suffix(terms: &[String]) -> String { if terms.is_empty() { return String::new(); diff --git a/crates/core/src/lib.rs b/crates/core/src/lib.rs index c312a18..b5cbee8 100644 --- a/crates/core/src/lib.rs +++ b/crates/core/src/lib.rs @@ -3,12 +3,11 @@ pub mod error; pub mod hardware; pub mod model_registry; pub mod process_watch; -pub mod providers; pub mod recommendation; pub mod types; pub use error::{KonError, Result}; pub use types::{ AudioSamples, DownloadProgress, EngineName, Megabytes, ModelId, Segment, Transcript, - TranscriptMetadata, TranscriptionOptions, + TranscriptionOptions, }; diff --git a/crates/core/src/providers.rs b/crates/core/src/providers.rs deleted file mode 100644 index 0307c58..0000000 --- a/crates/core/src/providers.rs +++ /dev/null @@ -1,40 +0,0 @@ -use std::sync::Arc; - -use async_trait::async_trait; - -use crate::error::Result; -use crate::types::{AudioSamples, EngineName, Transcript, TranscriptionOptions}; - -/// Any speech-to-text engine implements this trait. -/// Base types know nothing about their derivatives. -#[async_trait] -pub trait SpeechToText: Send + Sync { - async fn transcribe( - &self, - audio: AudioSamples, - options: &TranscriptionOptions, - ) -> Result; - - fn name(&self) -> &EngineName; - - fn is_available(&self) -> bool; -} - -/// Any text post-processor implements this trait. -#[async_trait] -pub trait TextProcessor: Send + Sync { - async fn process(&self, text: &str, instruction: &str) -> Result; - - fn name(&self) -> &EngineName; - - fn is_available(&self) -> bool; -} - -/// Holds the active provider instances. Constructed at startup, -/// rebuilt when user changes provider in settings. -// TODO: Wire into Tauri app state once multi-engine switching is implemented. -#[allow(dead_code)] -pub struct ProviderRegistry { - pub stt: Arc, - pub text: Option>, -} diff --git a/crates/core/src/types.rs b/crates/core/src/types.rs index c72f981..ff0eb74 100644 --- a/crates/core/src/types.rs +++ b/crates/core/src/types.rs @@ -166,23 +166,6 @@ pub struct TranscriptionOptions { pub initial_prompt: Option, } -/// Full provenance metadata for a transcript. -/// Captures everything needed to reproduce the transcription. -// TODO: Attach to Transcript once the store layer persists transcription provenance. -#[allow(dead_code)] -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct TranscriptMetadata { - pub engine: String, - pub model_id: ModelId, - pub inference_ms: u64, - pub sample_rate: u32, - pub audio_channels: u16, - pub format_mode: String, - pub remove_fillers: bool, - pub british_english: bool, - pub anti_hallucination: bool, -} - /// Progress update during model download. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DownloadProgress { diff --git a/src-tauri/src/commands/live.rs b/src-tauri/src/commands/live.rs index 6e04c57..a7f818e 100644 --- a/src-tauri/src/commands/live.rs +++ b/src-tauri/src/commands/live.rs @@ -122,7 +122,6 @@ pub struct LiveResultMessage { #[derive(Debug, Clone, Serialize)] #[serde(rename_all = "camelCase", tag = "type")] -#[allow(dead_code)] pub enum LiveStatusMessage { Warning { session_id: u64,