@runanywhere/web 0.1.0-beta.4 → 0.1.0-beta.5
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/dist/Foundation/StructOffsets.d.ts +33 -5
- package/dist/Foundation/StructOffsets.d.ts.map +1 -1
- package/dist/Foundation/StructOffsets.js +128 -94
- package/dist/Foundation/StructOffsets.js.map +1 -1
- package/dist/Infrastructure/ExtensionPoint.d.ts +78 -0
- package/dist/Infrastructure/ExtensionPoint.d.ts.map +1 -0
- package/dist/Infrastructure/ExtensionPoint.js +118 -0
- package/dist/Infrastructure/ExtensionPoint.js.map +1 -0
- package/dist/Infrastructure/LocalFileStorage.d.ts +116 -0
- package/dist/Infrastructure/LocalFileStorage.d.ts.map +1 -0
- package/dist/Infrastructure/LocalFileStorage.js +368 -0
- package/dist/Infrastructure/LocalFileStorage.js.map +1 -0
- package/dist/Infrastructure/ModelDownloader.d.ts +16 -5
- package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -1
- package/dist/Infrastructure/ModelDownloader.js +54 -7
- package/dist/Infrastructure/ModelDownloader.js.map +1 -1
- package/dist/Infrastructure/ModelFileInference.d.ts +39 -0
- package/dist/Infrastructure/ModelFileInference.d.ts.map +1 -0
- package/dist/Infrastructure/ModelFileInference.js +110 -0
- package/dist/Infrastructure/ModelFileInference.js.map +1 -0
- package/dist/Infrastructure/ModelLoaderTypes.d.ts +76 -11
- package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -1
- package/dist/Infrastructure/ModelLoaderTypes.js +7 -1
- package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -1
- package/dist/Infrastructure/ModelManager.d.ts +30 -104
- package/dist/Infrastructure/ModelManager.d.ts.map +1 -1
- package/dist/Infrastructure/ModelManager.js +209 -544
- package/dist/Infrastructure/ModelManager.js.map +1 -1
- package/dist/Infrastructure/ModelRegistry.d.ts +6 -0
- package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -1
- package/dist/Infrastructure/ModelRegistry.js +11 -0
- package/dist/Infrastructure/ModelRegistry.js.map +1 -1
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +3 -29
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -1
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +46 -42
- package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -1
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts +28 -37
- package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -1
- package/dist/Public/Extensions/VoicePipelineTypes.js +4 -1
- package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -1
- package/dist/Public/RunAnywhere.d.ts +65 -61
- package/dist/Public/RunAnywhere.d.ts.map +1 -1
- package/dist/Public/RunAnywhere.js +193 -141
- package/dist/Public/RunAnywhere.js.map +1 -1
- package/dist/index.d.ts +23 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -31
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -5
- package/wasm/racommons.js +91 -91
- package/wasm/racommons.wasm +0 -0
- package/dist/Foundation/SherpaONNXBridge.d.ts +0 -147
- package/dist/Foundation/SherpaONNXBridge.d.ts.map +0 -1
- package/dist/Foundation/SherpaONNXBridge.js +0 -345
- package/dist/Foundation/SherpaONNXBridge.js.map +0 -1
- package/dist/Infrastructure/AudioCapture.d.ts +0 -87
- package/dist/Infrastructure/AudioCapture.d.ts.map +0 -1
- package/dist/Infrastructure/AudioCapture.js +0 -231
- package/dist/Infrastructure/AudioCapture.js.map +0 -1
- package/dist/Infrastructure/AudioPlayback.d.ts +0 -53
- package/dist/Infrastructure/AudioPlayback.d.ts.map +0 -1
- package/dist/Infrastructure/AudioPlayback.js +0 -117
- package/dist/Infrastructure/AudioPlayback.js.map +0 -1
- package/dist/Infrastructure/VLMWorkerBridge.d.ts +0 -211
- package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +0 -1
- package/dist/Infrastructure/VLMWorkerBridge.js +0 -264
- package/dist/Infrastructure/VLMWorkerBridge.js.map +0 -1
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts +0 -38
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +0 -1
- package/dist/Infrastructure/VLMWorkerRuntime.js +0 -503
- package/dist/Infrastructure/VLMWorkerRuntime.js.map +0 -1
- package/dist/Infrastructure/VideoCapture.d.ts +0 -118
- package/dist/Infrastructure/VideoCapture.d.ts.map +0 -1
- package/dist/Infrastructure/VideoCapture.js +0 -207
- package/dist/Infrastructure/VideoCapture.js.map +0 -1
- package/dist/Public/Extensions/DiffusionTypes.d.ts +0 -64
- package/dist/Public/Extensions/DiffusionTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/DiffusionTypes.js +0 -28
- package/dist/Public/Extensions/DiffusionTypes.js.map +0 -1
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts +0 -33
- package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/EmbeddingsTypes.js +0 -13
- package/dist/Public/Extensions/EmbeddingsTypes.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +0 -44
- package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js +0 -189
- package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +0 -56
- package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js +0 -240
- package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts +0 -95
- package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+STT.js +0 -417
- package/dist/Public/Extensions/RunAnywhere+STT.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +0 -69
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +0 -196
- package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +0 -55
- package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TTS.js +0 -253
- package/dist/Public/Extensions/RunAnywhere+TTS.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +0 -80
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +0 -470
- package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +0 -82
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +0 -576
- package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +0 -70
- package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VAD.js +0 -231
- package/dist/Public/Extensions/RunAnywhere+VAD.js.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +0 -58
- package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +0 -1
- package/dist/Public/Extensions/RunAnywhere+VLM.js +0 -262
- package/dist/Public/Extensions/RunAnywhere+VLM.js.map +0 -1
- package/dist/Public/Extensions/STTTypes.d.ts +0 -53
- package/dist/Public/Extensions/STTTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/STTTypes.js +0 -16
- package/dist/Public/Extensions/STTTypes.js.map +0 -1
- package/dist/Public/Extensions/TTSTypes.d.ts +0 -31
- package/dist/Public/Extensions/TTSTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/TTSTypes.js +0 -3
- package/dist/Public/Extensions/TTSTypes.js.map +0 -1
- package/dist/Public/Extensions/ToolCallingTypes.d.ts +0 -78
- package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/ToolCallingTypes.js +0 -8
- package/dist/Public/Extensions/ToolCallingTypes.js.map +0 -1
- package/dist/Public/Extensions/VADTypes.d.ts +0 -30
- package/dist/Public/Extensions/VADTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/VADTypes.js +0 -8
- package/dist/Public/Extensions/VADTypes.js.map +0 -1
- package/dist/Public/Extensions/VLMTypes.d.ts +0 -56
- package/dist/Public/Extensions/VLMTypes.d.ts.map +0 -1
- package/dist/Public/Extensions/VLMTypes.js +0 -24
- package/dist/Public/Extensions/VLMTypes.js.map +0 -1
- package/dist/types/LLMTypes.d.ts +0 -48
- package/dist/types/LLMTypes.d.ts.map +0 -1
- package/dist/types/LLMTypes.js +0 -8
- package/dist/types/LLMTypes.js.map +0 -1
- package/dist/workers/vlm-worker.d.ts +0 -9
- package/dist/workers/vlm-worker.d.ts.map +0 -1
- package/dist/workers/vlm-worker.js +0 -10
- package/dist/workers/vlm-worker.js.map +0 -1
- package/wasm/racommons-webgpu.js +0 -156
- package/wasm/racommons-webgpu.wasm +0 -0
- package/wasm/sherpa/sherpa-onnx-asr.js +0 -1538
- package/wasm/sherpa/sherpa-onnx-glue-original.js +0 -19
- package/wasm/sherpa/sherpa-onnx-glue.js +0 -17
- package/wasm/sherpa/sherpa-onnx-tts.js +0 -657
- package/wasm/sherpa/sherpa-onnx-vad.js +0 -337
- package/wasm/sherpa/sherpa-onnx-wave.js +0 -88
- package/wasm/sherpa/sherpa-onnx.wasm +0 -0
|
@@ -9,14 +9,17 @@
|
|
|
9
9
|
* `offsetof()` in wasm_exports.cpp) exactly once after the WASM module is
|
|
10
10
|
* loaded, and caches the results for the lifetime of the page.
|
|
11
11
|
*
|
|
12
|
+
* The offset system is extensible: backend packages (llamacpp, onnx) can
|
|
13
|
+
* register additional offsets via `mergeOffsets()`.
|
|
14
|
+
*
|
|
12
15
|
* Usage:
|
|
13
|
-
* import { Offsets, loadOffsets } from '
|
|
16
|
+
* import { Offsets, loadOffsets } from '@runanywhere/web';
|
|
14
17
|
*
|
|
15
18
|
* // Called once during SDK init (after WASM load):
|
|
16
19
|
* loadOffsets(wasmModule);
|
|
17
20
|
*
|
|
18
21
|
* // Then anywhere:
|
|
19
|
-
* m.setValue(optPtr + Offsets.
|
|
22
|
+
* m.setValue(optPtr + Offsets.config.logLevel, 2, 'i32');
|
|
20
23
|
*/
|
|
21
24
|
export interface ConfigOffsets {
|
|
22
25
|
logLevel: number;
|
|
@@ -109,6 +112,7 @@ export interface DiffusionResultOffsets {
|
|
|
109
112
|
generationTimeMs: number;
|
|
110
113
|
safetyFlagged: number;
|
|
111
114
|
}
|
|
115
|
+
/** All possible offsets. Core provides `config`; backend packages add the rest. */
|
|
112
116
|
export interface AllOffsets {
|
|
113
117
|
config: ConfigOffsets;
|
|
114
118
|
llmOptions: LLMOptionsOffsets;
|
|
@@ -125,24 +129,48 @@ export interface AllOffsets {
|
|
|
125
129
|
diffusionResult: DiffusionResultOffsets;
|
|
126
130
|
}
|
|
127
131
|
/**
|
|
128
|
-
* Get the cached struct offsets.
|
|
132
|
+
* Get the cached struct offsets.
|
|
133
|
+
* Returns the merged offsets from core + all registered backends.
|
|
129
134
|
*/
|
|
130
135
|
export declare function getOffsets(): AllOffsets;
|
|
131
136
|
/**
|
|
132
137
|
* Convenience re-export so callers can write `Offsets.vlmResult.text`.
|
|
138
|
+
* Returns a Proxy that dynamically resolves from the cached offset store.
|
|
133
139
|
*/
|
|
134
140
|
export declare const Offsets: AllOffsets;
|
|
135
141
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
142
|
+
* Safely call a `_rac_wasm_offsetof_*` function. Returns 0 if the
|
|
143
|
+
* function doesn't exist (e.g. backend not compiled in).
|
|
144
|
+
*/
|
|
145
|
+
export declare function wasmOffsetOf(m: any, name: string): number;
|
|
146
|
+
/**
|
|
147
|
+
* Safely call a `_rac_wasm_sizeof_*` function. Returns 0 if the
|
|
148
|
+
* function doesn't exist.
|
|
149
|
+
*/
|
|
150
|
+
export declare function wasmSizeOf(m: any, name: string): number;
|
|
151
|
+
/**
|
|
152
|
+
* Load core struct field offsets from the WASM module.
|
|
153
|
+
* Called once during SDK init (after WASM load).
|
|
138
154
|
*
|
|
139
155
|
* @param m - The Emscripten WASM module instance
|
|
140
156
|
*/
|
|
141
157
|
export declare function loadOffsets(m: any): void;
|
|
158
|
+
/**
|
|
159
|
+
* Merge additional offsets from a backend package.
|
|
160
|
+
* Called by backend providers during registration.
|
|
161
|
+
*
|
|
162
|
+
* @param offsets - Partial offset tables to merge
|
|
163
|
+
*/
|
|
164
|
+
export declare function mergeOffsets(offsets: Partial<AllOffsets>): void;
|
|
142
165
|
/**
|
|
143
166
|
* Load offsets for a standalone WASM module (e.g. in a Web Worker).
|
|
144
167
|
* Returns the offsets directly instead of storing them in the singleton.
|
|
145
168
|
* Useful when the Worker has its own WASM instance.
|
|
146
169
|
*/
|
|
147
170
|
export declare function loadOffsetsFromModule(m: any): AllOffsets;
|
|
171
|
+
/**
|
|
172
|
+
* Load llama.cpp-specific offsets into the singleton.
|
|
173
|
+
* Called by LlamaCppProvider.register() and loadOffsetsFromModule().
|
|
174
|
+
*/
|
|
175
|
+
export declare function loadLlamaCppOffsetsInto(m: any): void;
|
|
148
176
|
//# sourceMappingURL=StructOffsets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructOffsets.d.ts","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"StructOffsets.d.ts","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,154 +9,188 @@
|
|
|
9
9
|
* `offsetof()` in wasm_exports.cpp) exactly once after the WASM module is
|
|
10
10
|
* loaded, and caches the results for the lifetime of the page.
|
|
11
11
|
*
|
|
12
|
+
* The offset system is extensible: backend packages (llamacpp, onnx) can
|
|
13
|
+
* register additional offsets via `mergeOffsets()`.
|
|
14
|
+
*
|
|
12
15
|
* Usage:
|
|
13
|
-
* import { Offsets, loadOffsets } from '
|
|
16
|
+
* import { Offsets, loadOffsets } from '@runanywhere/web';
|
|
14
17
|
*
|
|
15
18
|
* // Called once during SDK init (after WASM load):
|
|
16
19
|
* loadOffsets(wasmModule);
|
|
17
20
|
*
|
|
18
21
|
* // Then anywhere:
|
|
19
|
-
* m.setValue(optPtr + Offsets.
|
|
22
|
+
* m.setValue(optPtr + Offsets.config.logLevel, 2, 'i32');
|
|
20
23
|
*/
|
|
21
24
|
// ---------------------------------------------------------------------------
|
|
22
25
|
// Singleton
|
|
23
26
|
// ---------------------------------------------------------------------------
|
|
24
|
-
let _offsets =
|
|
27
|
+
let _offsets = {};
|
|
25
28
|
/**
|
|
26
|
-
* Get the cached struct offsets.
|
|
29
|
+
* Get the cached struct offsets.
|
|
30
|
+
* Returns the merged offsets from core + all registered backends.
|
|
27
31
|
*/
|
|
28
32
|
export function getOffsets() {
|
|
29
|
-
if (!_offsets) {
|
|
30
|
-
throw new Error('StructOffsets not loaded — call loadOffsets(module) after WASM init');
|
|
31
|
-
}
|
|
32
33
|
return _offsets;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* Convenience re-export so callers can write `Offsets.vlmResult.text`.
|
|
37
|
+
* Returns a Proxy that dynamically resolves from the cached offset store.
|
|
36
38
|
*/
|
|
37
39
|
export const Offsets = new Proxy({}, {
|
|
38
40
|
get(_target, prop) {
|
|
39
41
|
return getOffsets()[prop];
|
|
40
42
|
},
|
|
41
43
|
});
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// WASM offset helpers (exported for backend packages)
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
/**
|
|
48
|
+
* Safely call a `_rac_wasm_offsetof_*` function. Returns 0 if the
|
|
49
|
+
* function doesn't exist (e.g. backend not compiled in).
|
|
50
|
+
*/
|
|
51
|
+
export function wasmOffsetOf(m, name) {
|
|
52
|
+
const fn = m[`_rac_wasm_offsetof_${name}`];
|
|
53
|
+
return typeof fn === 'function' ? fn() : 0;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Safely call a `_rac_wasm_sizeof_*` function. Returns 0 if the
|
|
57
|
+
* function doesn't exist.
|
|
58
|
+
*/
|
|
59
|
+
export function wasmSizeOf(m, name) {
|
|
60
|
+
const fn = m[`_rac_wasm_sizeof_${name}`];
|
|
61
|
+
return typeof fn === 'function' ? fn() : 0;
|
|
62
|
+
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Loading
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
42
66
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
67
|
+
* Load core struct field offsets from the WASM module.
|
|
68
|
+
* Called once during SDK init (after WASM load).
|
|
45
69
|
*
|
|
46
70
|
* @param m - The Emscripten WASM module instance
|
|
47
71
|
*/
|
|
48
72
|
export function loadOffsets(m) {
|
|
49
|
-
// Helper: safely call an offset function, returning 0 if it doesn't exist
|
|
50
|
-
// (e.g. when a backend wasn't compiled in).
|
|
51
|
-
const off = (name) => {
|
|
52
|
-
const fn = m[`_rac_wasm_offsetof_${name}`];
|
|
53
|
-
return typeof fn === 'function' ? fn() : 0;
|
|
54
|
-
};
|
|
55
|
-
const sz = (name) => {
|
|
56
|
-
const fn = m[`_rac_wasm_sizeof_${name}`];
|
|
57
|
-
return typeof fn === 'function' ? fn() : 0;
|
|
58
|
-
};
|
|
59
73
|
_offsets = {
|
|
74
|
+
..._offsets,
|
|
60
75
|
config: {
|
|
61
|
-
logLevel:
|
|
76
|
+
logLevel: wasmOffsetOf(m, 'config_log_level'),
|
|
62
77
|
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Merge additional offsets from a backend package.
|
|
82
|
+
* Called by backend providers during registration.
|
|
83
|
+
*
|
|
84
|
+
* @param offsets - Partial offset tables to merge
|
|
85
|
+
*/
|
|
86
|
+
export function mergeOffsets(offsets) {
|
|
87
|
+
_offsets = { ..._offsets, ...offsets };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Load offsets for a standalone WASM module (e.g. in a Web Worker).
|
|
91
|
+
* Returns the offsets directly instead of storing them in the singleton.
|
|
92
|
+
* Useful when the Worker has its own WASM instance.
|
|
93
|
+
*/
|
|
94
|
+
export function loadOffsetsFromModule(m) {
|
|
95
|
+
loadOffsets(m);
|
|
96
|
+
// Also load all llama.cpp offsets for the worker (VLM Worker needs these)
|
|
97
|
+
loadLlamaCppOffsetsInto(m);
|
|
98
|
+
return _offsets;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Load llama.cpp-specific offsets into the singleton.
|
|
102
|
+
* Called by LlamaCppProvider.register() and loadOffsetsFromModule().
|
|
103
|
+
*/
|
|
104
|
+
export function loadLlamaCppOffsetsInto(m) {
|
|
105
|
+
mergeOffsets({
|
|
63
106
|
llmOptions: {
|
|
64
|
-
maxTokens:
|
|
65
|
-
temperature:
|
|
66
|
-
topP:
|
|
67
|
-
systemPrompt:
|
|
107
|
+
maxTokens: wasmOffsetOf(m, 'llm_options_max_tokens'),
|
|
108
|
+
temperature: wasmOffsetOf(m, 'llm_options_temperature'),
|
|
109
|
+
topP: wasmOffsetOf(m, 'llm_options_top_p'),
|
|
110
|
+
systemPrompt: wasmOffsetOf(m, 'llm_options_system_prompt'),
|
|
68
111
|
},
|
|
69
112
|
llmResult: {
|
|
70
|
-
text:
|
|
71
|
-
promptTokens:
|
|
72
|
-
completionTokens:
|
|
113
|
+
text: wasmOffsetOf(m, 'llm_result_text'),
|
|
114
|
+
promptTokens: wasmOffsetOf(m, 'llm_result_prompt_tokens'),
|
|
115
|
+
completionTokens: wasmOffsetOf(m, 'llm_result_completion_tokens'),
|
|
73
116
|
},
|
|
74
117
|
vlmImage: {
|
|
75
|
-
format:
|
|
76
|
-
filePath:
|
|
77
|
-
pixelData:
|
|
78
|
-
base64Data:
|
|
79
|
-
width:
|
|
80
|
-
height:
|
|
81
|
-
dataSize:
|
|
118
|
+
format: wasmOffsetOf(m, 'vlm_image_format'),
|
|
119
|
+
filePath: wasmOffsetOf(m, 'vlm_image_file_path'),
|
|
120
|
+
pixelData: wasmOffsetOf(m, 'vlm_image_pixel_data'),
|
|
121
|
+
base64Data: wasmOffsetOf(m, 'vlm_image_base64_data'),
|
|
122
|
+
width: wasmOffsetOf(m, 'vlm_image_width'),
|
|
123
|
+
height: wasmOffsetOf(m, 'vlm_image_height'),
|
|
124
|
+
dataSize: wasmOffsetOf(m, 'vlm_image_data_size'),
|
|
82
125
|
},
|
|
83
126
|
vlmOptions: {
|
|
84
|
-
maxTokens:
|
|
85
|
-
temperature:
|
|
86
|
-
topP:
|
|
87
|
-
streamingEnabled:
|
|
88
|
-
systemPrompt:
|
|
89
|
-
modelFamily:
|
|
127
|
+
maxTokens: wasmOffsetOf(m, 'vlm_options_max_tokens'),
|
|
128
|
+
temperature: wasmOffsetOf(m, 'vlm_options_temperature'),
|
|
129
|
+
topP: wasmOffsetOf(m, 'vlm_options_top_p'),
|
|
130
|
+
streamingEnabled: wasmOffsetOf(m, 'vlm_options_streaming_enabled'),
|
|
131
|
+
systemPrompt: wasmOffsetOf(m, 'vlm_options_system_prompt'),
|
|
132
|
+
modelFamily: wasmOffsetOf(m, 'vlm_options_model_family'),
|
|
90
133
|
},
|
|
91
134
|
vlmResult: {
|
|
92
|
-
text:
|
|
93
|
-
promptTokens:
|
|
94
|
-
imageTokens:
|
|
95
|
-
completionTokens:
|
|
96
|
-
totalTokens:
|
|
97
|
-
timeToFirstTokenMs:
|
|
98
|
-
imageEncodeTimeMs:
|
|
99
|
-
totalTimeMs:
|
|
100
|
-
tokensPerSecond:
|
|
135
|
+
text: wasmOffsetOf(m, 'vlm_result_text'),
|
|
136
|
+
promptTokens: wasmOffsetOf(m, 'vlm_result_prompt_tokens'),
|
|
137
|
+
imageTokens: wasmOffsetOf(m, 'vlm_result_image_tokens'),
|
|
138
|
+
completionTokens: wasmOffsetOf(m, 'vlm_result_completion_tokens'),
|
|
139
|
+
totalTokens: wasmOffsetOf(m, 'vlm_result_total_tokens'),
|
|
140
|
+
timeToFirstTokenMs: wasmOffsetOf(m, 'vlm_result_time_to_first_token_ms'),
|
|
141
|
+
imageEncodeTimeMs: wasmOffsetOf(m, 'vlm_result_image_encode_time_ms'),
|
|
142
|
+
totalTimeMs: wasmOffsetOf(m, 'vlm_result_total_time_ms'),
|
|
143
|
+
tokensPerSecond: wasmOffsetOf(m, 'vlm_result_tokens_per_second'),
|
|
101
144
|
},
|
|
102
145
|
structuredOutputConfig: {
|
|
103
|
-
jsonSchema:
|
|
104
|
-
includeSchemaInPrompt:
|
|
146
|
+
jsonSchema: wasmOffsetOf(m, 'structured_output_config_json_schema'),
|
|
147
|
+
includeSchemaInPrompt: wasmOffsetOf(m, 'structured_output_config_include_schema'),
|
|
105
148
|
},
|
|
106
149
|
structuredOutputValidation: {
|
|
107
|
-
isValid:
|
|
108
|
-
errorMessage:
|
|
109
|
-
extractedJson:
|
|
150
|
+
isValid: wasmOffsetOf(m, 'structured_output_validation_is_valid'),
|
|
151
|
+
errorMessage: wasmOffsetOf(m, 'structured_output_validation_error_message'),
|
|
152
|
+
extractedJson: wasmOffsetOf(m, 'structured_output_validation_extracted_json'),
|
|
110
153
|
},
|
|
111
154
|
embeddingsOptions: {
|
|
112
|
-
normalize:
|
|
113
|
-
pooling:
|
|
114
|
-
nThreads:
|
|
155
|
+
normalize: wasmOffsetOf(m, 'embeddings_options_normalize'),
|
|
156
|
+
pooling: wasmOffsetOf(m, 'embeddings_options_pooling'),
|
|
157
|
+
nThreads: wasmOffsetOf(m, 'embeddings_options_n_threads'),
|
|
115
158
|
},
|
|
116
159
|
embeddingsResult: {
|
|
117
|
-
embeddings:
|
|
118
|
-
numEmbeddings:
|
|
119
|
-
dimension:
|
|
120
|
-
processingTimeMs:
|
|
121
|
-
totalTokens:
|
|
160
|
+
embeddings: wasmOffsetOf(m, 'embeddings_result_embeddings'),
|
|
161
|
+
numEmbeddings: wasmOffsetOf(m, 'embeddings_result_num_embeddings'),
|
|
162
|
+
dimension: wasmOffsetOf(m, 'embeddings_result_dimension'),
|
|
163
|
+
processingTimeMs: wasmOffsetOf(m, 'embeddings_result_processing_time_ms'),
|
|
164
|
+
totalTokens: wasmOffsetOf(m, 'embeddings_result_total_tokens'),
|
|
122
165
|
},
|
|
123
166
|
embeddingVector: {
|
|
124
|
-
data:
|
|
125
|
-
dimension:
|
|
126
|
-
structSize:
|
|
167
|
+
data: wasmOffsetOf(m, 'embedding_vector_data'),
|
|
168
|
+
dimension: wasmOffsetOf(m, 'embedding_vector_dimension'),
|
|
169
|
+
structSize: wasmSizeOf(m, 'embedding_vector'),
|
|
127
170
|
},
|
|
128
171
|
diffusionOptions: {
|
|
129
|
-
prompt:
|
|
130
|
-
negativePrompt:
|
|
131
|
-
width:
|
|
132
|
-
height:
|
|
133
|
-
steps:
|
|
134
|
-
guidanceScale:
|
|
135
|
-
seed:
|
|
136
|
-
scheduler:
|
|
137
|
-
mode:
|
|
138
|
-
denoiseStrength:
|
|
139
|
-
reportIntermediate:
|
|
140
|
-
progressStride:
|
|
172
|
+
prompt: wasmOffsetOf(m, 'diffusion_options_prompt'),
|
|
173
|
+
negativePrompt: wasmOffsetOf(m, 'diffusion_options_negative_prompt'),
|
|
174
|
+
width: wasmOffsetOf(m, 'diffusion_options_width'),
|
|
175
|
+
height: wasmOffsetOf(m, 'diffusion_options_height'),
|
|
176
|
+
steps: wasmOffsetOf(m, 'diffusion_options_steps'),
|
|
177
|
+
guidanceScale: wasmOffsetOf(m, 'diffusion_options_guidance_scale'),
|
|
178
|
+
seed: wasmOffsetOf(m, 'diffusion_options_seed'),
|
|
179
|
+
scheduler: wasmOffsetOf(m, 'diffusion_options_scheduler'),
|
|
180
|
+
mode: wasmOffsetOf(m, 'diffusion_options_mode'),
|
|
181
|
+
denoiseStrength: wasmOffsetOf(m, 'diffusion_options_denoise_strength'),
|
|
182
|
+
reportIntermediate: wasmOffsetOf(m, 'diffusion_options_report_intermediate'),
|
|
183
|
+
progressStride: wasmOffsetOf(m, 'diffusion_options_progress_stride'),
|
|
141
184
|
},
|
|
142
185
|
diffusionResult: {
|
|
143
|
-
imageData:
|
|
144
|
-
imageSize:
|
|
145
|
-
width:
|
|
146
|
-
height:
|
|
147
|
-
seedUsed:
|
|
148
|
-
generationTimeMs:
|
|
149
|
-
safetyFlagged:
|
|
186
|
+
imageData: wasmOffsetOf(m, 'diffusion_result_image_data'),
|
|
187
|
+
imageSize: wasmOffsetOf(m, 'diffusion_result_image_size'),
|
|
188
|
+
width: wasmOffsetOf(m, 'diffusion_result_width'),
|
|
189
|
+
height: wasmOffsetOf(m, 'diffusion_result_height'),
|
|
190
|
+
seedUsed: wasmOffsetOf(m, 'diffusion_result_seed_used'),
|
|
191
|
+
generationTimeMs: wasmOffsetOf(m, 'diffusion_result_generation_time_ms'),
|
|
192
|
+
safetyFlagged: wasmOffsetOf(m, 'diffusion_result_safety_flagged'),
|
|
150
193
|
},
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Load offsets for a standalone WASM module (e.g. in a Web Worker).
|
|
155
|
-
* Returns the offsets directly instead of storing them in the singleton.
|
|
156
|
-
* Useful when the Worker has its own WASM instance.
|
|
157
|
-
*/
|
|
158
|
-
export function loadOffsetsFromModule(m) {
|
|
159
|
-
loadOffsets(m);
|
|
160
|
-
return _offsets;
|
|
194
|
+
});
|
|
161
195
|
}
|
|
162
196
|
//# sourceMappingURL=StructOffsets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructOffsets.js","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"StructOffsets.js","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExtensionPoint - Backend registration API
|
|
3
|
+
*
|
|
4
|
+
* Follows the React Native SDK's Provider pattern. Backend packages
|
|
5
|
+
* (e.g. @runanywhere/web-llamacpp, @runanywhere/web-onnx) register
|
|
6
|
+
* themselves with the core SDK via this API, declaring what capabilities
|
|
7
|
+
* they provide.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* // In @runanywhere/web-llamacpp:
|
|
11
|
+
* import { ExtensionPoint, BackendCapability } from '@runanywhere/web';
|
|
12
|
+
*
|
|
13
|
+
* ExtensionPoint.registerBackend({
|
|
14
|
+
* id: 'llamacpp',
|
|
15
|
+
* capabilities: [BackendCapability.LLM, BackendCapability.VLM, ...],
|
|
16
|
+
* cleanup() { ... },
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // In core (VoicePipeline, etc.) — runtime lookup:
|
|
20
|
+
* const stt = ExtensionPoint.getExtensionForCapability(BackendCapability.STT);
|
|
21
|
+
*/
|
|
22
|
+
/** Capabilities that a backend can provide. */
|
|
23
|
+
export declare enum BackendCapability {
|
|
24
|
+
LLM = "llm",
|
|
25
|
+
VLM = "vlm",
|
|
26
|
+
STT = "stt",
|
|
27
|
+
TTS = "tts",
|
|
28
|
+
VAD = "vad",
|
|
29
|
+
Embeddings = "embeddings",
|
|
30
|
+
Diffusion = "diffusion",
|
|
31
|
+
ToolCalling = "toolCalling",
|
|
32
|
+
StructuredOutput = "structuredOutput"
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Interface that every backend package must implement to register
|
|
36
|
+
* itself with the core SDK.
|
|
37
|
+
*/
|
|
38
|
+
export interface BackendExtension {
|
|
39
|
+
/** Unique backend identifier (e.g. 'llamacpp', 'onnx'). */
|
|
40
|
+
readonly id: string;
|
|
41
|
+
/** Capabilities this backend provides. */
|
|
42
|
+
readonly capabilities: BackendCapability[];
|
|
43
|
+
/**
|
|
44
|
+
* Release all resources held by this backend.
|
|
45
|
+
* Called during SDK shutdown in reverse registration order.
|
|
46
|
+
*/
|
|
47
|
+
cleanup(): void;
|
|
48
|
+
}
|
|
49
|
+
declare class ExtensionPointImpl {
|
|
50
|
+
private backends;
|
|
51
|
+
private capabilityMap;
|
|
52
|
+
/**
|
|
53
|
+
* Register a backend extension.
|
|
54
|
+
* Idempotent — re-registering the same id is a no-op.
|
|
55
|
+
*/
|
|
56
|
+
registerBackend(extension: BackendExtension): void;
|
|
57
|
+
/** Get a backend by its id. */
|
|
58
|
+
getBackend(id: string): BackendExtension | undefined;
|
|
59
|
+
/** Check if a capability is available (i.e. a backend providing it is registered). */
|
|
60
|
+
hasCapability(capability: BackendCapability): boolean;
|
|
61
|
+
/** Get the backend extension providing a given capability. */
|
|
62
|
+
getExtensionForCapability(capability: BackendCapability): BackendExtension | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Require that a capability is available. Throws a clear error if not.
|
|
65
|
+
* Use in extension methods that depend on a backend being registered.
|
|
66
|
+
*/
|
|
67
|
+
requireCapability(capability: BackendCapability): void;
|
|
68
|
+
/**
|
|
69
|
+
* Cleanup all registered backends in reverse registration order.
|
|
70
|
+
* Called during SDK shutdown.
|
|
71
|
+
*/
|
|
72
|
+
cleanupAll(): void;
|
|
73
|
+
/** Reset the registry (call after full shutdown). */
|
|
74
|
+
reset(): void;
|
|
75
|
+
}
|
|
76
|
+
export declare const ExtensionPoint: ExtensionPointImpl;
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=ExtensionPoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionPoint.d.ts","sourceRoot":"","sources":["../../src/Infrastructure/ExtensionPoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAUH,+CAA+C;AAC/C,oBAAY,iBAAiB;IAC3B,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAE3C;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,aAAa,CAAuD;IAE5E;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAqBlD,+BAA+B;IAC/B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIpD,sFAAsF;IACtF,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO;IAIrD,8DAA8D;IAC9D,yBAAyB,CAAC,UAAU,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,SAAS;IAItF;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAkBtD;;;OAGG;IACH,UAAU,IAAI,IAAI;IAYlB,qDAAqD;IACrD,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,cAAc,oBAA2B,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExtensionPoint - Backend registration API
|
|
3
|
+
*
|
|
4
|
+
* Follows the React Native SDK's Provider pattern. Backend packages
|
|
5
|
+
* (e.g. @runanywhere/web-llamacpp, @runanywhere/web-onnx) register
|
|
6
|
+
* themselves with the core SDK via this API, declaring what capabilities
|
|
7
|
+
* they provide.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* // In @runanywhere/web-llamacpp:
|
|
11
|
+
* import { ExtensionPoint, BackendCapability } from '@runanywhere/web';
|
|
12
|
+
*
|
|
13
|
+
* ExtensionPoint.registerBackend({
|
|
14
|
+
* id: 'llamacpp',
|
|
15
|
+
* capabilities: [BackendCapability.LLM, BackendCapability.VLM, ...],
|
|
16
|
+
* cleanup() { ... },
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // In core (VoicePipeline, etc.) — runtime lookup:
|
|
20
|
+
* const stt = ExtensionPoint.getExtensionForCapability(BackendCapability.STT);
|
|
21
|
+
*/
|
|
22
|
+
import { SDKLogger } from '../Foundation/SDKLogger';
|
|
23
|
+
const logger = new SDKLogger('ExtensionPoint');
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Types
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/** Capabilities that a backend can provide. */
|
|
28
|
+
export var BackendCapability;
|
|
29
|
+
(function (BackendCapability) {
|
|
30
|
+
BackendCapability["LLM"] = "llm";
|
|
31
|
+
BackendCapability["VLM"] = "vlm";
|
|
32
|
+
BackendCapability["STT"] = "stt";
|
|
33
|
+
BackendCapability["TTS"] = "tts";
|
|
34
|
+
BackendCapability["VAD"] = "vad";
|
|
35
|
+
BackendCapability["Embeddings"] = "embeddings";
|
|
36
|
+
BackendCapability["Diffusion"] = "diffusion";
|
|
37
|
+
BackendCapability["ToolCalling"] = "toolCalling";
|
|
38
|
+
BackendCapability["StructuredOutput"] = "structuredOutput";
|
|
39
|
+
})(BackendCapability || (BackendCapability = {}));
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// ExtensionPoint Singleton
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
class ExtensionPointImpl {
|
|
44
|
+
backends = new Map();
|
|
45
|
+
capabilityMap = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* Register a backend extension.
|
|
48
|
+
* Idempotent — re-registering the same id is a no-op.
|
|
49
|
+
*/
|
|
50
|
+
registerBackend(extension) {
|
|
51
|
+
if (this.backends.has(extension.id)) {
|
|
52
|
+
logger.debug(`Backend '${extension.id}' already registered, skipping`);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.backends.set(extension.id, extension);
|
|
56
|
+
for (const cap of extension.capabilities) {
|
|
57
|
+
if (this.capabilityMap.has(cap)) {
|
|
58
|
+
logger.warning(`Capability '${cap}' already provided by '${this.capabilityMap.get(cap).id}', ` +
|
|
59
|
+
`overriding with '${extension.id}'`);
|
|
60
|
+
}
|
|
61
|
+
this.capabilityMap.set(cap, extension);
|
|
62
|
+
}
|
|
63
|
+
logger.info(`Backend '${extension.id}' registered — capabilities: [${extension.capabilities.join(', ')}]`);
|
|
64
|
+
}
|
|
65
|
+
/** Get a backend by its id. */
|
|
66
|
+
getBackend(id) {
|
|
67
|
+
return this.backends.get(id);
|
|
68
|
+
}
|
|
69
|
+
/** Check if a capability is available (i.e. a backend providing it is registered). */
|
|
70
|
+
hasCapability(capability) {
|
|
71
|
+
return this.capabilityMap.has(capability);
|
|
72
|
+
}
|
|
73
|
+
/** Get the backend extension providing a given capability. */
|
|
74
|
+
getExtensionForCapability(capability) {
|
|
75
|
+
return this.capabilityMap.get(capability);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Require that a capability is available. Throws a clear error if not.
|
|
79
|
+
* Use in extension methods that depend on a backend being registered.
|
|
80
|
+
*/
|
|
81
|
+
requireCapability(capability) {
|
|
82
|
+
if (!this.capabilityMap.has(capability)) {
|
|
83
|
+
const packageHint = capability === BackendCapability.LLM ||
|
|
84
|
+
capability === BackendCapability.VLM ||
|
|
85
|
+
capability === BackendCapability.Embeddings ||
|
|
86
|
+
capability === BackendCapability.Diffusion ||
|
|
87
|
+
capability === BackendCapability.ToolCalling ||
|
|
88
|
+
capability === BackendCapability.StructuredOutput
|
|
89
|
+
? '@runanywhere/web-llamacpp'
|
|
90
|
+
: '@runanywhere/web-onnx';
|
|
91
|
+
throw new Error(`Capability '${capability}' not available. ` +
|
|
92
|
+
`Install and register the ${packageHint} package.`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Cleanup all registered backends in reverse registration order.
|
|
97
|
+
* Called during SDK shutdown.
|
|
98
|
+
*/
|
|
99
|
+
cleanupAll() {
|
|
100
|
+
const entries = [...this.backends.entries()].reverse();
|
|
101
|
+
for (const [id, backend] of entries) {
|
|
102
|
+
try {
|
|
103
|
+
backend.cleanup();
|
|
104
|
+
logger.debug(`Backend '${id}' cleaned up`);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Ignore errors during shutdown
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** Reset the registry (call after full shutdown). */
|
|
112
|
+
reset() {
|
|
113
|
+
this.backends.clear();
|
|
114
|
+
this.capabilityMap.clear();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export const ExtensionPoint = new ExtensionPointImpl();
|
|
118
|
+
//# sourceMappingURL=ExtensionPoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionPoint.js","sourceRoot":"","sources":["../../src/Infrastructure/ExtensionPoint.ts"],"names":[],"mappings":"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"}
|