@runanywhere/web 0.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +795 -0
  2. package/dist/Foundation/ErrorTypes.d.ts +61 -0
  3. package/dist/Foundation/ErrorTypes.d.ts.map +1 -0
  4. package/dist/Foundation/ErrorTypes.js +90 -0
  5. package/dist/Foundation/ErrorTypes.js.map +1 -0
  6. package/dist/Foundation/EventBus.d.ts +171 -0
  7. package/dist/Foundation/EventBus.d.ts.map +1 -0
  8. package/dist/Foundation/EventBus.js +113 -0
  9. package/dist/Foundation/EventBus.js.map +1 -0
  10. package/dist/Foundation/PlatformAdapter.d.ts +101 -0
  11. package/dist/Foundation/PlatformAdapter.d.ts.map +1 -0
  12. package/dist/Foundation/PlatformAdapter.js +417 -0
  13. package/dist/Foundation/PlatformAdapter.js.map +1 -0
  14. package/dist/Foundation/SDKLogger.d.ts +33 -0
  15. package/dist/Foundation/SDKLogger.d.ts.map +1 -0
  16. package/dist/Foundation/SDKLogger.js +82 -0
  17. package/dist/Foundation/SDKLogger.js.map +1 -0
  18. package/dist/Foundation/SherpaONNXBridge.d.ts +134 -0
  19. package/dist/Foundation/SherpaONNXBridge.d.ts.map +1 -0
  20. package/dist/Foundation/SherpaONNXBridge.js +332 -0
  21. package/dist/Foundation/SherpaONNXBridge.js.map +1 -0
  22. package/dist/Foundation/StructOffsets.d.ts +147 -0
  23. package/dist/Foundation/StructOffsets.d.ts.map +1 -0
  24. package/dist/Foundation/StructOffsets.js +161 -0
  25. package/dist/Foundation/StructOffsets.js.map +1 -0
  26. package/dist/Foundation/WASMBridge.d.ts +241 -0
  27. package/dist/Foundation/WASMBridge.d.ts.map +1 -0
  28. package/dist/Foundation/WASMBridge.js +393 -0
  29. package/dist/Foundation/WASMBridge.js.map +1 -0
  30. package/dist/Infrastructure/ArchiveUtility.d.ts +25 -0
  31. package/dist/Infrastructure/ArchiveUtility.d.ts.map +1 -0
  32. package/dist/Infrastructure/ArchiveUtility.js +139 -0
  33. package/dist/Infrastructure/ArchiveUtility.js.map +1 -0
  34. package/dist/Infrastructure/AudioCapture.d.ts +87 -0
  35. package/dist/Infrastructure/AudioCapture.d.ts.map +1 -0
  36. package/dist/Infrastructure/AudioCapture.js +231 -0
  37. package/dist/Infrastructure/AudioCapture.js.map +1 -0
  38. package/dist/Infrastructure/AudioPlayback.d.ts +53 -0
  39. package/dist/Infrastructure/AudioPlayback.d.ts.map +1 -0
  40. package/dist/Infrastructure/AudioPlayback.js +117 -0
  41. package/dist/Infrastructure/AudioPlayback.js.map +1 -0
  42. package/dist/Infrastructure/DeviceCapabilities.d.ts +39 -0
  43. package/dist/Infrastructure/DeviceCapabilities.d.ts.map +1 -0
  44. package/dist/Infrastructure/DeviceCapabilities.js +111 -0
  45. package/dist/Infrastructure/DeviceCapabilities.js.map +1 -0
  46. package/dist/Infrastructure/ExtensionRegistry.d.ts +30 -0
  47. package/dist/Infrastructure/ExtensionRegistry.d.ts.map +1 -0
  48. package/dist/Infrastructure/ExtensionRegistry.js +41 -0
  49. package/dist/Infrastructure/ExtensionRegistry.js.map +1 -0
  50. package/dist/Infrastructure/ModelDownloader.d.ts +98 -0
  51. package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -0
  52. package/dist/Infrastructure/ModelDownloader.js +431 -0
  53. package/dist/Infrastructure/ModelDownloader.js.map +1 -0
  54. package/dist/Infrastructure/ModelLoaderTypes.d.ts +34 -0
  55. package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -0
  56. package/dist/Infrastructure/ModelLoaderTypes.js +12 -0
  57. package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -0
  58. package/dist/Infrastructure/ModelManager.d.ts +219 -0
  59. package/dist/Infrastructure/ModelManager.d.ts.map +1 -0
  60. package/dist/Infrastructure/ModelManager.js +885 -0
  61. package/dist/Infrastructure/ModelManager.js.map +1 -0
  62. package/dist/Infrastructure/ModelRegistry.d.ts +131 -0
  63. package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -0
  64. package/dist/Infrastructure/ModelRegistry.js +122 -0
  65. package/dist/Infrastructure/ModelRegistry.js.map +1 -0
  66. package/dist/Infrastructure/OPFSStorage.d.ts +143 -0
  67. package/dist/Infrastructure/OPFSStorage.d.ts.map +1 -0
  68. package/dist/Infrastructure/OPFSStorage.js +330 -0
  69. package/dist/Infrastructure/OPFSStorage.js.map +1 -0
  70. package/dist/Infrastructure/VLMWorkerBridge.d.ts +211 -0
  71. package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +1 -0
  72. package/dist/Infrastructure/VLMWorkerBridge.js +264 -0
  73. package/dist/Infrastructure/VLMWorkerBridge.js.map +1 -0
  74. package/dist/Infrastructure/VLMWorkerRuntime.d.ts +38 -0
  75. package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +1 -0
  76. package/dist/Infrastructure/VLMWorkerRuntime.js +503 -0
  77. package/dist/Infrastructure/VLMWorkerRuntime.js.map +1 -0
  78. package/dist/Infrastructure/VideoCapture.d.ts +118 -0
  79. package/dist/Infrastructure/VideoCapture.d.ts.map +1 -0
  80. package/dist/Infrastructure/VideoCapture.js +207 -0
  81. package/dist/Infrastructure/VideoCapture.js.map +1 -0
  82. package/dist/Public/Extensions/DiffusionTypes.d.ts +64 -0
  83. package/dist/Public/Extensions/DiffusionTypes.d.ts.map +1 -0
  84. package/dist/Public/Extensions/DiffusionTypes.js +28 -0
  85. package/dist/Public/Extensions/DiffusionTypes.js.map +1 -0
  86. package/dist/Public/Extensions/EmbeddingsTypes.d.ts +33 -0
  87. package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +1 -0
  88. package/dist/Public/Extensions/EmbeddingsTypes.js +13 -0
  89. package/dist/Public/Extensions/EmbeddingsTypes.js.map +1 -0
  90. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +44 -0
  91. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +1 -0
  92. package/dist/Public/Extensions/RunAnywhere+Diffusion.js +189 -0
  93. package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +1 -0
  94. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +56 -0
  95. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +1 -0
  96. package/dist/Public/Extensions/RunAnywhere+Embeddings.js +240 -0
  97. package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +1 -0
  98. package/dist/Public/Extensions/RunAnywhere+ModelManagement.d.ts +53 -0
  99. package/dist/Public/Extensions/RunAnywhere+ModelManagement.d.ts.map +1 -0
  100. package/dist/Public/Extensions/RunAnywhere+ModelManagement.js +153 -0
  101. package/dist/Public/Extensions/RunAnywhere+ModelManagement.js.map +1 -0
  102. package/dist/Public/Extensions/RunAnywhere+STT.d.ts +95 -0
  103. package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +1 -0
  104. package/dist/Public/Extensions/RunAnywhere+STT.js +417 -0
  105. package/dist/Public/Extensions/RunAnywhere+STT.js.map +1 -0
  106. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +69 -0
  107. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +1 -0
  108. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +196 -0
  109. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +1 -0
  110. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +55 -0
  111. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +1 -0
  112. package/dist/Public/Extensions/RunAnywhere+TTS.js +253 -0
  113. package/dist/Public/Extensions/RunAnywhere+TTS.js.map +1 -0
  114. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +80 -0
  115. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +1 -0
  116. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +436 -0
  117. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +1 -0
  118. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +82 -0
  119. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +1 -0
  120. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +576 -0
  121. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +1 -0
  122. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +70 -0
  123. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +1 -0
  124. package/dist/Public/Extensions/RunAnywhere+VAD.js +231 -0
  125. package/dist/Public/Extensions/RunAnywhere+VAD.js.map +1 -0
  126. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +58 -0
  127. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +1 -0
  128. package/dist/Public/Extensions/RunAnywhere+VLM.js +262 -0
  129. package/dist/Public/Extensions/RunAnywhere+VLM.js.map +1 -0
  130. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.d.ts +49 -0
  131. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.d.ts.map +1 -0
  132. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.js +222 -0
  133. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.js.map +1 -0
  134. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +63 -0
  135. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -0
  136. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +168 -0
  137. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -0
  138. package/dist/Public/Extensions/STTTypes.d.ts +53 -0
  139. package/dist/Public/Extensions/STTTypes.d.ts.map +1 -0
  140. package/dist/Public/Extensions/STTTypes.js +16 -0
  141. package/dist/Public/Extensions/STTTypes.js.map +1 -0
  142. package/dist/Public/Extensions/TTSTypes.d.ts +31 -0
  143. package/dist/Public/Extensions/TTSTypes.d.ts.map +1 -0
  144. package/dist/Public/Extensions/TTSTypes.js +3 -0
  145. package/dist/Public/Extensions/TTSTypes.js.map +1 -0
  146. package/dist/Public/Extensions/ToolCallingTypes.d.ts +78 -0
  147. package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +1 -0
  148. package/dist/Public/Extensions/ToolCallingTypes.js +8 -0
  149. package/dist/Public/Extensions/ToolCallingTypes.js.map +1 -0
  150. package/dist/Public/Extensions/VADTypes.d.ts +30 -0
  151. package/dist/Public/Extensions/VADTypes.d.ts.map +1 -0
  152. package/dist/Public/Extensions/VADTypes.js +8 -0
  153. package/dist/Public/Extensions/VADTypes.js.map +1 -0
  154. package/dist/Public/Extensions/VLMTypes.d.ts +56 -0
  155. package/dist/Public/Extensions/VLMTypes.d.ts.map +1 -0
  156. package/dist/Public/Extensions/VLMTypes.js +24 -0
  157. package/dist/Public/Extensions/VLMTypes.js.map +1 -0
  158. package/dist/Public/Extensions/VoiceAgentTypes.d.ts +42 -0
  159. package/dist/Public/Extensions/VoiceAgentTypes.d.ts.map +1 -0
  160. package/dist/Public/Extensions/VoiceAgentTypes.js +12 -0
  161. package/dist/Public/Extensions/VoiceAgentTypes.js.map +1 -0
  162. package/dist/Public/Extensions/VoicePipelineTypes.d.ts +69 -0
  163. package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -0
  164. package/dist/Public/Extensions/VoicePipelineTypes.js +9 -0
  165. package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -0
  166. package/dist/Public/RunAnywhere.d.ts +121 -0
  167. package/dist/Public/RunAnywhere.d.ts.map +1 -0
  168. package/dist/Public/RunAnywhere.js +332 -0
  169. package/dist/Public/RunAnywhere.js.map +1 -0
  170. package/dist/index.d.ts +67 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +53 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/types/LLMTypes.d.ts +48 -0
  175. package/dist/types/LLMTypes.d.ts.map +1 -0
  176. package/dist/types/LLMTypes.js +8 -0
  177. package/dist/types/LLMTypes.js.map +1 -0
  178. package/dist/types/enums.d.ts +144 -0
  179. package/dist/types/enums.d.ts.map +1 -0
  180. package/dist/types/enums.js +159 -0
  181. package/dist/types/enums.js.map +1 -0
  182. package/dist/types/index.d.ts +9 -0
  183. package/dist/types/index.d.ts.map +1 -0
  184. package/dist/types/index.js +8 -0
  185. package/dist/types/index.js.map +1 -0
  186. package/dist/types/models.d.ts +154 -0
  187. package/dist/types/models.d.ts.map +1 -0
  188. package/dist/types/models.js +8 -0
  189. package/dist/types/models.js.map +1 -0
  190. package/dist/workers/vlm-worker.d.ts +9 -0
  191. package/dist/workers/vlm-worker.d.ts.map +1 -0
  192. package/dist/workers/vlm-worker.js +10 -0
  193. package/dist/workers/vlm-worker.js.map +1 -0
  194. package/package.json +62 -0
  195. package/wasm/racommons-webgpu.js +156 -0
  196. package/wasm/racommons-webgpu.wasm +0 -0
  197. package/wasm/racommons.js +126 -0
  198. package/wasm/racommons.wasm +0 -0
  199. package/wasm/sherpa/sherpa-onnx-asr.js +1538 -0
  200. package/wasm/sherpa/sherpa-onnx-glue-original.js +19 -0
  201. package/wasm/sherpa/sherpa-onnx-glue.js +17 -0
  202. package/wasm/sherpa/sherpa-onnx-tts.js +657 -0
  203. package/wasm/sherpa/sherpa-onnx-vad.js +337 -0
  204. package/wasm/sherpa/sherpa-onnx-wave.js +88 -0
  205. package/wasm/sherpa/sherpa-onnx.wasm +0 -0
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Model Manager - Thin orchestrator for model lifecycle
3
+ *
4
+ * Composes ModelRegistry (catalog) + ModelDownloader (downloads) and adds
5
+ * model-loading orchestration (STT / TTS / LLM / VLM routing).
6
+ *
7
+ * The public API is unchanged — `ModelManager` is still a singleton that
8
+ * exposes `registerModels()`, `downloadModel()`, `loadModel()`, `onChange()`, etc.
9
+ * Internally it delegates catalog operations to the Registry and download
10
+ * operations to the Downloader.
11
+ */
12
+ import { ModelCategory, LLMFramework, ModelStatus, DownloadStage } from '../types/enums';
13
+ import type { LLMModelLoader, STTModelLoader, TTSModelLoader, VADModelLoader } from './ModelLoaderTypes';
14
+ import type { ManagedModel, CompactModelDef, DownloadProgress, ModelFileDescriptor, ModelChangeCallback, ArtifactType } from './ModelRegistry';
15
+ export { ModelCategory, LLMFramework, ModelStatus, DownloadStage };
16
+ export type { ManagedModel, CompactModelDef, DownloadProgress, ModelFileDescriptor, ArtifactType };
17
+ /** Parameters for loading a VLM model in a dedicated worker. */
18
+ export interface VLMLoadParams {
19
+ modelOpfsKey: string;
20
+ modelFilename: string;
21
+ mmprojOpfsKey: string;
22
+ mmprojFilename: string;
23
+ modelId: string;
24
+ modelName: string;
25
+ /**
26
+ * Optional: raw model data to transfer to the Worker when OPFS doesn't
27
+ * have the file (memory-cache fallback for quota-exceeded scenarios).
28
+ * Transferred via postMessage (zero-copy).
29
+ */
30
+ modelData?: ArrayBuffer;
31
+ /** Optional: raw mmproj data (same fallback). */
32
+ mmprojData?: ArrayBuffer;
33
+ }
34
+ /**
35
+ * Interface for VLM (vision-language model) loading.
36
+ * The app provides an implementation (typically backed by a Web Worker)
37
+ * via `ModelManager.setVLMLoader()`.
38
+ */
39
+ export interface VLMLoader {
40
+ init(): Promise<void>;
41
+ readonly isInitialized: boolean;
42
+ loadModel(params: VLMLoadParams): Promise<void>;
43
+ unloadModel(): Promise<void>;
44
+ }
45
+ declare class ModelManagerImpl {
46
+ private readonly registry;
47
+ private readonly storage;
48
+ private readonly downloader;
49
+ /**
50
+ * Tracks loaded models per category — allows STT + LLM + TTS simultaneously
51
+ * for the voice pipeline. Key = ModelCategory, Value = model id.
52
+ */
53
+ private loadedByCategory;
54
+ /** LRU metadata: lastUsedAt timestamps persisted in OPFS */
55
+ private metadata;
56
+ /** Pluggable VLM loader (set by the app via setVLMLoader) */
57
+ private vlmLoader;
58
+ /** Pluggable model loaders — registered by the Public layer during init */
59
+ private llmLoader;
60
+ private sttLoader;
61
+ private ttsLoader;
62
+ private vadLoader;
63
+ constructor();
64
+ private initStorage;
65
+ /**
66
+ * Register a catalog of models. Resolves compact definitions into full
67
+ * ManagedModel entries and checks OPFS for previously downloaded files.
68
+ */
69
+ registerModels(models: CompactModelDef[]): void;
70
+ /**
71
+ * Set the VLM loader implementation. Called by the app to plug in
72
+ * worker-based VLM loading (the SDK doesn't create Web Workers directly).
73
+ */
74
+ setVLMLoader(loader: VLMLoader): void;
75
+ /** Register the LLM model loader (text generation extension). */
76
+ setLLMLoader(loader: LLMModelLoader): void;
77
+ /** Register the STT model loader (speech-to-text extension). */
78
+ setSTTLoader(loader: STTModelLoader): void;
79
+ /** Register the TTS model loader (text-to-speech extension). */
80
+ setTTSLoader(loader: TTSModelLoader): void;
81
+ /** Register the VAD model loader (voice activity detection extension). */
82
+ setVADLoader(loader: VADModelLoader): void;
83
+ /** Request persistent storage to prevent browser from evicting cached models */
84
+ private requestPersistentStorage;
85
+ /**
86
+ * Check OPFS for models that were downloaded in a previous session.
87
+ * Updates their status from 'registered' to 'downloaded'.
88
+ * Also loads persisted LRU metadata for each model.
89
+ * Only checks file existence + size — does NOT read file contents into memory.
90
+ */
91
+ private refreshDownloadStatus;
92
+ getModels(): ManagedModel[];
93
+ getModelsByCategory(category: ModelCategory): ManagedModel[];
94
+ getModelsByFramework(framework: LLMFramework): ManagedModel[];
95
+ getLLMModels(): ManagedModel[];
96
+ getVLMModels(): ManagedModel[];
97
+ getSTTModels(): ManagedModel[];
98
+ getTTSModels(): ManagedModel[];
99
+ getVADModels(): ManagedModel[];
100
+ getLoadedModel(category?: ModelCategory): ManagedModel | null;
101
+ getLoadedModelId(category?: ModelCategory): string | null;
102
+ /** Check if models for all given categories are loaded */
103
+ areAllLoaded(categories: ModelCategory[]): boolean;
104
+ /**
105
+ * Ensure a model is loaded for the given category.
106
+ * If already loaded, returns the loaded model. If a downloaded model exists,
107
+ * loads it automatically. Returns null if no suitable model is available.
108
+ *
109
+ * @param options.coexist Forwarded to `loadModel()`. When true, only swaps
110
+ * models of the same category instead of unloading everything.
111
+ */
112
+ ensureLoaded(category: ModelCategory, options?: {
113
+ coexist?: boolean;
114
+ }): Promise<ManagedModel | null>;
115
+ /**
116
+ * Check whether downloading a model will fit in OPFS without eviction.
117
+ * Returns a result indicating whether it fits and which models could be
118
+ * evicted if not. Does NOT perform any mutations.
119
+ */
120
+ checkDownloadFit(modelId: string): Promise<import('./ModelDownloader').QuotaCheckResult>;
121
+ downloadModel(modelId: string): Promise<void>;
122
+ /**
123
+ * Load a model by ID.
124
+ *
125
+ * @param options.coexist When `true`, only unload the model of the **same
126
+ * category** (swap) rather than unloading ALL loaded models. Use this for
127
+ * multi-model pipelines like Voice (STT + LLM + TTS).
128
+ * Default is `false` — unloads everything to reclaim memory.
129
+ */
130
+ loadModel(modelId: string, options?: {
131
+ coexist?: boolean;
132
+ }): Promise<boolean>;
133
+ unloadModel(modelId: string): Promise<void>;
134
+ /**
135
+ * Unload ALL currently loaded models.
136
+ *
137
+ * Called automatically before loading a new model, and can also be called
138
+ * explicitly by app code (e.g. on tab switch) to release all resources.
139
+ *
140
+ * @param exceptModelId - Optional model ID to skip (the model about to be loaded).
141
+ * Avoids redundant unload+reload of the same model.
142
+ */
143
+ unloadAll(exceptModelId?: string): Promise<void>;
144
+ deleteModel(modelId: string): Promise<void>;
145
+ /** Clear all models from OPFS and reset registry statuses. */
146
+ clearAll(): Promise<void>;
147
+ getStorageInfo(): Promise<{
148
+ modelCount: number;
149
+ totalSize: number;
150
+ available: number;
151
+ }>;
152
+ /** Get the last-used timestamp for a model (0 if never recorded). */
153
+ getModelLastUsedAt(modelId: string): number;
154
+ /** Update lastUsedAt for a model and persist to OPFS (fire-and-forget). */
155
+ private touchLastUsed;
156
+ /** Remove metadata entry when a model is deleted. */
157
+ private removeMetadata;
158
+ onChange(callback: ModelChangeCallback): () => void;
159
+ /**
160
+ * Load an LLM/VLM model into the RACommons Emscripten FS.
161
+ */
162
+ private loadLLMModel;
163
+ /**
164
+ * Load an STT model into sherpa-onnx.
165
+ *
166
+ * Supports two modes:
167
+ * 1. **Archive** (isArchive=true): Download is a .tar.gz that bundles encoder,
168
+ * decoder, tokens, etc. Matches the Swift SDK approach.
169
+ * 2. **Individual files**: Separate encoder/decoder/tokens downloads.
170
+ */
171
+ private loadSTTModel;
172
+ /**
173
+ * Load an STT model from a .tar.gz archive (matching Swift SDK approach).
174
+ * Extracts encoder, decoder, and tokens from the archive automatically.
175
+ */
176
+ private loadSTTFromArchive;
177
+ /**
178
+ * Load an STT model from individual downloaded files (legacy path).
179
+ */
180
+ private loadSTTFromIndividualFiles;
181
+ /**
182
+ * Load a TTS model into the sherpa-onnx Emscripten FS and initialise the TTS engine.
183
+ *
184
+ * Supports two modes:
185
+ * 1. **Archive** (isArchive=true): Download is a .tar.gz that bundles model files +
186
+ * espeak-ng-data. Matches the Swift SDK approach — extract and write all files.
187
+ * 2. **Individual files** (legacy): Separate model + companion file downloads.
188
+ */
189
+ private loadTTSModel;
190
+ /**
191
+ * Load a TTS model from a .tar.gz archive (matching Swift SDK approach).
192
+ *
193
+ * The archive contains all necessary files in a nested directory:
194
+ * model.onnx, tokens.txt, espeak-ng-data/, etc.
195
+ * We extract everything and write it to the sherpa virtual FS.
196
+ */
197
+ private loadTTSFromArchive;
198
+ /**
199
+ * Load a TTS model from individual downloaded files.
200
+ * Used when models are registered with individual file URLs (e.g. HuggingFace)
201
+ * rather than tar.gz archives. Downloads espeak-ng-data on-demand for Piper models.
202
+ */
203
+ private loadTTSFromIndividualFiles;
204
+ /**
205
+ * Load a VAD model (Silero) into the sherpa-onnx Emscripten FS.
206
+ * The Silero VAD is a single ONNX file — write it to FS and initialise.
207
+ */
208
+ private loadVADModel;
209
+ /**
210
+ * Find the common directory prefix in archive entry paths.
211
+ * Archives typically contain a single top-level directory (nested structure).
212
+ * Returns the prefix including trailing '/', or empty string if no common prefix.
213
+ */
214
+ private findArchivePrefix;
215
+ /** Unload the currently loaded model for a specific category */
216
+ private unloadModelByCategory;
217
+ }
218
+ export declare const ModelManager: ModelManagerImpl;
219
+ //# sourceMappingURL=ModelManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelManager.d.ts","sourceRoot":"","sources":["../../src/Infrastructure/ModelManager.ts"],"names":[],"mappings":"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"}