@runanywhere/web-llamacpp 0.1.0-beta.10

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 (94) hide show
  1. package/README.md +75 -0
  2. package/dist/Extensions/DiffusionTypes.d.ts +64 -0
  3. package/dist/Extensions/DiffusionTypes.d.ts.map +1 -0
  4. package/dist/Extensions/DiffusionTypes.js +28 -0
  5. package/dist/Extensions/DiffusionTypes.js.map +1 -0
  6. package/dist/Extensions/EmbeddingsTypes.d.ts +33 -0
  7. package/dist/Extensions/EmbeddingsTypes.d.ts.map +1 -0
  8. package/dist/Extensions/EmbeddingsTypes.js +13 -0
  9. package/dist/Extensions/EmbeddingsTypes.js.map +1 -0
  10. package/dist/Extensions/RunAnywhere+Diffusion.d.ts +44 -0
  11. package/dist/Extensions/RunAnywhere+Diffusion.d.ts.map +1 -0
  12. package/dist/Extensions/RunAnywhere+Diffusion.js +185 -0
  13. package/dist/Extensions/RunAnywhere+Diffusion.js.map +1 -0
  14. package/dist/Extensions/RunAnywhere+Embeddings.d.ts +56 -0
  15. package/dist/Extensions/RunAnywhere+Embeddings.d.ts.map +1 -0
  16. package/dist/Extensions/RunAnywhere+Embeddings.js +236 -0
  17. package/dist/Extensions/RunAnywhere+Embeddings.js.map +1 -0
  18. package/dist/Extensions/RunAnywhere+StructuredOutput.d.ts +69 -0
  19. package/dist/Extensions/RunAnywhere+StructuredOutput.d.ts.map +1 -0
  20. package/dist/Extensions/RunAnywhere+StructuredOutput.js +194 -0
  21. package/dist/Extensions/RunAnywhere+StructuredOutput.js.map +1 -0
  22. package/dist/Extensions/RunAnywhere+TextGeneration.d.ts +87 -0
  23. package/dist/Extensions/RunAnywhere+TextGeneration.d.ts.map +1 -0
  24. package/dist/Extensions/RunAnywhere+TextGeneration.js +525 -0
  25. package/dist/Extensions/RunAnywhere+TextGeneration.js.map +1 -0
  26. package/dist/Extensions/RunAnywhere+ToolCalling.d.ts +82 -0
  27. package/dist/Extensions/RunAnywhere+ToolCalling.d.ts.map +1 -0
  28. package/dist/Extensions/RunAnywhere+ToolCalling.js +574 -0
  29. package/dist/Extensions/RunAnywhere+ToolCalling.js.map +1 -0
  30. package/dist/Extensions/RunAnywhere+VLM.d.ts +57 -0
  31. package/dist/Extensions/RunAnywhere+VLM.d.ts.map +1 -0
  32. package/dist/Extensions/RunAnywhere+VLM.js +258 -0
  33. package/dist/Extensions/RunAnywhere+VLM.js.map +1 -0
  34. package/dist/Extensions/ToolCallingTypes.d.ts +78 -0
  35. package/dist/Extensions/ToolCallingTypes.d.ts.map +1 -0
  36. package/dist/Extensions/ToolCallingTypes.js +8 -0
  37. package/dist/Extensions/ToolCallingTypes.js.map +1 -0
  38. package/dist/Extensions/VLMTypes.d.ts +16 -0
  39. package/dist/Extensions/VLMTypes.d.ts.map +1 -0
  40. package/dist/Extensions/VLMTypes.js +18 -0
  41. package/dist/Extensions/VLMTypes.js.map +1 -0
  42. package/dist/Foundation/AnalyticsEventsBridge.d.ts +38 -0
  43. package/dist/Foundation/AnalyticsEventsBridge.d.ts.map +1 -0
  44. package/dist/Foundation/AnalyticsEventsBridge.js +394 -0
  45. package/dist/Foundation/AnalyticsEventsBridge.js.map +1 -0
  46. package/dist/Foundation/LlamaCppBridge.d.ts +182 -0
  47. package/dist/Foundation/LlamaCppBridge.d.ts.map +1 -0
  48. package/dist/Foundation/LlamaCppBridge.js +483 -0
  49. package/dist/Foundation/LlamaCppBridge.js.map +1 -0
  50. package/dist/Foundation/LlamaCppOffsets.d.ts +32 -0
  51. package/dist/Foundation/LlamaCppOffsets.d.ts.map +1 -0
  52. package/dist/Foundation/LlamaCppOffsets.js +191 -0
  53. package/dist/Foundation/LlamaCppOffsets.js.map +1 -0
  54. package/dist/Foundation/PlatformAdapter.d.ts +109 -0
  55. package/dist/Foundation/PlatformAdapter.d.ts.map +1 -0
  56. package/dist/Foundation/PlatformAdapter.js +417 -0
  57. package/dist/Foundation/PlatformAdapter.js.map +1 -0
  58. package/dist/Foundation/TelemetryService.d.ts +96 -0
  59. package/dist/Foundation/TelemetryService.d.ts.map +1 -0
  60. package/dist/Foundation/TelemetryService.js +345 -0
  61. package/dist/Foundation/TelemetryService.js.map +1 -0
  62. package/dist/Foundation/WASMAnalyticsEmitter.d.ts +29 -0
  63. package/dist/Foundation/WASMAnalyticsEmitter.d.ts.map +1 -0
  64. package/dist/Foundation/WASMAnalyticsEmitter.js +70 -0
  65. package/dist/Foundation/WASMAnalyticsEmitter.js.map +1 -0
  66. package/dist/Infrastructure/VLMWorkerBridge.d.ts +219 -0
  67. package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +1 -0
  68. package/dist/Infrastructure/VLMWorkerBridge.js +288 -0
  69. package/dist/Infrastructure/VLMWorkerBridge.js.map +1 -0
  70. package/dist/Infrastructure/VLMWorkerRuntime.d.ts +38 -0
  71. package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +1 -0
  72. package/dist/Infrastructure/VLMWorkerRuntime.js +620 -0
  73. package/dist/Infrastructure/VLMWorkerRuntime.js.map +1 -0
  74. package/dist/LlamaCPP.d.ts +49 -0
  75. package/dist/LlamaCPP.d.ts.map +1 -0
  76. package/dist/LlamaCPP.js +63 -0
  77. package/dist/LlamaCPP.js.map +1 -0
  78. package/dist/LlamaCppProvider.d.ts +32 -0
  79. package/dist/LlamaCppProvider.d.ts.map +1 -0
  80. package/dist/LlamaCppProvider.js +106 -0
  81. package/dist/LlamaCppProvider.js.map +1 -0
  82. package/dist/index.d.ts +43 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +41 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/workers/vlm-worker.d.ts +9 -0
  87. package/dist/workers/vlm-worker.d.ts.map +1 -0
  88. package/dist/workers/vlm-worker.js +10 -0
  89. package/dist/workers/vlm-worker.js.map +1 -0
  90. package/package.json +69 -0
  91. package/wasm/racommons-llamacpp-webgpu.js +159 -0
  92. package/wasm/racommons-llamacpp-webgpu.wasm +0 -0
  93. package/wasm/racommons-llamacpp.js +129 -0
  94. package/wasm/racommons-llamacpp.wasm +0 -0
@@ -0,0 +1,483 @@
1
+ /**
2
+ * LlamaCppBridge - Independent WASM module bridge for the llama.cpp backend
3
+ *
4
+ * Loads racommons-llamacpp.wasm (which contains rac_commons + llama.cpp)
5
+ * as a fully independent WASM module with its own Emscripten runtime,
6
+ * linear memory, and virtual filesystem.
7
+ *
8
+ * Follows the same pattern as SherpaONNXBridge in @runanywhere/web-onnx:
9
+ * - Singleton with lazy loading
10
+ * - Dynamic import of glue JS + fetch of .wasm binary
11
+ * - Async WebAssembly.instantiate
12
+ * - Own MEMFS for model files
13
+ * - Platform adapter registration
14
+ * - rac_init() + backend registration
15
+ *
16
+ * This module is completely independent from any core WASM — the core
17
+ * package (@runanywhere/web) is pure TypeScript.
18
+ */
19
+ import { SDKError, SDKErrorCode, SDKLogger, EventBus, SDKEventType, SDKEnvironment, RunAnywhere } from '@runanywhere/web';
20
+ import { getDeviceInfo } from '@runanywhere/web';
21
+ import { PlatformAdapter } from './PlatformAdapter';
22
+ import { AnalyticsEventsBridge } from './AnalyticsEventsBridge';
23
+ import { TelemetryService } from './TelemetryService';
24
+ const logger = new SDKLogger('LlamaCppBridge');
25
+ // ---------------------------------------------------------------------------
26
+ // LlamaCppBridge
27
+ // ---------------------------------------------------------------------------
28
+ export class LlamaCppBridge {
29
+ static _instance = null;
30
+ static _nextMountId = 0;
31
+ _module = null;
32
+ _loaded = false;
33
+ _loading = null;
34
+ _accelerationMode = 'cpu';
35
+ _platformAdapter = null;
36
+ _analyticsEventsBridge = null;
37
+ _telemetryService = null;
38
+ /** Override the default URL to the racommons-llamacpp.js glue file. */
39
+ wasmUrl = null;
40
+ /** Override the URL for the WebGPU variant. */
41
+ webgpuWasmUrl = null;
42
+ static get shared() {
43
+ if (!LlamaCppBridge._instance) {
44
+ LlamaCppBridge._instance = new LlamaCppBridge();
45
+ }
46
+ return LlamaCppBridge._instance;
47
+ }
48
+ get isLoaded() {
49
+ return this._loaded && this._module !== null;
50
+ }
51
+ get module() {
52
+ if (!this._module) {
53
+ throw new SDKError(SDKErrorCode.WASMNotLoaded, 'LlamaCpp WASM not loaded. Call LlamaCPP.register() first.');
54
+ }
55
+ return this._module;
56
+ }
57
+ get accelerationMode() {
58
+ return this._accelerationMode;
59
+ }
60
+ // -----------------------------------------------------------------------
61
+ // Loading
62
+ // -----------------------------------------------------------------------
63
+ async ensureLoaded(acceleration = 'auto') {
64
+ if (this._loaded)
65
+ return;
66
+ if (this._loading) {
67
+ await this._loading;
68
+ return;
69
+ }
70
+ this._loading = this._doLoad(acceleration);
71
+ try {
72
+ await this._loading;
73
+ }
74
+ finally {
75
+ this._loading = null;
76
+ }
77
+ }
78
+ async _doLoad(acceleration) {
79
+ logger.info('Loading LlamaCpp WASM module...');
80
+ try {
81
+ // Determine acceleration mode
82
+ const useWebGPU = acceleration === 'webgpu' ||
83
+ (acceleration === 'auto' && await this.detectWebGPUWithJSPI());
84
+ this._accelerationMode = useWebGPU ? 'webgpu' : 'cpu';
85
+ // Select module URL
86
+ const moduleUrl = useWebGPU
87
+ ? (this.webgpuWasmUrl ?? new URL('../../wasm/racommons-llamacpp-webgpu.js', import.meta.url).href)
88
+ : (this.wasmUrl ?? new URL('../../wasm/racommons-llamacpp.js', import.meta.url).href);
89
+ logger.info(`Loading ${useWebGPU ? 'WebGPU' : 'CPU'} variant: ${moduleUrl}`);
90
+ // Persist the resolved URL so VLMWorkerBridge (and others) can read it
91
+ if (useWebGPU) {
92
+ this.webgpuWasmUrl = moduleUrl;
93
+ }
94
+ this.wasmUrl = moduleUrl;
95
+ // Dynamic import of Emscripten glue JS
96
+ const { default: createModule } = await import(/* @vite-ignore */ moduleUrl);
97
+ // Derive the base URL so the Emscripten glue resolves the companion
98
+ // .wasm binary from the same directory, regardless of bundler output.
99
+ const baseUrl = moduleUrl.substring(0, moduleUrl.lastIndexOf('/') + 1);
100
+ // Instantiate the WASM module
101
+ this._module = await createModule({
102
+ print: (text) => logger.info(text),
103
+ printErr: (text) => logger.error(text),
104
+ locateFile: (path) => baseUrl + path,
105
+ });
106
+ // Verify module loaded
107
+ const pingResult = this._module._rac_wasm_ping();
108
+ const ping = typeof pingResult === 'object' && pingResult !== null && 'then' in pingResult
109
+ ? await pingResult
110
+ : pingResult;
111
+ if (ping !== 42) {
112
+ throw new Error(`WASM ping failed: expected 42, got ${ping}`);
113
+ }
114
+ // Register platform adapter (browser callbacks for logging, file ops, etc.)
115
+ this._platformAdapter = new PlatformAdapter();
116
+ this._platformAdapter.register();
117
+ // Initialize RACommons core within this WASM module
118
+ await this.initRACommons(this._platformAdapter.getAdapterPtr());
119
+ // Register the llama.cpp backend
120
+ await this.registerBackend();
121
+ // Initialize analytics events bridge (subscribe to C++ events → TypeScript EventBus)
122
+ this._analyticsEventsBridge = new AnalyticsEventsBridge();
123
+ // Initialize telemetry service (C++ telemetry manager → browser fetch)
124
+ this._telemetryService = TelemetryService.shared;
125
+ const deviceInfo = await getDeviceInfo();
126
+ const environment = RunAnywhere.environment ?? SDKEnvironment.Production;
127
+ await this._telemetryService.initialize(this._module, environment, deviceInfo);
128
+ // Wire analytics bridge: forwards C++ events to EventBus + TelemetryService
129
+ this._analyticsEventsBridge.register(this._module, (eventType, dataPtr) => this._telemetryService?.trackAnalyticsEvent(eventType, dataPtr));
130
+ this._loaded = true;
131
+ logger.info(`LlamaCpp WASM module loaded successfully (${this._accelerationMode})`);
132
+ EventBus.shared.emit('llamacpp.wasmLoaded', SDKEventType.Initialization, {
133
+ accelerationMode: this._accelerationMode,
134
+ });
135
+ }
136
+ catch (error) {
137
+ // WebGPU fallback to CPU
138
+ if (this._accelerationMode === 'webgpu' && acceleration === 'auto') {
139
+ const reason = error instanceof Error ? error.message : String(error);
140
+ logger.warning(`WebGPU WASM failed (${reason}), falling back to CPU`);
141
+ this._module = null;
142
+ this._loaded = false;
143
+ this._accelerationMode = 'cpu';
144
+ return this._doLoad('cpu');
145
+ }
146
+ this._module = null;
147
+ this._loaded = false;
148
+ const message = error instanceof Error ? error.message : String(error);
149
+ logger.error(`Failed to load LlamaCpp WASM: ${message}`);
150
+ throw new SDKError(SDKErrorCode.WASMLoadFailed, `Failed to load LlamaCpp WASM module: ${message}`);
151
+ }
152
+ }
153
+ async initRACommons(adapterPtr) {
154
+ const m = this._module;
155
+ // Create rac_config_t
156
+ const configSize = m._rac_wasm_sizeof_config();
157
+ const configPtr = m._malloc(configSize);
158
+ for (let i = 0; i < configSize; i++) {
159
+ m.setValue(configPtr + i, 0, 'i8');
160
+ }
161
+ // Set platform_adapter pointer (offset 0)
162
+ m.setValue(configPtr, adapterPtr, '*');
163
+ // Set log_level (offset queried at runtime)
164
+ const logLevelOffset = this.wasmOffsetOf('config_log_level');
165
+ m.setValue(configPtr + logLevelOffset, 2, 'i32'); // INFO level
166
+ const result = await m.ccall('rac_init', 'number', ['number'], [configPtr], { async: true });
167
+ m._free(configPtr);
168
+ if (result !== 0) {
169
+ const errMsg = this.readString(m._rac_error_message(result));
170
+ throw new Error(`rac_init failed in LlamaCpp module: ${errMsg}`);
171
+ }
172
+ logger.info('RACommons initialized within LlamaCpp WASM module');
173
+ }
174
+ async registerBackend() {
175
+ const m = this._module;
176
+ if (typeof m._rac_backend_llamacpp_register === 'function') {
177
+ const result = await m.ccall('rac_backend_llamacpp_register', 'number', [], [], { async: true });
178
+ if (result === 0) {
179
+ logger.info('llama.cpp C++ backend registered');
180
+ }
181
+ else {
182
+ logger.warning(`llama.cpp backend registration returned: ${result}`);
183
+ }
184
+ }
185
+ if (typeof m._rac_backend_llamacpp_vlm_register === 'function') {
186
+ const result = await m.ccall('rac_backend_llamacpp_vlm_register', 'number', [], [], { async: true });
187
+ if (result === 0) {
188
+ logger.info('llama.cpp VLM backend registered');
189
+ }
190
+ }
191
+ }
192
+ // -----------------------------------------------------------------------
193
+ // Filesystem (model files written to this module's MEMFS)
194
+ // -----------------------------------------------------------------------
195
+ /**
196
+ * Write a model file to this WASM module's Emscripten virtual filesystem.
197
+ */
198
+ writeFile(path, data) {
199
+ const m = this.module;
200
+ const dir = path.substring(0, path.lastIndexOf('/'));
201
+ if (dir && typeof m.FS_createPath === 'function') {
202
+ m.FS_createPath('/', dir.replace(/^\//, ''), true, true);
203
+ }
204
+ if (typeof m.FS_createDataFile === 'function') {
205
+ const parentDir = dir || '/';
206
+ const filename = path.substring(path.lastIndexOf('/') + 1);
207
+ try {
208
+ m.FS_unlink?.(path);
209
+ }
210
+ catch { /* doesn't exist */ }
211
+ m.FS_createDataFile(parentDir, filename, data, true, true, true);
212
+ logger.debug(`Wrote ${data.length} bytes to LlamaCpp FS: ${path}`);
213
+ }
214
+ }
215
+ /**
216
+ * Write a model from a ReadableStream to this WASM module's Emscripten virtual filesystem.
217
+ * Useful for loading models without buffering the entire file in JS memory.
218
+ */
219
+ async writeFileStream(path, stream) {
220
+ const m = this.module;
221
+ const FS = m.FS;
222
+ if (!FS)
223
+ throw new Error('Emscripten FS not available on module');
224
+ const dir = path.substring(0, path.lastIndexOf('/'));
225
+ if (dir && typeof m.FS_createPath === 'function') {
226
+ m.FS_createPath('/', dir.replace(/^\//, ''), true, true);
227
+ }
228
+ try {
229
+ FS.unlink(path);
230
+ }
231
+ catch { /* ignore */ }
232
+ logger.debug(`Streaming to LlamaCpp FS: ${path}...`);
233
+ const fileStream = FS.open(path, 'w+');
234
+ try {
235
+ const reader = stream.getReader();
236
+ let totalBytes = 0;
237
+ try {
238
+ while (true) {
239
+ const { done, value } = await reader.read();
240
+ if (done)
241
+ break;
242
+ FS.write(fileStream, value, 0, value.length, undefined);
243
+ totalBytes += value.length;
244
+ }
245
+ logger.debug(`Finished streaming ${totalBytes} bytes to LlamaCpp FS: ${path}`);
246
+ }
247
+ finally {
248
+ reader.releaseLock();
249
+ }
250
+ }
251
+ finally {
252
+ FS.close(fileStream);
253
+ }
254
+ }
255
+ /**
256
+ * Remove a file from this WASM module's filesystem.
257
+ */
258
+ unlinkFile(path) {
259
+ try {
260
+ this.module.FS_unlink?.(path);
261
+ }
262
+ catch { /* doesn't exist */ }
263
+ }
264
+ /**
265
+ * Mount a File object into the WASM filesystem (if WORKERFS is available).
266
+ * Returns the path to the mounted file, or null if mounting failed/unsupported.
267
+ *
268
+ * @param file - The browser File object
269
+ * @returns The absolute path to the file in WASM FS (e.g. /mnt-123/model.gguf) or null
270
+ */
271
+ mountFile(file) {
272
+ const m = this.module;
273
+ if (!m.FS_mount || !m.WORKERFS)
274
+ return null;
275
+ let createdMountDir = false;
276
+ let mountDir = '';
277
+ try {
278
+ // Create a unique mount point directory
279
+ const mountId = LlamaCppBridge._nextMountId++;
280
+ mountDir = `/mnt-${mountId}`;
281
+ if (m.FS_mkdir) {
282
+ m.FS_mkdir(mountDir);
283
+ createdMountDir = true;
284
+ }
285
+ // Mount the file. WORKERFS expects { files: [File, ...] } or { files: [{name, data: File}] }
286
+ // We assume the standard Emscripten WORKERFS behavior where `files` array mounts them by name.
287
+ m.FS_mount(m.WORKERFS, { files: [file] }, mountDir);
288
+ logger.debug(`Mounted ${file.name} to ${mountDir}`);
289
+ return `${mountDir}/${file.name}`;
290
+ }
291
+ catch (err) {
292
+ if (createdMountDir && m.FS_rmdir) {
293
+ try {
294
+ m.FS_rmdir(mountDir);
295
+ }
296
+ catch {
297
+ logger.warning(`Failed to clean up mount dir ${mountDir}`);
298
+ }
299
+ }
300
+ const msg = err instanceof Error ? err.message : String(err);
301
+ logger.warning(`Failed to mount file (WORKERFS): ${msg}`);
302
+ return null;
303
+ }
304
+ }
305
+ /**
306
+ * Unmount a directory (and remove it).
307
+ * @param mountDir - The directory path (e.g. /mnt-123)
308
+ */
309
+ unmount(mountPath) {
310
+ if (!mountPath.startsWith('/mnt-'))
311
+ return; // Safety check
312
+ // Strip filename if present
313
+ const parts = mountPath.split('/');
314
+ // formatted like ["", "mnt-123", "filename"]
315
+ let dir = mountPath;
316
+ if (parts.length >= 3) {
317
+ dir = `/${parts[1]}`;
318
+ }
319
+ try {
320
+ const m = this.module;
321
+ if (m.FS_unmount)
322
+ m.FS_unmount(dir);
323
+ if (m.FS_rmdir)
324
+ m.FS_rmdir(dir);
325
+ logger.debug(`Unmounted ${dir}`);
326
+ }
327
+ catch {
328
+ /* ignore cleanup errors */
329
+ }
330
+ }
331
+ // -----------------------------------------------------------------------
332
+ // WebGPU Detection
333
+ // -----------------------------------------------------------------------
334
+ async detectWebGPUWithJSPI() {
335
+ if (typeof navigator === 'undefined' || !('gpu' in navigator))
336
+ return false;
337
+ try {
338
+ const gpu = navigator.gpu;
339
+ const adapter = await gpu?.requestAdapter();
340
+ if (!adapter)
341
+ return false;
342
+ // Also need JSPI
343
+ return typeof WebAssembly !== 'undefined' &&
344
+ 'promising' in WebAssembly &&
345
+ 'Suspending' in WebAssembly;
346
+ }
347
+ catch {
348
+ return false;
349
+ }
350
+ }
351
+ // -----------------------------------------------------------------------
352
+ // String / Memory Helpers (same as WASMBridge)
353
+ // -----------------------------------------------------------------------
354
+ allocString(str) {
355
+ const m = this.module;
356
+ const len = m.lengthBytesUTF8(str) + 1;
357
+ const ptr = m._malloc(len);
358
+ m.stringToUTF8(str, ptr, len);
359
+ return ptr;
360
+ }
361
+ readString(ptr) {
362
+ if (ptr === 0)
363
+ return '';
364
+ return this.module.UTF8ToString(ptr);
365
+ }
366
+ free(ptr) {
367
+ if (ptr !== 0)
368
+ this.module._free(ptr);
369
+ }
370
+ writeBytes(src, destPtr) {
371
+ const m = this.module;
372
+ if (m.HEAPU8) {
373
+ m.HEAPU8.set(src, destPtr);
374
+ return;
375
+ }
376
+ for (let i = 0; i < src.length; i++)
377
+ m.setValue(destPtr + i, src[i], 'i8');
378
+ }
379
+ readBytes(srcPtr, length) {
380
+ const m = this.module;
381
+ if (m.HEAPU8)
382
+ return m.HEAPU8.slice(srcPtr, srcPtr + length);
383
+ const result = new Uint8Array(length);
384
+ for (let i = 0; i < length; i++)
385
+ result[i] = m.getValue(srcPtr + i, 'i8') & 0xFF;
386
+ return result;
387
+ }
388
+ readFloat32Array(srcPtr, count) {
389
+ const m = this.module;
390
+ if (m.HEAPF32)
391
+ return m.HEAPF32.slice(srcPtr >> 2, (srcPtr >> 2) + count);
392
+ const result = new Float32Array(count);
393
+ for (let i = 0; i < count; i++)
394
+ result[i] = m.getValue(srcPtr + i * 4, 'float');
395
+ return result;
396
+ }
397
+ writeFloat32Array(src, destPtr) {
398
+ const m = this.module;
399
+ if (m.HEAPF32) {
400
+ m.HEAPF32.set(src, destPtr >> 2);
401
+ return;
402
+ }
403
+ for (let i = 0; i < src.length; i++)
404
+ m.setValue(destPtr + i * 4, src[i], 'float');
405
+ }
406
+ readFloat32(ptr) {
407
+ const m = this.module;
408
+ if (m.HEAPF32)
409
+ return m.HEAPF32[ptr >> 2];
410
+ return m.getValue(ptr, 'float');
411
+ }
412
+ checkResult(result, operation) {
413
+ if (result !== 0) {
414
+ const errMsgPtr = this.module._rac_error_message(result);
415
+ const errMsg = this.readString(errMsgPtr);
416
+ throw new SDKError(SDKErrorCode.BackendError, `${operation}: ${errMsg}`);
417
+ }
418
+ }
419
+ getErrorMessage(resultCode) {
420
+ return this.readString(this.module._rac_error_message(resultCode));
421
+ }
422
+ callFunction(funcName, returnType, argTypes, args, opts) {
423
+ if (!this._module)
424
+ throw new SDKError(SDKErrorCode.WASMNotLoaded, 'LlamaCpp WASM not loaded');
425
+ return this._module.ccall(funcName, returnType, argTypes, args, opts);
426
+ }
427
+ // -----------------------------------------------------------------------
428
+ // Offset Helpers
429
+ // -----------------------------------------------------------------------
430
+ wasmOffsetOf(name) {
431
+ const fn = this.module[`_rac_wasm_offsetof_${name}`];
432
+ return typeof fn === 'function' ? fn() : 0;
433
+ }
434
+ wasmSizeOf(name) {
435
+ const fn = this.module[`_rac_wasm_sizeof_${name}`];
436
+ return typeof fn === 'function' ? fn() : 0;
437
+ }
438
+ // -----------------------------------------------------------------------
439
+ // Cleanup
440
+ // -----------------------------------------------------------------------
441
+ shutdown() {
442
+ // Flush and teardown telemetry before shutting down WASM
443
+ if (this._analyticsEventsBridge) {
444
+ try {
445
+ this._analyticsEventsBridge.cleanup();
446
+ }
447
+ catch { /* ignore */ }
448
+ this._analyticsEventsBridge = null;
449
+ }
450
+ if (this._telemetryService) {
451
+ try {
452
+ this._telemetryService.shutdown();
453
+ }
454
+ catch { /* ignore */ }
455
+ this._telemetryService = null;
456
+ }
457
+ if (this._module && this._loaded) {
458
+ try {
459
+ this._module._rac_shutdown();
460
+ }
461
+ catch (err) {
462
+ logger.debug(`LlamaCpp module shutdown failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
463
+ }
464
+ }
465
+ // Clean up platform adapter
466
+ if (this._platformAdapter) {
467
+ try {
468
+ this._platformAdapter.cleanup();
469
+ }
470
+ catch (err) {
471
+ logger.debug(`Platform adapter cleanup failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
472
+ }
473
+ this._platformAdapter = null;
474
+ }
475
+ this._module = null;
476
+ this._loaded = false;
477
+ this._loading = null;
478
+ this._accelerationMode = 'cpu';
479
+ LlamaCppBridge._instance = null;
480
+ logger.info('LlamaCpp bridge shut down');
481
+ }
482
+ }
483
+ //# sourceMappingURL=LlamaCppBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LlamaCppBridge.js","sourceRoot":"","sources":["../../src/Foundation/LlamaCppBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * LlamaCppOffsets - Cached struct offset access for the llama.cpp WASM module
3
+ *
4
+ * Provides the same `Offsets.llmOptions.temperature` access pattern that the
5
+ * old core WASMBridge had, but backed by LlamaCppBridge.shared.wasmOffsetOf().
6
+ *
7
+ * Offsets are loaded lazily on first access and cached thereafter.
8
+ */
9
+ import type { AllOffsets } from '@runanywhere/web';
10
+ /**
11
+ * Load all struct offsets from the LlamaCppBridge WASM module.
12
+ * Results are cached after the first call.
13
+ *
14
+ * Must be called after LlamaCppBridge.shared.ensureLoaded().
15
+ */
16
+ export declare function loadOffsets(): AllOffsets;
17
+ /**
18
+ * Get the cached offsets. Throws if loadOffsets() hasn't been called yet.
19
+ */
20
+ export declare function getOffsets(): AllOffsets;
21
+ /**
22
+ * Convenience alias: `Offsets` provides the same access pattern as the old
23
+ * core `Offsets` global, e.g. `Offsets.llmOptions.temperature`.
24
+ *
25
+ * Lazily loads offsets on first property access.
26
+ */
27
+ export declare const Offsets: AllOffsets;
28
+ /**
29
+ * Reset the cached offsets (for testing or when the bridge is reloaded).
30
+ */
31
+ export declare function resetOffsets(): void;
32
+ //# sourceMappingURL=LlamaCppOffsets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LlamaCppOffsets.d.ts","sourceRoot":"","sources":["../../src/Foundation/LlamaCppOffsets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EAcX,MAAM,kBAAkB,CAAC;AAkJ1B;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,UAAU,CAoBxC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,CASvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,UAIpB,CAAC;AAEH;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}