package model const ( DefaultModelID = "sensevoice-zh" MoonshineModelID = "moonshine-en" ParakeetModelID = "parakeet-en" Qwen3ASRModelID = "qwen3-asr-0.6b" XASRZhEn960ModelID = "x-asr-zh-en-960ms" DefaultLanguageID = "zh-CN" EnglishLanguageID = "en" ) type ModelProfile struct { ID string DisplayName string BackendKind string Tier string SupportedLanguageIDs []string RecommendedFor []string Description string ApproxSize string DownloadURLs []string InstallDirName string LegacyDirNames []string RequiredFiles []RequiredFileRule ProviderOrder []string NumThreads int } type RequiredFileRule struct { Role string AllOf []string AnyOf []string Required bool Directory bool } type LanguageProfile struct { ID string DisplayName string NativeName string UILocale string SystemMatchers []string DefaultModelID string UpgradeModelIDs []string } type ModelInstallStatus string const ( ModelNotInstalled ModelInstallStatus = "not_installed" ModelInstalledValid ModelInstallStatus = "installed_valid" ModelInstalledIncomplete ModelInstallStatus = "installed_incomplete" ModelStateInvalidFallbackFound ModelInstallStatus = "state_invalid_fallback_found" ModelStateInvalidNoFallback ModelInstallStatus = "state_invalid_no_fallback" ) type ResolvedModel struct { ModelID string Profile ModelProfile RootDir string SourceDirKind string Files map[string]string BackendKind string ProviderOrder []string Status ModelInstallStatus Missing []string Problems []string } func (r ResolvedModel) IsUsable() bool { return r.Status == ModelInstalledValid || r.Status == ModelStateInvalidFallbackFound }