@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,207 @@
1
+ /**
2
+ * RunAnywhere Web SDK - Video Capture
3
+ *
4
+ * Manages webcam lifecycle and frame extraction for VLM inference.
5
+ * Provides aspect-ratio-preserving downscaling and RGBA->RGB conversion
6
+ * matching the format expected by the C++ VLM backend
7
+ * (RAC_VLM_IMAGE_FORMAT_RGB_PIXELS with RGBRGBRGB... byte layout).
8
+ *
9
+ * Follows the same pattern as AudioCapture: config, start/stop lifecycle,
10
+ * and utility getters.
11
+ *
12
+ * Usage:
13
+ * ```typescript
14
+ * import { VideoCapture } from '@runanywhere/web';
15
+ *
16
+ * const camera = new VideoCapture({ facingMode: 'environment' });
17
+ * await camera.start();
18
+ * document.body.appendChild(camera.videoElement);
19
+ *
20
+ * const frame = camera.captureFrame(256);
21
+ * if (frame) {
22
+ * await vlm.process(frame.rgbPixels, frame.width, frame.height, prompt);
23
+ * }
24
+ *
25
+ * camera.stop();
26
+ * ```
27
+ */
28
+ import { SDKLogger } from '../Foundation/SDKLogger';
29
+ const logger = new SDKLogger('VideoCapture');
30
+ // ---------------------------------------------------------------------------
31
+ // VideoCapture
32
+ // ---------------------------------------------------------------------------
33
+ /**
34
+ * VideoCapture - Manages webcam and frame extraction for VLM inference.
35
+ *
36
+ * Creates an internal HTMLVideoElement (for the media stream) and an
37
+ * offscreen HTMLCanvasElement (for pixel extraction). The video element
38
+ * is accessible via `videoElement` so the app can attach it to the DOM
39
+ * for live preview.
40
+ */
41
+ export class VideoCapture {
42
+ config;
43
+ _mediaStream = null;
44
+ _videoEl;
45
+ _canvasEl;
46
+ _isCapturing = false;
47
+ constructor(config = {}) {
48
+ this.config = {
49
+ facingMode: config.facingMode ?? 'environment',
50
+ idealWidth: config.idealWidth ?? 640,
51
+ idealHeight: config.idealHeight ?? 480,
52
+ };
53
+ // Create internal elements (not appended to DOM by default)
54
+ this._videoEl = document.createElement('video');
55
+ this._videoEl.playsInline = true;
56
+ this._videoEl.autoplay = true;
57
+ this._videoEl.muted = true;
58
+ this._canvasEl = document.createElement('canvas');
59
+ }
60
+ // ---- Public getters ----
61
+ /** Whether the camera is currently capturing. */
62
+ get isCapturing() {
63
+ return this._isCapturing;
64
+ }
65
+ /**
66
+ * The HTMLVideoElement receiving the camera stream.
67
+ * Attach this to the DOM for live preview:
68
+ *
69
+ * ```typescript
70
+ * previewContainer.appendChild(camera.videoElement);
71
+ * ```
72
+ */
73
+ get videoElement() {
74
+ return this._videoEl;
75
+ }
76
+ /** Native video width from the camera (0 if not started). */
77
+ get videoWidth() {
78
+ return this._videoEl.videoWidth;
79
+ }
80
+ /** Native video height from the camera (0 if not started). */
81
+ get videoHeight() {
82
+ return this._videoEl.videoHeight;
83
+ }
84
+ // ---- Lifecycle ----
85
+ /**
86
+ * Start the camera and begin capturing video.
87
+ *
88
+ * Requests camera permission via `getUserMedia`. The returned Promise
89
+ * resolves once the video stream is active and ready for frame capture.
90
+ *
91
+ * @throws If camera permission is denied or no camera is available.
92
+ */
93
+ async start() {
94
+ if (this._isCapturing) {
95
+ logger.debug('Already capturing');
96
+ return;
97
+ }
98
+ logger.info(`Starting video capture (${this.config.facingMode}, ${this.config.idealWidth}x${this.config.idealHeight})`);
99
+ try {
100
+ this._mediaStream = await navigator.mediaDevices.getUserMedia({
101
+ video: {
102
+ facingMode: this.config.facingMode,
103
+ width: { ideal: this.config.idealWidth },
104
+ height: { ideal: this.config.idealHeight },
105
+ },
106
+ audio: false,
107
+ });
108
+ this._videoEl.srcObject = this._mediaStream;
109
+ // Wait for video metadata to load so videoWidth/videoHeight are available
110
+ await new Promise((resolve, reject) => {
111
+ const timeout = setTimeout(() => reject(new Error('Video stream timeout')), 10000);
112
+ this._videoEl.onloadedmetadata = () => {
113
+ clearTimeout(timeout);
114
+ resolve();
115
+ };
116
+ });
117
+ this._isCapturing = true;
118
+ logger.info(`Camera started (${this._videoEl.videoWidth}x${this._videoEl.videoHeight})`);
119
+ }
120
+ catch (error) {
121
+ this.cleanupResources();
122
+ const message = error instanceof Error ? error.message : String(error);
123
+ logger.error(`Failed to start video capture: ${message}`);
124
+ throw new Error(`Camera access failed: ${message}`);
125
+ }
126
+ }
127
+ /**
128
+ * Stop capturing video and release camera resources.
129
+ */
130
+ stop() {
131
+ if (!this._isCapturing)
132
+ return;
133
+ this._isCapturing = false;
134
+ this.cleanupResources();
135
+ logger.info('Video capture stopped');
136
+ }
137
+ // ---- Frame Capture ----
138
+ /**
139
+ * Capture the current video frame as raw RGB pixels.
140
+ *
141
+ * The frame is downscaled to fit within `maxDimension` while preserving
142
+ * aspect ratio. The CLIP encoder resizes to its fixed input size
143
+ * internally, so capturing at larger sizes only wastes WASM copy time.
144
+ *
145
+ * @param maxDimension Maximum width or height in pixels (default: 512).
146
+ * @returns CapturedFrame or null if the video stream isn't ready.
147
+ */
148
+ captureFrame(maxDimension = 512) {
149
+ if (!this._isCapturing || !this._videoEl.videoWidth || !this._videoEl.videoHeight) {
150
+ return null;
151
+ }
152
+ const { w, h } = VideoCapture.fitSize(this._videoEl.videoWidth, this._videoEl.videoHeight, maxDimension);
153
+ this._canvasEl.width = w;
154
+ this._canvasEl.height = h;
155
+ const ctx = this._canvasEl.getContext('2d');
156
+ if (!ctx)
157
+ return null;
158
+ // Draw the video frame scaled down onto the offscreen canvas
159
+ ctx.drawImage(this._videoEl, 0, 0, w, h);
160
+ return VideoCapture.extractRGB(ctx, w, h);
161
+ }
162
+ // ---- Static Utilities ----
163
+ /**
164
+ * Compute a downscaled size that fits within `maxDim` while
165
+ * preserving aspect ratio. Returns original size if already small enough.
166
+ */
167
+ static fitSize(srcW, srcH, maxDim) {
168
+ if (srcW <= maxDim && srcH <= maxDim) {
169
+ return { w: srcW, h: srcH };
170
+ }
171
+ const scale = maxDim / Math.max(srcW, srcH);
172
+ return {
173
+ w: Math.round(srcW * scale),
174
+ h: Math.round(srcH * scale),
175
+ };
176
+ }
177
+ /**
178
+ * Extract raw RGB pixels from a canvas 2D context.
179
+ *
180
+ * Canvas gives RGBA; this strips the alpha channel to produce the
181
+ * RGBRGBRGB... byte layout expected by the C++ VLM backend
182
+ * (RAC_VLM_IMAGE_FORMAT_RGB_PIXELS).
183
+ */
184
+ static extractRGB(ctx, w, h) {
185
+ const imageData = ctx.getImageData(0, 0, w, h);
186
+ const rgba = imageData.data; // Uint8ClampedArray: RGBARGBA...
187
+ const pixelCount = w * h;
188
+ const rgb = new Uint8Array(pixelCount * 3);
189
+ for (let i = 0; i < pixelCount; i++) {
190
+ const src = i * 4;
191
+ const dst = i * 3;
192
+ rgb[dst] = rgba[src]; // R
193
+ rgb[dst + 1] = rgba[src + 1]; // G
194
+ rgb[dst + 2] = rgba[src + 2]; // B
195
+ }
196
+ return { rgbPixels: rgb, width: w, height: h };
197
+ }
198
+ // ---- Internals ----
199
+ cleanupResources() {
200
+ if (this._mediaStream) {
201
+ this._mediaStream.getTracks().forEach((track) => track.stop());
202
+ this._mediaStream = null;
203
+ }
204
+ this._videoEl.srcObject = null;
205
+ }
206
+ }
207
+ //# sourceMappingURL=VideoCapture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoCapture.js","sourceRoot":"","sources":["../../src/Infrastructure/VideoCapture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /** RunAnywhere Web SDK - Diffusion Types */
2
+ export declare enum DiffusionScheduler {
3
+ DPM_PP_2M_Karras = 0,
4
+ DPM_PP_2M = 1,
5
+ DPM_PP_2M_SDE = 2,
6
+ DDIM = 3,
7
+ Euler = 4,
8
+ EulerAncestral = 5,
9
+ PNDM = 6,
10
+ LMS = 7
11
+ }
12
+ export declare enum DiffusionModelVariant {
13
+ SD_1_5 = 0,
14
+ SD_2_1 = 1,
15
+ SDXL = 2,
16
+ SDXL_Turbo = 3,
17
+ SDXS = 4,
18
+ LCM = 5
19
+ }
20
+ export declare enum DiffusionMode {
21
+ TextToImage = 0,
22
+ ImageToImage = 1,
23
+ Inpainting = 2
24
+ }
25
+ export interface DiffusionGenerationOptions {
26
+ /** Text prompt */
27
+ prompt: string;
28
+ /** Negative prompt (optional) */
29
+ negativePrompt?: string;
30
+ /** Image width (default: 512) */
31
+ width?: number;
32
+ /** Image height (default: 512) */
33
+ height?: number;
34
+ /** Number of denoising steps (default: 28) */
35
+ steps?: number;
36
+ /** Guidance scale (default: 7.5) */
37
+ guidanceScale?: number;
38
+ /** Seed (-1 for random) */
39
+ seed?: number;
40
+ /** Scheduler (default: DPM++ 2M Karras) */
41
+ scheduler?: DiffusionScheduler;
42
+ /** Generation mode (default: TextToImage) */
43
+ mode?: DiffusionMode;
44
+ /** Denoising strength for img2img (0-1, default: 0.75) */
45
+ denoiseStrength?: number;
46
+ /** Report intermediate images (default: false) */
47
+ reportIntermediateImages?: boolean;
48
+ }
49
+ export interface DiffusionGenerationResult {
50
+ /** RGBA image data */
51
+ imageData: Uint8ClampedArray;
52
+ /** Image width */
53
+ width: number;
54
+ /** Image height */
55
+ height: number;
56
+ /** Seed used for generation */
57
+ seedUsed: number;
58
+ /** Generation time in milliseconds */
59
+ generationTimeMs: number;
60
+ /** Whether safety checker flagged the image */
61
+ safetyFlagged: boolean;
62
+ }
63
+ export type DiffusionProgressCallback = (step: number, totalSteps: number, progress: number) => void;
64
+ //# sourceMappingURL=DiffusionTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffusionTypes.d.ts","sourceRoot":"","sources":["../../../src/Public/Extensions/DiffusionTypes.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,oBAAY,kBAAkB;IAC5B,gBAAgB,IAAI;IACpB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,cAAc,IAAI;IAClB,IAAI,IAAI;IACR,GAAG,IAAI;CACR;AAED,oBAAY,qBAAqB;IAC/B,MAAM,IAAI;IACV,MAAM,IAAI;IACV,IAAI,IAAI;IACR,UAAU,IAAI;IACd,IAAI,IAAI;IACR,GAAG,IAAI;CACR;AAED,oBAAY,aAAa;IACvB,WAAW,IAAI;IACf,YAAY,IAAI;IAChB,UAAU,IAAI;CACf;AAED,MAAM,WAAW,0BAA0B;IACzC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,sBAAsB;IACtB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC"}
@@ -0,0 +1,28 @@
1
+ /** RunAnywhere Web SDK - Diffusion Types */
2
+ export var DiffusionScheduler;
3
+ (function (DiffusionScheduler) {
4
+ DiffusionScheduler[DiffusionScheduler["DPM_PP_2M_Karras"] = 0] = "DPM_PP_2M_Karras";
5
+ DiffusionScheduler[DiffusionScheduler["DPM_PP_2M"] = 1] = "DPM_PP_2M";
6
+ DiffusionScheduler[DiffusionScheduler["DPM_PP_2M_SDE"] = 2] = "DPM_PP_2M_SDE";
7
+ DiffusionScheduler[DiffusionScheduler["DDIM"] = 3] = "DDIM";
8
+ DiffusionScheduler[DiffusionScheduler["Euler"] = 4] = "Euler";
9
+ DiffusionScheduler[DiffusionScheduler["EulerAncestral"] = 5] = "EulerAncestral";
10
+ DiffusionScheduler[DiffusionScheduler["PNDM"] = 6] = "PNDM";
11
+ DiffusionScheduler[DiffusionScheduler["LMS"] = 7] = "LMS";
12
+ })(DiffusionScheduler || (DiffusionScheduler = {}));
13
+ export var DiffusionModelVariant;
14
+ (function (DiffusionModelVariant) {
15
+ DiffusionModelVariant[DiffusionModelVariant["SD_1_5"] = 0] = "SD_1_5";
16
+ DiffusionModelVariant[DiffusionModelVariant["SD_2_1"] = 1] = "SD_2_1";
17
+ DiffusionModelVariant[DiffusionModelVariant["SDXL"] = 2] = "SDXL";
18
+ DiffusionModelVariant[DiffusionModelVariant["SDXL_Turbo"] = 3] = "SDXL_Turbo";
19
+ DiffusionModelVariant[DiffusionModelVariant["SDXS"] = 4] = "SDXS";
20
+ DiffusionModelVariant[DiffusionModelVariant["LCM"] = 5] = "LCM";
21
+ })(DiffusionModelVariant || (DiffusionModelVariant = {}));
22
+ export var DiffusionMode;
23
+ (function (DiffusionMode) {
24
+ DiffusionMode[DiffusionMode["TextToImage"] = 0] = "TextToImage";
25
+ DiffusionMode[DiffusionMode["ImageToImage"] = 1] = "ImageToImage";
26
+ DiffusionMode[DiffusionMode["Inpainting"] = 2] = "Inpainting";
27
+ })(DiffusionMode || (DiffusionMode = {}));
28
+ //# sourceMappingURL=DiffusionTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiffusionTypes.js","sourceRoot":"","sources":["../../../src/Public/Extensions/DiffusionTypes.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,MAAM,CAAN,IAAY,kBASX;AATD,WAAY,kBAAkB;IAC5B,mFAAoB,CAAA;IACpB,qEAAa,CAAA;IACb,6EAAiB,CAAA;IACjB,2DAAQ,CAAA;IACR,6DAAS,CAAA;IACT,+EAAkB,CAAA;IAClB,2DAAQ,CAAA;IACR,yDAAO,CAAA;AACT,CAAC,EATW,kBAAkB,KAAlB,kBAAkB,QAS7B;AAED,MAAM,CAAN,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,qEAAU,CAAA;IACV,qEAAU,CAAA;IACV,iEAAQ,CAAA;IACR,6EAAc,CAAA;IACd,iEAAQ,CAAA;IACR,+DAAO,CAAA;AACT,CAAC,EAPW,qBAAqB,KAArB,qBAAqB,QAOhC;AAED,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,+DAAe,CAAA;IACf,iEAAgB,CAAA;IAChB,6DAAc,CAAA;AAChB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB"}
@@ -0,0 +1,33 @@
1
+ /** RunAnywhere Web SDK - Embeddings Types */
2
+ export declare enum EmbeddingsNormalize {
3
+ None = 0,
4
+ L2 = 1
5
+ }
6
+ export declare enum EmbeddingsPooling {
7
+ Mean = 0,
8
+ CLS = 1,
9
+ Last = 2
10
+ }
11
+ export interface EmbeddingVector {
12
+ /** Dense float vector */
13
+ data: Float32Array;
14
+ /** Dimension */
15
+ dimension: number;
16
+ }
17
+ export interface EmbeddingsResult {
18
+ /** Array of embedding vectors (one per input text) */
19
+ embeddings: EmbeddingVector[];
20
+ /** Embedding dimension */
21
+ dimension: number;
22
+ /** Processing time in milliseconds */
23
+ processingTimeMs: number;
24
+ /** Total tokens processed */
25
+ totalTokens: number;
26
+ }
27
+ export interface EmbeddingsOptions {
28
+ /** Normalization mode override */
29
+ normalize?: EmbeddingsNormalize;
30
+ /** Pooling strategy override */
31
+ pooling?: EmbeddingsPooling;
32
+ }
33
+ //# sourceMappingURL=EmbeddingsTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingsTypes.d.ts","sourceRoot":"","sources":["../../../src/Public/Extensions/EmbeddingsTypes.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,oBAAY,mBAAmB;IAC7B,IAAI,IAAI;IACR,EAAE,IAAI;CACP;AAED,oBAAY,iBAAiB;IAC3B,IAAI,IAAI;IACR,GAAG,IAAI;IACP,IAAI,IAAI;CACT;AAED,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B"}
@@ -0,0 +1,13 @@
1
+ /** RunAnywhere Web SDK - Embeddings Types */
2
+ export var EmbeddingsNormalize;
3
+ (function (EmbeddingsNormalize) {
4
+ EmbeddingsNormalize[EmbeddingsNormalize["None"] = 0] = "None";
5
+ EmbeddingsNormalize[EmbeddingsNormalize["L2"] = 1] = "L2";
6
+ })(EmbeddingsNormalize || (EmbeddingsNormalize = {}));
7
+ export var EmbeddingsPooling;
8
+ (function (EmbeddingsPooling) {
9
+ EmbeddingsPooling[EmbeddingsPooling["Mean"] = 0] = "Mean";
10
+ EmbeddingsPooling[EmbeddingsPooling["CLS"] = 1] = "CLS";
11
+ EmbeddingsPooling[EmbeddingsPooling["Last"] = 2] = "Last";
12
+ })(EmbeddingsPooling || (EmbeddingsPooling = {}));
13
+ //# sourceMappingURL=EmbeddingsTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingsTypes.js","sourceRoot":"","sources":["../../../src/Public/Extensions/EmbeddingsTypes.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,yDAAM,CAAA;AACR,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,yDAAQ,CAAA;IACR,uDAAO,CAAA;IACP,yDAAQ,CAAA;AACV,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * RunAnywhere Web SDK - Diffusion Extension
3
+ *
4
+ * Adds image generation capabilities using diffusion models.
5
+ * Uses the RACommons rac_diffusion_component_* C API (same as iOS/Android).
6
+ *
7
+ * Mirrors: sdk/runanywhere-swift/Sources/RunAnywhere/Public/Extensions/Diffusion/
8
+ *
9
+ * Usage:
10
+ * import { Diffusion, DiffusionScheduler, DiffusionMode } from '@runanywhere/web';
11
+ *
12
+ * await Diffusion.loadModel('/models/sd-v1-5', 'sd-1.5');
13
+ * const result = await Diffusion.generate({
14
+ * prompt: 'A sunset over mountains',
15
+ * width: 512, height: 512, steps: 28,
16
+ * });
17
+ * // result.imageData is Uint8ClampedArray RGBA
18
+ */
19
+ import { type DiffusionGenerationOptions, type DiffusionGenerationResult } from './DiffusionTypes';
20
+ export { DiffusionScheduler, DiffusionModelVariant, DiffusionMode, type DiffusionGenerationOptions, type DiffusionGenerationResult, type DiffusionProgressCallback, } from './DiffusionTypes';
21
+ declare class DiffusionImpl {
22
+ readonly extensionName = "Diffusion";
23
+ private _diffusionComponentHandle;
24
+ private requireBridge;
25
+ private ensureDiffusionComponent;
26
+ /**
27
+ * Load a diffusion model.
28
+ */
29
+ loadModel(modelPath: string, modelId: string, modelName?: string): Promise<void>;
30
+ /** Unload the diffusion model. */
31
+ unloadModel(): Promise<void>;
32
+ /** Check if a diffusion model is loaded. */
33
+ get isModelLoaded(): boolean;
34
+ /**
35
+ * Generate an image from a text prompt.
36
+ */
37
+ generate(options: DiffusionGenerationOptions): Promise<DiffusionGenerationResult>;
38
+ /** Cancel in-progress generation. */
39
+ cancel(): void;
40
+ /** Clean up the diffusion component. */
41
+ cleanup(): void;
42
+ }
43
+ export declare const Diffusion: DiffusionImpl;
44
+ //# sourceMappingURL=RunAnywhere+Diffusion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunAnywhere+Diffusion.d.ts","sourceRoot":"","sources":["../../../src/Public/Extensions/RunAnywhere+Diffusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAQ1B,cAAM,aAAa;IACjB,QAAQ,CAAC,aAAa,eAAe;IACrC,OAAO,CAAC,yBAAyB,CAAK;IAEtC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BtF,kCAAkC;IAC5B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC,4CAA4C;IAC5C,IAAI,aAAa,IAAI,OAAO,CAO3B;IAED;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAkFvF,qCAAqC;IACrC,MAAM,IAAI,IAAI;IAOd,wCAAwC;IACxC,OAAO,IAAI,IAAI;CAUhB;AAED,eAAO,MAAM,SAAS,eAAsB,CAAC"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * RunAnywhere Web SDK - Diffusion Extension
3
+ *
4
+ * Adds image generation capabilities using diffusion models.
5
+ * Uses the RACommons rac_diffusion_component_* C API (same as iOS/Android).
6
+ *
7
+ * Mirrors: sdk/runanywhere-swift/Sources/RunAnywhere/Public/Extensions/Diffusion/
8
+ *
9
+ * Usage:
10
+ * import { Diffusion, DiffusionScheduler, DiffusionMode } from '@runanywhere/web';
11
+ *
12
+ * await Diffusion.loadModel('/models/sd-v1-5', 'sd-1.5');
13
+ * const result = await Diffusion.generate({
14
+ * prompt: 'A sunset over mountains',
15
+ * width: 512, height: 512, steps: 28,
16
+ * });
17
+ * // result.imageData is Uint8ClampedArray RGBA
18
+ */
19
+ import { RunAnywhere } from '../RunAnywhere';
20
+ import { WASMBridge } from '../../Foundation/WASMBridge';
21
+ import { Offsets } from '../../Foundation/StructOffsets';
22
+ import { SDKError, SDKErrorCode } from '../../Foundation/ErrorTypes';
23
+ import { SDKLogger } from '../../Foundation/SDKLogger';
24
+ import { EventBus } from '../../Foundation/EventBus';
25
+ import { SDKEventType } from '../../types/enums';
26
+ import { DiffusionScheduler, DiffusionMode, } from './DiffusionTypes';
27
+ export { DiffusionScheduler, DiffusionModelVariant, DiffusionMode, } from './DiffusionTypes';
28
+ const logger = new SDKLogger('Diffusion');
29
+ // ---------------------------------------------------------------------------
30
+ // Diffusion Extension
31
+ // ---------------------------------------------------------------------------
32
+ class DiffusionImpl {
33
+ extensionName = 'Diffusion';
34
+ _diffusionComponentHandle = 0;
35
+ requireBridge() {
36
+ if (!RunAnywhere.isInitialized)
37
+ throw SDKError.notInitialized();
38
+ return WASMBridge.shared;
39
+ }
40
+ ensureDiffusionComponent() {
41
+ if (this._diffusionComponentHandle !== 0)
42
+ return this._diffusionComponentHandle;
43
+ const bridge = this.requireBridge();
44
+ const m = bridge.module;
45
+ const handlePtr = m._malloc(4);
46
+ const result = bridge.callFunction('rac_diffusion_component_create', 'number', ['number'], [handlePtr]);
47
+ if (result !== 0) {
48
+ m._free(handlePtr);
49
+ bridge.checkResult(result, 'rac_diffusion_component_create');
50
+ }
51
+ this._diffusionComponentHandle = m.getValue(handlePtr, 'i32');
52
+ m._free(handlePtr);
53
+ logger.debug('Diffusion component created');
54
+ return this._diffusionComponentHandle;
55
+ }
56
+ /**
57
+ * Load a diffusion model.
58
+ */
59
+ async loadModel(modelPath, modelId, modelName) {
60
+ const bridge = this.requireBridge();
61
+ const m = bridge.module;
62
+ const handle = this.ensureDiffusionComponent();
63
+ logger.info(`Loading diffusion model: ${modelId} from ${modelPath}`);
64
+ EventBus.shared.emit('model.loadStarted', SDKEventType.Model, { modelId, component: 'diffusion' });
65
+ const pathPtr = bridge.allocString(modelPath);
66
+ const idPtr = bridge.allocString(modelId);
67
+ const namePtr = bridge.allocString(modelName ?? modelId);
68
+ try {
69
+ const result = m.ccall('rac_diffusion_component_load_model', 'number', ['number', 'number', 'number', 'number'], [handle, pathPtr, idPtr, namePtr]);
70
+ bridge.checkResult(result, 'rac_diffusion_component_load_model');
71
+ logger.info(`Diffusion model loaded: ${modelId}`);
72
+ EventBus.shared.emit('model.loadCompleted', SDKEventType.Model, { modelId, component: 'diffusion' });
73
+ }
74
+ finally {
75
+ bridge.free(pathPtr);
76
+ bridge.free(idPtr);
77
+ bridge.free(namePtr);
78
+ }
79
+ }
80
+ /** Unload the diffusion model. */
81
+ async unloadModel() {
82
+ if (this._diffusionComponentHandle === 0)
83
+ return;
84
+ const bridge = this.requireBridge();
85
+ const result = bridge.module.ccall('rac_diffusion_component_unload', 'number', ['number'], [this._diffusionComponentHandle]);
86
+ bridge.checkResult(result, 'rac_diffusion_component_unload');
87
+ logger.info('Diffusion model unloaded');
88
+ }
89
+ /** Check if a diffusion model is loaded. */
90
+ get isModelLoaded() {
91
+ if (this._diffusionComponentHandle === 0)
92
+ return false;
93
+ try {
94
+ return WASMBridge.shared.module.ccall('rac_diffusion_component_is_loaded', 'number', ['number'], [this._diffusionComponentHandle]) === 1;
95
+ }
96
+ catch {
97
+ return false;
98
+ }
99
+ }
100
+ /**
101
+ * Generate an image from a text prompt.
102
+ */
103
+ async generate(options) {
104
+ const bridge = this.requireBridge();
105
+ const m = bridge.module;
106
+ const handle = this.ensureDiffusionComponent();
107
+ if (!this.isModelLoaded) {
108
+ throw new SDKError(SDKErrorCode.ModelNotLoaded, 'No diffusion model loaded. Call loadModel() first.');
109
+ }
110
+ logger.info(`Generating image: "${options.prompt.substring(0, 50)}..."`);
111
+ // Build rac_diffusion_options_t
112
+ const optSize = m._rac_wasm_sizeof_diffusion_options();
113
+ const optPtr = m._malloc(optSize);
114
+ for (let i = 0; i < optSize; i++)
115
+ m.setValue(optPtr + i, 0, 'i8');
116
+ const promptPtr = bridge.allocString(options.prompt);
117
+ let negPromptPtr = 0;
118
+ const dOpt = Offsets.diffusionOptions;
119
+ m.setValue(optPtr + dOpt.prompt, promptPtr, '*');
120
+ if (options.negativePrompt) {
121
+ negPromptPtr = bridge.allocString(options.negativePrompt);
122
+ m.setValue(optPtr + dOpt.negativePrompt, negPromptPtr, '*');
123
+ }
124
+ m.setValue(optPtr + dOpt.width, options.width ?? 512, 'i32');
125
+ m.setValue(optPtr + dOpt.height, options.height ?? 512, 'i32');
126
+ m.setValue(optPtr + dOpt.steps, options.steps ?? 28, 'i32');
127
+ m.setValue(optPtr + dOpt.guidanceScale, options.guidanceScale ?? 7.5, 'float');
128
+ // seed is int64 — write low and high 32-bit halves
129
+ const seed = options.seed ?? -1;
130
+ m.setValue(optPtr + dOpt.seed, seed & 0xFFFFFFFF, 'i32');
131
+ m.setValue(optPtr + dOpt.seed + 4, seed < 0 ? -1 : 0, 'i32');
132
+ m.setValue(optPtr + dOpt.scheduler, options.scheduler ?? DiffusionScheduler.DPM_PP_2M_Karras, 'i32');
133
+ m.setValue(optPtr + dOpt.mode, options.mode ?? DiffusionMode.TextToImage, 'i32');
134
+ m.setValue(optPtr + dOpt.denoiseStrength, options.denoiseStrength ?? 0.75, 'float');
135
+ m.setValue(optPtr + dOpt.reportIntermediate, options.reportIntermediateImages ? 1 : 0, 'i32');
136
+ m.setValue(optPtr + dOpt.progressStride, 1, 'i32');
137
+ // Result struct: rac_diffusion_result_t
138
+ const resSize = m._rac_wasm_sizeof_diffusion_result();
139
+ const resPtr = m._malloc(resSize);
140
+ try {
141
+ const r = m.ccall('rac_diffusion_component_generate', 'number', ['number', 'number', 'number'], [handle, optPtr, resPtr]);
142
+ bridge.checkResult(r, 'rac_diffusion_component_generate');
143
+ // Read rac_diffusion_result_t (offsets from compiler via StructOffsets)
144
+ const dRes = Offsets.diffusionResult;
145
+ const imageDataPtr = m.getValue(resPtr + dRes.imageData, '*');
146
+ const imageSize = m.getValue(resPtr + dRes.imageSize, 'i32');
147
+ const width = m.getValue(resPtr + dRes.width, 'i32');
148
+ const height = m.getValue(resPtr + dRes.height, 'i32');
149
+ const seedUsed = m.getValue(resPtr + dRes.seedUsed, 'i32'); // low 32 bits of int64
150
+ const generationTimeMs = m.getValue(resPtr + dRes.generationTimeMs, 'i32'); // low 32 bits
151
+ const safetyFlagged = m.getValue(resPtr + dRes.safetyFlagged, 'i32') === 1;
152
+ // Copy RGBA image data
153
+ const imageData = new Uint8ClampedArray(imageSize);
154
+ if (imageDataPtr && imageSize > 0) {
155
+ imageData.set(bridge.readBytes(imageDataPtr, imageSize));
156
+ }
157
+ // Free C result
158
+ m.ccall('rac_diffusion_result_free', null, ['number'], [resPtr]);
159
+ EventBus.shared.emit('diffusion.generated', SDKEventType.Generation, {
160
+ width, height, generationTimeMs,
161
+ });
162
+ return { imageData, width, height, seedUsed, generationTimeMs, safetyFlagged };
163
+ }
164
+ finally {
165
+ bridge.free(promptPtr);
166
+ if (negPromptPtr)
167
+ bridge.free(negPromptPtr);
168
+ m._free(optPtr);
169
+ }
170
+ }
171
+ /** Cancel in-progress generation. */
172
+ cancel() {
173
+ if (this._diffusionComponentHandle === 0)
174
+ return;
175
+ WASMBridge.shared.module.ccall('rac_diffusion_component_cancel', 'number', ['number'], [this._diffusionComponentHandle]);
176
+ }
177
+ /** Clean up the diffusion component. */
178
+ cleanup() {
179
+ if (this._diffusionComponentHandle !== 0) {
180
+ try {
181
+ WASMBridge.shared.module.ccall('rac_diffusion_component_destroy', null, ['number'], [this._diffusionComponentHandle]);
182
+ }
183
+ catch { /* ignore */ }
184
+ this._diffusionComponentHandle = 0;
185
+ }
186
+ }
187
+ }
188
+ export const Diffusion = new DiffusionImpl();
189
+ //# sourceMappingURL=RunAnywhere+Diffusion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunAnywhere+Diffusion.js","sourceRoot":"","sources":["../../../src/Public/Extensions/RunAnywhere+Diffusion.ts"],"names":[],"mappings":"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"}