@runanywhere/web 0.1.0-beta.6 → 0.1.0-beta.7

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 (189) hide show
  1. package/dist/Foundation/ErrorTypes.d.ts +1 -0
  2. package/dist/Foundation/ErrorTypes.d.ts.map +1 -1
  3. package/dist/Foundation/ErrorTypes.js +3 -0
  4. package/dist/Foundation/ErrorTypes.js.map +1 -1
  5. package/dist/Foundation/EventBus.d.ts +0 -1
  6. package/dist/Foundation/EventBus.d.ts.map +1 -1
  7. package/dist/Foundation/StructOffsets.d.ts +5 -37
  8. package/dist/Foundation/StructOffsets.d.ts.map +1 -1
  9. package/dist/Foundation/StructOffsets.js +6 -157
  10. package/dist/Foundation/StructOffsets.js.map +1 -1
  11. package/dist/Foundation/WASMBridge.d.ts +8 -236
  12. package/dist/Foundation/WASMBridge.d.ts.map +1 -1
  13. package/dist/Foundation/WASMBridge.js +7 -388
  14. package/dist/Foundation/WASMBridge.js.map +1 -1
  15. package/dist/Infrastructure/DeviceCapabilities.d.ts.map +1 -1
  16. package/dist/Infrastructure/DeviceCapabilities.js +1 -3
  17. package/dist/Infrastructure/DeviceCapabilities.js.map +1 -1
  18. package/dist/Infrastructure/ExtensionPoint.d.ts +114 -0
  19. package/dist/Infrastructure/ExtensionPoint.d.ts.map +1 -0
  20. package/dist/Infrastructure/ExtensionPoint.js +178 -0
  21. package/dist/Infrastructure/ExtensionPoint.js.map +1 -0
  22. package/dist/Infrastructure/LocalFileStorage.d.ts +134 -0
  23. package/dist/Infrastructure/LocalFileStorage.d.ts.map +1 -0
  24. package/dist/Infrastructure/LocalFileStorage.js +428 -0
  25. package/dist/Infrastructure/LocalFileStorage.js.map +1 -0
  26. package/dist/Infrastructure/ModelDownloader.d.ts +21 -5
  27. package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -1
  28. package/dist/Infrastructure/ModelDownloader.js +79 -7
  29. package/dist/Infrastructure/ModelDownloader.js.map +1 -1
  30. package/dist/Infrastructure/ModelFileInference.d.ts +39 -0
  31. package/dist/Infrastructure/ModelFileInference.d.ts.map +1 -0
  32. package/dist/Infrastructure/ModelFileInference.js +119 -0
  33. package/dist/Infrastructure/ModelFileInference.js.map +1 -0
  34. package/dist/Infrastructure/ModelLoaderTypes.d.ts +91 -12
  35. package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -1
  36. package/dist/Infrastructure/ModelLoaderTypes.js +7 -1
  37. package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -1
  38. package/dist/Infrastructure/ModelManager.d.ts +31 -104
  39. package/dist/Infrastructure/ModelManager.d.ts.map +1 -1
  40. package/dist/Infrastructure/ModelManager.js +207 -568
  41. package/dist/Infrastructure/ModelManager.js.map +1 -1
  42. package/dist/Infrastructure/ModelRegistry.d.ts +6 -8
  43. package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -1
  44. package/dist/Infrastructure/ModelRegistry.js +11 -4
  45. package/dist/Infrastructure/ModelRegistry.js.map +1 -1
  46. package/dist/Infrastructure/OPFSStorage.d.ts +8 -0
  47. package/dist/Infrastructure/OPFSStorage.d.ts.map +1 -1
  48. package/dist/Infrastructure/OPFSStorage.js +37 -0
  49. package/dist/Infrastructure/OPFSStorage.js.map +1 -1
  50. package/dist/Public/Extensions/RunAnywhere+ModelManagement.d.ts +12 -4
  51. package/dist/Public/Extensions/RunAnywhere+ModelManagement.d.ts.map +1 -1
  52. package/dist/Public/Extensions/RunAnywhere+ModelManagement.js +23 -51
  53. package/dist/Public/Extensions/RunAnywhere+ModelManagement.js.map +1 -1
  54. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.d.ts +42 -10
  55. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.d.ts.map +1 -1
  56. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.js +63 -161
  57. package/dist/Public/Extensions/RunAnywhere+VoiceAgent.js.map +1 -1
  58. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +3 -29
  59. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -1
  60. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +26 -42
  61. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -1
  62. package/dist/Public/Extensions/VoicePipelineTypes.d.ts +28 -37
  63. package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -1
  64. package/dist/Public/Extensions/VoicePipelineTypes.js +4 -1
  65. package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -1
  66. package/dist/Public/RunAnywhere.d.ts +29 -85
  67. package/dist/Public/RunAnywhere.d.ts.map +1 -1
  68. package/dist/Public/RunAnywhere.js +169 -211
  69. package/dist/Public/RunAnywhere.js.map +1 -1
  70. package/dist/index.d.ts +19 -39
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +15 -31
  73. package/dist/index.js.map +1 -1
  74. package/dist/types/index.d.ts +0 -1
  75. package/dist/types/index.d.ts.map +1 -1
  76. package/dist/types/index.js +1 -0
  77. package/dist/types/index.js.map +1 -1
  78. package/package.json +4 -10
  79. package/dist/Foundation/PlatformAdapter.d.ts +0 -101
  80. package/dist/Foundation/PlatformAdapter.d.ts.map +0 -1
  81. package/dist/Foundation/PlatformAdapter.js +0 -417
  82. package/dist/Foundation/PlatformAdapter.js.map +0 -1
  83. package/dist/Foundation/SherpaONNXBridge.d.ts +0 -147
  84. package/dist/Foundation/SherpaONNXBridge.d.ts.map +0 -1
  85. package/dist/Foundation/SherpaONNXBridge.js +0 -345
  86. package/dist/Foundation/SherpaONNXBridge.js.map +0 -1
  87. package/dist/Infrastructure/AudioCapture.d.ts +0 -99
  88. package/dist/Infrastructure/AudioCapture.d.ts.map +0 -1
  89. package/dist/Infrastructure/AudioCapture.js +0 -264
  90. package/dist/Infrastructure/AudioCapture.js.map +0 -1
  91. package/dist/Infrastructure/AudioPlayback.d.ts +0 -53
  92. package/dist/Infrastructure/AudioPlayback.d.ts.map +0 -1
  93. package/dist/Infrastructure/AudioPlayback.js +0 -117
  94. package/dist/Infrastructure/AudioPlayback.js.map +0 -1
  95. package/dist/Infrastructure/VLMWorkerBridge.d.ts +0 -211
  96. package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +0 -1
  97. package/dist/Infrastructure/VLMWorkerBridge.js +0 -264
  98. package/dist/Infrastructure/VLMWorkerBridge.js.map +0 -1
  99. package/dist/Infrastructure/VLMWorkerRuntime.d.ts +0 -38
  100. package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +0 -1
  101. package/dist/Infrastructure/VLMWorkerRuntime.js +0 -503
  102. package/dist/Infrastructure/VLMWorkerRuntime.js.map +0 -1
  103. package/dist/Infrastructure/VideoCapture.d.ts +0 -130
  104. package/dist/Infrastructure/VideoCapture.d.ts.map +0 -1
  105. package/dist/Infrastructure/VideoCapture.js +0 -236
  106. package/dist/Infrastructure/VideoCapture.js.map +0 -1
  107. package/dist/Public/Extensions/DiffusionTypes.d.ts +0 -64
  108. package/dist/Public/Extensions/DiffusionTypes.d.ts.map +0 -1
  109. package/dist/Public/Extensions/DiffusionTypes.js +0 -28
  110. package/dist/Public/Extensions/DiffusionTypes.js.map +0 -1
  111. package/dist/Public/Extensions/EmbeddingsTypes.d.ts +0 -33
  112. package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +0 -1
  113. package/dist/Public/Extensions/EmbeddingsTypes.js +0 -13
  114. package/dist/Public/Extensions/EmbeddingsTypes.js.map +0 -1
  115. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +0 -44
  116. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +0 -1
  117. package/dist/Public/Extensions/RunAnywhere+Diffusion.js +0 -189
  118. package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +0 -1
  119. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +0 -56
  120. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +0 -1
  121. package/dist/Public/Extensions/RunAnywhere+Embeddings.js +0 -240
  122. package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +0 -1
  123. package/dist/Public/Extensions/RunAnywhere+STT.d.ts +0 -97
  124. package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +0 -1
  125. package/dist/Public/Extensions/RunAnywhere+STT.js +0 -417
  126. package/dist/Public/Extensions/RunAnywhere+STT.js.map +0 -1
  127. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +0 -69
  128. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +0 -1
  129. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +0 -196
  130. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +0 -1
  131. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +0 -55
  132. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +0 -1
  133. package/dist/Public/Extensions/RunAnywhere+TTS.js +0 -253
  134. package/dist/Public/Extensions/RunAnywhere+TTS.js.map +0 -1
  135. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +0 -80
  136. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +0 -1
  137. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +0 -470
  138. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +0 -1
  139. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +0 -82
  140. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +0 -1
  141. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +0 -576
  142. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +0 -1
  143. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +0 -70
  144. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +0 -1
  145. package/dist/Public/Extensions/RunAnywhere+VAD.js +0 -231
  146. package/dist/Public/Extensions/RunAnywhere+VAD.js.map +0 -1
  147. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +0 -58
  148. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +0 -1
  149. package/dist/Public/Extensions/RunAnywhere+VLM.js +0 -262
  150. package/dist/Public/Extensions/RunAnywhere+VLM.js.map +0 -1
  151. package/dist/Public/Extensions/STTTypes.d.ts +0 -61
  152. package/dist/Public/Extensions/STTTypes.d.ts.map +0 -1
  153. package/dist/Public/Extensions/STTTypes.js +0 -16
  154. package/dist/Public/Extensions/STTTypes.js.map +0 -1
  155. package/dist/Public/Extensions/TTSTypes.d.ts +0 -31
  156. package/dist/Public/Extensions/TTSTypes.d.ts.map +0 -1
  157. package/dist/Public/Extensions/TTSTypes.js +0 -3
  158. package/dist/Public/Extensions/TTSTypes.js.map +0 -1
  159. package/dist/Public/Extensions/ToolCallingTypes.d.ts +0 -78
  160. package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +0 -1
  161. package/dist/Public/Extensions/ToolCallingTypes.js +0 -8
  162. package/dist/Public/Extensions/ToolCallingTypes.js.map +0 -1
  163. package/dist/Public/Extensions/VADTypes.d.ts +0 -30
  164. package/dist/Public/Extensions/VADTypes.d.ts.map +0 -1
  165. package/dist/Public/Extensions/VADTypes.js +0 -8
  166. package/dist/Public/Extensions/VADTypes.js.map +0 -1
  167. package/dist/Public/Extensions/VLMTypes.d.ts +0 -56
  168. package/dist/Public/Extensions/VLMTypes.d.ts.map +0 -1
  169. package/dist/Public/Extensions/VLMTypes.js +0 -24
  170. package/dist/Public/Extensions/VLMTypes.js.map +0 -1
  171. package/dist/types/LLMTypes.d.ts +0 -48
  172. package/dist/types/LLMTypes.d.ts.map +0 -1
  173. package/dist/types/LLMTypes.js +0 -8
  174. package/dist/types/LLMTypes.js.map +0 -1
  175. package/dist/workers/vlm-worker.d.ts +0 -9
  176. package/dist/workers/vlm-worker.d.ts.map +0 -1
  177. package/dist/workers/vlm-worker.js +0 -10
  178. package/dist/workers/vlm-worker.js.map +0 -1
  179. package/wasm/racommons-webgpu.js +0 -156
  180. package/wasm/racommons-webgpu.wasm +0 -0
  181. package/wasm/racommons.js +0 -126
  182. package/wasm/racommons.wasm +0 -0
  183. package/wasm/sherpa/sherpa-onnx-asr.js +0 -1538
  184. package/wasm/sherpa/sherpa-onnx-glue-original.js +0 -19
  185. package/wasm/sherpa/sherpa-onnx-glue.js +0 -17
  186. package/wasm/sherpa/sherpa-onnx-tts.js +0 -657
  187. package/wasm/sherpa/sherpa-onnx-vad.js +0 -337
  188. package/wasm/sherpa/sherpa-onnx-wave.js +0 -88
  189. package/wasm/sherpa/sherpa-onnx.wasm +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoCapture.d.ts","sourceRoot":"","sources":["../../src/Infrastructure/VideoCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAUH,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC;AAE5C,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACpC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,SAAS,EAAE,UAAU,CAAC;IACtB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;;OAMG;IACH,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAE/C,sEAAsE;IACtE,OAAO,CAAC,kBAAkB,CAA6B;gBAE3C,MAAM,GAAE,kBAAuB;IAkB3C,iDAAiD;IACjD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;;;OAOG;IACH,IAAI,YAAY,IAAI,gBAAgB,CAEnC;IAED,6DAA6D;IAC7D,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,8DAA8D;IAC9D,IAAI,WAAW,IAAI,MAAM,CAExB;IAID;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD5B;;OAEG;IACH,IAAI,IAAI,IAAI;IAUZ;;;;;;;;;OASG;IACH,YAAY,CAAC,YAAY,SAAM,GAAG,aAAa,GAAG,IAAI;IAuBtD;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAWpF;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa;IAmBrF,OAAO,CAAC,gBAAgB;CAazB"}
@@ -1,236 +0,0 @@
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
- /**
48
- * Callback invoked when the camera track ends unexpectedly.
49
- *
50
- * On mobile browsers, the OS or browser can kill camera tracks due to
51
- * power management, screen lock, another app requesting the camera, etc.
52
- * Set this to detect and recover from such interruptions.
53
- */
54
- onTrackEnded = null;
55
- /** Bound handler for the track 'ended' event (stored for cleanup). */
56
- _boundOnTrackEnded = null;
57
- constructor(config = {}) {
58
- this.config = {
59
- facingMode: config.facingMode ?? 'environment',
60
- idealWidth: config.idealWidth ?? 640,
61
- idealHeight: config.idealHeight ?? 480,
62
- };
63
- // Create internal elements (not appended to DOM by default)
64
- this._videoEl = document.createElement('video');
65
- this._videoEl.playsInline = true;
66
- this._videoEl.autoplay = true;
67
- this._videoEl.muted = true;
68
- this._canvasEl = document.createElement('canvas');
69
- }
70
- // ---- Public getters ----
71
- /** Whether the camera is currently capturing. */
72
- get isCapturing() {
73
- return this._isCapturing;
74
- }
75
- /**
76
- * The HTMLVideoElement receiving the camera stream.
77
- * Attach this to the DOM for live preview:
78
- *
79
- * ```typescript
80
- * previewContainer.appendChild(camera.videoElement);
81
- * ```
82
- */
83
- get videoElement() {
84
- return this._videoEl;
85
- }
86
- /** Native video width from the camera (0 if not started). */
87
- get videoWidth() {
88
- return this._videoEl.videoWidth;
89
- }
90
- /** Native video height from the camera (0 if not started). */
91
- get videoHeight() {
92
- return this._videoEl.videoHeight;
93
- }
94
- // ---- Lifecycle ----
95
- /**
96
- * Start the camera and begin capturing video.
97
- *
98
- * Requests camera permission via `getUserMedia`. The returned Promise
99
- * resolves once the video stream is active and ready for frame capture.
100
- *
101
- * @throws If camera permission is denied or no camera is available.
102
- */
103
- async start() {
104
- if (this._isCapturing) {
105
- logger.debug('Already capturing');
106
- return;
107
- }
108
- logger.info(`Starting video capture (${this.config.facingMode}, ${this.config.idealWidth}x${this.config.idealHeight})`);
109
- try {
110
- this._mediaStream = await navigator.mediaDevices.getUserMedia({
111
- video: {
112
- facingMode: this.config.facingMode,
113
- width: { ideal: this.config.idealWidth },
114
- height: { ideal: this.config.idealHeight },
115
- },
116
- audio: false,
117
- });
118
- this._videoEl.srcObject = this._mediaStream;
119
- // Listen for the track ending unexpectedly (OS/browser killed it).
120
- // Mobile browsers kill camera tracks on screen lock, power management,
121
- // or when another app requests the camera.
122
- const videoTrack = this._mediaStream.getVideoTracks()[0];
123
- if (videoTrack) {
124
- this._boundOnTrackEnded = () => {
125
- logger.info('Camera track ended unexpectedly (OS/browser revoked access)');
126
- this._isCapturing = false;
127
- this.cleanupResources();
128
- this.onTrackEnded?.();
129
- };
130
- videoTrack.addEventListener('ended', this._boundOnTrackEnded);
131
- }
132
- // Wait for video metadata to load so videoWidth/videoHeight are available
133
- await new Promise((resolve, reject) => {
134
- const timeout = setTimeout(() => reject(new Error('Video stream timeout')), 10000);
135
- this._videoEl.onloadedmetadata = () => {
136
- clearTimeout(timeout);
137
- resolve();
138
- };
139
- });
140
- this._isCapturing = true;
141
- logger.info(`Camera started (${this._videoEl.videoWidth}x${this._videoEl.videoHeight})`);
142
- }
143
- catch (error) {
144
- this.cleanupResources();
145
- const message = error instanceof Error ? error.message : String(error);
146
- logger.error(`Failed to start video capture: ${message}`);
147
- throw new Error(`Camera access failed: ${message}`);
148
- }
149
- }
150
- /**
151
- * Stop capturing video and release camera resources.
152
- */
153
- stop() {
154
- if (!this._isCapturing)
155
- return;
156
- this._isCapturing = false;
157
- this.cleanupResources();
158
- logger.info('Video capture stopped');
159
- }
160
- // ---- Frame Capture ----
161
- /**
162
- * Capture the current video frame as raw RGB pixels.
163
- *
164
- * The frame is downscaled to fit within `maxDimension` while preserving
165
- * aspect ratio. The CLIP encoder resizes to its fixed input size
166
- * internally, so capturing at larger sizes only wastes WASM copy time.
167
- *
168
- * @param maxDimension Maximum width or height in pixels (default: 512).
169
- * @returns CapturedFrame or null if the video stream isn't ready.
170
- */
171
- captureFrame(maxDimension = 512) {
172
- if (!this._isCapturing || !this._videoEl.videoWidth || !this._videoEl.videoHeight) {
173
- return null;
174
- }
175
- const { w, h } = VideoCapture.fitSize(this._videoEl.videoWidth, this._videoEl.videoHeight, maxDimension);
176
- this._canvasEl.width = w;
177
- this._canvasEl.height = h;
178
- const ctx = this._canvasEl.getContext('2d');
179
- if (!ctx)
180
- return null;
181
- // Draw the video frame scaled down onto the offscreen canvas
182
- ctx.drawImage(this._videoEl, 0, 0, w, h);
183
- return VideoCapture.extractRGB(ctx, w, h);
184
- }
185
- // ---- Static Utilities ----
186
- /**
187
- * Compute a downscaled size that fits within `maxDim` while
188
- * preserving aspect ratio. Returns original size if already small enough.
189
- */
190
- static fitSize(srcW, srcH, maxDim) {
191
- if (srcW <= maxDim && srcH <= maxDim) {
192
- return { w: srcW, h: srcH };
193
- }
194
- const scale = maxDim / Math.max(srcW, srcH);
195
- return {
196
- w: Math.round(srcW * scale),
197
- h: Math.round(srcH * scale),
198
- };
199
- }
200
- /**
201
- * Extract raw RGB pixels from a canvas 2D context.
202
- *
203
- * Canvas gives RGBA; this strips the alpha channel to produce the
204
- * RGBRGBRGB... byte layout expected by the C++ VLM backend
205
- * (RAC_VLM_IMAGE_FORMAT_RGB_PIXELS).
206
- */
207
- static extractRGB(ctx, w, h) {
208
- const imageData = ctx.getImageData(0, 0, w, h);
209
- const rgba = imageData.data; // Uint8ClampedArray: RGBARGBA...
210
- const pixelCount = w * h;
211
- const rgb = new Uint8Array(pixelCount * 3);
212
- for (let i = 0; i < pixelCount; i++) {
213
- const src = i * 4;
214
- const dst = i * 3;
215
- rgb[dst] = rgba[src]; // R
216
- rgb[dst + 1] = rgba[src + 1]; // G
217
- rgb[dst + 2] = rgba[src + 2]; // B
218
- }
219
- return { rgbPixels: rgb, width: w, height: h };
220
- }
221
- // ---- Internals ----
222
- cleanupResources() {
223
- if (this._mediaStream) {
224
- // Remove the track-ended listener before stopping to avoid double-fire
225
- if (this._boundOnTrackEnded) {
226
- const videoTrack = this._mediaStream.getVideoTracks()[0];
227
- videoTrack?.removeEventListener('ended', this._boundOnTrackEnded);
228
- this._boundOnTrackEnded = null;
229
- }
230
- this._mediaStream.getTracks().forEach((track) => track.stop());
231
- this._mediaStream = null;
232
- }
233
- this._videoEl.srcObject = null;
234
- }
235
- }
236
- //# sourceMappingURL=VideoCapture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoCapture.js","sourceRoot":"","sources":["../../src/Infrastructure/VideoCapture.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,28 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,33 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,13 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,44 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,189 +0,0 @@
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