/** * manifest.ts, the PINNED local-voice runtime manifest: exact versions, URLs, * byte sizes, and sha256 checksums for the managed engines + default models the * provisioner installs. * * Nothing here is fetched without a matching checksum, so a mirror swap or a * corrupted asset is refused rather than run. Adding a platform means pinning * its build here (verified against the real asset); a platform with no pinned, * verified build reports `unsupported` honestly instead of downloading blind. * * TTS, Piper (MIT). The official release tarball bundles the piper binary, its * shared libs, AND espeak-ng-data, so one archive provisions the whole engine. * Default voice: en_US-lessac-medium, a widely-used, well-regarded medium * en_US voice (good quality/size balance at ~63 MB) from rhasspy/piper-voices. * * STT, whisper.cpp (MIT). whisper.cpp publishes NO official prebuilt binary for * Linux/macOS in its GitHub releases (only source), and this provisioner never * compiles on the user's machine, so goodvibes builds the bundle reproducibly * and HOSTS it at the append-only `voice-runtimes-v1` release tag (with a * .sha256 sidecar). linux-x64 is hosted today; other platforms report * `unsupported` honestly until their bundle is uploaded to that same tag. The * default model is ggml-base.en, pinned to an immutable Hugging Face revision. */ import type { VerifiedDownloadSpec } from './download-verified.js'; export type VoicePlatform = 'linux-x64' | 'linux-arm64' | 'darwin-x64' | 'darwin-arm64'; export declare function currentVoicePlatform(): VoicePlatform | null; /** The piper engine archive for a platform (tarball with binary + libs + espeak-ng-data). */ export interface PiperEngineManifest { readonly version: string; readonly archive: VerifiedDownloadSpec; /** Path of the piper binary inside the extracted archive (relative to the extract dir). */ readonly binaryRelPath: string; } /** A piper voice: the onnx model plus its json config. */ export interface PiperVoiceManifest { readonly id: string; readonly onnx: VerifiedDownloadSpec; readonly json: VerifiedDownloadSpec; } /** * Pinned piper engine builds per platform. Only platforms with a verified, * checksummed build appear; others resolve to `unsupported`. */ export declare const PIPER_ENGINES: Partial>; /** The single default voice provisioned for TTS. */ export declare const DEFAULT_PIPER_VOICE: PiperVoiceManifest; /** Human-readable total download size for the offer (bytes). */ export declare function piperProvisionBytes(platform: VoicePlatform): number | null; /** Why STT is not provisioned on platforms with no pinned goodvibes whisper bundle. */ export declare const WHISPER_UNSUPPORTED_REASON = "No pinned, checksum-verified whisper.cpp bundle exists for this platform (whisper.cpp publishes no official prebuilt binary, and managed provisioning never compiles on your machine). To enable local STT, install whisper.cpp yourself and set voice.local.sttEngine/sttBinary/sttModelPath."; /** * The goodvibes-built whisper.cpp engine bundle for a platform. whisper.cpp * ships no official prebuilt binaries, so goodvibes builds them reproducibly * (scripts/build-whisper-bundle.ts, static ggml, stripped) and pins the * artifact here. `bundle.url` points at the hosted asset once uploaded to the * append-only `voice-runtimes-v1` tag, and is null until then, the byte count * and sha256 are ALWAYS pinned, so a sideloaded copy of the same bytes (dropped * at the managed archive path) verifies against the same pin and installs * identically whether or not a URL is set. */ export interface WhisperEngineManifest { readonly version: string; readonly bundle: { readonly url: string | null; readonly bytes: number; readonly sha256: string; }; /** Path of the whisper-cli binary inside the extracted archive. */ readonly binaryRelPath: string; } /** A whisper ggml model (hosted on Hugging Face, real, stable URLs). */ export interface WhisperModelManifest { readonly id: string; readonly bin: VerifiedDownloadSpec; } /** * Pinned goodvibes whisper.cpp builds per platform. Built from the v-tagged * whisper.cpp source with static ggml; the pin below is the exact artifact * produced (and smoke-verified: `whisper-cli -m ggml-base.en.bin -f jfk.wav` * transcribes correctly) by scripts/build-whisper-bundle.ts on linux-x64. */ export declare const WHISPER_ENGINES: Partial>; /** * The default STT model: base.en, the standard quality/size balance (~148MB). * * Pinned to an IMMUTABLE Hugging Face commit revision, not the mutable `main` * branch ref: an upstream re-export/re-quantize on main would otherwise change * the bytes and fail the sha256 pin on every fresh provision, bricking STT * platform-wide until a manifest update ships. The revision below is the repo * commit at which ggml-base.en.bin carries exactly the pinned sha256 (verified * via HF paths-info); the checksum is unchanged from the previous main pin. */ export declare const DEFAULT_WHISPER_MODEL: WhisperModelManifest; //# sourceMappingURL=manifest.d.ts.map