@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,134 @@
1
+ /**
2
+ * RunAnywhere Web SDK - Sherpa-ONNX WASM Bridge
3
+ *
4
+ * Loads the sherpa-onnx WASM module (separate from RACommons) and provides
5
+ * typed access to the sherpa-onnx C API for:
6
+ * - STT (Speech-to-Text) via Whisper, Zipformer, Paraformer
7
+ * - TTS (Text-to-Speech) via Piper/VITS
8
+ * - VAD (Voice Activity Detection) via Silero
9
+ *
10
+ * Architecture:
11
+ * RACommons WASM handles LLM, VLM, Embeddings (llama.cpp)
12
+ * Sherpa-ONNX WASM handles STT, TTS, VAD (onnxruntime)
13
+ *
14
+ * The sherpa-onnx module is lazy-loaded on first use of STT/TTS/VAD.
15
+ */
16
+ /**
17
+ * Emscripten module interface for sherpa-onnx WASM.
18
+ * Based on sherpa-onnx's wasm/nodejs C API exports.
19
+ */
20
+ export interface SherpaONNXModule {
21
+ ccall: (ident: string, returnType: string | null, argTypes: string[], args: unknown[]) => unknown;
22
+ cwrap: (ident: string, returnType: string | null, argTypes: string[]) => (...args: unknown[]) => unknown;
23
+ _malloc: (size: number) => number;
24
+ _free: (ptr: number) => void;
25
+ setValue: (ptr: number, value: number, type: string) => void;
26
+ getValue: (ptr: number, type: string) => number;
27
+ UTF8ToString: (ptr: number) => string;
28
+ stringToUTF8: (str: string, ptr: number, maxLen: number) => void;
29
+ lengthBytesUTF8: (str: string) => number;
30
+ HEAPU8: Uint8Array;
31
+ HEAP16: Int16Array;
32
+ HEAP32: Int32Array;
33
+ HEAPF32: Float32Array;
34
+ HEAPF64: Float64Array;
35
+ FS: SherpaFS;
36
+ _SherpaOnnxCreateOfflineRecognizer: (configPtr: number) => number;
37
+ _SherpaOnnxDestroyOfflineRecognizer: (handle: number) => void;
38
+ _SherpaOnnxCreateOfflineStream: (handle: number) => number;
39
+ _SherpaOnnxDestroyOfflineStream: (stream: number) => void;
40
+ _SherpaOnnxAcceptWaveformOffline: (stream: number, sampleRate: number, samplesPtr: number, numSamples: number) => void;
41
+ _SherpaOnnxDecodeOfflineStream: (handle: number, stream: number) => void;
42
+ _SherpaOnnxGetOfflineStreamResultAsJson: (stream: number) => number;
43
+ _SherpaOnnxDestroyOfflineStreamResultJson: (ptr: number) => void;
44
+ _SherpaOnnxCreateOnlineRecognizer: (configPtr: number) => number;
45
+ _SherpaOnnxDestroyOnlineRecognizer: (handle: number) => void;
46
+ _SherpaOnnxCreateOnlineStream: (handle: number) => number;
47
+ _SherpaOnnxDestroyOnlineStream: (stream: number) => void;
48
+ _SherpaOnnxOnlineStreamAcceptWaveform: (stream: number, sampleRate: number, samplesPtr: number, numSamples: number) => void;
49
+ _SherpaOnnxIsOnlineStreamReady: (handle: number, stream: number) => number;
50
+ _SherpaOnnxDecodeOnlineStream: (handle: number, stream: number) => void;
51
+ _SherpaOnnxGetOnlineStreamResultAsJson: (handle: number, stream: number) => number;
52
+ _SherpaOnnxDestroyOnlineStreamResultJson: (ptr: number) => void;
53
+ _SherpaOnnxOnlineStreamInputFinished: (stream: number) => void;
54
+ _SherpaOnnxOnlineStreamIsEndpoint: (handle: number, stream: number) => number;
55
+ _SherpaOnnxOnlineStreamReset: (handle: number, stream: number) => void;
56
+ _SherpaOnnxCreateOfflineTts: (configPtr: number) => number;
57
+ _SherpaOnnxDestroyOfflineTts: (handle: number) => void;
58
+ _SherpaOnnxOfflineTtsGenerate: (handle: number, textPtr: number, sid: number, speed: number) => number;
59
+ _SherpaOnnxDestroyOfflineTtsGeneratedAudio: (audio: number) => void;
60
+ _SherpaOnnxOfflineTtsSampleRate: (handle: number) => number;
61
+ _SherpaOnnxOfflineTtsNumSpeakers: (handle: number) => number;
62
+ _SherpaOnnxCreateVoiceActivityDetector: (configPtr: number, bufferSizeInSeconds: number) => number;
63
+ _SherpaOnnxDestroyVoiceActivityDetector: (handle: number) => void;
64
+ _SherpaOnnxVoiceActivityDetectorAcceptWaveform: (handle: number, samplesPtr: number, numSamples: number) => void;
65
+ _SherpaOnnxVoiceActivityDetectorEmpty: (handle: number) => number;
66
+ _SherpaOnnxVoiceActivityDetectorDetected: (handle: number) => number;
67
+ _SherpaOnnxVoiceActivityDetectorPop: (handle: number) => void;
68
+ _SherpaOnnxVoiceActivityDetectorFront: (handle: number) => number;
69
+ _SherpaOnnxDestroySpeechSegment: (segment: number) => void;
70
+ _SherpaOnnxVoiceActivityDetectorReset: (handle: number) => void;
71
+ _SherpaOnnxVoiceActivityDetectorFlush: (handle: number) => void;
72
+ _CopyHeap?: (srcPtr: number, numBytes: number, dstPtr: number) => void;
73
+ }
74
+ interface SherpaFS {
75
+ mkdir: (path: string) => void;
76
+ writeFile: (path: string, data: Uint8Array | string) => void;
77
+ readFile: (path: string) => Uint8Array;
78
+ unlink: (path: string) => void;
79
+ analyzePath: (path: string) => {
80
+ exists: boolean;
81
+ };
82
+ }
83
+ /**
84
+ * SherpaONNXBridge - Loads and manages the sherpa-onnx WASM module.
85
+ *
86
+ * Singleton that provides access to sherpa-onnx C API functions.
87
+ * Lazy-loaded: only initializes when STT/TTS/VAD is first used.
88
+ */
89
+ export declare class SherpaONNXBridge {
90
+ private static _instance;
91
+ private _module;
92
+ private _loaded;
93
+ private _loading;
94
+ static get shared(): SherpaONNXBridge;
95
+ get isLoaded(): boolean;
96
+ get module(): SherpaONNXModule;
97
+ /**
98
+ * Ensure the sherpa-onnx WASM module is loaded.
99
+ * Safe to call multiple times -- will only load once.
100
+ *
101
+ * @param wasmUrl - URL/path to the sherpa-onnx glue JS file.
102
+ * Defaults to wasm/sherpa/sherpa-onnx-glue.js
103
+ */
104
+ ensureLoaded(wasmUrl?: string): Promise<void>;
105
+ private _doLoad;
106
+ /**
107
+ * Get the Emscripten FS object from the module.
108
+ * Handles both direct FS property and module-level helper functions.
109
+ */
110
+ private getFS;
111
+ /**
112
+ * Ensure a directory exists in the sherpa-onnx Emscripten virtual FS.
113
+ */
114
+ ensureDir(path: string): void;
115
+ /**
116
+ * Write a file into the sherpa-onnx Emscripten virtual FS.
117
+ * Used to stage model files before loading.
118
+ *
119
+ * Prefers FS_createDataFile over FS.writeFile for reliability —
120
+ * the module was compiled with NODERAWFS which can leave FS.writeFile
121
+ * in a broken state even after our browser patches.
122
+ */
123
+ writeFile(path: string, data: Uint8Array): void;
124
+ /**
125
+ * Download a file from a URL and write it to the sherpa-onnx FS.
126
+ */
127
+ downloadAndWrite(url: string, fsPath: string, onProgress?: (loaded: number, total: number) => void): Promise<void>;
128
+ allocString(str: string): number;
129
+ readString(ptr: number): string;
130
+ free(ptr: number): void;
131
+ shutdown(): void;
132
+ }
133
+ export {};
134
+ //# sourceMappingURL=SherpaONNXBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SherpaONNXBridge.d.ts","sourceRoot":"","sources":["../../src/Foundation/SherpaONNXBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * RunAnywhere Web SDK - Sherpa-ONNX WASM Bridge
3
+ *
4
+ * Loads the sherpa-onnx WASM module (separate from RACommons) and provides
5
+ * typed access to the sherpa-onnx C API for:
6
+ * - STT (Speech-to-Text) via Whisper, Zipformer, Paraformer
7
+ * - TTS (Text-to-Speech) via Piper/VITS
8
+ * - VAD (Voice Activity Detection) via Silero
9
+ *
10
+ * Architecture:
11
+ * RACommons WASM handles LLM, VLM, Embeddings (llama.cpp)
12
+ * Sherpa-ONNX WASM handles STT, TTS, VAD (onnxruntime)
13
+ *
14
+ * The sherpa-onnx module is lazy-loaded on first use of STT/TTS/VAD.
15
+ */
16
+ import { SDKError, SDKErrorCode } from './ErrorTypes';
17
+ import { SDKLogger } from './SDKLogger';
18
+ const logger = new SDKLogger('SherpaONNX');
19
+ // ---------------------------------------------------------------------------
20
+ // SherpaONNXBridge
21
+ // ---------------------------------------------------------------------------
22
+ /**
23
+ * SherpaONNXBridge - Loads and manages the sherpa-onnx WASM module.
24
+ *
25
+ * Singleton that provides access to sherpa-onnx C API functions.
26
+ * Lazy-loaded: only initializes when STT/TTS/VAD is first used.
27
+ */
28
+ export class SherpaONNXBridge {
29
+ static _instance = null;
30
+ _module = null;
31
+ _loaded = false;
32
+ _loading = null;
33
+ static get shared() {
34
+ if (!SherpaONNXBridge._instance) {
35
+ SherpaONNXBridge._instance = new SherpaONNXBridge();
36
+ }
37
+ return SherpaONNXBridge._instance;
38
+ }
39
+ get isLoaded() {
40
+ return this._loaded && this._module !== null;
41
+ }
42
+ get module() {
43
+ if (!this._module) {
44
+ throw new SDKError(SDKErrorCode.WASMNotLoaded, 'Sherpa-ONNX WASM not loaded. Call ensureLoaded() first.');
45
+ }
46
+ return this._module;
47
+ }
48
+ /**
49
+ * Ensure the sherpa-onnx WASM module is loaded.
50
+ * Safe to call multiple times -- will only load once.
51
+ *
52
+ * @param wasmUrl - URL/path to the sherpa-onnx glue JS file.
53
+ * Defaults to wasm/sherpa/sherpa-onnx-glue.js
54
+ */
55
+ async ensureLoaded(wasmUrl) {
56
+ if (this._loaded)
57
+ return;
58
+ // Prevent duplicate loading
59
+ if (this._loading) {
60
+ await this._loading;
61
+ return;
62
+ }
63
+ this._loading = this._doLoad(wasmUrl);
64
+ await this._loading;
65
+ this._loading = null;
66
+ }
67
+ async _doLoad(wasmUrl) {
68
+ logger.info('Loading Sherpa-ONNX WASM module...');
69
+ try {
70
+ const moduleUrl = wasmUrl ?? new URL('../../wasm/sherpa/sherpa-onnx-glue.js', import.meta.url).href;
71
+ const { default: createModule } = await import(/* @vite-ignore */ moduleUrl);
72
+ // Derive the base URL for the .wasm binary
73
+ const baseUrl = moduleUrl.substring(0, moduleUrl.lastIndexOf('/') + 1);
74
+ const wasmBinaryUrl = baseUrl + 'sherpa-onnx.wasm';
75
+ // Pre-fetch the WASM binary to avoid Emscripten's sync XHR
76
+ // (the Node.js-targeted build uses sync fetch which fails in browsers)
77
+ logger.info(`Fetching sherpa-onnx WASM binary from ${wasmBinaryUrl}`);
78
+ const wasmResponse = await fetch(wasmBinaryUrl);
79
+ if (!wasmResponse.ok) {
80
+ throw new Error(`Failed to fetch sherpa-onnx.wasm: ${wasmResponse.status} ${wasmResponse.statusText}`);
81
+ }
82
+ const wasmBinary = await wasmResponse.arrayBuffer();
83
+ logger.info(`Sherpa-ONNX WASM binary fetched: ${(wasmBinary.byteLength / 1_000_000).toFixed(1)} MB`);
84
+ // Use instantiateWasm for async compilation (Chrome blocks sync compile for >8MB).
85
+ //
86
+ // The sherpa-onnx glue JS was compiled with NODERAWFS but we patched it:
87
+ // 1. ENVIRONMENT_IS_NODE = false → forces browser code paths
88
+ // 2. NODERAWFS mounting skipped → FS uses MEMFS
89
+ // 3. receiveInstance patched → re-assigns Module exports after wasmExports is set
90
+ //
91
+ // We pass noFSInit: true to skip FS.init() (which creates /dev/stdin etc.).
92
+ // We don't need standard streams — only file operations for staging model files.
93
+ // This ensures initRuntime() succeeds and the ready promise resolves.
94
+ //
95
+ // We track a separate wasmReady promise so that if WebAssembly.instantiate
96
+ // itself fails, we get the actual error instead of a generic timeout.
97
+ let resolveWasm;
98
+ let rejectWasm;
99
+ const wasmReady = new Promise((resolve, reject) => {
100
+ resolveWasm = resolve;
101
+ rejectWasm = reject;
102
+ });
103
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
+ const mod = createModule({
105
+ noFSInit: true,
106
+ print: (text) => logger.debug(text),
107
+ printErr: (text) => logger.warning(text),
108
+ wasmBinary,
109
+ locateFile: (path) => baseUrl + path,
110
+ instantiateWasm: (imports, receiveInstance) => {
111
+ WebAssembly.instantiate(wasmBinary, imports)
112
+ .then((result) => {
113
+ try {
114
+ receiveInstance(result.instance, result.module);
115
+ resolveWasm();
116
+ }
117
+ catch (err) {
118
+ // receiveInstance may throw if initRuntime fails (e.g. FS errors).
119
+ // The WASM exports are already set by our patch at this point.
120
+ logger.warning(`receiveInstance completed with error (exports should still be set): ${err}`);
121
+ resolveWasm(); // Still resolve — exports are set before the throw point
122
+ }
123
+ })
124
+ .catch((err) => {
125
+ const error = err instanceof Error ? err : new Error(String(err));
126
+ logger.error(`WASM instantiation failed: ${error.message}`);
127
+ rejectWasm(error);
128
+ });
129
+ return {}; // Indicates async instantiation
130
+ },
131
+ });
132
+ // Wait for WASM instantiation + receiveInstance to complete.
133
+ // Also race with the module.ready promise (which resolves after full init).
134
+ const timeoutPromise = new Promise((_, reject) => {
135
+ setTimeout(() => reject(new Error('Sherpa-ONNX WASM module timed out after 30s')), 30_000);
136
+ });
137
+ await Promise.race([wasmReady, timeoutPromise]);
138
+ this._module = mod;
139
+ // Verify critical exports are available (set by our patched receiveInstance)
140
+ if (typeof mod._malloc !== 'function') {
141
+ const available = ['_malloc', '_free', '_SherpaOnnxCreateOfflineRecognizer']
142
+ .map(fn => `${fn}: ${typeof mod[fn]}`)
143
+ .join(', ');
144
+ throw new Error(`WASM exports not available after initialization. Available: ${available}`);
145
+ }
146
+ this._loaded = true;
147
+ logger.info('Sherpa-ONNX WASM module loaded successfully');
148
+ }
149
+ catch (error) {
150
+ this._module = null;
151
+ this._loaded = false;
152
+ const message = error instanceof Error ? error.message : String(error);
153
+ logger.error(`Failed to load Sherpa-ONNX WASM: ${message}`);
154
+ throw new SDKError(SDKErrorCode.WASMLoadFailed, `Failed to load Sherpa-ONNX WASM module: ${message}. ` +
155
+ 'Build with: ./wasm/scripts/build-sherpa-onnx.sh');
156
+ }
157
+ }
158
+ // -----------------------------------------------------------------------
159
+ // Filesystem Helpers
160
+ // -----------------------------------------------------------------------
161
+ /**
162
+ * Get the Emscripten FS object from the module.
163
+ * Handles both direct FS property and module-level helper functions.
164
+ */
165
+ getFS() {
166
+ const m = this.module;
167
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
+ const mod = m;
169
+ // First try direct FS property
170
+ if (m.FS && typeof m.FS.mkdir === 'function') {
171
+ return m.FS;
172
+ }
173
+ // Fallback: construct FS-like interface from Emscripten module-level helpers
174
+ if (typeof mod.FS_createPath === 'function') {
175
+ return {
176
+ mkdir: (p) => {
177
+ const parent = p.substring(0, p.lastIndexOf('/')) || '/';
178
+ const name = p.substring(p.lastIndexOf('/') + 1);
179
+ mod.FS_createPath(parent, name, true, true);
180
+ },
181
+ writeFile: (p, data) => {
182
+ const dir = p.substring(0, p.lastIndexOf('/')) || '/';
183
+ const name = p.substring(p.lastIndexOf('/') + 1);
184
+ try {
185
+ mod.FS_unlink(p);
186
+ }
187
+ catch { /* file may not exist */ }
188
+ mod.FS_createDataFile(dir, name, data, true, true, true);
189
+ },
190
+ readFile: (p) => mod.FS_readFile(p),
191
+ unlink: (p) => mod.FS_unlink(p),
192
+ analyzePath: (p) => {
193
+ try {
194
+ mod.FS_readFile(p);
195
+ return { exists: true };
196
+ }
197
+ catch {
198
+ return { exists: false };
199
+ }
200
+ },
201
+ };
202
+ }
203
+ throw new SDKError(SDKErrorCode.WASMNotLoaded, 'Sherpa-ONNX FS not available');
204
+ }
205
+ /**
206
+ * Ensure a directory exists in the sherpa-onnx Emscripten virtual FS.
207
+ */
208
+ ensureDir(path) {
209
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
210
+ const mod = this.module;
211
+ if (typeof mod.FS_createPath === 'function') {
212
+ // Use FS_createPath which creates all intermediate directories
213
+ mod.FS_createPath('/', path.replace(/^\//, ''), true, true);
214
+ return;
215
+ }
216
+ // Fallback to FS.mkdir
217
+ const fs = this.getFS();
218
+ const parts = path.split('/').filter(Boolean);
219
+ let current = '';
220
+ for (const part of parts) {
221
+ current += '/' + part;
222
+ if (!fs.analyzePath(current).exists) {
223
+ fs.mkdir(current);
224
+ }
225
+ }
226
+ }
227
+ /**
228
+ * Write a file into the sherpa-onnx Emscripten virtual FS.
229
+ * Used to stage model files before loading.
230
+ *
231
+ * Prefers FS_createDataFile over FS.writeFile for reliability —
232
+ * the module was compiled with NODERAWFS which can leave FS.writeFile
233
+ * in a broken state even after our browser patches.
234
+ */
235
+ writeFile(path, data) {
236
+ const dir = path.substring(0, path.lastIndexOf('/'));
237
+ if (dir)
238
+ this.ensureDir(dir);
239
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
240
+ const mod = this.module;
241
+ // Prefer FS_createDataFile — it creates the file node and writes data
242
+ // in one shot, avoiding potential issues with FS.open / FS.write on
243
+ // NODERAWFS-patched modules.
244
+ if (typeof mod.FS_createDataFile === 'function') {
245
+ const parentDir = dir || '/';
246
+ const filename = path.substring(path.lastIndexOf('/') + 1);
247
+ // Remove existing file first (FS_createDataFile throws if it exists)
248
+ try {
249
+ if (typeof mod.FS_unlink === 'function') {
250
+ mod.FS_unlink(path);
251
+ }
252
+ }
253
+ catch {
254
+ // File doesn't exist — that's fine
255
+ }
256
+ mod.FS_createDataFile(parentDir, filename, data, true, true, false);
257
+ logger.debug(`Wrote ${data.length} bytes to sherpa FS: ${path}`);
258
+ return;
259
+ }
260
+ // Fallback to FS.writeFile
261
+ const fs = this.getFS();
262
+ fs.writeFile(path, data);
263
+ logger.debug(`Wrote ${data.length} bytes to sherpa FS: ${path}`);
264
+ }
265
+ /**
266
+ * Download a file from a URL and write it to the sherpa-onnx FS.
267
+ */
268
+ async downloadAndWrite(url, fsPath, onProgress) {
269
+ logger.info(`Downloading ${url} -> ${fsPath}`);
270
+ const response = await fetch(url);
271
+ if (!response.ok) {
272
+ throw new SDKError(SDKErrorCode.NetworkError, `Failed to download ${url}: ${response.status} ${response.statusText}`);
273
+ }
274
+ const contentLength = Number(response.headers.get('content-length') ?? 0);
275
+ const reader = response.body?.getReader();
276
+ if (!reader) {
277
+ // Fallback: read all at once
278
+ const buffer = await response.arrayBuffer();
279
+ this.writeFile(fsPath, new Uint8Array(buffer));
280
+ return;
281
+ }
282
+ // Stream download with progress
283
+ const chunks = [];
284
+ let loaded = 0;
285
+ while (true) {
286
+ const { done, value } = await reader.read();
287
+ if (done)
288
+ break;
289
+ chunks.push(value);
290
+ loaded += value.length;
291
+ onProgress?.(loaded, contentLength);
292
+ }
293
+ // Combine chunks
294
+ const combined = new Uint8Array(loaded);
295
+ let offset = 0;
296
+ for (const chunk of chunks) {
297
+ combined.set(chunk, offset);
298
+ offset += chunk.length;
299
+ }
300
+ this.writeFile(fsPath, combined);
301
+ }
302
+ // -----------------------------------------------------------------------
303
+ // String Helpers
304
+ // -----------------------------------------------------------------------
305
+ allocString(str) {
306
+ const m = this.module;
307
+ const len = m.lengthBytesUTF8(str) + 1;
308
+ const ptr = m._malloc(len);
309
+ m.stringToUTF8(str, ptr, len);
310
+ return ptr;
311
+ }
312
+ readString(ptr) {
313
+ if (ptr === 0)
314
+ return '';
315
+ return this.module.UTF8ToString(ptr);
316
+ }
317
+ free(ptr) {
318
+ if (ptr !== 0)
319
+ this.module._free(ptr);
320
+ }
321
+ // -----------------------------------------------------------------------
322
+ // Cleanup
323
+ // -----------------------------------------------------------------------
324
+ shutdown() {
325
+ this._module = null;
326
+ this._loaded = false;
327
+ this._loading = null;
328
+ SherpaONNXBridge._instance = null;
329
+ logger.info('Sherpa-ONNX bridge shut down');
330
+ }
331
+ }
332
+ //# sourceMappingURL=SherpaONNXBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SherpaONNXBridge.js","sourceRoot":"","sources":["../../src/Foundation/SherpaONNXBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * RunAnywhere Web SDK - WASM Struct Field Offsets
3
+ *
4
+ * C struct field offsets depend on alignment, padding, pointer size (wasm32
5
+ * vs wasm64) and compiler flags. Hard-coding them in TypeScript is fragile
6
+ * and leads to silent data corruption when the C layout changes.
7
+ *
8
+ * This module queries `rac_wasm_offsetof_*()` helpers (compiled via
9
+ * `offsetof()` in wasm_exports.cpp) exactly once after the WASM module is
10
+ * loaded, and caches the results for the lifetime of the page.
11
+ *
12
+ * Usage:
13
+ * import { Offsets, loadOffsets } from '../Foundation/StructOffsets';
14
+ *
15
+ * // Called once during SDK init (after WASM load):
16
+ * loadOffsets(wasmModule);
17
+ *
18
+ * // Then anywhere:
19
+ * m.setValue(optPtr + Offsets.llmOptions.temperature, 0.8, 'float');
20
+ */
21
+ export interface ConfigOffsets {
22
+ logLevel: number;
23
+ }
24
+ export interface LLMOptionsOffsets {
25
+ maxTokens: number;
26
+ temperature: number;
27
+ topP: number;
28
+ }
29
+ export interface LLMResultOffsets {
30
+ text: number;
31
+ promptTokens: number;
32
+ completionTokens: number;
33
+ }
34
+ export interface VLMImageOffsets {
35
+ format: number;
36
+ filePath: number;
37
+ pixelData: number;
38
+ base64Data: number;
39
+ width: number;
40
+ height: number;
41
+ dataSize: number;
42
+ }
43
+ export interface VLMOptionsOffsets {
44
+ maxTokens: number;
45
+ temperature: number;
46
+ topP: number;
47
+ streamingEnabled: number;
48
+ systemPrompt: number;
49
+ modelFamily: number;
50
+ }
51
+ export interface VLMResultOffsets {
52
+ text: number;
53
+ promptTokens: number;
54
+ imageTokens: number;
55
+ completionTokens: number;
56
+ totalTokens: number;
57
+ timeToFirstTokenMs: number;
58
+ imageEncodeTimeMs: number;
59
+ totalTimeMs: number;
60
+ tokensPerSecond: number;
61
+ }
62
+ export interface StructuredOutputConfigOffsets {
63
+ jsonSchema: number;
64
+ includeSchemaInPrompt: number;
65
+ }
66
+ export interface StructuredOutputValidationOffsets {
67
+ isValid: number;
68
+ errorMessage: number;
69
+ extractedJson: number;
70
+ }
71
+ export interface EmbeddingsOptionsOffsets {
72
+ normalize: number;
73
+ pooling: number;
74
+ nThreads: number;
75
+ }
76
+ export interface EmbeddingsResultOffsets {
77
+ embeddings: number;
78
+ numEmbeddings: number;
79
+ dimension: number;
80
+ processingTimeMs: number;
81
+ totalTokens: number;
82
+ }
83
+ export interface EmbeddingVectorOffsets {
84
+ data: number;
85
+ dimension: number;
86
+ structSize: number;
87
+ }
88
+ export interface DiffusionOptionsOffsets {
89
+ prompt: number;
90
+ negativePrompt: number;
91
+ width: number;
92
+ height: number;
93
+ steps: number;
94
+ guidanceScale: number;
95
+ seed: number;
96
+ scheduler: number;
97
+ mode: number;
98
+ denoiseStrength: number;
99
+ reportIntermediate: number;
100
+ progressStride: number;
101
+ }
102
+ export interface DiffusionResultOffsets {
103
+ imageData: number;
104
+ imageSize: number;
105
+ width: number;
106
+ height: number;
107
+ seedUsed: number;
108
+ generationTimeMs: number;
109
+ safetyFlagged: number;
110
+ }
111
+ export interface AllOffsets {
112
+ config: ConfigOffsets;
113
+ llmOptions: LLMOptionsOffsets;
114
+ llmResult: LLMResultOffsets;
115
+ vlmImage: VLMImageOffsets;
116
+ vlmOptions: VLMOptionsOffsets;
117
+ vlmResult: VLMResultOffsets;
118
+ structuredOutputConfig: StructuredOutputConfigOffsets;
119
+ structuredOutputValidation: StructuredOutputValidationOffsets;
120
+ embeddingsOptions: EmbeddingsOptionsOffsets;
121
+ embeddingsResult: EmbeddingsResultOffsets;
122
+ embeddingVector: EmbeddingVectorOffsets;
123
+ diffusionOptions: DiffusionOptionsOffsets;
124
+ diffusionResult: DiffusionResultOffsets;
125
+ }
126
+ /**
127
+ * Get the cached struct offsets. Throws if `loadOffsets()` hasn't been called.
128
+ */
129
+ export declare function getOffsets(): AllOffsets;
130
+ /**
131
+ * Convenience re-export so callers can write `Offsets.vlmResult.text`.
132
+ */
133
+ export declare const Offsets: AllOffsets;
134
+ /**
135
+ * Read all struct field offsets from the WASM module and cache them.
136
+ * Must be called exactly once, after the WASM module is loaded.
137
+ *
138
+ * @param m - The Emscripten WASM module instance
139
+ */
140
+ export declare function loadOffsets(m: any): void;
141
+ /**
142
+ * Load offsets for a standalone WASM module (e.g. in a Web Worker).
143
+ * Returns the offsets directly instead of storing them in the singleton.
144
+ * Useful when the Worker has its own WASM instance.
145
+ */
146
+ export declare function loadOffsetsFromModule(m: any): AllOffsets;
147
+ //# sourceMappingURL=StructOffsets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructOffsets.d.ts","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"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"}