@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.
- package/README.md +75 -0
- package/dist/Extensions/DiffusionTypes.d.ts +64 -0
- package/dist/Extensions/DiffusionTypes.d.ts.map +1 -0
- package/dist/Extensions/DiffusionTypes.js +28 -0
- package/dist/Extensions/DiffusionTypes.js.map +1 -0
- package/dist/Extensions/EmbeddingsTypes.d.ts +33 -0
- package/dist/Extensions/EmbeddingsTypes.d.ts.map +1 -0
- package/dist/Extensions/EmbeddingsTypes.js +13 -0
- package/dist/Extensions/EmbeddingsTypes.js.map +1 -0
- package/dist/Extensions/RunAnywhere+Diffusion.d.ts +44 -0
- package/dist/Extensions/RunAnywhere+Diffusion.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+Diffusion.js +185 -0
- package/dist/Extensions/RunAnywhere+Diffusion.js.map +1 -0
- package/dist/Extensions/RunAnywhere+Embeddings.d.ts +56 -0
- package/dist/Extensions/RunAnywhere+Embeddings.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+Embeddings.js +236 -0
- package/dist/Extensions/RunAnywhere+Embeddings.js.map +1 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.d.ts +69 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.js +194 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.js.map +1 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.d.ts +87 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.js +525 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.js.map +1 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.d.ts +82 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.js +574 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.js.map +1 -0
- package/dist/Extensions/RunAnywhere+VLM.d.ts +57 -0
- package/dist/Extensions/RunAnywhere+VLM.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+VLM.js +258 -0
- package/dist/Extensions/RunAnywhere+VLM.js.map +1 -0
- package/dist/Extensions/ToolCallingTypes.d.ts +78 -0
- package/dist/Extensions/ToolCallingTypes.d.ts.map +1 -0
- package/dist/Extensions/ToolCallingTypes.js +8 -0
- package/dist/Extensions/ToolCallingTypes.js.map +1 -0
- package/dist/Extensions/VLMTypes.d.ts +16 -0
- package/dist/Extensions/VLMTypes.d.ts.map +1 -0
- package/dist/Extensions/VLMTypes.js +18 -0
- package/dist/Extensions/VLMTypes.js.map +1 -0
- package/dist/Foundation/AnalyticsEventsBridge.d.ts +38 -0
- package/dist/Foundation/AnalyticsEventsBridge.d.ts.map +1 -0
- package/dist/Foundation/AnalyticsEventsBridge.js +394 -0
- package/dist/Foundation/AnalyticsEventsBridge.js.map +1 -0
- package/dist/Foundation/LlamaCppBridge.d.ts +182 -0
- package/dist/Foundation/LlamaCppBridge.d.ts.map +1 -0
- package/dist/Foundation/LlamaCppBridge.js +483 -0
- package/dist/Foundation/LlamaCppBridge.js.map +1 -0
- package/dist/Foundation/LlamaCppOffsets.d.ts +32 -0
- package/dist/Foundation/LlamaCppOffsets.d.ts.map +1 -0
- package/dist/Foundation/LlamaCppOffsets.js +191 -0
- package/dist/Foundation/LlamaCppOffsets.js.map +1 -0
- package/dist/Foundation/PlatformAdapter.d.ts +109 -0
- package/dist/Foundation/PlatformAdapter.d.ts.map +1 -0
- package/dist/Foundation/PlatformAdapter.js +417 -0
- package/dist/Foundation/PlatformAdapter.js.map +1 -0
- package/dist/Foundation/TelemetryService.d.ts +96 -0
- package/dist/Foundation/TelemetryService.d.ts.map +1 -0
- package/dist/Foundation/TelemetryService.js +345 -0
- package/dist/Foundation/TelemetryService.js.map +1 -0
- package/dist/Foundation/WASMAnalyticsEmitter.d.ts +29 -0
- package/dist/Foundation/WASMAnalyticsEmitter.d.ts.map +1 -0
- package/dist/Foundation/WASMAnalyticsEmitter.js +70 -0
- package/dist/Foundation/WASMAnalyticsEmitter.js.map +1 -0
- package/dist/Infrastructure/VLMWorkerBridge.d.ts +219 -0
- package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerBridge.js +288 -0
- package/dist/Infrastructure/VLMWorkerBridge.js.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts +38 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js +620 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js.map +1 -0
- package/dist/LlamaCPP.d.ts +49 -0
- package/dist/LlamaCPP.d.ts.map +1 -0
- package/dist/LlamaCPP.js +63 -0
- package/dist/LlamaCPP.js.map +1 -0
- package/dist/LlamaCppProvider.d.ts +32 -0
- package/dist/LlamaCppProvider.d.ts.map +1 -0
- package/dist/LlamaCppProvider.js +106 -0
- package/dist/LlamaCppProvider.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/workers/vlm-worker.d.ts +9 -0
- package/dist/workers/vlm-worker.d.ts.map +1 -0
- package/dist/workers/vlm-worker.js +10 -0
- package/dist/workers/vlm-worker.js.map +1 -0
- package/package.json +69 -0
- package/wasm/racommons-llamacpp-webgpu.js +159 -0
- package/wasm/racommons-llamacpp-webgpu.wasm +0 -0
- package/wasm/racommons-llamacpp.js +129 -0
- package/wasm/racommons-llamacpp.wasm +0 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TelemetryService.ts
|
|
3
|
+
*
|
|
4
|
+
* Web SDK bridge to the C++ telemetry manager (rac_telemetry_manager_*).
|
|
5
|
+
* Mirrors the role of TelemetryBridge.cpp in React Native.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - Creates rac_telemetry_manager_t via WASM
|
|
9
|
+
* - Registers an HTTP callback that C++ calls when events need sending
|
|
10
|
+
* - The HTTP callback uses HTTPService (browser fetch) to POST to the endpoint
|
|
11
|
+
* - Calls rac_telemetry_manager_http_complete() with the result
|
|
12
|
+
* - Also provides AnalyticsEventCallback for forwarding events from AnalyticsEventsBridge
|
|
13
|
+
*
|
|
14
|
+
* Device UUID:
|
|
15
|
+
* - Persisted in localStorage under 'rac_device_id'
|
|
16
|
+
* - Generated with crypto.randomUUID() on first run
|
|
17
|
+
*/
|
|
18
|
+
import { SDKLogger, SDKEnvironment, HTTPService } from '@runanywhere/web';
|
|
19
|
+
const logger = new SDKLogger('TelemetryService');
|
|
20
|
+
const DEVICE_ID_KEY = 'rac_device_id';
|
|
21
|
+
const SDK_VERSION = '0.1.0-beta.8';
|
|
22
|
+
// C++ rac_environment_t values
|
|
23
|
+
const RAC_ENV_DEVELOPMENT = 0;
|
|
24
|
+
const RAC_ENV_STAGING = 1;
|
|
25
|
+
const RAC_ENV_PRODUCTION = 2;
|
|
26
|
+
/**
|
|
27
|
+
* Columns in the V2 `telemetry_events` Supabase table.
|
|
28
|
+
* The C++ telemetry manager serializes modality-specific fields (e.g.
|
|
29
|
+
* `speech_duration_ms`, `audio_duration_ms`, `word_count`) into the same
|
|
30
|
+
* flat JSON payload. In production these go through the backend API which
|
|
31
|
+
* splits them into child tables (`stt_telemetry`, `tts_telemetry`, etc.),
|
|
32
|
+
* but in dev mode we POST directly to Supabase REST API — PostgREST
|
|
33
|
+
* rejects any column not in the target table with HTTP 400.
|
|
34
|
+
*/
|
|
35
|
+
const TELEMETRY_V2_COLUMNS = new Set([
|
|
36
|
+
'id', 'org_id', 'api_key_id', 'device_id', 'sdk_event_id',
|
|
37
|
+
'event_type', 'modality', 'session_id', 'framework',
|
|
38
|
+
'model_id', 'model_name', 'device', 'os_version', 'platform',
|
|
39
|
+
'sdk_version', 'processing_time_ms', 'success',
|
|
40
|
+
'error_message', 'error_code', 'event_timestamp', 'created_at',
|
|
41
|
+
'received_at', 'migrated_from_v1', 'v1_source_id', 'synced_from_prod',
|
|
42
|
+
]);
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Device UUID helper
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
/**
|
|
47
|
+
* Returns the persistent device UUID, creating one if it doesn't exist.
|
|
48
|
+
* Uses localStorage for persistence across page loads.
|
|
49
|
+
*/
|
|
50
|
+
export function getOrCreateDeviceId() {
|
|
51
|
+
try {
|
|
52
|
+
const existing = localStorage.getItem(DEVICE_ID_KEY);
|
|
53
|
+
if (existing)
|
|
54
|
+
return existing;
|
|
55
|
+
const id = crypto.randomUUID();
|
|
56
|
+
localStorage.setItem(DEVICE_ID_KEY, id);
|
|
57
|
+
return id;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Fallback when localStorage is unavailable (e.g., private browsing restrictions)
|
|
61
|
+
return crypto.randomUUID();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// TelemetryService
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
/**
|
|
68
|
+
* Manages the lifecycle of the C++ telemetry manager and bridges HTTP calls
|
|
69
|
+
* to browser fetch for telemetry event batching and delivery.
|
|
70
|
+
*/
|
|
71
|
+
export class TelemetryService {
|
|
72
|
+
static _instance = null;
|
|
73
|
+
static get shared() {
|
|
74
|
+
if (!TelemetryService._instance) {
|
|
75
|
+
TelemetryService._instance = new TelemetryService();
|
|
76
|
+
}
|
|
77
|
+
return TelemetryService._instance;
|
|
78
|
+
}
|
|
79
|
+
_module = null;
|
|
80
|
+
_handle = 0; // rac_telemetry_manager_t*
|
|
81
|
+
_httpCallbackPtr = 0; // Emscripten function table ptr
|
|
82
|
+
_initialized = false;
|
|
83
|
+
_initPromise = null; // guards concurrent initialize() calls
|
|
84
|
+
constructor() { }
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// Lifecycle
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
/**
|
|
89
|
+
* Initialize the telemetry manager.
|
|
90
|
+
* Called from LlamaCppBridge._doLoad() after WASM is loaded.
|
|
91
|
+
*
|
|
92
|
+
* Concurrent calls are safe: a second caller awaits the in-flight promise
|
|
93
|
+
* rather than starting a duplicate initialization, preventing duplicate
|
|
94
|
+
* WASM handles and leaked function-table entries.
|
|
95
|
+
*/
|
|
96
|
+
async initialize(module, environment, deviceInfo) {
|
|
97
|
+
if (this._initialized) {
|
|
98
|
+
logger.warning('TelemetryService already initialized');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// If initialization is already in flight, wait for it rather than
|
|
102
|
+
// starting a second one — mirrors the LlamaCppBridge.ensureLoaded() pattern.
|
|
103
|
+
if (this._initPromise) {
|
|
104
|
+
await this._initPromise;
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this._initPromise = this._doInitialize(module, environment, deviceInfo);
|
|
108
|
+
try {
|
|
109
|
+
await this._initPromise;
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
this._initPromise = null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Callback for AnalyticsEventsBridge — forwards raw C++ event to telemetry manager.
|
|
117
|
+
*/
|
|
118
|
+
trackAnalyticsEvent(eventType, dataPtr) {
|
|
119
|
+
if (!this._initialized || !this._module || !this._handle)
|
|
120
|
+
return;
|
|
121
|
+
try {
|
|
122
|
+
if (typeof this._module._rac_telemetry_manager_track_analytics === 'function') {
|
|
123
|
+
this._module._rac_telemetry_manager_track_analytics(this._handle, eventType, dataPtr);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// Silent — telemetry must never crash the app
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Flush all queued telemetry events immediately.
|
|
132
|
+
*/
|
|
133
|
+
flush() {
|
|
134
|
+
if (!this._initialized || !this._module || !this._handle)
|
|
135
|
+
return;
|
|
136
|
+
try {
|
|
137
|
+
if (typeof this._module._rac_telemetry_manager_flush === 'function') {
|
|
138
|
+
this._module._rac_telemetry_manager_flush(this._handle);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Silent — telemetry must never crash the app
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Flush and tear down the telemetry manager.
|
|
147
|
+
*/
|
|
148
|
+
shutdown() {
|
|
149
|
+
if (!this._initialized)
|
|
150
|
+
return;
|
|
151
|
+
this.flush();
|
|
152
|
+
try {
|
|
153
|
+
if (this._module && this._handle) {
|
|
154
|
+
if (typeof this._module._rac_telemetry_manager_set_http_callback === 'function') {
|
|
155
|
+
this._module._rac_telemetry_manager_set_http_callback(this._handle, 0, 0);
|
|
156
|
+
}
|
|
157
|
+
if (typeof this._module._rac_telemetry_manager_destroy === 'function') {
|
|
158
|
+
this._module._rac_telemetry_manager_destroy(this._handle);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (this._module && this._httpCallbackPtr !== 0) {
|
|
162
|
+
if (typeof this._module.removeFunction === 'function') {
|
|
163
|
+
this._module.removeFunction(this._httpCallbackPtr);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// Silent — cleanup must not throw
|
|
169
|
+
}
|
|
170
|
+
this._handle = 0;
|
|
171
|
+
this._httpCallbackPtr = 0;
|
|
172
|
+
this._module = null;
|
|
173
|
+
this._initialized = false;
|
|
174
|
+
TelemetryService._instance = null;
|
|
175
|
+
logger.debug('TelemetryService shut down');
|
|
176
|
+
}
|
|
177
|
+
// ---------------------------------------------------------------------------
|
|
178
|
+
// Private
|
|
179
|
+
// ---------------------------------------------------------------------------
|
|
180
|
+
/**
|
|
181
|
+
* Core initialization logic — only called once, guarded by initialize().
|
|
182
|
+
*/
|
|
183
|
+
async _doInitialize(module, environment, deviceInfo) {
|
|
184
|
+
if (typeof module._rac_telemetry_manager_create !== 'function') {
|
|
185
|
+
logger.warning('rac_telemetry_manager_create not available — telemetry disabled');
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this._module = module;
|
|
189
|
+
// Map TypeScript SDKEnvironment to C++ rac_environment_t
|
|
190
|
+
const racEnv = this.mapEnvironment(environment);
|
|
191
|
+
const deviceId = getOrCreateDeviceId();
|
|
192
|
+
// Alloc C strings
|
|
193
|
+
const deviceIdPtr = this.allocString(deviceId);
|
|
194
|
+
const platformPtr = this.allocString('web');
|
|
195
|
+
const versionPtr = this.allocString(SDK_VERSION);
|
|
196
|
+
this._handle = module._rac_telemetry_manager_create(racEnv, deviceIdPtr, platformPtr, versionPtr);
|
|
197
|
+
this.freeAll([deviceIdPtr, platformPtr, versionPtr]);
|
|
198
|
+
if (!this._handle) {
|
|
199
|
+
logger.warning('rac_telemetry_manager_create returned null — telemetry disabled');
|
|
200
|
+
this._module = null;
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Set device info
|
|
204
|
+
if (typeof module._rac_telemetry_manager_set_device_info === 'function') {
|
|
205
|
+
const modelPtr = this.allocString(deviceInfo.model ?? 'Browser');
|
|
206
|
+
const osVersionPtr = this.allocString(deviceInfo.osVersion ?? 'unknown');
|
|
207
|
+
module._rac_telemetry_manager_set_device_info(this._handle, modelPtr, osVersionPtr);
|
|
208
|
+
this.freeAll([modelPtr, osVersionPtr]);
|
|
209
|
+
}
|
|
210
|
+
// Register HTTP callback
|
|
211
|
+
this.registerHttpCallback(environment);
|
|
212
|
+
// Configure HTTPService in dev mode using WASM dev config
|
|
213
|
+
if (environment === SDKEnvironment.Development) {
|
|
214
|
+
this.configureDevHTTP(module);
|
|
215
|
+
}
|
|
216
|
+
this._initialized = true;
|
|
217
|
+
logger.info(`TelemetryService initialized (env=${environment}, device=${deviceId.substring(0, 8)}...)`);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Registers the HTTP callback with the WASM telemetry manager.
|
|
221
|
+
* C++ will call this when it wants to POST a telemetry batch.
|
|
222
|
+
*
|
|
223
|
+
* C signature: void(void* user_data, const char* endpoint, const char* json_body,
|
|
224
|
+
* size_t json_length, rac_bool_t requires_auth)
|
|
225
|
+
* Emscripten signature: 'viiiii'
|
|
226
|
+
*
|
|
227
|
+
* IMPORTANT: We call http_complete SYNCHRONOUSLY (before the async fetch) to
|
|
228
|
+
* prevent C++ from re-flushing the same event while awaiting the HTTP response,
|
|
229
|
+
* which caused duplicate POSTs. The actual fetch continues in the background.
|
|
230
|
+
*/
|
|
231
|
+
registerHttpCallback(environment) {
|
|
232
|
+
const m = this._module;
|
|
233
|
+
if (typeof m._rac_telemetry_manager_set_http_callback !== 'function')
|
|
234
|
+
return;
|
|
235
|
+
this._httpCallbackPtr = m.addFunction((_userData, endpointPtr, jsonBodyPtr, _jsonLength, _requiresAuth) => {
|
|
236
|
+
const endpoint = m.UTF8ToString(endpointPtr);
|
|
237
|
+
const jsonBody = m.UTF8ToString(jsonBodyPtr);
|
|
238
|
+
// Tell C++ immediately that the request is being handled (prevents retry/re-flush)
|
|
239
|
+
if (typeof m._rac_telemetry_manager_http_complete === 'function') {
|
|
240
|
+
m._rac_telemetry_manager_http_complete(this._handle, 1, 0, 0);
|
|
241
|
+
}
|
|
242
|
+
// Fire-and-forget async HTTP POST (actual delivery happens in background)
|
|
243
|
+
this.performHttpPost(endpoint, jsonBody, environment).catch((err) => {
|
|
244
|
+
logger.debug(`Telemetry POST failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
245
|
+
});
|
|
246
|
+
}, 'viiiii');
|
|
247
|
+
m._rac_telemetry_manager_set_http_callback(this._handle, this._httpCallbackPtr, 0);
|
|
248
|
+
logger.debug('Telemetry HTTP callback registered');
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Perform the actual HTTP POST for a telemetry batch.
|
|
252
|
+
* Returns the response JSON string on success.
|
|
253
|
+
*/
|
|
254
|
+
async performHttpPost(endpoint, jsonBody, environment) {
|
|
255
|
+
if (!HTTPService.shared.isConfigured) {
|
|
256
|
+
logger.debug('HTTPService not configured — skipping telemetry POST');
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
let body;
|
|
261
|
+
try {
|
|
262
|
+
body = JSON.parse(jsonBody);
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
body = jsonBody;
|
|
266
|
+
}
|
|
267
|
+
// In dev mode we POST directly to Supabase REST API which rejects
|
|
268
|
+
// columns that don't exist on the target table. The C++ telemetry
|
|
269
|
+
// manager includes modality-specific metrics (e.g. speech_duration_ms,
|
|
270
|
+
// audio_duration_ms) that belong in child tables in V2. Strip them
|
|
271
|
+
// so PostgREST accepts the payload.
|
|
272
|
+
if (environment === SDKEnvironment.Development && endpoint.includes('telemetry_events')) {
|
|
273
|
+
body = this.filterForDevTable(body);
|
|
274
|
+
}
|
|
275
|
+
const response = await HTTPService.shared.post(endpoint, body);
|
|
276
|
+
return typeof response === 'string' ? response : JSON.stringify(response);
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
logger.debug(`Telemetry POST failed (${environment}): ${err instanceof Error ? err.message : String(err)}`);
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Strip keys that don't exist in the V2 `telemetry_events` table.
|
|
285
|
+
* Handles both array format (dev flat batch) and single-object format.
|
|
286
|
+
*/
|
|
287
|
+
filterForDevTable(body) {
|
|
288
|
+
if (Array.isArray(body)) {
|
|
289
|
+
return body.map((item) => this.filterObject(item));
|
|
290
|
+
}
|
|
291
|
+
if (body !== null && typeof body === 'object') {
|
|
292
|
+
return this.filterObject(body);
|
|
293
|
+
}
|
|
294
|
+
return body;
|
|
295
|
+
}
|
|
296
|
+
filterObject(obj) {
|
|
297
|
+
const filtered = {};
|
|
298
|
+
for (const key of Object.keys(obj)) {
|
|
299
|
+
if (TELEMETRY_V2_COLUMNS.has(key)) {
|
|
300
|
+
filtered[key] = obj[key];
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return filtered;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* If the WASM module has dev config compiled in, use it to configure HTTPService.
|
|
307
|
+
*/
|
|
308
|
+
configureDevHTTP(module) {
|
|
309
|
+
if (typeof module._rac_wasm_dev_config_is_available !== 'function')
|
|
310
|
+
return;
|
|
311
|
+
if (!module._rac_wasm_dev_config_is_available())
|
|
312
|
+
return;
|
|
313
|
+
const urlPtr = module._rac_wasm_dev_config_get_supabase_url?.() ?? 0;
|
|
314
|
+
const keyPtr = module._rac_wasm_dev_config_get_supabase_key?.() ?? 0;
|
|
315
|
+
const url = urlPtr ? module.UTF8ToString(urlPtr) : '';
|
|
316
|
+
const key = keyPtr ? module.UTF8ToString(keyPtr) : '';
|
|
317
|
+
if (url && key) {
|
|
318
|
+
HTTPService.shared.configureDev({ supabaseURL: url, supabaseKey: key });
|
|
319
|
+
logger.info('HTTPService configured with WASM dev config (Supabase)');
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
mapEnvironment(env) {
|
|
323
|
+
switch (env) {
|
|
324
|
+
case SDKEnvironment.Development: return RAC_ENV_DEVELOPMENT;
|
|
325
|
+
case SDKEnvironment.Staging: return RAC_ENV_STAGING;
|
|
326
|
+
case SDKEnvironment.Production: return RAC_ENV_PRODUCTION;
|
|
327
|
+
default: return RAC_ENV_PRODUCTION;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
allocString(str) {
|
|
331
|
+
const m = this._module;
|
|
332
|
+
const len = m.lengthBytesUTF8(str) + 1;
|
|
333
|
+
const ptr = m._malloc(len);
|
|
334
|
+
m.stringToUTF8(str, ptr, len);
|
|
335
|
+
return ptr;
|
|
336
|
+
}
|
|
337
|
+
freeAll(ptrs) {
|
|
338
|
+
const m = this._module;
|
|
339
|
+
for (const ptr of ptrs) {
|
|
340
|
+
if (ptr)
|
|
341
|
+
m._free(ptr);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=TelemetryService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryService.js","sourceRoot":"","sources":["../../src/Foundation/TelemetryService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WASMAnalyticsEmitter — routes analytics events into the C++ telemetry
|
|
3
|
+
* manager via Emscripten ccall() on the LlamaCpp WASM module.
|
|
4
|
+
*
|
|
5
|
+
* Each method maps 1:1 to a C-linkage function in events.cpp:
|
|
6
|
+
* rac_analytics_emit_stt_transcription_completed(...)
|
|
7
|
+
* → ccall('rac_analytics_emit_stt_transcription_completed', ...)
|
|
8
|
+
*
|
|
9
|
+
* Emscripten handles string marshalling: allocates C strings in WASM heap,
|
|
10
|
+
* copies UTF-8 data, and frees after the call returns.
|
|
11
|
+
*/
|
|
12
|
+
import type { AnalyticsEmitterBackend } from '@runanywhere/web';
|
|
13
|
+
export declare class WASMAnalyticsEmitter implements AnalyticsEmitterBackend {
|
|
14
|
+
emitSTTModelLoadCompleted(modelId: string, modelName: string, durationMs: number, framework: number): void;
|
|
15
|
+
emitSTTModelLoadFailed(modelId: string, errorCode: number, errorMessage: string): void;
|
|
16
|
+
emitSTTTranscriptionCompleted(transcriptionId: string, modelId: string, text: string, confidence: number, durationMs: number, audioLengthMs: number, audioSizeBytes: number, wordCount: number, realTimeFactor: number, language: string, sampleRate: number, framework: number): void;
|
|
17
|
+
emitSTTTranscriptionFailed(transcriptionId: string, modelId: string, errorCode: number, errorMessage: string): void;
|
|
18
|
+
emitTTSVoiceLoadCompleted(modelId: string, modelName: string, durationMs: number, framework: number): void;
|
|
19
|
+
emitTTSVoiceLoadFailed(modelId: string, errorCode: number, errorMessage: string): void;
|
|
20
|
+
emitTTSSynthesisCompleted(synthesisId: string, modelId: string, characterCount: number, audioDurationMs: number, audioSizeBytes: number, processingDurationMs: number, charactersPerSecond: number, sampleRate: number, framework: number): void;
|
|
21
|
+
emitTTSSynthesisFailed(synthesisId: string, modelId: string, errorCode: number, errorMessage: string): void;
|
|
22
|
+
emitVADSpeechStarted(): void;
|
|
23
|
+
emitVADSpeechEnded(speechDurationMs: number, energyLevel: number): void;
|
|
24
|
+
emitModelDownloadStarted(modelId: string): void;
|
|
25
|
+
emitModelDownloadCompleted(modelId: string, fileSizeBytes: number, durationMs: number): void;
|
|
26
|
+
emitModelDownloadFailed(modelId: string, errorMessage: string): void;
|
|
27
|
+
private call;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=WASMAnalyticsEmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WASMAnalyticsEmitter.d.ts","sourceRoot":"","sources":["../../src/Foundation/WASMAnalyticsEmitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAGhE,qBAAa,oBAAqB,YAAW,uBAAuB;IAGlE,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1G,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAMtF,6BAA6B,CAC3B,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAC1E,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EACjE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAC3D,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GACpC,IAAI;IAQP,0BAA0B,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQnH,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1G,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAMtF,yBAAyB,CACvB,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAC5D,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAC7E,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GACjE,IAAI;IAOP,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ3G,oBAAoB,IAAI,IAAI;IAI5B,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAQvE,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK/C,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAM5F,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQpE,OAAO,CAAC,IAAI;CAOb"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WASMAnalyticsEmitter — routes analytics events into the C++ telemetry
|
|
3
|
+
* manager via Emscripten ccall() on the LlamaCpp WASM module.
|
|
4
|
+
*
|
|
5
|
+
* Each method maps 1:1 to a C-linkage function in events.cpp:
|
|
6
|
+
* rac_analytics_emit_stt_transcription_completed(...)
|
|
7
|
+
* → ccall('rac_analytics_emit_stt_transcription_completed', ...)
|
|
8
|
+
*
|
|
9
|
+
* Emscripten handles string marshalling: allocates C strings in WASM heap,
|
|
10
|
+
* copies UTF-8 data, and frees after the call returns.
|
|
11
|
+
*/
|
|
12
|
+
import { LlamaCppBridge } from './LlamaCppBridge';
|
|
13
|
+
export class WASMAnalyticsEmitter {
|
|
14
|
+
// -- STT -----------------------------------------------------------------
|
|
15
|
+
emitSTTModelLoadCompleted(modelId, modelName, durationMs, framework) {
|
|
16
|
+
this.call('rac_analytics_emit_stt_model_load_completed', ['string', 'string', 'number', 'number'], [modelId, modelName, durationMs, framework]);
|
|
17
|
+
}
|
|
18
|
+
emitSTTModelLoadFailed(modelId, errorCode, errorMessage) {
|
|
19
|
+
this.call('rac_analytics_emit_stt_model_load_failed', ['string', 'number', 'string'], [modelId, errorCode, errorMessage]);
|
|
20
|
+
}
|
|
21
|
+
emitSTTTranscriptionCompleted(transcriptionId, modelId, text, confidence, durationMs, audioLengthMs, audioSizeBytes, wordCount, realTimeFactor, language, sampleRate, framework) {
|
|
22
|
+
this.call('rac_analytics_emit_stt_transcription_completed', ['string', 'string', 'string', 'number', 'number', 'number',
|
|
23
|
+
'number', 'number', 'number', 'string', 'number', 'number'], [transcriptionId, modelId, text, confidence, durationMs, audioLengthMs,
|
|
24
|
+
audioSizeBytes, wordCount, realTimeFactor, language, sampleRate, framework]);
|
|
25
|
+
}
|
|
26
|
+
emitSTTTranscriptionFailed(transcriptionId, modelId, errorCode, errorMessage) {
|
|
27
|
+
this.call('rac_analytics_emit_stt_transcription_failed', ['string', 'string', 'number', 'string'], [transcriptionId, modelId, errorCode, errorMessage]);
|
|
28
|
+
}
|
|
29
|
+
// -- TTS -----------------------------------------------------------------
|
|
30
|
+
emitTTSVoiceLoadCompleted(modelId, modelName, durationMs, framework) {
|
|
31
|
+
this.call('rac_analytics_emit_tts_voice_load_completed', ['string', 'string', 'number', 'number'], [modelId, modelName, durationMs, framework]);
|
|
32
|
+
}
|
|
33
|
+
emitTTSVoiceLoadFailed(modelId, errorCode, errorMessage) {
|
|
34
|
+
this.call('rac_analytics_emit_tts_voice_load_failed', ['string', 'number', 'string'], [modelId, errorCode, errorMessage]);
|
|
35
|
+
}
|
|
36
|
+
emitTTSSynthesisCompleted(synthesisId, modelId, characterCount, audioDurationMs, audioSizeBytes, processingDurationMs, charactersPerSecond, sampleRate, framework) {
|
|
37
|
+
this.call('rac_analytics_emit_tts_synthesis_completed', ['string', 'string', 'number', 'number', 'number', 'number', 'number', 'number', 'number'], [synthesisId, modelId, characterCount, audioDurationMs, audioSizeBytes,
|
|
38
|
+
processingDurationMs, charactersPerSecond, sampleRate, framework]);
|
|
39
|
+
}
|
|
40
|
+
emitTTSSynthesisFailed(synthesisId, modelId, errorCode, errorMessage) {
|
|
41
|
+
this.call('rac_analytics_emit_tts_synthesis_failed', ['string', 'string', 'number', 'string'], [synthesisId, modelId, errorCode, errorMessage]);
|
|
42
|
+
}
|
|
43
|
+
// -- VAD -----------------------------------------------------------------
|
|
44
|
+
emitVADSpeechStarted() {
|
|
45
|
+
this.call('rac_analytics_emit_vad_speech_started', [], []);
|
|
46
|
+
}
|
|
47
|
+
emitVADSpeechEnded(speechDurationMs, energyLevel) {
|
|
48
|
+
this.call('rac_analytics_emit_vad_speech_ended', ['number', 'number'], [speechDurationMs, energyLevel]);
|
|
49
|
+
}
|
|
50
|
+
// -- Download ------------------------------------------------------------
|
|
51
|
+
emitModelDownloadStarted(modelId) {
|
|
52
|
+
this.call('rac_analytics_emit_model_download_started', ['string'], [modelId]);
|
|
53
|
+
}
|
|
54
|
+
emitModelDownloadCompleted(modelId, fileSizeBytes, durationMs) {
|
|
55
|
+
this.call('rac_analytics_emit_model_download_completed', ['string', 'number', 'number'], [modelId, fileSizeBytes, durationMs]);
|
|
56
|
+
}
|
|
57
|
+
emitModelDownloadFailed(modelId, errorMessage) {
|
|
58
|
+
this.call('rac_analytics_emit_model_download_failed', ['string', 'string'], [modelId, errorMessage]);
|
|
59
|
+
}
|
|
60
|
+
// -- Internals -----------------------------------------------------------
|
|
61
|
+
call(funcName, argTypes, args) {
|
|
62
|
+
try {
|
|
63
|
+
LlamaCppBridge.shared.callFunction(funcName, null, argTypes, args);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Silently ignore — telemetry must never crash the app
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=WASMAnalyticsEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WASMAnalyticsEmitter.js","sourceRoot":"","sources":["../../src/Foundation/WASMAnalyticsEmitter.ts"],"names":[],"mappings":"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"}
|