[package]
name = "kon-transcription"
version = "0.1.0"
edition = "2021"
description = "Speech-to-text engine wrappers, model management, and inference concurrency for Kon"
build = "build.rs"

[features]
# Whisper backend (direct whisper-rs, vulkan-accelerated). Default on —
# gating it exists so a future Windows non-AVX2 build, or a cloud-only
# ASR configuration, can drop whisper-rs-sys entirely per brief item
# #13. Disabling this feature also drops the WhisperRsBackend module
# and the load_whisper entry point.
default = ["whisper"]
whisper = ["dep:whisper-rs", "dep:num_cpus"]

[dependencies]
kon-core = { path = "../core" }

# Parakeet via ONNX. Whisper is handled directly via whisper-rs below.
transcribe-rs = { version = "0.3", default-features = false, features = ["onnx"] }

# Async runtime for spawn_blocking
tokio = { version = "1", features = ["rt", "sync"] }

# Model downloads
reqwest = { version = "0.12", features = ["stream"] }
futures-util = "0.3"

# Download integrity verification
sha2 = "0.10"

# Gated behind the `whisper` feature (see [features] above).
whisper-rs = { version = "0.16", default-features = false, features = ["vulkan"], optional = true }

# Direct whisper-rs backend (WhisperRsBackend): thread pool sizing.
# Gated alongside whisper-rs since no other code in this crate needs it.
num_cpus = { version = "1", optional = true }

# Typed error enum used by WhisperRsBackend + elsewhere. Kept
# unconditional because it is a derive-macro crate with negligible
# build cost.
thiserror = "2"

# Structured logging at backend boundaries (observability for initial_prompt flow).
tracing = "0.1"

[dev-dependencies]
# TcpListener fixture for the download resume tests (mirrors kon-llm).
tokio = { version = "1", features = ["rt", "sync", "net", "io-util", "macros"] }
tempfile = "3"
