@qvac/sdk 0.8.3 → 0.9.0

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 (216) hide show
  1. package/NOTICE +267 -63
  2. package/dist/client/api/diffusion.d.ts +32 -0
  3. package/dist/client/api/diffusion.js +103 -0
  4. package/dist/client/api/embed.d.ts +9 -3
  5. package/dist/client/api/embed.js +4 -1
  6. package/dist/client/api/finetune.d.ts +69 -0
  7. package/dist/client/api/finetune.js +139 -0
  8. package/dist/client/api/get-model-info.d.ts +1 -1
  9. package/dist/client/api/index.d.ts +4 -0
  10. package/dist/client/api/index.js +4 -0
  11. package/dist/client/api/rag.d.ts +1 -1
  12. package/dist/client/api/rag.js +1 -1
  13. package/dist/client/api/resume.d.ts +14 -0
  14. package/dist/client/api/resume.js +20 -0
  15. package/dist/client/api/suspend.d.ts +13 -0
  16. package/dist/client/api/suspend.js +19 -0
  17. package/dist/client/api/transcribe.d.ts +25 -17
  18. package/dist/client/api/transcribe.js +115 -35
  19. package/dist/client/rpc/bare-client.d.ts +5 -1
  20. package/dist/client/rpc/bare-client.js +70 -57
  21. package/dist/client/rpc/expo-rpc-client.d.ts +4 -0
  22. package/dist/client/rpc/expo-rpc-client.js +8 -0
  23. package/dist/client/rpc/node-rpc-client.d.ts +4 -0
  24. package/dist/client/rpc/node-rpc-client.js +8 -0
  25. package/dist/client/rpc/rpc-client.d.ts +13 -0
  26. package/dist/client/rpc/rpc-client.js +131 -1
  27. package/dist/examples/delegated-inference/composite.d.ts +2 -0
  28. package/dist/examples/delegated-inference/composite.js +99 -0
  29. package/dist/examples/diffusion-flux2-klein.d.ts +2 -0
  30. package/dist/examples/diffusion-flux2-klein.js +46 -0
  31. package/dist/examples/diffusion-simple.d.ts +2 -0
  32. package/dist/examples/diffusion-simple.js +17 -0
  33. package/dist/examples/diffusion-txt2img.d.ts +2 -0
  34. package/dist/examples/diffusion-txt2img.js +40 -0
  35. package/dist/examples/embed-p2p.js +2 -2
  36. package/dist/examples/finetune/llamacpp-finetune.d.ts +2 -0
  37. package/dist/examples/finetune/llamacpp-finetune.js +78 -0
  38. package/dist/examples/logging-streaming.js +1 -1
  39. package/dist/examples/mcp-websearch.js +2 -0
  40. package/dist/examples/ocr-fasttext.js +11 -0
  41. package/dist/examples/profiling/per-call.js +3 -3
  42. package/dist/examples/rag/rag-chromadb.js +2 -2
  43. package/dist/examples/rag/rag-hyperdb/pipeline.js +1 -1
  44. package/dist/examples/rag/rag-lancedb.js +2 -2
  45. package/dist/examples/rag/rag-sqlite.js +2 -2
  46. package/dist/examples/suspend-resume.d.ts +2 -0
  47. package/dist/examples/suspend-resume.js +52 -0
  48. package/dist/examples/transcription/parakeet-ctc-filesystem.js +3 -5
  49. package/dist/examples/transcription/parakeet-microphone-record.js +42 -33
  50. package/dist/examples/transcription/parakeet-sortformer.js +13 -3
  51. package/dist/examples/transcription/parakeet-tdt-filesystem.js +5 -7
  52. package/dist/examples/transcription/whispercpp-filesystem-streaming.d.ts +2 -0
  53. package/dist/examples/transcription/whispercpp-filesystem-streaming.js +99 -0
  54. package/dist/examples/transcription/whispercpp-microphone-record.js +78 -299
  55. package/dist/examples/transcription/whispercpp-prompt.js +11 -0
  56. package/dist/examples/translation/translation-llm.js +2 -2
  57. package/dist/examples/tts/supertonic-multilingual.d.ts +2 -0
  58. package/dist/examples/tts/supertonic-multilingual.js +56 -0
  59. package/dist/examples/tts/supertonic.js +12 -7
  60. package/dist/index.d.ts +3 -2
  61. package/dist/index.js +3 -2
  62. package/dist/logging/utils.js +1 -1
  63. package/dist/models/registry/models.d.ts +15176 -4264
  64. package/dist/models/registry/models.js +18657 -7404
  65. package/dist/models/update-models/codegen.js +2 -2
  66. package/dist/models/update-models/naming.js +26 -0
  67. package/dist/pear/pre.js +2 -0
  68. package/dist/polyfills/bare-globals.d.ts +2 -0
  69. package/dist/polyfills/bare-globals.js +4 -0
  70. package/dist/polyfills/bare-globals.noop.d.ts +2 -0
  71. package/dist/polyfills/bare-globals.noop.js +1 -0
  72. package/dist/profiling/exporters.js +16 -11
  73. package/dist/profiling/model-execution.d.ts +16 -0
  74. package/dist/profiling/model-execution.js +33 -0
  75. package/dist/schemas/common.d.ts +967 -198
  76. package/dist/schemas/common.js +16 -1
  77. package/dist/schemas/completion-stream.d.ts +14 -6
  78. package/dist/schemas/completion-stream.js +4 -3
  79. package/dist/schemas/download-asset.d.ts +7 -3
  80. package/dist/schemas/embed.d.ts +19 -0
  81. package/dist/schemas/embed.js +7 -0
  82. package/dist/schemas/engine-addon-map.js +4 -1
  83. package/dist/schemas/finetune.d.ts +620 -0
  84. package/dist/schemas/finetune.js +161 -0
  85. package/dist/schemas/get-model-info.d.ts +2 -0
  86. package/dist/schemas/get-model-info.js +1 -0
  87. package/dist/schemas/index.d.ts +5 -1
  88. package/dist/schemas/index.js +5 -1
  89. package/dist/schemas/llamacpp-config.d.ts +26 -6
  90. package/dist/schemas/llamacpp-config.js +12 -0
  91. package/dist/schemas/load-model.d.ts +4005 -1400
  92. package/dist/schemas/load-model.js +34 -1
  93. package/dist/schemas/model-src-utils.d.ts +10 -2
  94. package/dist/schemas/model-types.d.ts +19 -1
  95. package/dist/schemas/model-types.js +11 -0
  96. package/dist/schemas/ocr.d.ts +2 -0
  97. package/dist/schemas/plugin.d.ts +24 -3
  98. package/dist/schemas/plugin.js +14 -0
  99. package/dist/schemas/profiling.d.ts +4 -0
  100. package/dist/schemas/profiling.js +4 -0
  101. package/dist/schemas/registry.d.ts +18 -0
  102. package/dist/schemas/registry.js +2 -0
  103. package/dist/schemas/reload-config.d.ts +9 -1
  104. package/dist/schemas/resume.d.ts +10 -0
  105. package/dist/schemas/resume.js +7 -0
  106. package/dist/schemas/sdcpp-config.d.ts +327 -0
  107. package/dist/schemas/sdcpp-config.js +102 -0
  108. package/dist/schemas/sdk-config.d.ts +1225 -235
  109. package/dist/schemas/sdk-config.js +4 -0
  110. package/dist/schemas/sdk-errors-server.d.ts +2 -0
  111. package/dist/schemas/sdk-errors-server.js +12 -0
  112. package/dist/schemas/suspend.d.ts +10 -0
  113. package/dist/schemas/suspend.js +7 -0
  114. package/dist/schemas/text-to-speech.d.ts +187 -10
  115. package/dist/schemas/text-to-speech.js +12 -4
  116. package/dist/schemas/transcription-config.d.ts +16 -56
  117. package/dist/schemas/transcription-config.js +0 -2
  118. package/dist/schemas/transcription.d.ts +66 -6
  119. package/dist/schemas/transcription.js +29 -7
  120. package/dist/schemas/translate.d.ts +14 -4
  121. package/dist/schemas/translate.js +10 -2
  122. package/dist/schemas/translation-config.d.ts +30 -10
  123. package/dist/server/bare/delegate-rpc-client.js +3 -3
  124. package/dist/server/bare/hyperswarm.js +15 -3
  125. package/dist/server/bare/ops/embed.d.ts +8 -4
  126. package/dist/server/bare/ops/embed.js +15 -4
  127. package/dist/server/bare/ops/transcribe.d.ts +6 -2
  128. package/dist/server/bare/ops/transcribe.js +53 -1
  129. package/dist/server/bare/ops/translate.d.ts +4 -1
  130. package/dist/server/bare/ops/translate.js +28 -65
  131. package/dist/server/bare/ops/unload-model.js +2 -0
  132. package/dist/server/bare/plugins/index.d.ts +1 -0
  133. package/dist/server/bare/plugins/index.js +1 -0
  134. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +3 -1
  135. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +45 -9
  136. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.d.ts +11 -0
  137. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +112 -0
  138. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +175 -5
  139. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +45 -35
  140. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +11 -1
  141. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +9 -4
  142. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +17 -2
  143. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +16 -15
  144. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.d.ts +5 -7
  145. package/dist/server/bare/plugins/onnx-ocr/ops/ocr-stream.js +11 -3
  146. package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +2 -0
  147. package/dist/server/bare/plugins/onnx-ocr/plugin.js +24 -19
  148. package/dist/server/bare/plugins/onnx-tts/ops/text-to-speech.d.ts +7 -2
  149. package/dist/server/bare/plugins/onnx-tts/ops/text-to-speech.js +22 -97
  150. package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +98 -9
  151. package/dist/server/bare/plugins/onnx-tts/plugin.js +85 -46
  152. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +30 -60
  153. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +49 -37
  154. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.d.ts +3 -0
  155. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +51 -0
  156. package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +278 -0
  157. package/dist/server/bare/plugins/sdcpp-generation/plugin.js +70 -0
  158. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +38 -2
  159. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +43 -22
  160. package/dist/server/bare/rag-hyperdb/handlers/ingest.js +2 -1
  161. package/dist/server/bare/rag-hyperdb/handlers/search.js +2 -1
  162. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +7 -0
  163. package/dist/server/bare/registry/model-config-utils.js +3 -0
  164. package/dist/server/bare/registry/model-registry.d.ts +2 -2
  165. package/dist/server/bare/registry/model-registry.js +1 -1
  166. package/dist/server/bare/registry/registry-client.js +21 -0
  167. package/dist/server/bare/runtime-lifecycle.d.ts +28 -0
  168. package/dist/server/bare/runtime-lifecycle.js +132 -0
  169. package/dist/server/bare/types/addon-responses.d.ts +62 -0
  170. package/dist/server/bare/types/addon-responses.js +1 -0
  171. package/dist/server/env.js +3 -1
  172. package/dist/server/rpc/delegate-transport.js +1 -1
  173. package/dist/server/rpc/handle-request.js +50 -4
  174. package/dist/server/rpc/handler-registry.js +20 -1
  175. package/dist/server/rpc/handler-utils.d.ts +5 -3
  176. package/dist/server/rpc/handler-utils.js +52 -50
  177. package/dist/server/rpc/handlers/delete-cache.js +3 -0
  178. package/dist/server/rpc/handlers/diffusion-stream.d.ts +3 -0
  179. package/dist/server/rpc/handlers/diffusion-stream.js +4 -0
  180. package/dist/server/rpc/handlers/finetune.d.ts +3 -0
  181. package/dist/server/rpc/handlers/finetune.js +16 -0
  182. package/dist/server/rpc/handlers/index.d.ts +10 -0
  183. package/dist/server/rpc/handlers/index.js +10 -0
  184. package/dist/server/rpc/handlers/load-model/hyperdrive.js +24 -9
  185. package/dist/server/rpc/handlers/load-model/registry.d.ts +11 -0
  186. package/dist/server/rpc/handlers/load-model/registry.js +31 -4
  187. package/dist/server/rpc/handlers/plugin-dispatch.d.ts +1 -13
  188. package/dist/server/rpc/handlers/plugin-dispatch.js +21 -21
  189. package/dist/server/rpc/handlers/resume.d.ts +3 -0
  190. package/dist/server/rpc/handlers/resume.js +11 -0
  191. package/dist/server/rpc/handlers/suspend.d.ts +3 -0
  192. package/dist/server/rpc/handlers/suspend.js +11 -0
  193. package/dist/server/rpc/handlers/transcribe-stream.d.ts +1 -1
  194. package/dist/server/rpc/handlers/transcribe-stream.js +2 -2
  195. package/dist/server/rpc/handlers/transcribe.d.ts +3 -0
  196. package/dist/server/rpc/handlers/transcribe.js +4 -0
  197. package/dist/server/rpc/profiling/operation-metrics.js +107 -16
  198. package/dist/server/rpc/profiling/operation-wrappers.d.ts +1 -1
  199. package/dist/server/rpc/profiling/operation-wrappers.js +51 -19
  200. package/dist/server/rpc/progress-throttle.d.ts +8 -0
  201. package/dist/server/rpc/progress-throttle.js +47 -0
  202. package/dist/server/rpc/rpc-utils.d.ts +5 -0
  203. package/dist/server/rpc/rpc-utils.js +11 -0
  204. package/dist/server/utils/path-security.js +1 -1
  205. package/dist/server/utils/tool-integration.js +10 -0
  206. package/dist/server/utils/tool-parser.js +9 -5
  207. package/dist/server/worker-core.d.ts +2 -0
  208. package/dist/server/worker-core.js +26 -23
  209. package/dist/server/worker.js +2 -1
  210. package/dist/utils/encoding.d.ts +9 -0
  211. package/dist/utils/encoding.js +14 -0
  212. package/dist/utils/errors-server.d.ts +6 -0
  213. package/dist/utils/errors-server.js +11 -0
  214. package/package.json +36 -25
  215. package/dist/server/rpc/delegate-utils.d.ts +0 -2
  216. package/dist/server/rpc/delegate-utils.js +0 -5
@@ -121,6 +121,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
121
121
  "onnx-tts": "onnx-tts";
122
122
  "parakeet-transcription": "parakeet-transcription";
123
123
  "onnx-ocr": "onnx-ocr";
124
+ "sdcpp-generation": "sdcpp-generation";
124
125
  llm: "llm";
125
126
  whisper: "whisper";
126
127
  embeddings: "embeddings";
@@ -128,6 +129,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
128
129
  parakeet: "parakeet";
129
130
  tts: "tts";
130
131
  ocr: "ocr";
132
+ diffusion: "diffusion";
131
133
  }>, z.ZodLiteral<"vad">]>>;
132
134
  }, z.core.$strip>]>>;
133
135
  dstVocabSrc: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
@@ -149,6 +151,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
149
151
  "onnx-tts": "onnx-tts";
150
152
  "parakeet-transcription": "parakeet-transcription";
151
153
  "onnx-ocr": "onnx-ocr";
154
+ "sdcpp-generation": "sdcpp-generation";
152
155
  llm: "llm";
153
156
  whisper: "whisper";
154
157
  embeddings: "embeddings";
@@ -156,6 +159,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
156
159
  parakeet: "parakeet";
157
160
  tts: "tts";
158
161
  ocr: "ocr";
162
+ diffusion: "diffusion";
159
163
  }>, z.ZodLiteral<"vad">]>>;
160
164
  }, z.core.$strip>]>>;
161
165
  normalize: z.ZodOptional<z.ZodNumber>;
@@ -190,6 +194,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
190
194
  "onnx-tts": "onnx-tts";
191
195
  "parakeet-transcription": "parakeet-transcription";
192
196
  "onnx-ocr": "onnx-ocr";
197
+ "sdcpp-generation": "sdcpp-generation";
193
198
  llm: "llm";
194
199
  whisper: "whisper";
195
200
  embeddings: "embeddings";
@@ -197,6 +202,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
197
202
  parakeet: "parakeet";
198
203
  tts: "tts";
199
204
  ocr: "ocr";
205
+ diffusion: "diffusion";
200
206
  }>, z.ZodLiteral<"vad">]>>;
201
207
  }, z.core.$strip>]>;
202
208
  srcVocabSrc: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
@@ -218,6 +224,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
218
224
  "onnx-tts": "onnx-tts";
219
225
  "parakeet-transcription": "parakeet-transcription";
220
226
  "onnx-ocr": "onnx-ocr";
227
+ "sdcpp-generation": "sdcpp-generation";
221
228
  llm: "llm";
222
229
  whisper: "whisper";
223
230
  embeddings: "embeddings";
@@ -225,6 +232,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
225
232
  parakeet: "parakeet";
226
233
  tts: "tts";
227
234
  ocr: "ocr";
235
+ diffusion: "diffusion";
228
236
  }>, z.ZodLiteral<"vad">]>>;
229
237
  }, z.core.$strip>]>>;
230
238
  dstVocabSrc: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
@@ -246,6 +254,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
246
254
  "onnx-tts": "onnx-tts";
247
255
  "parakeet-transcription": "parakeet-transcription";
248
256
  "onnx-ocr": "onnx-ocr";
257
+ "sdcpp-generation": "sdcpp-generation";
249
258
  llm: "llm";
250
259
  whisper: "whisper";
251
260
  embeddings: "embeddings";
@@ -253,6 +262,7 @@ export declare const nmtConfigBaseSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
253
262
  parakeet: "parakeet";
254
263
  tts: "tts";
255
264
  ocr: "ocr";
265
+ diffusion: "diffusion";
256
266
  }>, z.ZodLiteral<"vad">]>>;
257
267
  }, z.core.$strip>]>>;
258
268
  normalize: z.ZodOptional<z.ZodNumber>;
@@ -442,6 +452,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
442
452
  "onnx-tts": "onnx-tts";
443
453
  "parakeet-transcription": "parakeet-transcription";
444
454
  "onnx-ocr": "onnx-ocr";
455
+ "sdcpp-generation": "sdcpp-generation";
445
456
  llm: "llm";
446
457
  whisper: "whisper";
447
458
  embeddings: "embeddings";
@@ -449,6 +460,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
449
460
  parakeet: "parakeet";
450
461
  tts: "tts";
451
462
  ocr: "ocr";
463
+ diffusion: "diffusion";
452
464
  }>, z.ZodLiteral<"vad">]>>;
453
465
  }, z.core.$strip>]>>;
454
466
  dstVocabSrc: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
@@ -470,6 +482,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
470
482
  "onnx-tts": "onnx-tts";
471
483
  "parakeet-transcription": "parakeet-transcription";
472
484
  "onnx-ocr": "onnx-ocr";
485
+ "sdcpp-generation": "sdcpp-generation";
473
486
  llm: "llm";
474
487
  whisper: "whisper";
475
488
  embeddings: "embeddings";
@@ -477,6 +490,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
477
490
  parakeet: "parakeet";
478
491
  tts: "tts";
479
492
  ocr: "ocr";
493
+ diffusion: "diffusion";
480
494
  }>, z.ZodLiteral<"vad">]>>;
481
495
  }, z.core.$strip>]>>;
482
496
  normalize: z.ZodOptional<z.ZodNumber>;
@@ -511,6 +525,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
511
525
  "onnx-tts": "onnx-tts";
512
526
  "parakeet-transcription": "parakeet-transcription";
513
527
  "onnx-ocr": "onnx-ocr";
528
+ "sdcpp-generation": "sdcpp-generation";
514
529
  llm: "llm";
515
530
  whisper: "whisper";
516
531
  embeddings: "embeddings";
@@ -518,6 +533,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
518
533
  parakeet: "parakeet";
519
534
  tts: "tts";
520
535
  ocr: "ocr";
536
+ diffusion: "diffusion";
521
537
  }>, z.ZodLiteral<"vad">]>>;
522
538
  }, z.core.$strip>]>;
523
539
  srcVocabSrc: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
@@ -539,6 +555,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
539
555
  "onnx-tts": "onnx-tts";
540
556
  "parakeet-transcription": "parakeet-transcription";
541
557
  "onnx-ocr": "onnx-ocr";
558
+ "sdcpp-generation": "sdcpp-generation";
542
559
  llm: "llm";
543
560
  whisper: "whisper";
544
561
  embeddings: "embeddings";
@@ -546,6 +563,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
546
563
  parakeet: "parakeet";
547
564
  tts: "tts";
548
565
  ocr: "ocr";
566
+ diffusion: "diffusion";
549
567
  }>, z.ZodLiteral<"vad">]>>;
550
568
  }, z.core.$strip>]>>;
551
569
  dstVocabSrc: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
@@ -567,6 +585,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
567
585
  "onnx-tts": "onnx-tts";
568
586
  "parakeet-transcription": "parakeet-transcription";
569
587
  "onnx-ocr": "onnx-ocr";
588
+ "sdcpp-generation": "sdcpp-generation";
570
589
  llm: "llm";
571
590
  whisper: "whisper";
572
591
  embeddings: "embeddings";
@@ -574,6 +593,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
574
593
  parakeet: "parakeet";
575
594
  tts: "tts";
576
595
  ocr: "ocr";
596
+ diffusion: "diffusion";
577
597
  }>, z.ZodLiteral<"vad">]>>;
578
598
  }, z.core.$strip>]>>;
579
599
  normalize: z.ZodOptional<z.ZodNumber>;
@@ -684,7 +704,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
684
704
  engine?: string | undefined;
685
705
  expectedSize?: number | undefined;
686
706
  sha256Checksum?: string | undefined;
687
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
707
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
688
708
  } | undefined;
689
709
  dstVocabSrc?: string | {
690
710
  src: string;
@@ -697,7 +717,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
697
717
  engine?: string | undefined;
698
718
  expectedSize?: number | undefined;
699
719
  sha256Checksum?: string | undefined;
700
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
720
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
701
721
  } | undefined;
702
722
  normalize?: number | undefined;
703
723
  pivotModel?: {
@@ -712,7 +732,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
712
732
  engine?: string | undefined;
713
733
  expectedSize?: number | undefined;
714
734
  sha256Checksum?: string | undefined;
715
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
735
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
716
736
  };
717
737
  mode?: "full" | undefined;
718
738
  beamsize?: number | undefined;
@@ -734,7 +754,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
734
754
  engine?: string | undefined;
735
755
  expectedSize?: number | undefined;
736
756
  sha256Checksum?: string | undefined;
737
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
757
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
738
758
  } | undefined;
739
759
  dstVocabSrc?: string | {
740
760
  src: string;
@@ -747,7 +767,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
747
767
  engine?: string | undefined;
748
768
  expectedSize?: number | undefined;
749
769
  sha256Checksum?: string | undefined;
750
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
770
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
751
771
  } | undefined;
752
772
  normalize?: number | undefined;
753
773
  } | undefined;
@@ -801,7 +821,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
801
821
  engine?: string | undefined;
802
822
  expectedSize?: number | undefined;
803
823
  sha256Checksum?: string | undefined;
804
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
824
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
805
825
  } | undefined;
806
826
  dstVocabSrc?: string | {
807
827
  src: string;
@@ -814,7 +834,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
814
834
  engine?: string | undefined;
815
835
  expectedSize?: number | undefined;
816
836
  sha256Checksum?: string | undefined;
817
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
837
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
818
838
  } | undefined;
819
839
  normalize?: number | undefined;
820
840
  pivotModel?: {
@@ -829,7 +849,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
829
849
  engine?: string | undefined;
830
850
  expectedSize?: number | undefined;
831
851
  sha256Checksum?: string | undefined;
832
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
852
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
833
853
  };
834
854
  mode?: "full" | undefined;
835
855
  beamsize?: number | undefined;
@@ -851,7 +871,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
851
871
  engine?: string | undefined;
852
872
  expectedSize?: number | undefined;
853
873
  sha256Checksum?: string | undefined;
854
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
874
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
855
875
  } | undefined;
856
876
  dstVocabSrc?: string | {
857
877
  src: string;
@@ -864,7 +884,7 @@ export declare const nmtConfigSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodOb
864
884
  engine?: string | undefined;
865
885
  expectedSize?: number | undefined;
866
886
  sha256Checksum?: string | undefined;
867
- addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "vad" | undefined;
887
+ addon?: "llamacpp-completion" | "whispercpp-transcription" | "llamacpp-embedding" | "nmtcpp-translation" | "onnx-tts" | "parakeet-transcription" | "onnx-ocr" | "sdcpp-generation" | "llm" | "whisper" | "embeddings" | "nmt" | "parakeet" | "tts" | "ocr" | "diffusion" | "vad" | undefined;
868
888
  } | undefined;
869
889
  normalize?: number | undefined;
870
890
  } | undefined;
@@ -5,6 +5,7 @@ import { DelegateConnectionFailedError } from "../../utils/errors-server.js";
5
5
  import { getServerLogger } from "../../logging/index.js";
6
6
  import { nowMs } from "../../profiling/index.js";
7
7
  import { cacheDelegationConnectionTime, clearPeerConnectionTracking, } from "../rpc/profiling/delegation-profiler.js";
8
+ import { getNextCommandId } from "../rpc/rpc-utils.js";
8
9
  const logger = getServerLogger();
9
10
  // Map of active RPC instances by public key
10
11
  const activeRPCs = new Map();
@@ -13,7 +14,6 @@ const activeConnections = new Map();
13
14
  // Track whether the global connection handler has been registered
14
15
  let connectionHandlerRegistered = false;
15
16
  const HEALTH_CHECK_TIMEOUT_MS = 1500;
16
- import { getNextCommandId } from "../rpc/delegate-utils.js";
17
17
  function isHeartbeatResponse(payload) {
18
18
  return (typeof payload === "object" &&
19
19
  payload !== null &&
@@ -75,13 +75,13 @@ async function closeConnection(publicKey) {
75
75
  // Wait for the close event before returning so Hyperswarm's internal
76
76
  // _allConnections is cleaned up before we attempt to rejoin/flush.
77
77
  await new Promise((resolve) => {
78
- const timeout = setTimeout(resolve, 5000);
79
78
  existingConnection.on("close", () => {
80
- clearTimeout(timeout);
81
79
  resolve();
82
80
  });
83
81
  existingConnection.destroy();
84
82
  });
83
+ if (activeConnections.get(publicKey) !== existingConnection)
84
+ return;
85
85
  activeConnections.delete(publicKey);
86
86
  activeRPCs.delete(publicKey);
87
87
  clearPeerConnectionTracking(publicKey);
@@ -3,6 +3,7 @@ import Hyperswarm from "hyperswarm";
3
3
  import crypto from "bare-crypto";
4
4
  import { envSchema } from "../../schemas/provide.js";
5
5
  import { getSDKConfig } from "./registry/config-registry.js";
6
+ import { registerSwarm, unregisterSwarm } from "./runtime-lifecycle.js";
6
7
  import { getServerLogger } from "../../logging/index.js";
7
8
  const logger = getServerLogger();
8
9
  function getHyperswarmSeedBuffer() {
@@ -59,13 +60,14 @@ function createSwarm(firewallConfig) {
59
60
  const swarmOptions = { seed, firewall, relayThrough: getRelays };
60
61
  return new Hyperswarm(swarmOptions);
61
62
  }
62
- let swarm;
63
+ let swarm = null;
63
64
  const activeProviderTopics = new Set();
64
65
  export function getSwarm({ firewallConfig, } = {}) {
65
66
  if (swarm) {
66
67
  return swarm;
67
68
  }
68
69
  swarm = createSwarm(firewallConfig);
70
+ registerSwarm(swarm, { label: "shared-swarm", createdAt: Date.now() });
69
71
  return swarm;
70
72
  }
71
73
  export function registerProviderTopic(topic) {
@@ -78,8 +80,18 @@ export function hasActiveProviders() {
78
80
  return activeProviderTopics.size > 0;
79
81
  }
80
82
  export async function destroySwarm() {
81
- if (swarm) {
83
+ if (!swarm)
84
+ return;
85
+ const ref = swarm;
86
+ swarm = null;
87
+ try {
88
+ await ref.destroy();
89
+ unregisterSwarm(ref);
82
90
  activeProviderTopics.clear();
83
- return swarm.destroy();
91
+ }
92
+ catch (error) {
93
+ if (swarm === null)
94
+ swarm = ref;
95
+ throw error;
84
96
  }
85
97
  }
@@ -1,12 +1,16 @@
1
- import { type EmbedParams } from "../../../schemas/index";
1
+ import { type EmbedParams, type EmbedStats } from "../../../schemas/index";
2
+ export interface EmbedResult {
3
+ embedding: number[] | number[][];
4
+ stats?: EmbedStats;
5
+ }
2
6
  export declare function embed(params: {
3
7
  modelId: string;
4
8
  text: string;
5
- }): Promise<number[]>;
9
+ }): Promise<EmbedResult>;
6
10
  export declare function embed(params: {
7
11
  modelId: string;
8
12
  text: string[];
9
- }): Promise<number[][]>;
10
- export declare function embed(params: EmbedParams): Promise<number[] | number[][]>;
13
+ }): Promise<EmbedResult>;
14
+ export declare function embed(params: EmbedParams): Promise<EmbedResult>;
11
15
  export declare function normalizeVector(vector: Float32Array): number[];
12
16
  //# sourceMappingURL=embed.d.ts.map
@@ -1,29 +1,40 @@
1
1
  import { getModel } from "../registry/model-registry.js";
2
2
  import { embedParamsSchema } from "../../../schemas/index.js";
3
+ import { buildUnaryResult } from "../../../profiling/model-execution.js";
3
4
  import { EmbedNoEmbeddingsError, EmbedFailedError, } from "../../../utils/errors-server.js";
5
+ import { nowMs } from "../../../profiling/index.js";
4
6
  export async function embed(params) {
5
7
  const { modelId, text } = embedParamsSchema.parse(params);
6
8
  const model = getModel(modelId);
7
- const response = await model.run(text);
8
- const rawEmbeddings = (await response.await());
9
+ const modelStart = nowMs();
10
+ const response = (await model.run(text));
11
+ const rawEmbeddings = await response.await();
12
+ const modelExecutionMs = nowMs() - modelStart;
13
+ const stats = {
14
+ ...(response.stats?.total_time_ms !== undefined && { totalTime: response.stats.total_time_ms }),
15
+ ...(response.stats?.tokens_per_second !== undefined && { tokensPerSecond: response.stats.tokens_per_second }),
16
+ ...(response.stats?.total_tokens !== undefined && { totalTokens: response.stats.total_tokens }),
17
+ ...(response.stats?.backendDevice !== undefined && { backendDevice: response.stats.backendDevice }),
18
+ };
9
19
  const embeddingsArray = rawEmbeddings[0];
10
20
  if (Array.isArray(text)) {
11
21
  if (!embeddingsArray || embeddingsArray.length === 0) {
12
22
  throw new EmbedNoEmbeddingsError();
13
23
  }
14
- return embeddingsArray.map((embeddingVector) => {
24
+ const embedding = embeddingsArray.map((embeddingVector) => {
15
25
  if (!embeddingVector || embeddingVector.length === 0) {
16
26
  throw new EmbedNoEmbeddingsError();
17
27
  }
18
28
  return normalizeVector(embeddingVector);
19
29
  });
30
+ return buildUnaryResult({ embedding }, modelExecutionMs, stats);
20
31
  }
21
32
  else {
22
33
  const embeddingVector = embeddingsArray?.[0];
23
34
  if (!embeddingVector || embeddingVector.length === 0) {
24
35
  throw new EmbedNoEmbeddingsError();
25
36
  }
26
- return normalizeVector(embeddingVector);
37
+ return buildUnaryResult({ embedding: normalizeVector(embeddingVector) }, modelExecutionMs, stats);
27
38
  }
28
39
  }
29
40
  export function normalizeVector(vector) {
@@ -1,3 +1,7 @@
1
- import { type TranscribeParams } from "../../../schemas/index";
2
- export declare function transcribe(params: TranscribeParams): AsyncGenerator<string, void, void>;
1
+ import { type TranscribeParams, type TranscribeStats } from "../../../schemas/index";
2
+ export declare function transcribe(params: TranscribeParams): AsyncGenerator<string, {
3
+ modelExecutionMs: number;
4
+ stats?: TranscribeStats;
5
+ }, void>;
6
+ export declare function transcribeStream(modelId: string, audioInputStream: AsyncIterable<Buffer>, prompt?: string): AsyncGenerator<string, void, void>;
3
7
  //# sourceMappingURL=transcribe.d.ts.map
@@ -2,7 +2,13 @@ import { getModel, getModelConfig, getModelEntry, } from "../registry/model-regi
2
2
  import { ModelType, } from "../../../schemas/index.js";
3
3
  import { createAudioStream } from "../utils/audio-input.js";
4
4
  import { getServerLogger } from "../../../logging/index.js";
5
+ import { TranscriptionFailedError } from "../../../utils/errors-server.js";
6
+ import { nowMs } from "../../../profiling/index.js";
7
+ import { buildStreamResult } from "../../../profiling/model-execution.js";
5
8
  const logger = getServerLogger();
9
+ function hasRunStreaming(model) {
10
+ return "runStreaming" in model && typeof model.runStreaming === "function";
11
+ }
6
12
  const SILENCE_MARKERS = {
7
13
  [ModelType.whispercppTranscription]: "[BLANK_AUDIO]",
8
14
  [ModelType.parakeetTranscription]: "[No speech detected]",
@@ -52,10 +58,13 @@ export async function* transcribe(params) {
52
58
  const silenceMarker = SILENCE_MARKERS[engineType] ?? "";
53
59
  const audioFormat = getAudioFormat(modelId, engineType);
54
60
  const originalConfig = await applyPrompt(modelId, params.prompt, engineType);
61
+ let modelExecutionMs = 0;
62
+ let response;
55
63
  try {
56
64
  const model = getModel(modelId);
57
65
  const audioStream = await createAudioStream(params.audioChunk, audioFormat);
58
- const response = await model.run(audioStream);
66
+ const modelStart = nowMs();
67
+ response = (await model.run(audioStream));
59
68
  for await (const output of response.iterate()) {
60
69
  logger.debug("Streaming Transcription Update:", output);
61
70
  const text = output
@@ -66,6 +75,49 @@ export async function* transcribe(params) {
66
75
  yield text;
67
76
  }
68
77
  }
78
+ modelExecutionMs = nowMs() - modelStart;
79
+ }
80
+ finally {
81
+ if (originalConfig) {
82
+ await restorePrompt(modelId, originalConfig);
83
+ }
84
+ }
85
+ const stats = {
86
+ ...(response?.stats?.audioDurationMs !== undefined && { audioDuration: response.stats.audioDurationMs }),
87
+ ...(response?.stats?.realTimeFactor !== undefined && { realTimeFactor: response.stats.realTimeFactor }),
88
+ ...(response?.stats?.tokensPerSecond !== undefined && { tokensPerSecond: response.stats.tokensPerSecond }),
89
+ ...(response?.stats?.totalTokens !== undefined && { totalTokens: response.stats.totalTokens }),
90
+ ...(response?.stats?.totalSegments !== undefined && { totalSegments: response.stats.totalSegments }),
91
+ ...(response?.stats?.whisperEncodeMs !== undefined && { whisperEncodeTime: response.stats.whisperEncodeMs }),
92
+ ...(response?.stats?.whisperDecodeMs !== undefined && { whisperDecodeTime: response.stats.whisperDecodeMs }),
93
+ ...(response?.stats?.encoderMs !== undefined && { encoderTime: response.stats.encoderMs }),
94
+ ...(response?.stats?.decoderMs !== undefined && { decoderTime: response.stats.decoderMs }),
95
+ ...(response?.stats?.melSpecMs !== undefined && { melSpecTime: response.stats.melSpecMs }),
96
+ };
97
+ return buildStreamResult(modelExecutionMs, stats);
98
+ }
99
+ export async function* transcribeStream(modelId, audioInputStream, prompt) {
100
+ const engineType = getEngineModelType(modelId);
101
+ const silenceMarker = SILENCE_MARKERS[engineType] ?? "";
102
+ const originalConfig = await applyPrompt(modelId, prompt, engineType);
103
+ try {
104
+ const model = getModel(modelId);
105
+ if (!hasRunStreaming(model)) {
106
+ throw new TranscriptionFailedError(`Model ${modelId} does not support streaming transcription`);
107
+ }
108
+ const response = await model.runStreaming(audioInputStream);
109
+ for await (const segments of response.iterate()) {
110
+ logger.debug("Live Transcription Update:", segments);
111
+ for (const segment of segments) {
112
+ if (!segment.text)
113
+ continue;
114
+ if (silenceMarker && segment.text.includes(silenceMarker))
115
+ continue;
116
+ if (segment.text.trim()) {
117
+ yield segment.text;
118
+ }
119
+ }
120
+ }
69
121
  }
70
122
  finally {
71
123
  if (originalConfig) {
@@ -1,5 +1,8 @@
1
1
  import { type TranslateParams, type TranslationStats } from "../../../schemas/index";
2
2
  export declare function getLanguage(code: string | undefined): string;
3
3
  export declare function isAfrican(code: string | undefined): boolean;
4
- export declare function translate(params: TranslateParams): AsyncGenerator<string, TranslationStats | undefined, unknown>;
4
+ export declare function translate(params: TranslateParams): AsyncGenerator<string, {
5
+ modelExecutionMs: number;
6
+ stats?: TranslationStats;
7
+ }, unknown>;
5
8
  //# sourceMappingURL=translate.d.ts.map
@@ -1,6 +1,8 @@
1
1
  import { getModel } from "../registry/model-registry.js";
2
2
  import { translateServerParamsSchema, normalizeModelType, ModelType, AFRICAN_LANGUAGES_MAP, } from "../../../schemas/index.js";
3
3
  import { getLangName } from "@qvac/langdetect-text";
4
+ import { nowMs } from "../../../profiling/index.js";
5
+ import { buildStreamResult } from "../../../profiling/model-execution.js";
4
6
  export function getLanguage(code) {
5
7
  if (!code)
6
8
  return "";
@@ -24,27 +26,22 @@ export async function* translate(params) {
24
26
  const model = getModel(modelId);
25
27
  const fromLanguage = getLanguage(from);
26
28
  const toLanguage = getLanguage(to);
27
- const startTime = Date.now();
28
- let processedTokens = 0;
29
29
  // Check if input is an array and model type is NMT
30
30
  if (Array.isArray(text) &&
31
31
  canonicalModelType === ModelType.nmtcppTranslation) {
32
32
  // Use runBatch for batch processing
33
+ const modelStart = nowMs();
33
34
  const translations = await model.runBatch(text);
35
+ const modelExecutionMs = nowMs() - modelStart;
34
36
  // Yield each translation with a newline separator
35
37
  for (let i = 0; i < translations.length; i++) {
36
38
  const translation = translations[i];
37
- processedTokens++;
38
39
  yield translation;
39
40
  if (i < translations.length - 1) {
40
41
  yield "\n";
41
42
  }
42
43
  }
43
- const endTime = Date.now();
44
- return {
45
- processedTokens,
46
- processingTime: endTime - startTime,
47
- };
44
+ return { modelExecutionMs };
48
45
  }
49
46
  // Single text processing (for NMT or LLM)
50
47
  const singleText = Array.isArray(text) ? text[0] : text;
@@ -59,70 +56,36 @@ export async function* translate(params) {
59
56
  : `${context ? `${context}. ` : ""}Translate the following text from ${fromLanguage} into ${toLanguage}. Only output the translation, nothing else.\n\n${fromLanguage}: ${singleText}\n${toLanguage}:`,
60
57
  },
61
58
  ];
59
+ const modelStart = nowMs();
62
60
  const response = await model.run(input);
63
61
  // Check if the response has an iterate method (like LLM models)
64
62
  if (canonicalModelType === ModelType.llamacppCompletion &&
65
63
  typeof response.iterate === "function") {
66
- for await (const token of response.iterate()) {
67
- processedTokens++;
64
+ const llmResponse = response;
65
+ for await (const token of llmResponse.iterate()) {
68
66
  yield token;
69
67
  }
70
- }
71
- else {
72
- // For models that don't support iterate, create an async iterator using onUpdate
73
- const tokenQueue = [];
74
- let isComplete = false;
75
- let resolveNext = null;
76
- // Start the response processing
77
- const responsePromise = response
78
- .onUpdate((data) => {
79
- processedTokens++;
80
- if (resolveNext) {
81
- // If there's a pending read, resolve it immediately
82
- resolveNext({ value: data, done: false });
83
- resolveNext = null;
84
- }
85
- else {
86
- // Otherwise, queue the token
87
- tokenQueue.push(data);
88
- }
89
- })
90
- .await()
91
- .then(() => {
92
- isComplete = true;
93
- if (resolveNext) {
94
- resolveNext({ value: undefined, done: true });
95
- resolveNext = null;
96
- }
97
- });
98
- // Create an async iterator
99
- const asyncIterator = {
100
- async next() {
101
- if (tokenQueue.length > 0) {
102
- return { value: tokenQueue.shift(), done: false };
103
- }
104
- if (isComplete) {
105
- return { value: undefined, done: true };
106
- }
107
- // Wait for the next token
108
- return new Promise((resolve) => {
109
- resolveNext = resolve;
110
- });
111
- },
112
- [Symbol.asyncIterator]() {
113
- return this;
114
- },
68
+ const modelExecutionMs = nowMs() - modelStart;
69
+ const stats = {
70
+ ...(llmResponse.stats?.TPS !== undefined && { tokensPerSecond: llmResponse.stats.TPS }),
71
+ ...(llmResponse.stats?.TTFT !== undefined && { timeToFirstToken: llmResponse.stats.TTFT }),
72
+ ...(llmResponse.stats?.CacheTokens !== undefined && { cacheTokens: llmResponse.stats.CacheTokens }),
73
+ ...(llmResponse.stats?.generatedTokens !== undefined && { totalTokens: llmResponse.stats.generatedTokens }),
115
74
  };
116
- // Yield tokens as they come
117
- for await (const token of asyncIterator) {
118
- yield token;
119
- }
120
- // Ensure the response is fully processed
121
- await responsePromise;
75
+ return buildStreamResult(modelExecutionMs, stats);
76
+ }
77
+ const nmtResponse = response;
78
+ for await (const token of nmtResponse.iterate()) {
79
+ yield token;
122
80
  }
123
- const endTime = Date.now();
124
- return {
125
- processedTokens,
126
- processingTime: endTime - startTime,
81
+ const modelExecutionMs = nowMs() - modelStart;
82
+ const stats = {
83
+ ...(nmtResponse.stats?.totalTime !== undefined && { totalTime: nmtResponse.stats.totalTime }),
84
+ ...(nmtResponse.stats?.totalTokens !== undefined && { totalTokens: nmtResponse.stats.totalTokens }),
85
+ ...(nmtResponse.stats?.decodeTime !== undefined && { decodeTime: nmtResponse.stats.decodeTime }),
86
+ ...(nmtResponse.stats?.encodeTime !== undefined && { encodeTime: nmtResponse.stats.encodeTime }),
87
+ ...(nmtResponse.stats?.TPS !== undefined && { tokensPerSecond: nmtResponse.stats.TPS }),
88
+ ...(nmtResponse.stats?.TTFT !== undefined && { timeToFirstToken: nmtResponse.stats.TTFT }),
127
89
  };
90
+ return buildStreamResult(modelExecutionMs, stats);
128
91
  }
@@ -2,6 +2,7 @@ import { promises as fsPromises } from "bare-fs";
2
2
  import path from "bare-path";
3
3
  import { unregisterModel } from "../registry/model-registry.js";
4
4
  import { unregisterAllLoggingStreams } from "../registry/logging-stream-registry.js";
5
+ import { clearFinetuneRuntimeState } from "../plugins/llamacpp-completion/ops/finetune.js";
5
6
  import { unregisterAddonLogger, getServerLogger } from "../../../logging/index.js";
6
7
  import { unloadModelParamsSchema } from "../../../schemas/index.js";
7
8
  import { ModelNotLoadedError } from "../../../utils/errors-server.js";
@@ -13,6 +14,7 @@ export async function unloadModel(params) {
13
14
  if (!entry) {
14
15
  throw new ModelNotLoadedError(modelId);
15
16
  }
17
+ clearFinetuneRuntimeState(modelId);
16
18
  if (entry.local?.loader) {
17
19
  await entry.local.loader.close();
18
20
  }
@@ -5,4 +5,5 @@ export { parakeetPlugin } from "./parakeet-transcription/plugin";
5
5
  export { nmtPlugin } from "./nmtcpp-translation/plugin";
6
6
  export { ttsPlugin } from "./onnx-tts/plugin";
7
7
  export { ocrPlugin } from "./onnx-ocr/plugin";
8
+ export { diffusionPlugin } from "./sdcpp-generation/plugin";
8
9
  //# sourceMappingURL=index.d.ts.map