@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.
Files changed (160) hide show
  1. package/dist/Foundation/StructOffsets.d.ts +34 -5
  2. package/dist/Foundation/StructOffsets.d.ts.map +1 -1
  3. package/dist/Foundation/StructOffsets.js +128 -93
  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 +48 -44
  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 -436
  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;
@@ -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. Throws if `loadOffsets()` hasn't been called.
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
- * Read all struct field offsets from the WASM module and cache them.
136
- * 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).
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":"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"}
1
+ {"version":3,"file":"StructOffsets.d.ts","sourceRoot":"","sources":["../../src/Foundation/StructOffsets.ts"],"names":[],"mappings":"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"}
@@ -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 '../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'),
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: off('llm_result_text'),
70
- promptTokens: off('llm_result_prompt_tokens'),
71
- 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'),
72
116
  },
73
117
  vlmImage: {
74
- format: off('vlm_image_format'),
75
- filePath: off('vlm_image_file_path'),
76
- pixelData: off('vlm_image_pixel_data'),
77
- base64Data: off('vlm_image_base64_data'),
78
- width: off('vlm_image_width'),
79
- height: off('vlm_image_height'),
80
- 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'),
81
125
  },
82
126
  vlmOptions: {
83
- maxTokens: off('vlm_options_max_tokens'),
84
- temperature: off('vlm_options_temperature'),
85
- topP: off('vlm_options_top_p'),
86
- streamingEnabled: off('vlm_options_streaming_enabled'),
87
- systemPrompt: off('vlm_options_system_prompt'),
88
- 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'),
89
133
  },
90
134
  vlmResult: {
91
- text: off('vlm_result_text'),
92
- promptTokens: off('vlm_result_prompt_tokens'),
93
- imageTokens: off('vlm_result_image_tokens'),
94
- completionTokens: off('vlm_result_completion_tokens'),
95
- totalTokens: off('vlm_result_total_tokens'),
96
- timeToFirstTokenMs: off('vlm_result_time_to_first_token_ms'),
97
- imageEncodeTimeMs: off('vlm_result_image_encode_time_ms'),
98
- totalTimeMs: off('vlm_result_total_time_ms'),
99
- 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'),
100
144
  },
101
145
  structuredOutputConfig: {
102
- jsonSchema: off('structured_output_config_json_schema'),
103
- 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'),
104
148
  },
105
149
  structuredOutputValidation: {
106
- isValid: off('structured_output_validation_is_valid'),
107
- errorMessage: off('structured_output_validation_error_message'),
108
- 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'),
109
153
  },
110
154
  embeddingsOptions: {
111
- normalize: off('embeddings_options_normalize'),
112
- pooling: off('embeddings_options_pooling'),
113
- 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'),
114
158
  },
115
159
  embeddingsResult: {
116
- embeddings: off('embeddings_result_embeddings'),
117
- numEmbeddings: off('embeddings_result_num_embeddings'),
118
- dimension: off('embeddings_result_dimension'),
119
- processingTimeMs: off('embeddings_result_processing_time_ms'),
120
- 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'),
121
165
  },
122
166
  embeddingVector: {
123
- data: off('embedding_vector_data'),
124
- dimension: off('embedding_vector_dimension'),
125
- structSize: sz('embedding_vector'),
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: off('diffusion_options_prompt'),
129
- negativePrompt: off('diffusion_options_negative_prompt'),
130
- width: off('diffusion_options_width'),
131
- height: off('diffusion_options_height'),
132
- steps: off('diffusion_options_steps'),
133
- guidanceScale: off('diffusion_options_guidance_scale'),
134
- seed: off('diffusion_options_seed'),
135
- scheduler: off('diffusion_options_scheduler'),
136
- mode: off('diffusion_options_mode'),
137
- denoiseStrength: off('diffusion_options_denoise_strength'),
138
- reportIntermediate: off('diffusion_options_report_intermediate'),
139
- 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'),
140
184
  },
141
185
  diffusionResult: {
142
- imageData: off('diffusion_result_image_data'),
143
- imageSize: off('diffusion_result_image_size'),
144
- width: off('diffusion_result_width'),
145
- height: off('diffusion_result_height'),
146
- seedUsed: off('diffusion_result_seed_used'),
147
- generationTimeMs: off('diffusion_result_generation_time_ms'),
148
- 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'),
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":"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"}
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"}