@runanywhere/web 0.1.0-beta.3 → 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 +34 -5
- package/dist/Foundation/StructOffsets.d.ts.map +1 -1
- package/dist/Foundation/StructOffsets.js +128 -93
- 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 +48 -44
- 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 -436
- 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;
|
|
@@ -25,6 +28,7 @@ export interface LLMOptionsOffsets {
|
|
|
25
28
|
maxTokens: number;
|
|
26
29
|
temperature: number;
|
|
27
30
|
topP: number;
|
|
31
|
+
systemPrompt: number;
|
|
28
32
|
}
|
|
29
33
|
export interface LLMResultOffsets {
|
|
30
34
|
text: number;
|
|
@@ -108,6 +112,7 @@ export interface DiffusionResultOffsets {
|
|
|
108
112
|
generationTimeMs: number;
|
|
109
113
|
safetyFlagged: number;
|
|
110
114
|
}
|
|
115
|
+
/** All possible offsets. Core provides `config`; backend packages add the rest. */
|
|
111
116
|
export interface AllOffsets {
|
|
112
117
|
config: ConfigOffsets;
|
|
113
118
|
llmOptions: LLMOptionsOffsets;
|
|
@@ -124,24 +129,48 @@ export interface AllOffsets {
|
|
|
124
129
|
diffusionResult: DiffusionResultOffsets;
|
|
125
130
|
}
|
|
126
131
|
/**
|
|
127
|
-
* Get the cached struct offsets.
|
|
132
|
+
* Get the cached struct offsets.
|
|
133
|
+
* Returns the merged offsets from core + all registered backends.
|
|
128
134
|
*/
|
|
129
135
|
export declare function getOffsets(): AllOffsets;
|
|
130
136
|
/**
|
|
131
137
|
* Convenience re-export so callers can write `Offsets.vlmResult.text`.
|
|
138
|
+
* Returns a Proxy that dynamically resolves from the cached offset store.
|
|
132
139
|
*/
|
|
133
140
|
export declare const Offsets: AllOffsets;
|
|
134
141
|
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
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).
|
|
137
154
|
*
|
|
138
155
|
* @param m - The Emscripten WASM module instance
|
|
139
156
|
*/
|
|
140
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;
|
|
141
165
|
/**
|
|
142
166
|
* Load offsets for a standalone WASM module (e.g. in a Web Worker).
|
|
143
167
|
* Returns the offsets directly instead of storing them in the singleton.
|
|
144
168
|
* Useful when the Worker has its own WASM instance.
|
|
145
169
|
*/
|
|
146
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;
|
|
147
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,sBAAsB,EAAE,6BAA6B,CAAC;IACtD,0BAA0B,EAAE,iCAAiC,CAAC;IAC9D,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,eAAe,EAAE,sBAAsB,CAAC;IACxC,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,eAAe,EAAE,sBAAsB,CAAC;CACzC;AAQD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,UAAU,CAEvC;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAIpB,CAAC;AAMH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvD;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAOxC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,GAAG,UAAU,CAKxD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAsGpD"}
|
|
@@ -9,153 +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:
|
|
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'),
|
|
67
111
|
},
|
|
68
112
|
llmResult: {
|
|
69
|
-
text:
|
|
70
|
-
promptTokens:
|
|
71
|
-
completionTokens:
|
|
113
|
+
text: wasmOffsetOf(m, 'llm_result_text'),
|
|
114
|
+
promptTokens: wasmOffsetOf(m, 'llm_result_prompt_tokens'),
|
|
115
|
+
completionTokens: wasmOffsetOf(m, 'llm_result_completion_tokens'),
|
|
72
116
|
},
|
|
73
117
|
vlmImage: {
|
|
74
|
-
format:
|
|
75
|
-
filePath:
|
|
76
|
-
pixelData:
|
|
77
|
-
base64Data:
|
|
78
|
-
width:
|
|
79
|
-
height:
|
|
80
|
-
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'),
|
|
81
125
|
},
|
|
82
126
|
vlmOptions: {
|
|
83
|
-
maxTokens:
|
|
84
|
-
temperature:
|
|
85
|
-
topP:
|
|
86
|
-
streamingEnabled:
|
|
87
|
-
systemPrompt:
|
|
88
|
-
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'),
|
|
89
133
|
},
|
|
90
134
|
vlmResult: {
|
|
91
|
-
text:
|
|
92
|
-
promptTokens:
|
|
93
|
-
imageTokens:
|
|
94
|
-
completionTokens:
|
|
95
|
-
totalTokens:
|
|
96
|
-
timeToFirstTokenMs:
|
|
97
|
-
imageEncodeTimeMs:
|
|
98
|
-
totalTimeMs:
|
|
99
|
-
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'),
|
|
100
144
|
},
|
|
101
145
|
structuredOutputConfig: {
|
|
102
|
-
jsonSchema:
|
|
103
|
-
includeSchemaInPrompt:
|
|
146
|
+
jsonSchema: wasmOffsetOf(m, 'structured_output_config_json_schema'),
|
|
147
|
+
includeSchemaInPrompt: wasmOffsetOf(m, 'structured_output_config_include_schema'),
|
|
104
148
|
},
|
|
105
149
|
structuredOutputValidation: {
|
|
106
|
-
isValid:
|
|
107
|
-
errorMessage:
|
|
108
|
-
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'),
|
|
109
153
|
},
|
|
110
154
|
embeddingsOptions: {
|
|
111
|
-
normalize:
|
|
112
|
-
pooling:
|
|
113
|
-
nThreads:
|
|
155
|
+
normalize: wasmOffsetOf(m, 'embeddings_options_normalize'),
|
|
156
|
+
pooling: wasmOffsetOf(m, 'embeddings_options_pooling'),
|
|
157
|
+
nThreads: wasmOffsetOf(m, 'embeddings_options_n_threads'),
|
|
114
158
|
},
|
|
115
159
|
embeddingsResult: {
|
|
116
|
-
embeddings:
|
|
117
|
-
numEmbeddings:
|
|
118
|
-
dimension:
|
|
119
|
-
processingTimeMs:
|
|
120
|
-
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'),
|
|
121
165
|
},
|
|
122
166
|
embeddingVector: {
|
|
123
|
-
data:
|
|
124
|
-
dimension:
|
|
125
|
-
structSize:
|
|
167
|
+
data: wasmOffsetOf(m, 'embedding_vector_data'),
|
|
168
|
+
dimension: wasmOffsetOf(m, 'embedding_vector_dimension'),
|
|
169
|
+
structSize: wasmSizeOf(m, 'embedding_vector'),
|
|
126
170
|
},
|
|
127
171
|
diffusionOptions: {
|
|
128
|
-
prompt:
|
|
129
|
-
negativePrompt:
|
|
130
|
-
width:
|
|
131
|
-
height:
|
|
132
|
-
steps:
|
|
133
|
-
guidanceScale:
|
|
134
|
-
seed:
|
|
135
|
-
scheduler:
|
|
136
|
-
mode:
|
|
137
|
-
denoiseStrength:
|
|
138
|
-
reportIntermediate:
|
|
139
|
-
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'),
|
|
140
184
|
},
|
|
141
185
|
diffusionResult: {
|
|
142
|
-
imageData:
|
|
143
|
-
imageSize:
|
|
144
|
-
width:
|
|
145
|
-
height:
|
|
146
|
-
seedUsed:
|
|
147
|
-
generationTimeMs:
|
|
148
|
-
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'),
|
|
149
193
|
},
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Load offsets for a standalone WASM module (e.g. in a Web Worker).
|
|
154
|
-
* Returns the offsets directly instead of storing them in the singleton.
|
|
155
|
-
* Useful when the Worker has its own WASM instance.
|
|
156
|
-
*/
|
|
157
|
-
export function loadOffsetsFromModule(m) {
|
|
158
|
-
loadOffsets(m);
|
|
159
|
-
return _offsets;
|
|
194
|
+
});
|
|
160
195
|
}
|
|
161
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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"}
|