@qvac/sdk 0.10.2 → 0.12.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 (326) hide show
  1. package/NOTICE +1455 -29
  2. package/README.md +2 -0
  3. package/dist/client/api/cancel.d.ts +24 -32
  4. package/dist/client/api/cancel.js +58 -31
  5. package/dist/client/api/classify.d.ts +23 -0
  6. package/dist/client/api/classify.js +43 -0
  7. package/dist/client/api/client-request-id.d.ts +17 -0
  8. package/dist/client/api/client-request-id.js +27 -0
  9. package/dist/client/api/completion-stream.d.ts +1 -1
  10. package/dist/client/api/completion-stream.js +34 -3
  11. package/dist/client/api/diffusion.d.ts +46 -0
  12. package/dist/client/api/diffusion.js +50 -1
  13. package/dist/client/api/download-asset.d.ts +12 -2
  14. package/dist/client/api/download-asset.js +21 -3
  15. package/dist/client/api/embed.d.ts +8 -4
  16. package/dist/client/api/embed.js +14 -1
  17. package/dist/client/api/get-model-info.d.ts +1 -1
  18. package/dist/client/api/index.d.ts +5 -0
  19. package/dist/client/api/index.js +5 -0
  20. package/dist/client/api/load-model.d.ts +12 -4
  21. package/dist/client/api/load-model.js +49 -2
  22. package/dist/client/api/rag.d.ts +9 -3
  23. package/dist/client/api/rag.js +23 -3
  24. package/dist/client/api/transcribe.d.ts +23 -8
  25. package/dist/client/api/transcribe.js +69 -4
  26. package/dist/client/api/unload-model.d.ts +5 -2
  27. package/dist/client/api/unload-model.js +9 -4
  28. package/dist/client/api/upscale.d.ts +45 -0
  29. package/dist/client/api/upscale.js +99 -0
  30. package/dist/client/api/video.d.ts +64 -0
  31. package/dist/client/api/video.js +147 -0
  32. package/dist/client/api/vla-helpers.d.ts +45 -0
  33. package/dist/client/api/vla-helpers.js +130 -0
  34. package/dist/client/api/vla.d.ts +65 -0
  35. package/dist/client/api/vla.js +109 -0
  36. package/dist/client/config-loader/resolve-config.node.d.ts +16 -0
  37. package/dist/client/config-loader/resolve-config.node.js +77 -23
  38. package/dist/client/plugins-factory.d.ts +8 -0
  39. package/dist/client/plugins-factory.js +10 -0
  40. package/dist/client/rpc/bare-client.js +62 -66
  41. package/dist/client/rpc/ensure-worker-ready.d.ts +9 -0
  42. package/dist/client/rpc/ensure-worker-ready.js +17 -0
  43. package/dist/client/rpc/expo-rpc-client.js +2 -1
  44. package/dist/client/rpc/node-rpc-client.js +22 -8
  45. package/dist/client/rpc/rpc-client.d.ts +2 -2
  46. package/dist/client/rpc/rpc-client.js +10 -4
  47. package/dist/client/rpc/rpc-error.d.ts +9 -0
  48. package/dist/client/rpc/rpc-error.js +105 -0
  49. package/dist/commands/bundle/bare-pack.d.ts +13 -0
  50. package/dist/commands/bundle/bare-pack.js +54 -0
  51. package/dist/commands/bundle/constants.d.ts +7 -0
  52. package/dist/commands/bundle/constants.js +23 -0
  53. package/dist/commands/bundle/entry-gen.d.ts +2 -0
  54. package/dist/commands/bundle/entry-gen.js +48 -0
  55. package/dist/commands/bundle/index.d.ts +20 -0
  56. package/dist/commands/bundle/index.js +141 -0
  57. package/dist/commands/bundle/manifest.d.ts +21 -0
  58. package/dist/commands/bundle/manifest.js +193 -0
  59. package/dist/commands/bundle/plugins.d.ts +9 -0
  60. package/dist/commands/bundle/plugins.js +51 -0
  61. package/dist/commands/index.d.ts +5 -0
  62. package/dist/commands/index.js +2 -0
  63. package/dist/commands/verify/abi.d.ts +52 -0
  64. package/dist/commands/verify/abi.js +125 -0
  65. package/dist/commands/verify/addon-source.d.ts +43 -0
  66. package/dist/commands/verify/addon-source.js +75 -0
  67. package/dist/commands/verify/bundle-source.d.ts +12 -0
  68. package/dist/commands/verify/bundle-source.js +53 -0
  69. package/dist/commands/verify/index.d.ts +59 -0
  70. package/dist/commands/verify/index.js +371 -0
  71. package/dist/commands/verify/node-modules-source.d.ts +11 -0
  72. package/dist/commands/verify/node-modules-source.js +76 -0
  73. package/dist/commands/verify/prebuilds.d.ts +15 -0
  74. package/dist/commands/verify/prebuilds.js +39 -0
  75. package/dist/examples/cancel-by-request-id.d.ts +38 -0
  76. package/dist/examples/cancel-by-request-id.js +103 -0
  77. package/dist/examples/classification/classify-image.d.ts +2 -0
  78. package/dist/examples/classification/classify-image.js +23 -0
  79. package/dist/examples/diffusion-esrgan-upscale.d.ts +2 -0
  80. package/dist/examples/diffusion-esrgan-upscale.js +78 -0
  81. package/dist/examples/diffusion-txt2vid.d.ts +2 -0
  82. package/dist/examples/diffusion-txt2vid.js +81 -0
  83. package/dist/examples/download-with-cancel.js +10 -10
  84. package/dist/examples/embed-multi-gpu.d.ts +2 -0
  85. package/dist/examples/embed-multi-gpu.js +46 -0
  86. package/dist/examples/llamacpp-multi-gpu.d.ts +2 -0
  87. package/dist/examples/llamacpp-multi-gpu.js +57 -0
  88. package/dist/examples/plugins.js +3 -7
  89. package/dist/examples/rag/rag-hyperdb/cancellation.js +20 -17
  90. package/dist/examples/tools/llamacpp-tools-gemma4.d.ts +2 -0
  91. package/dist/examples/tools/llamacpp-tools-gemma4.js +73 -0
  92. package/dist/examples/tools/llamacpp-tools-qwen35.d.ts +2 -0
  93. package/dist/examples/tools/llamacpp-tools-qwen35.js +69 -0
  94. package/dist/examples/transcription/parakeet-ctc-filesystem.js +18 -12
  95. package/dist/examples/transcription/parakeet-microphone-record.js +7 -12
  96. package/dist/examples/transcription/parakeet-microphone-stream.d.ts +2 -0
  97. package/dist/examples/transcription/parakeet-microphone-stream.js +79 -0
  98. package/dist/examples/transcription/parakeet-sortformer-streaming.d.ts +2 -0
  99. package/dist/examples/transcription/parakeet-sortformer-streaming.js +121 -0
  100. package/dist/examples/transcription/parakeet-sortformer.js +58 -55
  101. package/dist/examples/transcription/parakeet-tdt-filesystem.js +18 -15
  102. package/dist/examples/transcription/whispercpp-microphone-conversation.d.ts +2 -0
  103. package/dist/examples/transcription/whispercpp-microphone-conversation.js +107 -0
  104. package/dist/examples/tts/chatterbox.js +7 -16
  105. package/dist/examples/tts/llm-to-tts-streaming.js +3 -10
  106. package/dist/examples/tts/supertonic-multilingual.js +4 -12
  107. package/dist/examples/tts/supertonic.js +5 -12
  108. package/dist/examples/vla-smolvla.d.ts +2 -0
  109. package/dist/examples/vla-smolvla.js +75 -0
  110. package/dist/examples/voice-assistant/voice-assistant.js +3 -10
  111. package/dist/expo/plugins/find-in-ancestor-node-modules.d.ts +14 -0
  112. package/dist/expo/plugins/find-in-ancestor-node-modules.js +24 -0
  113. package/dist/expo/plugins/get-project-root.d.ts +22 -0
  114. package/dist/expo/plugins/get-project-root.js +23 -0
  115. package/dist/expo/plugins/index.d.ts +4 -0
  116. package/dist/expo/plugins/index.js +4 -0
  117. package/dist/expo/plugins/resolve-sdk-package-dir.d.ts +9 -2
  118. package/dist/expo/plugins/resolve-sdk-package-dir.js +38 -11
  119. package/dist/expo/plugins/withDeviceInfo.js +2 -1
  120. package/dist/expo/plugins/withMobileBundle.d.ts +5 -4
  121. package/dist/expo/plugins/withMobileBundle.js +42 -58
  122. package/dist/index.d.ts +6 -2
  123. package/dist/index.js +23 -2
  124. package/dist/models/registry/models.d.ts +3725 -514
  125. package/dist/models/registry/models.js +7269 -3910
  126. package/dist/models/update-models/naming.js +22 -8
  127. package/dist/pear/pre.d.ts +3 -0
  128. package/dist/pear/pre.js +9 -2
  129. package/dist/schemas/cancel.d.ts +172 -28
  130. package/dist/schemas/cancel.js +120 -19
  131. package/dist/schemas/classification.d.ts +53 -0
  132. package/dist/schemas/classification.js +33 -0
  133. package/dist/schemas/common.d.ts +860 -1379
  134. package/dist/schemas/common.js +8 -1
  135. package/dist/schemas/completion-event.d.ts +17 -0
  136. package/dist/schemas/completion-event.js +12 -1
  137. package/dist/schemas/completion-stream.d.ts +16 -1
  138. package/dist/schemas/completion-stream.js +25 -7
  139. package/dist/schemas/download-asset.d.ts +25 -9
  140. package/dist/schemas/download-asset.js +17 -6
  141. package/dist/schemas/embed.d.ts +1 -0
  142. package/dist/schemas/embed.js +5 -0
  143. package/dist/schemas/engine-addon-map.d.ts +3 -0
  144. package/dist/schemas/engine-addon-map.js +18 -5
  145. package/dist/schemas/error.d.ts +31 -0
  146. package/dist/schemas/error.js +29 -1
  147. package/dist/schemas/finetune.d.ts +2 -0
  148. package/dist/schemas/finetune.js +5 -0
  149. package/dist/schemas/get-model-info.d.ts +10 -6
  150. package/dist/schemas/get-model-info.js +2 -0
  151. package/dist/schemas/index.d.ts +3 -0
  152. package/dist/schemas/index.js +3 -0
  153. package/dist/schemas/llamacpp-config.d.ts +64 -8
  154. package/dist/schemas/llamacpp-config.js +12 -0
  155. package/dist/schemas/load-model.d.ts +4644 -8605
  156. package/dist/schemas/load-model.js +90 -7
  157. package/dist/schemas/model-src-utils.d.ts +34 -14
  158. package/dist/schemas/model-types.d.ts +54 -14
  159. package/dist/schemas/model-types.js +28 -5
  160. package/dist/schemas/ocr.d.ts +8 -3
  161. package/dist/schemas/plugin.d.ts +60 -6
  162. package/dist/schemas/plugin.js +31 -5
  163. package/dist/schemas/rag.d.ts +9 -0
  164. package/dist/schemas/rag.js +17 -9
  165. package/dist/schemas/registry.d.ts +74 -30
  166. package/dist/schemas/registry.js +5 -0
  167. package/dist/schemas/reload-config.d.ts +34 -14
  168. package/dist/schemas/sdcpp-config.d.ts +445 -16
  169. package/dist/schemas/sdcpp-config.js +387 -26
  170. package/dist/schemas/sdk-config.d.ts +2431 -2723
  171. package/dist/schemas/sdk-config.js +16 -1
  172. package/dist/schemas/sdk-errors-client.d.ts +6 -0
  173. package/dist/schemas/sdk-errors-client.js +31 -1
  174. package/dist/schemas/sdk-errors-server.d.ts +8 -1
  175. package/dist/schemas/sdk-errors-server.js +45 -5
  176. package/dist/schemas/text-to-speech.d.ts +81 -698
  177. package/dist/schemas/text-to-speech.js +46 -19
  178. package/dist/schemas/transcription-config.d.ts +40 -229
  179. package/dist/schemas/transcription-config.js +76 -15
  180. package/dist/schemas/transcription.d.ts +108 -2
  181. package/dist/schemas/transcription.js +81 -0
  182. package/dist/schemas/translate.d.ts +2 -0
  183. package/dist/schemas/translate.js +13 -2
  184. package/dist/schemas/translation-config.d.ts +90 -40
  185. package/dist/schemas/unload-model.d.ts +2 -1
  186. package/dist/schemas/unload-model.js +4 -1
  187. package/dist/schemas/vla.d.ts +87 -0
  188. package/dist/schemas/vla.js +108 -0
  189. package/dist/scripts/run-unit-tests.js +22 -3
  190. package/dist/server/bare/ops/cancel.d.ts +27 -1
  191. package/dist/server/bare/ops/cancel.js +36 -10
  192. package/dist/server/bare/ops/embed.d.ts +3 -3
  193. package/dist/server/bare/ops/embed.js +144 -28
  194. package/dist/server/bare/ops/kv-cache-utils.d.ts +0 -7
  195. package/dist/server/bare/ops/kv-cache-utils.js +8 -47
  196. package/dist/server/bare/ops/transcribe.d.ts +11 -5
  197. package/dist/server/bare/ops/transcribe.js +230 -50
  198. package/dist/server/bare/ops/translate.d.ts +1 -1
  199. package/dist/server/bare/ops/translate.js +197 -88
  200. package/dist/server/bare/plugins/ggml-classification/ops/classify.d.ts +6 -0
  201. package/dist/server/bare/plugins/ggml-classification/ops/classify.js +30 -0
  202. package/dist/server/bare/plugins/ggml-classification/plugin.d.ts +32 -0
  203. package/dist/server/bare/plugins/ggml-classification/plugin.js +55 -0
  204. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.d.ts +3 -0
  205. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.js +12 -0
  206. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.d.ts +3 -0
  207. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.js +75 -0
  208. package/dist/server/bare/plugins/ggml-vla/plugin.d.ts +54 -0
  209. package/dist/server/bare/plugins/ggml-vla/plugin.js +57 -0
  210. package/dist/server/bare/plugins/index.d.ts +3 -1
  211. package/dist/server/bare/plugins/index.js +3 -1
  212. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +12 -3
  213. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +173 -172
  214. package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.d.ts +29 -0
  215. package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js +65 -0
  216. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +125 -21
  217. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.d.ts +154 -0
  218. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js +448 -0
  219. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.d.ts +21 -73
  220. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +18 -101
  221. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +36 -3
  222. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +183 -85
  223. package/dist/server/bare/plugins/llamacpp-completion/transform.d.ts +10 -0
  224. package/dist/server/bare/plugins/llamacpp-completion/transform.js +34 -0
  225. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +7 -0
  226. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +10 -1
  227. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +42 -15
  228. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +5 -1
  229. package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +8 -3
  230. package/dist/server/bare/plugins/onnx-ocr/plugin.js +3 -0
  231. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +73 -244
  232. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +68 -96
  233. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +8 -0
  234. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.d.ts +3 -0
  235. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.js +40 -0
  236. package/dist/server/bare/plugins/sdcpp-generation/ops/video.d.ts +3 -0
  237. package/dist/server/bare/plugins/sdcpp-generation/ops/video.js +199 -0
  238. package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +288 -15
  239. package/dist/server/bare/plugins/sdcpp-generation/plugin.js +150 -7
  240. package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech-stream.js +2 -15
  241. package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech.js +2 -1
  242. package/dist/server/bare/plugins/tts-ggml/plugin.d.ts +75 -0
  243. package/dist/server/bare/plugins/tts-ggml/plugin.js +189 -0
  244. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +47 -3
  245. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +61 -14
  246. package/dist/server/bare/rag-hyperdb/index.d.ts +1 -1
  247. package/dist/server/bare/rag-hyperdb/index.js +1 -1
  248. package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +26 -4
  249. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +65 -28
  250. package/dist/server/bare/registry/model-config-utils.js +7 -0
  251. package/dist/server/bare/runtime/disposable-scope.d.ts +36 -0
  252. package/dist/server/bare/runtime/disposable-scope.js +69 -0
  253. package/dist/server/bare/runtime/index.d.ts +8 -0
  254. package/dist/server/bare/runtime/index.js +3 -0
  255. package/dist/server/bare/runtime/request-context.d.ts +49 -0
  256. package/dist/server/bare/runtime/request-context.js +1 -0
  257. package/dist/server/bare/runtime/request-id.d.ts +12 -0
  258. package/dist/server/bare/runtime/request-id.js +14 -0
  259. package/dist/server/bare/runtime/request-registry-singleton.d.ts +4 -0
  260. package/dist/server/bare/runtime/request-registry-singleton.js +27 -0
  261. package/dist/server/bare/runtime/request-registry.d.ts +136 -0
  262. package/dist/server/bare/runtime/request-registry.js +297 -0
  263. package/dist/server/bare/runtime/with-request-context.d.ts +22 -0
  264. package/dist/server/bare/runtime/with-request-context.js +53 -0
  265. package/dist/server/bare/runtime-lifecycle.js +9 -9
  266. package/dist/server/bare/types/addon-responses.d.ts +12 -1
  267. package/dist/server/env.js +4 -1
  268. package/dist/server/plugins/index.d.ts +1 -1
  269. package/dist/server/plugins/index.js +1 -1
  270. package/dist/server/plugins/registry.d.ts +1 -0
  271. package/dist/server/plugins/registry.js +5 -0
  272. package/dist/server/rpc/handler-registry.js +30 -7
  273. package/dist/server/rpc/handler-selection.d.ts +9 -0
  274. package/dist/server/rpc/handler-selection.js +14 -0
  275. package/dist/server/rpc/handler-utils.js +5 -13
  276. package/dist/server/rpc/handlers/cancel-delegated.js +28 -31
  277. package/dist/server/rpc/handlers/cancelHandler.d.ts +30 -1
  278. package/dist/server/rpc/handlers/cancelHandler.js +54 -22
  279. package/dist/server/rpc/handlers/classify.d.ts +3 -0
  280. package/dist/server/rpc/handlers/classify.js +4 -0
  281. package/dist/server/rpc/handlers/delete-cache.d.ts +9 -0
  282. package/dist/server/rpc/handlers/delete-cache.js +13 -15
  283. package/dist/server/rpc/handlers/download-asset.js +133 -40
  284. package/dist/server/rpc/handlers/index.d.ts +4 -0
  285. package/dist/server/rpc/handlers/index.js +4 -0
  286. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +60 -2
  287. package/dist/server/rpc/handlers/load-model/download-manager.js +141 -8
  288. package/dist/server/rpc/handlers/load-model/handler.js +216 -98
  289. package/dist/server/rpc/handlers/load-model/http.js +3 -3
  290. package/dist/server/rpc/handlers/load-model/hyperdrive.js +1 -1
  291. package/dist/server/rpc/handlers/load-model/registry.js +1 -1
  292. package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +20 -1
  293. package/dist/server/rpc/handlers/load-model/resolve-session.js +6 -5
  294. package/dist/server/rpc/handlers/load-model/resolve.d.ts +3 -2
  295. package/dist/server/rpc/handlers/load-model/resolve.js +18 -6
  296. package/dist/server/rpc/handlers/load-model/types.d.ts +24 -0
  297. package/dist/server/rpc/handlers/rag.js +133 -15
  298. package/dist/server/rpc/handlers/upscale-stream.d.ts +3 -0
  299. package/dist/server/rpc/handlers/upscale-stream.js +4 -0
  300. package/dist/server/rpc/handlers/video-stream.d.ts +3 -0
  301. package/dist/server/rpc/handlers/video-stream.js +4 -0
  302. package/dist/server/rpc/profiling/operation-metrics.js +23 -0
  303. package/dist/server/utils/completion-normalizer.js +8 -0
  304. package/dist/server/utils/config-transform.js +1 -1
  305. package/dist/server/utils/tools/dialect.js +4 -0
  306. package/dist/server/utils/tools/parser.js +16 -1
  307. package/dist/server/utils/tools/parsers/gemma4native.d.ts +4 -0
  308. package/dist/server/utils/tools/parsers/gemma4native.js +60 -0
  309. package/dist/server/utils/tools/parsers/qwen35.d.ts +4 -0
  310. package/dist/server/utils/tools/parsers/qwen35.js +120 -0
  311. package/dist/server/worker.js +14 -11
  312. package/dist/utils/aggregate-events.d.ts +9 -0
  313. package/dist/utils/aggregate-events.js +18 -3
  314. package/dist/utils/decorate-promise.d.ts +34 -0
  315. package/dist/utils/decorate-promise.js +35 -0
  316. package/dist/utils/errors-client.d.ts +18 -0
  317. package/dist/utils/errors-client.js +31 -0
  318. package/dist/utils/errors-server.d.ts +115 -2
  319. package/dist/utils/errors-server.js +148 -3
  320. package/package.json +68 -77
  321. package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +0 -490
  322. package/dist/server/bare/plugins/onnx-tts/plugin.js +0 -266
  323. package/dist/server/bare/plugins/onnx-tts/wav-helper.d.ts +0 -14
  324. package/dist/server/bare/plugins/onnx-tts/wav-helper.js +0 -107
  325. /package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech-stream.d.ts +0 -0
  326. /package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech.d.ts +0 -0
@@ -1,10 +1,23 @@
1
1
  import { type CreateModelParams, type PluginModelResult, type ResolveContext, type ResolveResult, type SdcppConfig } from "../../../../schemas/index";
2
- type DiffusionArtifactKey = "clipLModelPath" | "clipGModelPath" | "t5XxlModelPath" | "llmModelPath" | "vaeModelPath";
2
+ type DiffusionArtifactKey = "clipLModelPath" | "clipGModelPath" | "t5XxlModelPath" | "llmModelPath" | "vaeModelPath" | "highNoiseDiffusionModelPath" | "esrganModelPath";
3
+ /**
4
+ * Stable-diffusion.cpp plugin for image diffusion, upscaling, and Wan video.
5
+ *
6
+ * Video mode is supported on React Native, but the SDK-published Wan model
7
+ * set is too large to load on typical mobile devices. Mobile apps should
8
+ * pass a `delegate` to `loadModel(...)` to run video generation on a
9
+ * desktop peer instead of loading the model on-device.
10
+ */
3
11
  export declare const diffusionPlugin: {
4
12
  modelType: "sdcpp-generation";
5
13
  displayName: string;
6
14
  addonPackage: "@qvac/diffusion-cpp";
7
15
  loadConfigSchema: import("zod").ZodObject<{
16
+ mode: import("zod").ZodDefault<import("zod").ZodEnum<{
17
+ diffusion: "diffusion";
18
+ upscale: "upscale";
19
+ video: "video";
20
+ }>>;
8
21
  threads: import("zod").ZodOptional<import("zod").ZodNumber>;
9
22
  device: import("zod").ZodOptional<import("zod").ZodEnum<{
10
23
  cpu: "cpu";
@@ -16,7 +29,6 @@ export declare const diffusionPlugin: {
16
29
  v: "v";
17
30
  edm_v: "edm_v";
18
31
  flow: "flow";
19
- flux_flow: "flux_flow";
20
32
  flux2_flow: "flux2_flow";
21
33
  }>>;
22
34
  type: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -48,7 +60,14 @@ export declare const diffusionPlugin: {
48
60
  clip_on_cpu: import("zod").ZodOptional<import("zod").ZodBoolean>;
49
61
  vae_on_cpu: import("zod").ZodOptional<import("zod").ZodBoolean>;
50
62
  vae_tiling: import("zod").ZodOptional<import("zod").ZodBoolean>;
63
+ offload_to_cpu: import("zod").ZodOptional<import("zod").ZodBoolean>;
51
64
  flash_attn: import("zod").ZodOptional<import("zod").ZodBoolean>;
65
+ diffusion_fa: import("zod").ZodOptional<import("zod").ZodBoolean>;
66
+ lora_apply_mode: import("zod").ZodOptional<import("zod").ZodEnum<{
67
+ auto: "auto";
68
+ immediately: "immediately";
69
+ at_runtime: "at_runtime";
70
+ }>>;
52
71
  verbosity: import("zod").ZodOptional<import("zod").ZodNumber>;
53
72
  clipLModelSrc: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
54
73
  src: import("zod").ZodString;
@@ -63,21 +82,26 @@ export declare const diffusionPlugin: {
63
82
  sha256Checksum: import("zod").ZodOptional<import("zod").ZodString>;
64
83
  addon: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
65
84
  embeddings: "embeddings";
85
+ diffusion: "diffusion";
86
+ tts: "tts";
87
+ ocr: "ocr";
88
+ vla: "vla";
66
89
  "llamacpp-completion": "llamacpp-completion";
67
90
  "whispercpp-transcription": "whispercpp-transcription";
68
91
  "llamacpp-embedding": "llamacpp-embedding";
69
92
  "nmtcpp-translation": "nmtcpp-translation";
70
93
  "onnx-tts": "onnx-tts";
94
+ "tts-ggml": "tts-ggml";
71
95
  "parakeet-transcription": "parakeet-transcription";
72
96
  "onnx-ocr": "onnx-ocr";
73
97
  "sdcpp-generation": "sdcpp-generation";
98
+ "ggml-vla": "ggml-vla";
99
+ "ggml-classification": "ggml-classification";
74
100
  llm: "llm";
75
101
  whisper: "whisper";
76
102
  nmt: "nmt";
77
103
  parakeet: "parakeet";
78
- tts: "tts";
79
- ocr: "ocr";
80
- diffusion: "diffusion";
104
+ classification: "classification";
81
105
  }>, import("zod").ZodLiteral<"vad">]>>;
82
106
  }, import("zod/v4/core").$strip>]>>;
83
107
  clipGModelSrc: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
@@ -93,21 +117,26 @@ export declare const diffusionPlugin: {
93
117
  sha256Checksum: import("zod").ZodOptional<import("zod").ZodString>;
94
118
  addon: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
95
119
  embeddings: "embeddings";
120
+ diffusion: "diffusion";
121
+ tts: "tts";
122
+ ocr: "ocr";
123
+ vla: "vla";
96
124
  "llamacpp-completion": "llamacpp-completion";
97
125
  "whispercpp-transcription": "whispercpp-transcription";
98
126
  "llamacpp-embedding": "llamacpp-embedding";
99
127
  "nmtcpp-translation": "nmtcpp-translation";
100
128
  "onnx-tts": "onnx-tts";
129
+ "tts-ggml": "tts-ggml";
101
130
  "parakeet-transcription": "parakeet-transcription";
102
131
  "onnx-ocr": "onnx-ocr";
103
132
  "sdcpp-generation": "sdcpp-generation";
133
+ "ggml-vla": "ggml-vla";
134
+ "ggml-classification": "ggml-classification";
104
135
  llm: "llm";
105
136
  whisper: "whisper";
106
137
  nmt: "nmt";
107
138
  parakeet: "parakeet";
108
- tts: "tts";
109
- ocr: "ocr";
110
- diffusion: "diffusion";
139
+ classification: "classification";
111
140
  }>, import("zod").ZodLiteral<"vad">]>>;
112
141
  }, import("zod/v4/core").$strip>]>>;
113
142
  t5XxlModelSrc: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
@@ -123,21 +152,26 @@ export declare const diffusionPlugin: {
123
152
  sha256Checksum: import("zod").ZodOptional<import("zod").ZodString>;
124
153
  addon: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
125
154
  embeddings: "embeddings";
155
+ diffusion: "diffusion";
156
+ tts: "tts";
157
+ ocr: "ocr";
158
+ vla: "vla";
126
159
  "llamacpp-completion": "llamacpp-completion";
127
160
  "whispercpp-transcription": "whispercpp-transcription";
128
161
  "llamacpp-embedding": "llamacpp-embedding";
129
162
  "nmtcpp-translation": "nmtcpp-translation";
130
163
  "onnx-tts": "onnx-tts";
164
+ "tts-ggml": "tts-ggml";
131
165
  "parakeet-transcription": "parakeet-transcription";
132
166
  "onnx-ocr": "onnx-ocr";
133
167
  "sdcpp-generation": "sdcpp-generation";
168
+ "ggml-vla": "ggml-vla";
169
+ "ggml-classification": "ggml-classification";
134
170
  llm: "llm";
135
171
  whisper: "whisper";
136
172
  nmt: "nmt";
137
173
  parakeet: "parakeet";
138
- tts: "tts";
139
- ocr: "ocr";
140
- diffusion: "diffusion";
174
+ classification: "classification";
141
175
  }>, import("zod").ZodLiteral<"vad">]>>;
142
176
  }, import("zod/v4/core").$strip>]>>;
143
177
  llmModelSrc: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
@@ -153,21 +187,26 @@ export declare const diffusionPlugin: {
153
187
  sha256Checksum: import("zod").ZodOptional<import("zod").ZodString>;
154
188
  addon: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
155
189
  embeddings: "embeddings";
190
+ diffusion: "diffusion";
191
+ tts: "tts";
192
+ ocr: "ocr";
193
+ vla: "vla";
156
194
  "llamacpp-completion": "llamacpp-completion";
157
195
  "whispercpp-transcription": "whispercpp-transcription";
158
196
  "llamacpp-embedding": "llamacpp-embedding";
159
197
  "nmtcpp-translation": "nmtcpp-translation";
160
198
  "onnx-tts": "onnx-tts";
199
+ "tts-ggml": "tts-ggml";
161
200
  "parakeet-transcription": "parakeet-transcription";
162
201
  "onnx-ocr": "onnx-ocr";
163
202
  "sdcpp-generation": "sdcpp-generation";
203
+ "ggml-vla": "ggml-vla";
204
+ "ggml-classification": "ggml-classification";
164
205
  llm: "llm";
165
206
  whisper: "whisper";
166
207
  nmt: "nmt";
167
208
  parakeet: "parakeet";
168
- tts: "tts";
169
- ocr: "ocr";
170
- diffusion: "diffusion";
209
+ classification: "classification";
171
210
  }>, import("zod").ZodLiteral<"vad">]>>;
172
211
  }, import("zod/v4/core").$strip>]>>;
173
212
  vaeModelSrc: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
@@ -183,23 +222,105 @@ export declare const diffusionPlugin: {
183
222
  sha256Checksum: import("zod").ZodOptional<import("zod").ZodString>;
184
223
  addon: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
185
224
  embeddings: "embeddings";
225
+ diffusion: "diffusion";
226
+ tts: "tts";
227
+ ocr: "ocr";
228
+ vla: "vla";
186
229
  "llamacpp-completion": "llamacpp-completion";
187
230
  "whispercpp-transcription": "whispercpp-transcription";
188
231
  "llamacpp-embedding": "llamacpp-embedding";
189
232
  "nmtcpp-translation": "nmtcpp-translation";
190
233
  "onnx-tts": "onnx-tts";
234
+ "tts-ggml": "tts-ggml";
191
235
  "parakeet-transcription": "parakeet-transcription";
192
236
  "onnx-ocr": "onnx-ocr";
193
237
  "sdcpp-generation": "sdcpp-generation";
238
+ "ggml-vla": "ggml-vla";
239
+ "ggml-classification": "ggml-classification";
194
240
  llm: "llm";
195
241
  whisper: "whisper";
196
242
  nmt: "nmt";
197
243
  parakeet: "parakeet";
244
+ classification: "classification";
245
+ }>, import("zod").ZodLiteral<"vad">]>>;
246
+ }, import("zod/v4/core").$strip>]>>;
247
+ highNoiseDiffusionModelSrc: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
248
+ src: import("zod").ZodString;
249
+ name: import("zod").ZodOptional<import("zod").ZodString>;
250
+ modelId: import("zod").ZodOptional<import("zod").ZodString>;
251
+ registryPath: import("zod").ZodOptional<import("zod").ZodString>;
252
+ registrySource: import("zod").ZodOptional<import("zod").ZodString>;
253
+ blobCoreKey: import("zod").ZodOptional<import("zod").ZodString>;
254
+ blobIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
255
+ engine: import("zod").ZodOptional<import("zod").ZodString>;
256
+ expectedSize: import("zod").ZodOptional<import("zod").ZodNumber>;
257
+ sha256Checksum: import("zod").ZodOptional<import("zod").ZodString>;
258
+ addon: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
259
+ embeddings: "embeddings";
260
+ diffusion: "diffusion";
198
261
  tts: "tts";
199
262
  ocr: "ocr";
200
- diffusion: "diffusion";
263
+ vla: "vla";
264
+ "llamacpp-completion": "llamacpp-completion";
265
+ "whispercpp-transcription": "whispercpp-transcription";
266
+ "llamacpp-embedding": "llamacpp-embedding";
267
+ "nmtcpp-translation": "nmtcpp-translation";
268
+ "onnx-tts": "onnx-tts";
269
+ "tts-ggml": "tts-ggml";
270
+ "parakeet-transcription": "parakeet-transcription";
271
+ "onnx-ocr": "onnx-ocr";
272
+ "sdcpp-generation": "sdcpp-generation";
273
+ "ggml-vla": "ggml-vla";
274
+ "ggml-classification": "ggml-classification";
275
+ llm: "llm";
276
+ whisper: "whisper";
277
+ nmt: "nmt";
278
+ parakeet: "parakeet";
279
+ classification: "classification";
201
280
  }>, import("zod").ZodLiteral<"vad">]>>;
202
281
  }, import("zod/v4/core").$strip>]>>;
282
+ upscaler: import("zod").ZodOptional<import("zod").ZodObject<{
283
+ type: import("zod").ZodOptional<import("zod").ZodLiteral<"esrgan">>;
284
+ model_src: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodObject<{
285
+ src: import("zod").ZodString;
286
+ name: import("zod").ZodOptional<import("zod").ZodString>;
287
+ modelId: import("zod").ZodOptional<import("zod").ZodString>;
288
+ registryPath: import("zod").ZodOptional<import("zod").ZodString>;
289
+ registrySource: import("zod").ZodOptional<import("zod").ZodString>;
290
+ blobCoreKey: import("zod").ZodOptional<import("zod").ZodString>;
291
+ blobIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
292
+ engine: import("zod").ZodOptional<import("zod").ZodString>;
293
+ expectedSize: import("zod").ZodOptional<import("zod").ZodNumber>;
294
+ sha256Checksum: import("zod").ZodOptional<import("zod").ZodString>;
295
+ addon: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodEnum<{
296
+ embeddings: "embeddings";
297
+ diffusion: "diffusion";
298
+ tts: "tts";
299
+ ocr: "ocr";
300
+ vla: "vla";
301
+ "llamacpp-completion": "llamacpp-completion";
302
+ "whispercpp-transcription": "whispercpp-transcription";
303
+ "llamacpp-embedding": "llamacpp-embedding";
304
+ "nmtcpp-translation": "nmtcpp-translation";
305
+ "onnx-tts": "onnx-tts";
306
+ "tts-ggml": "tts-ggml";
307
+ "parakeet-transcription": "parakeet-transcription";
308
+ "onnx-ocr": "onnx-ocr";
309
+ "sdcpp-generation": "sdcpp-generation";
310
+ "ggml-vla": "ggml-vla";
311
+ "ggml-classification": "ggml-classification";
312
+ llm: "llm";
313
+ whisper: "whisper";
314
+ nmt: "nmt";
315
+ parakeet: "parakeet";
316
+ classification: "classification";
317
+ }>, import("zod").ZodLiteral<"vad">]>>;
318
+ }, import("zod/v4/core").$strip>]>>;
319
+ tile_size: import("zod").ZodOptional<import("zod").ZodNumber>;
320
+ direct: import("zod").ZodOptional<import("zod").ZodBoolean>;
321
+ offload_params_to_cpu: import("zod").ZodOptional<import("zod").ZodBoolean>;
322
+ threads: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodLiteral<-1>, import("zod").ZodNumber]>>;
323
+ }, import("zod/v4/core").$strict>>;
203
324
  }, import("zod/v4/core").$strip>;
204
325
  resolveConfig(cfg: SdcppConfig, ctx: ResolveContext): Promise<ResolveResult<SdcppConfig, DiffusionArtifactKey>>;
205
326
  createModel(params: CreateModelParams): PluginModelResult;
@@ -248,7 +369,14 @@ export declare const diffusionPlugin: {
248
369
  vae_tiling: import("zod").ZodOptional<import("zod").ZodBoolean>;
249
370
  cache_preset: import("zod").ZodOptional<import("zod").ZodString>;
250
371
  init_image: import("zod").ZodOptional<import("zod").ZodString>;
372
+ init_images: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
373
+ increase_ref_index: import("zod").ZodOptional<import("zod").ZodBoolean>;
374
+ auto_resize_ref_image: import("zod").ZodOptional<import("zod").ZodBoolean>;
375
+ lora: import("zod").ZodOptional<import("zod").ZodString>;
251
376
  strength: import("zod").ZodOptional<import("zod").ZodNumber>;
377
+ upscale: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodBoolean, import("zod").ZodObject<{
378
+ repeats: import("zod").ZodOptional<import("zod").ZodNumber>;
379
+ }, import("zod/v4/core").$strict>]>>;
252
380
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
253
381
  type: import("zod").ZodLiteral<"diffusionStream">;
254
382
  step: import("zod").ZodOptional<import("zod").ZodNumber>;
@@ -271,6 +399,151 @@ export declare const diffusionPlugin: {
271
399
  seed: import("zod").ZodOptional<import("zod").ZodNumber>;
272
400
  }, import("zod/v4/core").$strip>>;
273
401
  }, import("zod/v4/core").$strip>>;
402
+ videoStream: import("../../../../schemas/index").PluginHandlerDefinition<import("zod").ZodObject<{
403
+ modelId: import("zod").ZodString;
404
+ requestId: import("zod").ZodOptional<import("zod").ZodString>;
405
+ mode: import("zod").ZodEnum<{
406
+ txt2vid: "txt2vid";
407
+ }>;
408
+ prompt: import("zod").ZodString;
409
+ negative_prompt: import("zod").ZodOptional<import("zod").ZodString>;
410
+ width: import("zod").ZodOptional<import("zod").ZodNumber>;
411
+ height: import("zod").ZodOptional<import("zod").ZodNumber>;
412
+ video_frames: import("zod").ZodOptional<import("zod").ZodNumber>;
413
+ fps: import("zod").ZodOptional<import("zod").ZodNumber>;
414
+ seed: import("zod").ZodOptional<import("zod").ZodNumber>;
415
+ steps: import("zod").ZodOptional<import("zod").ZodNumber>;
416
+ sampling_method: import("zod").ZodOptional<import("zod").ZodEnum<{
417
+ euler: "euler";
418
+ euler_a: "euler_a";
419
+ heun: "heun";
420
+ dpm2: "dpm2";
421
+ "dpm++2m": "dpm++2m";
422
+ "dpm++2mv2": "dpm++2mv2";
423
+ "dpm++2s_a": "dpm++2s_a";
424
+ lcm: "lcm";
425
+ ipndm: "ipndm";
426
+ ipndm_v: "ipndm_v";
427
+ ddim_trailing: "ddim_trailing";
428
+ tcd: "tcd";
429
+ res_multistep: "res_multistep";
430
+ res_2s: "res_2s";
431
+ }>>;
432
+ scheduler: import("zod").ZodOptional<import("zod").ZodEnum<{
433
+ lcm: "lcm";
434
+ discrete: "discrete";
435
+ karras: "karras";
436
+ exponential: "exponential";
437
+ ays: "ays";
438
+ gits: "gits";
439
+ sgm_uniform: "sgm_uniform";
440
+ simple: "simple";
441
+ smoothstep: "smoothstep";
442
+ kl_optimal: "kl_optimal";
443
+ bong_tangent: "bong_tangent";
444
+ }>>;
445
+ cfg_scale: import("zod").ZodOptional<import("zod").ZodNumber>;
446
+ flow_shift: import("zod").ZodOptional<import("zod").ZodNumber>;
447
+ high_noise_steps: import("zod").ZodOptional<import("zod").ZodNumber>;
448
+ high_noise_sampler: import("zod").ZodOptional<import("zod").ZodEnum<{
449
+ euler: "euler";
450
+ euler_a: "euler_a";
451
+ heun: "heun";
452
+ dpm2: "dpm2";
453
+ "dpm++2m": "dpm++2m";
454
+ "dpm++2mv2": "dpm++2mv2";
455
+ "dpm++2s_a": "dpm++2s_a";
456
+ lcm: "lcm";
457
+ ipndm: "ipndm";
458
+ ipndm_v: "ipndm_v";
459
+ ddim_trailing: "ddim_trailing";
460
+ tcd: "tcd";
461
+ res_multistep: "res_multistep";
462
+ res_2s: "res_2s";
463
+ }>>;
464
+ high_noise_scheduler: import("zod").ZodOptional<import("zod").ZodEnum<{
465
+ lcm: "lcm";
466
+ discrete: "discrete";
467
+ karras: "karras";
468
+ exponential: "exponential";
469
+ ays: "ays";
470
+ gits: "gits";
471
+ sgm_uniform: "sgm_uniform";
472
+ simple: "simple";
473
+ smoothstep: "smoothstep";
474
+ kl_optimal: "kl_optimal";
475
+ bong_tangent: "bong_tangent";
476
+ }>>;
477
+ high_noise_cfg_scale: import("zod").ZodOptional<import("zod").ZodNumber>;
478
+ high_noise_flow_shift: import("zod").ZodOptional<import("zod").ZodNumber>;
479
+ moe_boundary: import("zod").ZodOptional<import("zod").ZodNumber>;
480
+ vace_strength: import("zod").ZodOptional<import("zod").ZodNumber>;
481
+ control_frames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
482
+ vae_tiling: import("zod").ZodOptional<import("zod").ZodBoolean>;
483
+ vae_tile_size: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodString]>>;
484
+ vae_tile_overlap: import("zod").ZodOptional<import("zod").ZodNumber>;
485
+ cache_mode: import("zod").ZodOptional<import("zod").ZodEnum<{
486
+ disabled: "disabled";
487
+ easycache: "easycache";
488
+ ucache: "ucache";
489
+ dbcache: "dbcache";
490
+ taylorseer: "taylorseer";
491
+ "cache-dit": "cache-dit";
492
+ }>>;
493
+ cache_preset: import("zod").ZodOptional<import("zod").ZodString>;
494
+ cache_threshold: import("zod").ZodOptional<import("zod").ZodNumber>;
495
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
496
+ type: import("zod").ZodLiteral<"videoStream">;
497
+ step: import("zod").ZodOptional<import("zod").ZodNumber>;
498
+ totalSteps: import("zod").ZodOptional<import("zod").ZodNumber>;
499
+ elapsedMs: import("zod").ZodOptional<import("zod").ZodNumber>;
500
+ data: import("zod").ZodOptional<import("zod").ZodString>;
501
+ outputIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
502
+ done: import("zod").ZodOptional<import("zod").ZodBoolean>;
503
+ stats: import("zod").ZodOptional<import("zod").ZodObject<{
504
+ seed: import("zod").ZodOptional<import("zod").ZodNumber>;
505
+ modelLoadMs: import("zod").ZodOptional<import("zod").ZodNumber>;
506
+ generationMs: import("zod").ZodOptional<import("zod").ZodNumber>;
507
+ totalGenerationMs: import("zod").ZodOptional<import("zod").ZodNumber>;
508
+ totalWallMs: import("zod").ZodOptional<import("zod").ZodNumber>;
509
+ totalSteps: import("zod").ZodOptional<import("zod").ZodNumber>;
510
+ totalGenerations: import("zod").ZodOptional<import("zod").ZodNumber>;
511
+ totalImages: import("zod").ZodOptional<import("zod").ZodNumber>;
512
+ totalPixels: import("zod").ZodOptional<import("zod").ZodNumber>;
513
+ width: import("zod").ZodOptional<import("zod").ZodNumber>;
514
+ height: import("zod").ZodOptional<import("zod").ZodNumber>;
515
+ totalVideos: import("zod").ZodOptional<import("zod").ZodNumber>;
516
+ totalVideoFrames: import("zod").ZodOptional<import("zod").ZodNumber>;
517
+ videoFrames: import("zod").ZodOptional<import("zod").ZodNumber>;
518
+ fps: import("zod").ZodOptional<import("zod").ZodNumber>;
519
+ }, import("zod/v4/core").$strip>>;
520
+ }, import("zod/v4/core").$strip>>;
521
+ upscaleStream: import("../../../../schemas/index").PluginHandlerDefinition<import("zod").ZodObject<{
522
+ modelId: import("zod").ZodString;
523
+ image: import("zod").ZodString;
524
+ repeats: import("zod").ZodOptional<import("zod").ZodNumber>;
525
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
526
+ type: import("zod").ZodLiteral<"upscaleStream">;
527
+ data: import("zod").ZodOptional<import("zod").ZodString>;
528
+ outputIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
529
+ done: import("zod").ZodOptional<import("zod").ZodBoolean>;
530
+ stats: import("zod").ZodOptional<import("zod").ZodObject<{
531
+ modelLoadMs: import("zod").ZodOptional<import("zod").ZodNumber>;
532
+ upscaleMs: import("zod").ZodOptional<import("zod").ZodNumber>;
533
+ totalUpscaleMs: import("zod").ZodOptional<import("zod").ZodNumber>;
534
+ totalWallMs: import("zod").ZodOptional<import("zod").ZodNumber>;
535
+ totalUpscales: import("zod").ZodOptional<import("zod").ZodNumber>;
536
+ totalImages: import("zod").ZodOptional<import("zod").ZodNumber>;
537
+ totalPixels: import("zod").ZodOptional<import("zod").ZodNumber>;
538
+ width: import("zod").ZodOptional<import("zod").ZodNumber>;
539
+ height: import("zod").ZodOptional<import("zod").ZodNumber>;
540
+ repeats: import("zod").ZodOptional<import("zod").ZodNumber>;
541
+ backendDevice: import("zod").ZodOptional<import("zod").ZodEnum<{
542
+ cpu: "cpu";
543
+ gpu: "gpu";
544
+ }>>;
545
+ }, import("zod/v4/core").$strip>>;
546
+ }, import("zod/v4/core").$strip>>;
274
547
  };
275
548
  logging: {
276
549
  module: import("@qvac/diffusion-cpp/addonLogging").AddonLogging;
@@ -1,27 +1,88 @@
1
- import ImgStableDiffusion, {} from "@qvac/diffusion-cpp";
1
+ import ImgStableDiffusion, { EsrganUpscaler, VideoStableDiffusion, } from "@qvac/diffusion-cpp";
2
2
  import addonLogging from "@qvac/diffusion-cpp/addonLogging.js";
3
- import { definePlugin, defineHandler, sdcppConfigSchema, diffusionRequestSchema, diffusionStreamResponseSchema, ModelType, ADDON_DIFFUSION, } from "../../../../schemas/index.js";
3
+ import { definePlugin, defineHandler, sdcppConfigSchema, diffusionRequestSchema, diffusionStreamResponseSchema, videoRequestSchema, videoStreamResponseSchema, upscaleRequestSchema, upscaleStreamResponseSchema, ModelType, ADDON_DIFFUSION, } from "../../../../schemas/index.js";
4
4
  import { createStreamLogger, registerAddonLogger } from "../../../../logging/index.js";
5
+ import { ModelLoadFailedError } from "../../../../utils/errors-server.js";
5
6
  import { diffusion } from "./ops/diffusion.js";
7
+ import { video } from "./ops/video.js";
8
+ import { upscale } from "./ops/upscale.js";
9
+ // Single source of truth for `SdcppConfig.upscaler.*` → addon-config key
10
+ // mapping. Used by both the diffusion-mode (post-generation upscaler) and the
11
+ // standalone-upscale-mode branches; keeping the mapping in one place avoids
12
+ // drift if `@qvac/diffusion-cpp` ever adds or renames an `upscaler_*` key.
13
+ function flattenUpscalerKeys(upscaler) {
14
+ if (!upscaler)
15
+ return {};
16
+ return {
17
+ ...(upscaler.tile_size !== undefined && {
18
+ upscaler_tile_size: upscaler.tile_size,
19
+ }),
20
+ ...(upscaler.direct !== undefined && {
21
+ upscaler_direct: upscaler.direct,
22
+ }),
23
+ ...(upscaler.offload_params_to_cpu !== undefined && {
24
+ upscaler_offload_params_to_cpu: upscaler.offload_params_to_cpu,
25
+ }),
26
+ ...(upscaler.threads !== undefined && {
27
+ upscaler_threads: upscaler.threads,
28
+ }),
29
+ };
30
+ }
31
+ // `mode: "upscale"` builds an EsrganUpscaler directly (not via SdCtx), so the
32
+ // top-level `device` field has to be forwarded explicitly — it is not part of
33
+ // the `upscaler.*` block.
34
+ function toEsrganAddonConfig(config) {
35
+ return {
36
+ ...flattenUpscalerKeys(config.upscaler),
37
+ ...(config.device !== undefined && { device: config.device }),
38
+ ...(config.verbosity !== undefined && { verbosity: config.verbosity }),
39
+ };
40
+ }
41
+ /**
42
+ * Stable-diffusion.cpp plugin for image diffusion, upscaling, and Wan video.
43
+ *
44
+ * Video mode is supported on React Native, but the SDK-published Wan model
45
+ * set is too large to load on typical mobile devices. Mobile apps should
46
+ * pass a `delegate` to `loadModel(...)` to run video generation on a
47
+ * desktop peer instead of loading the model on-device.
48
+ */
6
49
  export const diffusionPlugin = definePlugin({
7
50
  modelType: ModelType.sdcppGeneration,
8
- displayName: "Image Generation (stable-diffusion.cpp)",
51
+ displayName: "Image Generation & Upscaling (stable-diffusion.cpp)",
9
52
  addonPackage: ADDON_DIFFUSION,
10
53
  loadConfigSchema: sdcppConfigSchema,
11
54
  async resolveConfig(cfg, ctx) {
12
- const { clipLModelSrc, clipGModelSrc, t5XxlModelSrc, llmModelSrc, vaeModelSrc, ...runtimeConfig } = cfg;
13
- const sources = { clipLModelSrc, clipGModelSrc, t5XxlModelSrc, llmModelSrc, vaeModelSrc };
55
+ // Standalone-upscaler mode never references auxiliary models: the primary
56
+ // modelSrc IS the ESRGAN file. Skip resolution to avoid downloading
57
+ // unused encoders/VAEs and to keep load fast.
58
+ if (cfg.mode === "upscale") {
59
+ return { config: cfg };
60
+ }
61
+ const { clipLModelSrc, clipGModelSrc, t5XxlModelSrc, llmModelSrc, vaeModelSrc, highNoiseDiffusionModelSrc, upscaler, ...rest } = cfg;
62
+ // Video jobs do not apply ESRGAN so we drop the whole `upscaler` object.
63
+ const effectiveUpscaler = cfg.mode === "video" ? undefined : upscaler;
64
+ const { model_src: esrganModelSrc, ...upscalerRuntime } = effectiveUpscaler ?? {};
65
+ const runtimeConfig = {
66
+ ...rest,
67
+ ...(effectiveUpscaler && { upscaler: upscalerRuntime }),
68
+ };
69
+ const sources = {
70
+ clipLModelSrc, clipGModelSrc, t5XxlModelSrc,
71
+ llmModelSrc, vaeModelSrc, highNoiseDiffusionModelSrc, esrganModelSrc,
72
+ };
14
73
  const hasSources = Object.values(sources).some(Boolean);
15
74
  if (!hasSources) {
16
75
  return { config: runtimeConfig };
17
76
  }
18
77
  const resolve = ctx.resolveModelPath;
19
- const [clipLModelPath, clipGModelPath, t5XxlModelPath, llmModelPath, vaeModelPath] = await Promise.all([
78
+ const [clipLModelPath, clipGModelPath, t5XxlModelPath, llmModelPath, vaeModelPath, highNoiseDiffusionModelPath, esrganModelPath,] = await Promise.all([
20
79
  clipLModelSrc ? resolve(clipLModelSrc) : undefined,
21
80
  clipGModelSrc ? resolve(clipGModelSrc) : undefined,
22
81
  t5XxlModelSrc ? resolve(t5XxlModelSrc) : undefined,
23
82
  llmModelSrc ? resolve(llmModelSrc) : undefined,
24
83
  vaeModelSrc ? resolve(vaeModelSrc) : undefined,
84
+ highNoiseDiffusionModelSrc ? resolve(highNoiseDiffusionModelSrc) : undefined,
85
+ esrganModelSrc ? resolve(esrganModelSrc) : undefined,
25
86
  ]);
26
87
  return {
27
88
  config: runtimeConfig,
@@ -31,14 +92,67 @@ export const diffusionPlugin = definePlugin({
31
92
  ...(t5XxlModelPath && { t5XxlModelPath }),
32
93
  ...(llmModelPath && { llmModelPath }),
33
94
  ...(vaeModelPath && { vaeModelPath }),
95
+ ...(highNoiseDiffusionModelPath && { highNoiseDiffusionModelPath }),
96
+ ...(esrganModelPath && { esrganModelPath }),
34
97
  },
35
98
  };
36
99
  },
37
100
  createModel(params) {
38
101
  const { modelId, modelPath, modelConfig, artifacts } = params;
39
102
  const config = (modelConfig ?? {});
103
+ // In diffusion mode the ESRGAN file (when post-generation upscale is
104
+ // wanted) must come from upscaler.model_src — the primary modelPath is
105
+ // the main diffusion checkpoint. Reject early with a clear error
106
+ // instead of letting the native addon fail mid-load. Done before any
107
+ // logger / native side-effects so callers can recover cleanly.
108
+ if (config.mode === "diffusion" &&
109
+ config.upscaler !== undefined &&
110
+ !artifacts?.["esrganModelPath"]) {
111
+ throw new ModelLoadFailedError("modelConfig.upscaler.model_src is required when modelConfig.upscaler " +
112
+ "is set in diffusion mode. Provide the ESRGAN model, omit the " +
113
+ "upscaler block, or switch to modelConfig.mode = 'upscale' to load " +
114
+ "a standalone upscaler.");
115
+ }
40
116
  const logger = createStreamLogger(modelId, ModelType.sdcppGeneration);
41
117
  registerAddonLogger(modelId, ModelType.sdcppGeneration, logger);
118
+ if (config.mode === "upscale") {
119
+ const model = new EsrganUpscaler({
120
+ files: { esrgan: modelPath },
121
+ config: toEsrganAddonConfig(config),
122
+ logger,
123
+ opts: { stats: true },
124
+ });
125
+ return { model };
126
+ }
127
+ if (config.mode === "video") {
128
+ if (!artifacts?.["t5XxlModelPath"]) {
129
+ throw new ModelLoadFailedError("modelConfig.t5XxlModelSrc is required in video mode. " +
130
+ "Provide the Wan text encoder model before loading the video pipeline.");
131
+ }
132
+ if (!artifacts?.["vaeModelPath"]) {
133
+ throw new ModelLoadFailedError("modelConfig.vaeModelSrc is required in video mode. " +
134
+ "Provide the Wan VAE model before loading the video pipeline.");
135
+ }
136
+ const files = {
137
+ model: modelPath,
138
+ t5Xxl: artifacts["t5XxlModelPath"],
139
+ vae: artifacts["vaeModelPath"],
140
+ ...(artifacts?.["highNoiseDiffusionModelPath"] && {
141
+ highNoiseDiffusionModel: artifacts["highNoiseDiffusionModelPath"],
142
+ }),
143
+ ...(artifacts?.["esrganModelPath"] && { esrgan: artifacts["esrganModelPath"] }),
144
+ };
145
+ /* eslint-disable @typescript-eslint/no-unused-vars */
146
+ const { clipLModelSrc, clipGModelSrc, t5XxlModelSrc, llmModelSrc, vaeModelSrc, highNoiseDiffusionModelSrc, upscaler, mode, ...rest } = config;
147
+ /* eslint-enable @typescript-eslint/no-unused-vars */
148
+ const model = new VideoStableDiffusion({
149
+ files,
150
+ config: rest,
151
+ logger,
152
+ opts: { stats: true },
153
+ });
154
+ return { model };
155
+ }
42
156
  const files = {
43
157
  model: modelPath,
44
158
  ...(artifacts?.["clipLModelPath"] && { clipL: artifacts["clipLModelPath"] }),
@@ -46,10 +160,20 @@ export const diffusionPlugin = definePlugin({
46
160
  ...(artifacts?.["t5XxlModelPath"] && { t5Xxl: artifacts["t5XxlModelPath"] }),
47
161
  ...(artifacts?.["llmModelPath"] && { llm: artifacts["llmModelPath"] }),
48
162
  ...(artifacts?.["vaeModelPath"] && { vae: artifacts["vaeModelPath"] }),
163
+ ...(artifacts?.["esrganModelPath"] && { esrgan: artifacts["esrganModelPath"] }),
164
+ };
165
+ // `mode` is consumed by this plugin to select the model class above; the
166
+ // stable-diffusion.cpp native config does not understand it. Strip it
167
+ // before forwarding `rest` to the addon.
168
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
169
+ const { upscaler, mode, ...rest } = config;
170
+ const addonConfig = {
171
+ ...rest,
172
+ ...flattenUpscalerKeys(upscaler),
49
173
  };
50
174
  const model = new ImgStableDiffusion({
51
175
  files,
52
- config: config,
176
+ config: addonConfig,
53
177
  logger,
54
178
  opts: { stats: true },
55
179
  });
@@ -60,8 +184,27 @@ export const diffusionPlugin = definePlugin({
60
184
  requestSchema: diffusionRequestSchema,
61
185
  responseSchema: diffusionStreamResponseSchema,
62
186
  streaming: true,
187
+ // sdcpp diffusion exposes a model-wide hard cancel — compute
188
+ // is interrupted on the currently-running generation.
189
+ cancel: { scope: "model", hard: true },
63
190
  handler: diffusion,
64
191
  }),
192
+ videoStream: defineHandler({
193
+ requestSchema: videoRequestSchema,
194
+ responseSchema: videoStreamResponseSchema,
195
+ streaming: true,
196
+ cancel: { scope: "model", hard: true },
197
+ handler: video,
198
+ }),
199
+ upscaleStream: defineHandler({
200
+ requestSchema: upscaleRequestSchema,
201
+ responseSchema: upscaleStreamResponseSchema,
202
+ streaming: true,
203
+ // sdcpp upscale path has no cancel surface today — SDK falls
204
+ // back to soft-cancel.
205
+ cancel: { scope: "none" },
206
+ handler: upscale,
207
+ }),
65
208
  },
66
209
  logging: {
67
210
  module: addonLogging,