@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.
Files changed (160) hide show
  1. package/dist/Foundation/StructOffsets.d.ts +33 -5
  2. package/dist/Foundation/StructOffsets.d.ts.map +1 -1
  3. package/dist/Foundation/StructOffsets.js +128 -94
  4. package/dist/Foundation/StructOffsets.js.map +1 -1
  5. package/dist/Infrastructure/ExtensionPoint.d.ts +78 -0
  6. package/dist/Infrastructure/ExtensionPoint.d.ts.map +1 -0
  7. package/dist/Infrastructure/ExtensionPoint.js +118 -0
  8. package/dist/Infrastructure/ExtensionPoint.js.map +1 -0
  9. package/dist/Infrastructure/LocalFileStorage.d.ts +116 -0
  10. package/dist/Infrastructure/LocalFileStorage.d.ts.map +1 -0
  11. package/dist/Infrastructure/LocalFileStorage.js +368 -0
  12. package/dist/Infrastructure/LocalFileStorage.js.map +1 -0
  13. package/dist/Infrastructure/ModelDownloader.d.ts +16 -5
  14. package/dist/Infrastructure/ModelDownloader.d.ts.map +1 -1
  15. package/dist/Infrastructure/ModelDownloader.js +54 -7
  16. package/dist/Infrastructure/ModelDownloader.js.map +1 -1
  17. package/dist/Infrastructure/ModelFileInference.d.ts +39 -0
  18. package/dist/Infrastructure/ModelFileInference.d.ts.map +1 -0
  19. package/dist/Infrastructure/ModelFileInference.js +110 -0
  20. package/dist/Infrastructure/ModelFileInference.js.map +1 -0
  21. package/dist/Infrastructure/ModelLoaderTypes.d.ts +76 -11
  22. package/dist/Infrastructure/ModelLoaderTypes.d.ts.map +1 -1
  23. package/dist/Infrastructure/ModelLoaderTypes.js +7 -1
  24. package/dist/Infrastructure/ModelLoaderTypes.js.map +1 -1
  25. package/dist/Infrastructure/ModelManager.d.ts +30 -104
  26. package/dist/Infrastructure/ModelManager.d.ts.map +1 -1
  27. package/dist/Infrastructure/ModelManager.js +209 -544
  28. package/dist/Infrastructure/ModelManager.js.map +1 -1
  29. package/dist/Infrastructure/ModelRegistry.d.ts +6 -0
  30. package/dist/Infrastructure/ModelRegistry.d.ts.map +1 -1
  31. package/dist/Infrastructure/ModelRegistry.js +11 -0
  32. package/dist/Infrastructure/ModelRegistry.js.map +1 -1
  33. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts +3 -29
  34. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.d.ts.map +1 -1
  35. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js +46 -42
  36. package/dist/Public/Extensions/RunAnywhere+VoicePipeline.js.map +1 -1
  37. package/dist/Public/Extensions/VoicePipelineTypes.d.ts +28 -37
  38. package/dist/Public/Extensions/VoicePipelineTypes.d.ts.map +1 -1
  39. package/dist/Public/Extensions/VoicePipelineTypes.js +4 -1
  40. package/dist/Public/Extensions/VoicePipelineTypes.js.map +1 -1
  41. package/dist/Public/RunAnywhere.d.ts +65 -61
  42. package/dist/Public/RunAnywhere.d.ts.map +1 -1
  43. package/dist/Public/RunAnywhere.js +193 -141
  44. package/dist/Public/RunAnywhere.js.map +1 -1
  45. package/dist/index.d.ts +23 -39
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +19 -31
  48. package/dist/index.js.map +1 -1
  49. package/dist/types/index.d.ts +0 -1
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/dist/types/index.js +1 -0
  52. package/dist/types/index.js.map +1 -1
  53. package/package.json +1 -5
  54. package/wasm/racommons.js +91 -91
  55. package/wasm/racommons.wasm +0 -0
  56. package/dist/Foundation/SherpaONNXBridge.d.ts +0 -147
  57. package/dist/Foundation/SherpaONNXBridge.d.ts.map +0 -1
  58. package/dist/Foundation/SherpaONNXBridge.js +0 -345
  59. package/dist/Foundation/SherpaONNXBridge.js.map +0 -1
  60. package/dist/Infrastructure/AudioCapture.d.ts +0 -87
  61. package/dist/Infrastructure/AudioCapture.d.ts.map +0 -1
  62. package/dist/Infrastructure/AudioCapture.js +0 -231
  63. package/dist/Infrastructure/AudioCapture.js.map +0 -1
  64. package/dist/Infrastructure/AudioPlayback.d.ts +0 -53
  65. package/dist/Infrastructure/AudioPlayback.d.ts.map +0 -1
  66. package/dist/Infrastructure/AudioPlayback.js +0 -117
  67. package/dist/Infrastructure/AudioPlayback.js.map +0 -1
  68. package/dist/Infrastructure/VLMWorkerBridge.d.ts +0 -211
  69. package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +0 -1
  70. package/dist/Infrastructure/VLMWorkerBridge.js +0 -264
  71. package/dist/Infrastructure/VLMWorkerBridge.js.map +0 -1
  72. package/dist/Infrastructure/VLMWorkerRuntime.d.ts +0 -38
  73. package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +0 -1
  74. package/dist/Infrastructure/VLMWorkerRuntime.js +0 -503
  75. package/dist/Infrastructure/VLMWorkerRuntime.js.map +0 -1
  76. package/dist/Infrastructure/VideoCapture.d.ts +0 -118
  77. package/dist/Infrastructure/VideoCapture.d.ts.map +0 -1
  78. package/dist/Infrastructure/VideoCapture.js +0 -207
  79. package/dist/Infrastructure/VideoCapture.js.map +0 -1
  80. package/dist/Public/Extensions/DiffusionTypes.d.ts +0 -64
  81. package/dist/Public/Extensions/DiffusionTypes.d.ts.map +0 -1
  82. package/dist/Public/Extensions/DiffusionTypes.js +0 -28
  83. package/dist/Public/Extensions/DiffusionTypes.js.map +0 -1
  84. package/dist/Public/Extensions/EmbeddingsTypes.d.ts +0 -33
  85. package/dist/Public/Extensions/EmbeddingsTypes.d.ts.map +0 -1
  86. package/dist/Public/Extensions/EmbeddingsTypes.js +0 -13
  87. package/dist/Public/Extensions/EmbeddingsTypes.js.map +0 -1
  88. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts +0 -44
  89. package/dist/Public/Extensions/RunAnywhere+Diffusion.d.ts.map +0 -1
  90. package/dist/Public/Extensions/RunAnywhere+Diffusion.js +0 -189
  91. package/dist/Public/Extensions/RunAnywhere+Diffusion.js.map +0 -1
  92. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts +0 -56
  93. package/dist/Public/Extensions/RunAnywhere+Embeddings.d.ts.map +0 -1
  94. package/dist/Public/Extensions/RunAnywhere+Embeddings.js +0 -240
  95. package/dist/Public/Extensions/RunAnywhere+Embeddings.js.map +0 -1
  96. package/dist/Public/Extensions/RunAnywhere+STT.d.ts +0 -95
  97. package/dist/Public/Extensions/RunAnywhere+STT.d.ts.map +0 -1
  98. package/dist/Public/Extensions/RunAnywhere+STT.js +0 -417
  99. package/dist/Public/Extensions/RunAnywhere+STT.js.map +0 -1
  100. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts +0 -69
  101. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.d.ts.map +0 -1
  102. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js +0 -196
  103. package/dist/Public/Extensions/RunAnywhere+StructuredOutput.js.map +0 -1
  104. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts +0 -55
  105. package/dist/Public/Extensions/RunAnywhere+TTS.d.ts.map +0 -1
  106. package/dist/Public/Extensions/RunAnywhere+TTS.js +0 -253
  107. package/dist/Public/Extensions/RunAnywhere+TTS.js.map +0 -1
  108. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts +0 -80
  109. package/dist/Public/Extensions/RunAnywhere+TextGeneration.d.ts.map +0 -1
  110. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js +0 -470
  111. package/dist/Public/Extensions/RunAnywhere+TextGeneration.js.map +0 -1
  112. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts +0 -82
  113. package/dist/Public/Extensions/RunAnywhere+ToolCalling.d.ts.map +0 -1
  114. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js +0 -576
  115. package/dist/Public/Extensions/RunAnywhere+ToolCalling.js.map +0 -1
  116. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts +0 -70
  117. package/dist/Public/Extensions/RunAnywhere+VAD.d.ts.map +0 -1
  118. package/dist/Public/Extensions/RunAnywhere+VAD.js +0 -231
  119. package/dist/Public/Extensions/RunAnywhere+VAD.js.map +0 -1
  120. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts +0 -58
  121. package/dist/Public/Extensions/RunAnywhere+VLM.d.ts.map +0 -1
  122. package/dist/Public/Extensions/RunAnywhere+VLM.js +0 -262
  123. package/dist/Public/Extensions/RunAnywhere+VLM.js.map +0 -1
  124. package/dist/Public/Extensions/STTTypes.d.ts +0 -53
  125. package/dist/Public/Extensions/STTTypes.d.ts.map +0 -1
  126. package/dist/Public/Extensions/STTTypes.js +0 -16
  127. package/dist/Public/Extensions/STTTypes.js.map +0 -1
  128. package/dist/Public/Extensions/TTSTypes.d.ts +0 -31
  129. package/dist/Public/Extensions/TTSTypes.d.ts.map +0 -1
  130. package/dist/Public/Extensions/TTSTypes.js +0 -3
  131. package/dist/Public/Extensions/TTSTypes.js.map +0 -1
  132. package/dist/Public/Extensions/ToolCallingTypes.d.ts +0 -78
  133. package/dist/Public/Extensions/ToolCallingTypes.d.ts.map +0 -1
  134. package/dist/Public/Extensions/ToolCallingTypes.js +0 -8
  135. package/dist/Public/Extensions/ToolCallingTypes.js.map +0 -1
  136. package/dist/Public/Extensions/VADTypes.d.ts +0 -30
  137. package/dist/Public/Extensions/VADTypes.d.ts.map +0 -1
  138. package/dist/Public/Extensions/VADTypes.js +0 -8
  139. package/dist/Public/Extensions/VADTypes.js.map +0 -1
  140. package/dist/Public/Extensions/VLMTypes.d.ts +0 -56
  141. package/dist/Public/Extensions/VLMTypes.d.ts.map +0 -1
  142. package/dist/Public/Extensions/VLMTypes.js +0 -24
  143. package/dist/Public/Extensions/VLMTypes.js.map +0 -1
  144. package/dist/types/LLMTypes.d.ts +0 -48
  145. package/dist/types/LLMTypes.d.ts.map +0 -1
  146. package/dist/types/LLMTypes.js +0 -8
  147. package/dist/types/LLMTypes.js.map +0 -1
  148. package/dist/workers/vlm-worker.d.ts +0 -9
  149. package/dist/workers/vlm-worker.d.ts.map +0 -1
  150. package/dist/workers/vlm-worker.js +0 -10
  151. package/dist/workers/vlm-worker.js.map +0 -1
  152. package/wasm/racommons-webgpu.js +0 -156
  153. package/wasm/racommons-webgpu.wasm +0 -0
  154. package/wasm/sherpa/sherpa-onnx-asr.js +0 -1538
  155. package/wasm/sherpa/sherpa-onnx-glue-original.js +0 -19
  156. package/wasm/sherpa/sherpa-onnx-glue.js +0 -17
  157. package/wasm/sherpa/sherpa-onnx-tts.js +0 -657
  158. package/wasm/sherpa/sherpa-onnx-vad.js +0 -337
  159. package/wasm/sherpa/sherpa-onnx-wave.js +0 -88
  160. 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 '../Foundation/StructOffsets';
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.llmOptions.temperature, 0.8, 'float');
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. Throws if `loadOffsets()` hasn't been called.
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
- * Read all struct field offsets from the WASM module and cache them.
137
- * Must be called exactly once, after the WASM module is loaded.
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":"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"}
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 '../Foundation/StructOffsets';
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.llmOptions.temperature, 0.8, 'float');
22
+ * m.setValue(optPtr + Offsets.config.logLevel, 2, 'i32');
20
23
  */
21
24
  // ---------------------------------------------------------------------------
22
25
  // Singleton
23
26
  // ---------------------------------------------------------------------------
24
- let _offsets = null;
27
+ let _offsets = {};
25
28
  /**
26
- * Get the cached struct offsets. Throws if `loadOffsets()` hasn't been called.
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
- * Read all struct field offsets from the WASM module and cache them.
44
- * Must be called exactly once, after the WASM module is loaded.
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: off('config_log_level'),
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: off('llm_options_max_tokens'),
65
- temperature: off('llm_options_temperature'),
66
- topP: off('llm_options_top_p'),
67
- systemPrompt: off('llm_options_system_prompt'),
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: off('llm_result_text'),
71
- promptTokens: off('llm_result_prompt_tokens'),
72
- completionTokens: off('llm_result_completion_tokens'),
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: off('vlm_image_format'),
76
- filePath: off('vlm_image_file_path'),
77
- pixelData: off('vlm_image_pixel_data'),
78
- base64Data: off('vlm_image_base64_data'),
79
- width: off('vlm_image_width'),
80
- height: off('vlm_image_height'),
81
- dataSize: off('vlm_image_data_size'),
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: off('vlm_options_max_tokens'),
85
- temperature: off('vlm_options_temperature'),
86
- topP: off('vlm_options_top_p'),
87
- streamingEnabled: off('vlm_options_streaming_enabled'),
88
- systemPrompt: off('vlm_options_system_prompt'),
89
- modelFamily: off('vlm_options_model_family'),
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: off('vlm_result_text'),
93
- promptTokens: off('vlm_result_prompt_tokens'),
94
- imageTokens: off('vlm_result_image_tokens'),
95
- completionTokens: off('vlm_result_completion_tokens'),
96
- totalTokens: off('vlm_result_total_tokens'),
97
- timeToFirstTokenMs: off('vlm_result_time_to_first_token_ms'),
98
- imageEncodeTimeMs: off('vlm_result_image_encode_time_ms'),
99
- totalTimeMs: off('vlm_result_total_time_ms'),
100
- tokensPerSecond: off('vlm_result_tokens_per_second'),
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: off('structured_output_config_json_schema'),
104
- includeSchemaInPrompt: off('structured_output_config_include_schema'),
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: off('structured_output_validation_is_valid'),
108
- errorMessage: off('structured_output_validation_error_message'),
109
- extractedJson: off('structured_output_validation_extracted_json'),
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: off('embeddings_options_normalize'),
113
- pooling: off('embeddings_options_pooling'),
114
- nThreads: off('embeddings_options_n_threads'),
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: off('embeddings_result_embeddings'),
118
- numEmbeddings: off('embeddings_result_num_embeddings'),
119
- dimension: off('embeddings_result_dimension'),
120
- processingTimeMs: off('embeddings_result_processing_time_ms'),
121
- totalTokens: off('embeddings_result_total_tokens'),
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: off('embedding_vector_data'),
125
- dimension: off('embedding_vector_dimension'),
126
- structSize: sz('embedding_vector'),
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: off('diffusion_options_prompt'),
130
- negativePrompt: off('diffusion_options_negative_prompt'),
131
- width: off('diffusion_options_width'),
132
- height: off('diffusion_options_height'),
133
- steps: off('diffusion_options_steps'),
134
- guidanceScale: off('diffusion_options_guidance_scale'),
135
- seed: off('diffusion_options_seed'),
136
- scheduler: off('diffusion_options_scheduler'),
137
- mode: off('diffusion_options_mode'),
138
- denoiseStrength: off('diffusion_options_denoise_strength'),
139
- reportIntermediate: off('diffusion_options_report_intermediate'),
140
- progressStride: off('diffusion_options_progress_stride'),
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: off('diffusion_result_image_data'),
144
- imageSize: off('diffusion_result_image_size'),
145
- width: off('diffusion_result_width'),
146
- height: off('diffusion_result_height'),
147
- seedUsed: off('diffusion_result_seed_used'),
148
- generationTimeMs: off('diffusion_result_generation_time_ms'),
149
- safetyFlagged: off('diffusion_result_safety_flagged'),
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;;;;;;;;;;;;;;;;;;;GAmBG;AAgIH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,IAAI,QAAQ,GAAsB,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAe,IAAI,KAAK,CAAC,EAAgB,EAAE;IAC7D,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,OAAO,UAAU,EAAE,CAAC,IAAwB,CAAC,CAAC;IAChD,CAAC;CACF,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,CAAM;IAChC,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE;QACnC,MAAM,EAAE,GAAG,CAAC,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAC3C,OAAO,OAAO,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,CAAC,IAAY,EAAU,EAAE;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO,OAAO,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,QAAQ,GAAG;QACT,MAAM,EAAE;YACN,QAAQ,EAAE,GAAG,CAAC,kBAAkB,CAAC;SAClC;QAED,UAAU,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,wBAAwB,CAAC;YACxC,WAAW,EAAE,GAAG,CAAC,yBAAyB,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,mBAAmB,CAAC;YAC9B,YAAY,EAAE,GAAG,CAAC,2BAA2B,CAAC;SAC/C;QAED,SAAS,EAAE;YACT,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAC5B,YAAY,EAAE,GAAG,CAAC,0BAA0B,CAAC;YAC7C,gBAAgB,EAAE,GAAG,CAAC,8BAA8B,CAAC;SACtD;QAED,QAAQ,EAAE;YACR,MAAM,EAAE,GAAG,CAAC,kBAAkB,CAAC;YAC/B,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC;YACpC,SAAS,EAAE,GAAG,CAAC,sBAAsB,CAAC;YACtC,UAAU,EAAE,GAAG,CAAC,uBAAuB,CAAC;YACxC,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAC7B,MAAM,EAAE,GAAG,CAAC,kBAAkB,CAAC;YAC/B,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC;SACrC;QAED,UAAU,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,wBAAwB,CAAC;YACxC,WAAW,EAAE,GAAG,CAAC,yBAAyB,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,mBAAmB,CAAC;YAC9B,gBAAgB,EAAE,GAAG,CAAC,+BAA+B,CAAC;YACtD,YAAY,EAAE,GAAG,CAAC,2BAA2B,CAAC;YAC9C,WAAW,EAAE,GAAG,CAAC,0BAA0B,CAAC;SAC7C;QAED,SAAS,EAAE;YACT,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAC5B,YAAY,EAAE,GAAG,CAAC,0BAA0B,CAAC;YAC7C,WAAW,EAAE,GAAG,CAAC,yBAAyB,CAAC;YAC3C,gBAAgB,EAAE,GAAG,CAAC,8BAA8B,CAAC;YACrD,WAAW,EAAE,GAAG,CAAC,yBAAyB,CAAC;YAC3C,kBAAkB,EAAE,GAAG,CAAC,mCAAmC,CAAC;YAC5D,iBAAiB,EAAE,GAAG,CAAC,iCAAiC,CAAC;YACzD,WAAW,EAAE,GAAG,CAAC,0BAA0B,CAAC;YAC5C,eAAe,EAAE,GAAG,CAAC,8BAA8B,CAAC;SACrD;QAED,sBAAsB,EAAE;YACtB,UAAU,EAAE,GAAG,CAAC,sCAAsC,CAAC;YACvD,qBAAqB,EAAE,GAAG,CAAC,yCAAyC,CAAC;SACtE;QAED,0BAA0B,EAAE;YAC1B,OAAO,EAAE,GAAG,CAAC,uCAAuC,CAAC;YACrD,YAAY,EAAE,GAAG,CAAC,4CAA4C,CAAC;YAC/D,aAAa,EAAE,GAAG,CAAC,6CAA6C,CAAC;SAClE;QAED,iBAAiB,EAAE;YACjB,SAAS,EAAE,GAAG,CAAC,8BAA8B,CAAC;YAC9C,OAAO,EAAE,GAAG,CAAC,4BAA4B,CAAC;YAC1C,QAAQ,EAAE,GAAG,CAAC,8BAA8B,CAAC;SAC9C;QAED,gBAAgB,EAAE;YAChB,UAAU,EAAE,GAAG,CAAC,8BAA8B,CAAC;YAC/C,aAAa,EAAE,GAAG,CAAC,kCAAkC,CAAC;YACtD,SAAS,EAAE,GAAG,CAAC,6BAA6B,CAAC;YAC7C,gBAAgB,EAAE,GAAG,CAAC,sCAAsC,CAAC;YAC7D,WAAW,EAAE,GAAG,CAAC,gCAAgC,CAAC;SACnD;QAED,eAAe,EAAE;YACf,IAAI,EAAE,GAAG,CAAC,uBAAuB,CAAC;YAClC,SAAS,EAAE,GAAG,CAAC,4BAA4B,CAAC;YAC5C,UAAU,EAAE,EAAE,CAAC,kBAAkB,CAAC;SACnC;QAED,gBAAgB,EAAE;YAChB,MAAM,EAAE,GAAG,CAAC,0BAA0B,CAAC;YACvC,cAAc,EAAE,GAAG,CAAC,mCAAmC,CAAC;YACxD,KAAK,EAAE,GAAG,CAAC,yBAAyB,CAAC;YACrC,MAAM,EAAE,GAAG,CAAC,0BAA0B,CAAC;YACvC,KAAK,EAAE,GAAG,CAAC,yBAAyB,CAAC;YACrC,aAAa,EAAE,GAAG,CAAC,kCAAkC,CAAC;YACtD,IAAI,EAAE,GAAG,CAAC,wBAAwB,CAAC;YACnC,SAAS,EAAE,GAAG,CAAC,6BAA6B,CAAC;YAC7C,IAAI,EAAE,GAAG,CAAC,wBAAwB,CAAC;YACnC,eAAe,EAAE,GAAG,CAAC,oCAAoC,CAAC;YAC1D,kBAAkB,EAAE,GAAG,CAAC,uCAAuC,CAAC;YAChE,cAAc,EAAE,GAAG,CAAC,mCAAmC,CAAC;SACzD;QAED,eAAe,EAAE;YACf,SAAS,EAAE,GAAG,CAAC,6BAA6B,CAAC;YAC7C,SAAS,EAAE,GAAG,CAAC,6BAA6B,CAAC;YAC7C,KAAK,EAAE,GAAG,CAAC,wBAAwB,CAAC;YACpC,MAAM,EAAE,GAAG,CAAC,yBAAyB,CAAC;YACtC,QAAQ,EAAE,GAAG,CAAC,4BAA4B,CAAC;YAC3C,gBAAgB,EAAE,GAAG,CAAC,qCAAqC,CAAC;YAC5D,aAAa,EAAE,GAAG,CAAC,iCAAiC,CAAC;SACtD;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAM;IAC1C,WAAW,CAAC,CAAC,CAAC,CAAC;IACf,OAAO,QAAS,CAAC;AACnB,CAAC"}
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAE/C,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,+CAA+C;AAC/C,MAAM,CAAN,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IAC3B,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,gCAAW,CAAA;IACX,8CAAyB,CAAA;IACzB,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,0DAAqC,CAAA;AACvC,CAAC,EAVW,iBAAiB,KAAjB,iBAAiB,QAU5B;AAoBD,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,kBAAkB;IACd,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;IACpD,aAAa,GAA6C,IAAI,GAAG,EAAE,CAAC;IAE5E;;;OAGG;IACH,eAAe,CAAC,SAA2B;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,YAAY,SAAS,CAAC,EAAE,gCAAgC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE3C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,OAAO,CACZ,eAAe,GAAG,0BAA0B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,KAAK;oBAChF,oBAAoB,SAAS,CAAC,EAAE,GAAG,CACpC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,EAAE,iCAAiC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7G,CAAC;IAED,+BAA+B;IAC/B,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,sFAAsF;IACtF,aAAa,CAAC,UAA6B;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,8DAA8D;IAC9D,yBAAyB,CAAC,UAA6B;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,UAA6B;QAC7C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,UAAU,KAAK,iBAAiB,CAAC,GAAG;gBACtD,UAAU,KAAK,iBAAiB,CAAC,GAAG;gBACpC,UAAU,KAAK,iBAAiB,CAAC,UAAU;gBAC3C,UAAU,KAAK,iBAAiB,CAAC,SAAS;gBAC1C,UAAU,KAAK,iBAAiB,CAAC,WAAW;gBAC5C,UAAU,KAAK,iBAAiB,CAAC,gBAAgB;gBACjD,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,uBAAuB,CAAC;YAE5B,MAAM,IAAI,KAAK,CACb,eAAe,UAAU,mBAAmB;gBAC5C,4BAA4B,WAAW,WAAW,CACnD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC"}