@qvac/sdk 0.14.0 → 0.15.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 (798) hide show
  1. package/NOTICE +27 -11
  2. package/README.md +34 -35
  3. package/dist/client/api/batch-completion.d.ts +15 -0
  4. package/dist/client/api/batch-completion.js +332 -0
  5. package/dist/client/api/bci-transcribe.d.ts +1 -1
  6. package/dist/client/api/bci-transcribe.js +31 -31
  7. package/dist/client/api/cancel.d.ts +1 -1
  8. package/dist/client/api/cancel.js +18 -18
  9. package/dist/client/api/classify.d.ts +1 -1
  10. package/dist/client/api/classify.js +9 -6
  11. package/dist/client/api/client-request-id.js +1 -1
  12. package/dist/client/api/completion-stream.d.ts +3 -3
  13. package/dist/client/api/completion-stream.js +18 -18
  14. package/dist/client/api/delete-cache.js +9 -9
  15. package/dist/client/api/diffusion.d.ts +1 -1
  16. package/dist/client/api/diffusion.js +17 -11
  17. package/dist/client/api/download-asset.d.ts +1 -1
  18. package/dist/client/api/download-asset.js +11 -11
  19. package/dist/client/api/embed.d.ts +1 -1
  20. package/dist/client/api/embed.js +10 -10
  21. package/dist/client/api/finetune.d.ts +1 -1
  22. package/dist/client/api/finetune.js +25 -27
  23. package/dist/client/api/get-loaded-model-info.d.ts +2 -2
  24. package/dist/client/api/get-loaded-model-info.js +8 -8
  25. package/dist/client/api/get-model-info.d.ts +1 -1
  26. package/dist/client/api/get-model-info.js +7 -7
  27. package/dist/client/api/heartbeat.d.ts +2 -2
  28. package/dist/client/api/heartbeat.js +7 -7
  29. package/dist/client/api/index.d.ts +33 -32
  30. package/dist/client/api/index.js +33 -32
  31. package/dist/client/api/invoke-plugin.d.ts +1 -1
  32. package/dist/client/api/invoke-plugin.js +10 -10
  33. package/dist/client/api/load-model.d.ts +1 -1
  34. package/dist/client/api/load-model.js +32 -32
  35. package/dist/client/api/logging-stream.d.ts +1 -1
  36. package/dist/client/api/logging-stream.js +6 -6
  37. package/dist/client/api/ocr.d.ts +1 -1
  38. package/dist/client/api/ocr.js +11 -11
  39. package/dist/client/api/provide.d.ts +1 -1
  40. package/dist/client/api/provide.js +7 -7
  41. package/dist/client/api/rag.d.ts +1 -1
  42. package/dist/client/api/rag.js +65 -66
  43. package/dist/client/api/registry.d.ts +1 -1
  44. package/dist/client/api/registry.js +8 -8
  45. package/dist/client/api/resume.js +5 -5
  46. package/dist/client/api/state.d.ts +1 -1
  47. package/dist/client/api/state.js +5 -5
  48. package/dist/client/api/stop-provider.js +6 -6
  49. package/dist/client/api/subscribe-logs.d.ts +1 -1
  50. package/dist/client/api/subscribe-logs.js +3 -3
  51. package/dist/client/api/suspend.js +5 -5
  52. package/dist/client/api/text-to-speech.d.ts +1 -1
  53. package/dist/client/api/text-to-speech.js +37 -39
  54. package/dist/client/api/transcribe.d.ts +2 -2
  55. package/dist/client/api/transcribe.js +44 -45
  56. package/dist/client/api/translate.d.ts +1 -1
  57. package/dist/client/api/translate.js +14 -14
  58. package/dist/client/api/unload-model.d.ts +1 -1
  59. package/dist/client/api/unload-model.js +11 -11
  60. package/dist/client/api/upscale.d.ts +1 -1
  61. package/dist/client/api/upscale.js +9 -9
  62. package/dist/client/api/video.d.ts +1 -1
  63. package/dist/client/api/video.js +16 -14
  64. package/dist/client/api/vla-helpers.d.ts +2 -2
  65. package/dist/client/api/vla-helpers.js +6 -11
  66. package/dist/client/api/vla.d.ts +1 -1
  67. package/dist/client/api/vla.js +13 -13
  68. package/dist/client/config-loader/config-utils.d.ts +1 -1
  69. package/dist/client/config-loader/config-utils.js +3 -3
  70. package/dist/client/config-loader/resolve-config.bare.d.ts +1 -1
  71. package/dist/client/config-loader/resolve-config.bare.js +11 -11
  72. package/dist/client/config-loader/resolve-config.expo.d.ts +1 -1
  73. package/dist/client/config-loader/resolve-config.expo.js +6 -6
  74. package/dist/client/config-loader/resolve-config.node.d.ts +1 -1
  75. package/dist/client/config-loader/resolve-config.node.js +27 -27
  76. package/dist/client/index.d.ts +1 -1
  77. package/dist/client/index.js +1 -1
  78. package/dist/client/init-hooks.d.ts +1 -1
  79. package/dist/client/init-hooks.js +12 -12
  80. package/dist/client/logging-stream-registry.d.ts +1 -1
  81. package/dist/client/logging-stream-registry.js +6 -6
  82. package/dist/client/parse-input.d.ts +1 -1
  83. package/dist/client/parse-input.js +3 -3
  84. package/dist/client/plugins-factory.d.ts +2 -2
  85. package/dist/client/plugins-factory.js +2 -2
  86. package/dist/client/rpc/bare-client.d.ts +2 -1
  87. package/dist/client/rpc/bare-client.js +37 -39
  88. package/dist/client/rpc/ensure-worker-ready.js +4 -4
  89. package/dist/client/rpc/expo-device-info.d.ts +1 -1
  90. package/dist/client/rpc/expo-device-info.js +11 -11
  91. package/dist/client/rpc/expo-rpc-client.d.ts +2 -1
  92. package/dist/client/rpc/expo-rpc-client.js +38 -47
  93. package/dist/client/rpc/node-rpc-client.d.ts +2 -1
  94. package/dist/client/rpc/node-rpc-client.js +103 -75
  95. package/dist/client/rpc/profiling/index.d.ts +1 -1
  96. package/dist/client/rpc/profiling/index.js +1 -1
  97. package/dist/client/rpc/profiling/profiler.d.ts +2 -2
  98. package/dist/client/rpc/profiling/profiler.js +31 -34
  99. package/dist/client/rpc/rpc-client.d.ts +2 -2
  100. package/dist/client/rpc/rpc-client.js +113 -72
  101. package/dist/client/rpc/rpc-error.d.ts +1 -1
  102. package/dist/client/rpc/rpc-error.js +14 -14
  103. package/dist/commands/bundle/bare-pack.d.ts +1 -1
  104. package/dist/commands/bundle/bare-pack.js +20 -20
  105. package/dist/commands/bundle/constants.js +21 -21
  106. package/dist/commands/bundle/entry-gen.d.ts +1 -1
  107. package/dist/commands/bundle/entry-gen.js +10 -10
  108. package/dist/commands/bundle/index.js +47 -47
  109. package/dist/commands/bundle/manifest.d.ts +1 -1
  110. package/dist/commands/bundle/manifest.js +44 -46
  111. package/dist/commands/bundle/plugins.d.ts +2 -2
  112. package/dist/commands/bundle/plugins.js +7 -7
  113. package/dist/commands/bundle/resolve-sdk-import.d.ts +6 -0
  114. package/dist/commands/bundle/resolve-sdk-import.js +53 -0
  115. package/dist/commands/index.d.ts +4 -4
  116. package/dist/commands/index.js +2 -2
  117. package/dist/commands/verify/abi.d.ts +9 -9
  118. package/dist/commands/verify/abi.js +31 -31
  119. package/dist/commands/verify/addon-source.d.ts +1 -1
  120. package/dist/commands/verify/addon-source.js +13 -14
  121. package/dist/commands/verify/bundle-source.d.ts +1 -1
  122. package/dist/commands/verify/bundle-source.js +7 -7
  123. package/dist/commands/verify/index.d.ts +3 -3
  124. package/dist/commands/verify/index.js +18 -17
  125. package/dist/commands/verify/node-modules-source.d.ts +1 -1
  126. package/dist/commands/verify/node-modules-source.js +11 -11
  127. package/dist/commands/verify/prebuilds.d.ts +3 -3
  128. package/dist/commands/verify/prebuilds.js +8 -8
  129. package/dist/constants/audio.d.ts +1 -1
  130. package/dist/constants/audio.js +1 -1
  131. package/dist/constants/index.d.ts +2 -2
  132. package/dist/constants/index.js +2 -2
  133. package/dist/constants/registry.js +1 -1
  134. package/dist/examples/audio/mic-input.d.ts +1 -1
  135. package/dist/examples/audio/mic-input.js +31 -31
  136. package/dist/examples/batch-completion.d.ts +38 -0
  137. package/dist/examples/batch-completion.js +100 -0
  138. package/dist/examples/bci/bci-filesystem-streaming.js +20 -20
  139. package/dist/examples/bci/bci-filesystem.js +17 -17
  140. package/dist/examples/cache-management.js +32 -32
  141. package/dist/examples/cancel-by-request-id.js +11 -11
  142. package/dist/examples/classification/classify-image.js +5 -5
  143. package/dist/examples/completion-events.js +16 -18
  144. package/dist/examples/completion-stop-reason.js +13 -13
  145. package/dist/examples/concurrent-completion-collision.js +20 -20
  146. package/dist/examples/config/blind-relay/blind-relay.config.js +4 -4
  147. package/dist/examples/config/default/default.config.js +2 -2
  148. package/dist/examples/config/plugins/plugins.config.js +2 -2
  149. package/dist/examples/config-reload.js +14 -14
  150. package/dist/examples/default-config-usage.js +10 -13
  151. package/dist/examples/delegated-inference/composite.js +23 -23
  152. package/dist/examples/delegated-inference/consumer-profiled.js +19 -19
  153. package/dist/examples/delegated-inference/consumer.js +11 -11
  154. package/dist/examples/delegated-inference/provider.js +24 -24
  155. package/dist/examples/diffusion-esrgan-upscale.js +19 -19
  156. package/dist/examples/diffusion-flux2-klein-img2img.js +17 -17
  157. package/dist/examples/diffusion-flux2-klein.js +14 -14
  158. package/dist/examples/diffusion-img2img.js +13 -13
  159. package/dist/examples/diffusion-img2vid.js +22 -23
  160. package/dist/examples/diffusion-simple.js +7 -7
  161. package/dist/examples/diffusion-txt2img.js +13 -14
  162. package/dist/examples/diffusion-txt2vid.js +18 -18
  163. package/dist/examples/download-with-blind-relays.js +7 -8
  164. package/dist/examples/download-with-cancel.js +9 -9
  165. package/dist/examples/embed-multi-gpu.js +9 -9
  166. package/dist/examples/embed-p2p.js +24 -24
  167. package/dist/examples/finetune/llamacpp-finetune.js +21 -21
  168. package/dist/examples/kv-cache-cleanup.js +34 -34
  169. package/dist/examples/kv-cache-custom-key.js +30 -30
  170. package/dist/examples/kv-cache-example.js +18 -20
  171. package/dist/examples/llamacpp-cache.js +33 -33
  172. package/dist/examples/llamacpp-dynamic-tools.js +38 -38
  173. package/dist/examples/llamacpp-filesystem.js +13 -15
  174. package/dist/examples/llamacpp-http.js +12 -14
  175. package/dist/examples/llamacpp-multi-gpu.js +12 -12
  176. package/dist/examples/llamacpp-multimodal.js +16 -16
  177. package/dist/examples/llamacpp-p2p.js +11 -11
  178. package/dist/examples/llamacpp-sharded.js +12 -12
  179. package/dist/examples/llamacpp-structured-output.js +37 -37
  180. package/dist/examples/logging-file-transport.js +19 -21
  181. package/dist/examples/logging-global.js +8 -8
  182. package/dist/examples/logging-streaming.js +16 -18
  183. package/dist/examples/mcp-websearch.js +44 -44
  184. package/dist/examples/multi-model-demo.js +33 -33
  185. package/dist/examples/ocr-fasttext.js +17 -17
  186. package/dist/examples/parallel-download.js +11 -13
  187. package/dist/examples/plugins.js +43 -43
  188. package/dist/examples/profiling/basic.js +34 -36
  189. package/dist/examples/profiling/per-call.js +16 -16
  190. package/dist/examples/quickstart.bare.js +4 -6
  191. package/dist/examples/quickstart.js +7 -7
  192. package/dist/examples/rag/rag-chromadb.js +26 -26
  193. package/dist/examples/rag/rag-hyperdb/cancellation.js +19 -20
  194. package/dist/examples/rag/rag-hyperdb/ingest.js +19 -19
  195. package/dist/examples/rag/rag-hyperdb/pipeline.js +26 -26
  196. package/dist/examples/rag/rag-hyperdb/workspaces.js +46 -46
  197. package/dist/examples/rag/rag-lancedb.js +29 -32
  198. package/dist/examples/rag/rag-sqlite.js +25 -25
  199. package/dist/examples/registry-query.js +15 -15
  200. package/dist/examples/seed-p2p.js +8 -8
  201. package/dist/examples/suspend-resume.js +20 -20
  202. package/dist/examples/tools/llamacpp-native-tools.js +25 -25
  203. package/dist/examples/tools/llamacpp-tools-gemma4.js +14 -14
  204. package/dist/examples/tools/llamacpp-tools-harmony-multiturn.js +15 -15
  205. package/dist/examples/tools/llamacpp-tools-pythonic.js +15 -15
  206. package/dist/examples/tools/llamacpp-tools-qwen35.js +14 -14
  207. package/dist/examples/tools/shared.d.ts +2 -2
  208. package/dist/examples/tools/shared.js +17 -17
  209. package/dist/examples/transcription/parakeet-ctc-filesystem.js +12 -12
  210. package/dist/examples/transcription/parakeet-microphone-record.js +19 -19
  211. package/dist/examples/transcription/parakeet-microphone-stream.js +23 -23
  212. package/dist/examples/transcription/parakeet-sortformer-streaming.js +18 -28
  213. package/dist/examples/transcription/parakeet-sortformer.js +21 -21
  214. package/dist/examples/transcription/parakeet-tdt-filesystem.js +13 -13
  215. package/dist/examples/transcription/whispercpp-filesystem-streaming.js +34 -34
  216. package/dist/examples/transcription/whispercpp-filesystem.js +19 -19
  217. package/dist/examples/transcription/whispercpp-microphone-conversation.js +27 -27
  218. package/dist/examples/transcription/whispercpp-microphone-record.js +21 -21
  219. package/dist/examples/transcription/whispercpp-prompt.js +18 -18
  220. package/dist/examples/translation/translation-bergamot-batch.js +17 -17
  221. package/dist/examples/translation/translation-bergamot-pivot.js +16 -16
  222. package/dist/examples/translation/translation-bergamot.js +11 -11
  223. package/dist/examples/translation/translation-indic.js +10 -10
  224. package/dist/examples/translation/translation-llm-afriquegemma.js +10 -10
  225. package/dist/examples/translation/translation-llm-context.js +10 -10
  226. package/dist/examples/translation/translation-llm.js +13 -13
  227. package/dist/examples/translation/translation-stream.js +11 -11
  228. package/dist/examples/tts/chatterbox-enhanced.d.ts +2 -0
  229. package/dist/examples/tts/chatterbox-enhanced.js +55 -0
  230. package/dist/examples/tts/chatterbox-multilingual.d.ts +2 -0
  231. package/dist/examples/tts/chatterbox-multilingual.js +54 -0
  232. package/dist/examples/tts/chatterbox.js +18 -18
  233. package/dist/examples/tts/llm-to-tts-streaming.js +30 -30
  234. package/dist/examples/tts/supertonic-enhanced.d.ts +2 -0
  235. package/dist/examples/tts/supertonic-enhanced.js +57 -0
  236. package/dist/examples/tts/supertonic-multilingual.js +19 -19
  237. package/dist/examples/tts/supertonic.js +18 -18
  238. package/dist/examples/tts/utils.js +24 -32
  239. package/dist/examples/vla-pi05.js +14 -14
  240. package/dist/examples/vla-smolvla.js +14 -14
  241. package/dist/examples/voice-assistant/voice-assistant.js +46 -46
  242. package/dist/expo/plugins/find-in-ancestor-node-modules.js +3 -3
  243. package/dist/expo/plugins/get-project-root.d.ts +2 -2
  244. package/dist/expo/plugins/get-project-root.js +1 -1
  245. package/dist/expo/plugins/index.d.ts +11 -11
  246. package/dist/expo/plugins/index.js +10 -10
  247. package/dist/expo/plugins/resolve-sdk-package-dir.js +7 -11
  248. package/dist/expo/plugins/withAndroidArchitecture.d.ts +1 -1
  249. package/dist/expo/plugins/withAndroidArchitecture.js +12 -12
  250. package/dist/expo/plugins/withAndroidNdkVersion.d.ts +1 -1
  251. package/dist/expo/plugins/withAndroidNdkVersion.js +9 -9
  252. package/dist/expo/plugins/withDeviceInfo.d.ts +1 -1
  253. package/dist/expo/plugins/withDeviceInfo.js +13 -13
  254. package/dist/expo/plugins/withMobileBundle.d.ts +1 -1
  255. package/dist/expo/plugins/withMobileBundle.js +34 -42
  256. package/dist/expo/plugins/withOpenCL.d.ts +1 -1
  257. package/dist/expo/plugins/withOpenCL.js +14 -16
  258. package/dist/expo/plugins/withQvacSDK.d.ts +1 -1
  259. package/dist/expo/plugins/withQvacSDK.js +12 -12
  260. package/dist/index.d.ts +16 -16
  261. package/dist/index.js +16 -17
  262. package/dist/logging/addon.d.ts +1 -1
  263. package/dist/logging/addon.js +13 -13
  264. package/dist/logging/base-logger.d.ts +2 -2
  265. package/dist/logging/base-logger.js +6 -6
  266. package/dist/logging/client-logger.d.ts +1 -1
  267. package/dist/logging/client-logger.js +3 -3
  268. package/dist/logging/index.d.ts +9 -9
  269. package/dist/logging/index.js +8 -8
  270. package/dist/logging/logger.d.ts +1 -1
  271. package/dist/logging/logger.js +4 -4
  272. package/dist/logging/namespaces.d.ts +1 -1
  273. package/dist/logging/namespaces.js +5 -5
  274. package/dist/logging/registry.d.ts +2 -2
  275. package/dist/logging/registry.js +3 -3
  276. package/dist/logging/server-logger.d.ts +1 -1
  277. package/dist/logging/server-logger.js +2 -2
  278. package/dist/logging/stream-logger.d.ts +1 -1
  279. package/dist/logging/stream-logger.js +4 -4
  280. package/dist/logging/transport.d.ts +1 -1
  281. package/dist/logging/types.d.ts +1 -1
  282. package/dist/logging/utils.d.ts +2 -2
  283. package/dist/logging/utils.js +40 -41
  284. package/dist/models/registry/index.d.ts +1 -1
  285. package/dist/models/registry/index.js +5 -5
  286. package/dist/models/registry/models.d.ts +429 -122
  287. package/dist/models/registry/models.js +13693 -13369
  288. package/dist/models/update-models/codegen.d.ts +1 -1
  289. package/dist/models/update-models/codegen.js +8 -8
  290. package/dist/models/update-models/companions.d.ts +6 -1
  291. package/dist/models/update-models/companions.js +104 -39
  292. package/dist/models/update-models/history.d.ts +1 -1
  293. package/dist/models/update-models/history.js +11 -11
  294. package/dist/models/update-models/index.js +32 -34
  295. package/dist/models/update-models/naming.d.ts +2 -2
  296. package/dist/models/update-models/naming.js +177 -186
  297. package/dist/models/update-models/processing.d.ts +2 -2
  298. package/dist/models/update-models/processing.js +17 -19
  299. package/dist/models/update-models/registry.d.ts +2 -2
  300. package/dist/models/update-models/registry.js +9 -9
  301. package/dist/models/update-models/shards.d.ts +1 -1
  302. package/dist/models/update-models/shards.js +3 -3
  303. package/dist/models/update-models/types.d.ts +1 -1
  304. package/dist/models/update-models/utils.js +5 -5
  305. package/dist/pear/pre.js +84 -84
  306. package/dist/profiling/aggregator.d.ts +1 -1
  307. package/dist/profiling/aggregator.js +6 -6
  308. package/dist/profiling/clock.d.ts +1 -1
  309. package/dist/profiling/clock.js +10 -10
  310. package/dist/profiling/controller.d.ts +2 -2
  311. package/dist/profiling/controller.js +11 -12
  312. package/dist/profiling/envelope.d.ts +1 -1
  313. package/dist/profiling/envelope.js +4 -6
  314. package/dist/profiling/events.d.ts +2 -2
  315. package/dist/profiling/events.js +8 -10
  316. package/dist/profiling/exporters.d.ts +1 -1
  317. package/dist/profiling/exporters.js +81 -79
  318. package/dist/profiling/index.d.ts +8 -8
  319. package/dist/profiling/index.js +7 -7
  320. package/dist/profiling/model-execution.js +2 -1
  321. package/dist/profiling/ring-buffer.js +2 -2
  322. package/dist/profiling/types.d.ts +3 -3
  323. package/dist/schemas/archive.d.ts +1 -1
  324. package/dist/schemas/archive.js +8 -14
  325. package/dist/schemas/batch-completion-stream.d.ts +463 -0
  326. package/dist/schemas/batch-completion-stream.js +124 -0
  327. package/dist/schemas/bci-config.d.ts +1 -1
  328. package/dist/schemas/bci-config.js +7 -7
  329. package/dist/schemas/bci.d.ts +3 -3
  330. package/dist/schemas/bci.js +25 -31
  331. package/dist/schemas/cancel.d.ts +6 -1
  332. package/dist/schemas/cancel.js +33 -34
  333. package/dist/schemas/classification.d.ts +1 -1
  334. package/dist/schemas/classification.js +7 -7
  335. package/dist/schemas/common.d.ts +194 -25
  336. package/dist/schemas/common.js +40 -37
  337. package/dist/schemas/completion-event.d.ts +11 -8
  338. package/dist/schemas/completion-event.js +27 -26
  339. package/dist/schemas/completion-stream.d.ts +4 -3
  340. package/dist/schemas/completion-stream.js +51 -67
  341. package/dist/schemas/delegate.d.ts +1 -1
  342. package/dist/schemas/delegate.js +7 -7
  343. package/dist/schemas/delete-cache.d.ts +1 -1
  344. package/dist/schemas/delete-cache.js +8 -8
  345. package/dist/schemas/download-asset.d.ts +2 -2
  346. package/dist/schemas/download-asset.js +21 -21
  347. package/dist/schemas/embed.d.ts +3 -3
  348. package/dist/schemas/embed.js +16 -27
  349. package/dist/schemas/engine-addon-map.d.ts +2 -2
  350. package/dist/schemas/engine-addon-map.js +24 -24
  351. package/dist/schemas/error.d.ts +1 -1
  352. package/dist/schemas/error.js +12 -13
  353. package/dist/schemas/finetune.d.ts +1 -1
  354. package/dist/schemas/finetune.js +35 -41
  355. package/dist/schemas/get-loaded-model-info.d.ts +1 -1
  356. package/dist/schemas/get-loaded-model-info.js +10 -10
  357. package/dist/schemas/get-model-info.d.ts +1 -1
  358. package/dist/schemas/get-model-info.js +48 -91
  359. package/dist/schemas/heartbeat.d.ts +1 -1
  360. package/dist/schemas/heartbeat.js +6 -6
  361. package/dist/schemas/index.d.ts +52 -51
  362. package/dist/schemas/index.js +52 -51
  363. package/dist/schemas/json-schema.d.ts +1 -1
  364. package/dist/schemas/llamacpp-config.d.ts +33 -25
  365. package/dist/schemas/llamacpp-config.js +43 -30
  366. package/dist/schemas/load-model.d.ts +160 -128
  367. package/dist/schemas/load-model.js +120 -126
  368. package/dist/schemas/logging-stream.d.ts +1 -1
  369. package/dist/schemas/logging-stream.js +6 -12
  370. package/dist/schemas/mcp-adapter.d.ts +1 -1
  371. package/dist/schemas/model-src-utils.d.ts +1 -1
  372. package/dist/schemas/model-src-utils.js +13 -13
  373. package/dist/schemas/model-types.d.ts +1 -1
  374. package/dist/schemas/model-types.js +27 -27
  375. package/dist/schemas/ocr.d.ts +1 -1
  376. package/dist/schemas/ocr.js +18 -18
  377. package/dist/schemas/path-validation.d.ts +1 -1
  378. package/dist/schemas/path-validation.js +4 -4
  379. package/dist/schemas/plugin.d.ts +9 -10
  380. package/dist/schemas/plugin.js +47 -47
  381. package/dist/schemas/profiling.d.ts +1 -1
  382. package/dist/schemas/profiling.js +16 -16
  383. package/dist/schemas/provide.d.ts +1 -1
  384. package/dist/schemas/provide.js +8 -8
  385. package/dist/schemas/rag.d.ts +3 -3
  386. package/dist/schemas/rag.js +65 -70
  387. package/dist/schemas/registry.d.ts +1 -1
  388. package/dist/schemas/registry.js +44 -66
  389. package/dist/schemas/reload-config.d.ts +1 -1
  390. package/dist/schemas/reload-config.js +14 -18
  391. package/dist/schemas/resume.d.ts +1 -1
  392. package/dist/schemas/resume.js +3 -3
  393. package/dist/schemas/runtime-context.d.ts +1 -1
  394. package/dist/schemas/runtime-context.js +4 -4
  395. package/dist/schemas/sdcpp-config.d.ts +9 -9
  396. package/dist/schemas/sdcpp-config.js +298 -300
  397. package/dist/schemas/sdk-config.d.ts +55 -43
  398. package/dist/schemas/sdk-config.js +25 -29
  399. package/dist/schemas/sdk-errors-client.d.ts +1 -1
  400. package/dist/schemas/sdk-errors-client.js +80 -80
  401. package/dist/schemas/sdk-errors-registry.js +1 -1
  402. package/dist/schemas/sdk-errors-server.d.ts +1 -1
  403. package/dist/schemas/sdk-errors-server.js +200 -199
  404. package/dist/schemas/shard.d.ts +1 -1
  405. package/dist/schemas/shard.js +4 -4
  406. package/dist/schemas/state.d.ts +1 -1
  407. package/dist/schemas/state.js +5 -10
  408. package/dist/schemas/stop-provide.d.ts +1 -1
  409. package/dist/schemas/stop-provide.js +4 -4
  410. package/dist/schemas/suspend.d.ts +1 -1
  411. package/dist/schemas/suspend.js +3 -3
  412. package/dist/schemas/text-to-speech.d.ts +455 -3
  413. package/dist/schemas/text-to-speech.js +146 -110
  414. package/dist/schemas/tools.d.ts +1 -1
  415. package/dist/schemas/tools.js +17 -24
  416. package/dist/schemas/transcription-config.d.ts +1 -1
  417. package/dist/schemas/transcription-config.js +18 -18
  418. package/dist/schemas/transcription.d.ts +5 -5
  419. package/dist/schemas/transcription.js +31 -33
  420. package/dist/schemas/translate.d.ts +3 -3
  421. package/dist/schemas/translate.js +38 -67
  422. package/dist/schemas/translation-config.d.ts +1 -1
  423. package/dist/schemas/translation-config.js +116 -123
  424. package/dist/schemas/unload-model.d.ts +1 -1
  425. package/dist/schemas/unload-model.js +6 -6
  426. package/dist/schemas/vla.d.ts +1 -1
  427. package/dist/schemas/vla.js +30 -30
  428. package/dist/scripts/run-security-tests.js +9 -10
  429. package/dist/scripts/run-unit-tests.js +11 -12
  430. package/dist/server/bare/delegate-connect-diagnostics.js +13 -19
  431. package/dist/server/bare/delegate-rpc-client.d.ts +2 -2
  432. package/dist/server/bare/delegate-rpc-client.js +32 -34
  433. package/dist/server/bare/hyperswarm.d.ts +3 -3
  434. package/dist/server/bare/hyperswarm.js +14 -14
  435. package/dist/server/bare/ops/bci-transcribe.d.ts +1 -1
  436. package/dist/server/bare/ops/bci-transcribe.js +44 -44
  437. package/dist/server/bare/ops/cancel.d.ts +2 -2
  438. package/dist/server/bare/ops/cancel.js +6 -6
  439. package/dist/server/bare/ops/embed.d.ts +1 -1
  440. package/dist/server/bare/ops/embed.js +26 -16
  441. package/dist/server/bare/ops/kv-cache-utils.d.ts +1 -1
  442. package/dist/server/bare/ops/kv-cache-utils.js +17 -19
  443. package/dist/server/bare/ops/load-model.d.ts +2 -2
  444. package/dist/server/bare/ops/load-model.js +14 -18
  445. package/dist/server/bare/ops/transcribe.d.ts +3 -3
  446. package/dist/server/bare/ops/transcribe.js +62 -62
  447. package/dist/server/bare/ops/translate.d.ts +1 -1
  448. package/dist/server/bare/ops/translate.js +39 -30
  449. package/dist/server/bare/ops/unload-model.d.ts +1 -1
  450. package/dist/server/bare/ops/unload-model.js +12 -12
  451. package/dist/server/bare/plugins/bci-whispercpp-transcription/args.d.ts +2 -2
  452. package/dist/server/bare/plugins/bci-whispercpp-transcription/args.js +3 -3
  453. package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.d.ts +2 -2
  454. package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.js +33 -33
  455. package/dist/server/bare/plugins/bci-whispercpp-transcription/resolve-config.d.ts +1 -1
  456. package/dist/server/bare/plugins/bci-whispercpp-transcription/resolve-config.js +1 -1
  457. package/dist/server/bare/plugins/ggml-classification/ops/classify.d.ts +1 -1
  458. package/dist/server/bare/plugins/ggml-classification/ops/classify.js +8 -8
  459. package/dist/server/bare/plugins/ggml-classification/plugin.d.ts +1 -1
  460. package/dist/server/bare/plugins/ggml-classification/plugin.js +14 -14
  461. package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.d.ts +1 -1
  462. package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.js +27 -26
  463. package/dist/server/bare/plugins/ggml-ocr/plugin.d.ts +1 -1
  464. package/dist/server/bare/plugins/ggml-ocr/plugin.js +38 -38
  465. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.d.ts +1 -1
  466. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.js +3 -3
  467. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.d.ts +1 -1
  468. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.js +23 -23
  469. package/dist/server/bare/plugins/ggml-vla/plugin.d.ts +1 -1
  470. package/dist/server/bare/plugins/ggml-vla/plugin.js +15 -15
  471. package/dist/server/bare/plugins/index.d.ts +11 -11
  472. package/dist/server/bare/plugins/index.js +11 -11
  473. package/dist/server/bare/plugins/llamacpp-completion/ops/batch-cancelled.d.ts +23 -0
  474. package/dist/server/bare/plugins/llamacpp-completion/ops/batch-cancelled.js +30 -0
  475. package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.d.ts +32 -0
  476. package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.js +99 -0
  477. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.d.ts +1 -1
  478. package/dist/server/bare/plugins/llamacpp-completion/ops/cache-logger.js +8 -8
  479. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.d.ts +3 -2
  480. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js +4 -1
  481. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +22 -4
  482. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +55 -59
  483. package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js +5 -5
  484. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.d.ts +2 -2
  485. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +34 -34
  486. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.d.ts +7 -7
  487. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js +19 -23
  488. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +4 -6
  489. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +186 -17
  490. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +235 -70
  491. package/dist/server/bare/plugins/llamacpp-completion/transform.d.ts +1 -1
  492. package/dist/server/bare/plugins/llamacpp-completion/transform.js +15 -15
  493. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +3 -3
  494. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +27 -29
  495. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +1 -1
  496. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +38 -39
  497. package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.d.ts +1 -1
  498. package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.js +19 -22
  499. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +1 -1
  500. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +36 -36
  501. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.d.ts +1 -1
  502. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +15 -17
  503. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.d.ts +1 -1
  504. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.js +11 -11
  505. package/dist/server/bare/plugins/sdcpp-generation/ops/video.d.ts +1 -1
  506. package/dist/server/bare/plugins/sdcpp-generation/ops/video.js +42 -44
  507. package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +4 -4
  508. package/dist/server/bare/plugins/sdcpp-generation/plugin.js +69 -63
  509. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.d.ts +2 -2
  510. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.js +19 -21
  511. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.d.ts +2 -2
  512. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.js +22 -24
  513. package/dist/server/bare/plugins/tts-ggml/plugin.d.ts +3 -2
  514. package/dist/server/bare/plugins/tts-ggml/plugin.js +95 -49
  515. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +1 -1
  516. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +52 -52
  517. package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +1 -1
  518. package/dist/server/bare/rag-hyperdb/handlers/chunk.js +2 -2
  519. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +1 -1
  520. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +2 -2
  521. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
  522. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +4 -4
  523. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +1 -1
  524. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +3 -3
  525. package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +2 -2
  526. package/dist/server/bare/rag-hyperdb/handlers/ingest.js +4 -4
  527. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +1 -1
  528. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +1 -1
  529. package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +2 -2
  530. package/dist/server/bare/rag-hyperdb/handlers/reindex.js +5 -5
  531. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +2 -2
  532. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +3 -3
  533. package/dist/server/bare/rag-hyperdb/handlers/search.d.ts +1 -1
  534. package/dist/server/bare/rag-hyperdb/handlers/search.js +3 -3
  535. package/dist/server/bare/rag-hyperdb/index.d.ts +11 -11
  536. package/dist/server/bare/rag-hyperdb/index.js +11 -11
  537. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +3 -3
  538. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +1 -1
  539. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +20 -20
  540. package/dist/server/bare/registry/config-registry.d.ts +1 -1
  541. package/dist/server/bare/registry/config-registry.js +13 -16
  542. package/dist/server/bare/registry/logging-stream-registry.d.ts +1 -1
  543. package/dist/server/bare/registry/logging-stream-registry.js +2 -2
  544. package/dist/server/bare/registry/model-config-registry.d.ts +2 -2
  545. package/dist/server/bare/registry/model-config-registry.js +6 -6
  546. package/dist/server/bare/registry/model-config-utils.d.ts +2 -2
  547. package/dist/server/bare/registry/model-config-utils.js +35 -35
  548. package/dist/server/bare/registry/model-registry.d.ts +3 -3
  549. package/dist/server/bare/registry/model-registry.js +11 -11
  550. package/dist/server/bare/registry/registry-client.d.ts +1 -1
  551. package/dist/server/bare/registry/registry-client.js +18 -18
  552. package/dist/server/bare/registry/runtime-context-registry.d.ts +1 -1
  553. package/dist/server/bare/registry/runtime-context-registry.js +3 -3
  554. package/dist/server/bare/runtime/disposable-scope.js +3 -3
  555. package/dist/server/bare/runtime/index.d.ts +7 -7
  556. package/dist/server/bare/runtime/index.js +3 -3
  557. package/dist/server/bare/runtime/request-context.d.ts +4 -4
  558. package/dist/server/bare/runtime/request-id.js +1 -1
  559. package/dist/server/bare/runtime/request-registry-singleton.d.ts +1 -1
  560. package/dist/server/bare/runtime/request-registry-singleton.js +23 -4
  561. package/dist/server/bare/runtime/request-registry.d.ts +27 -12
  562. package/dist/server/bare/runtime/request-registry.js +39 -34
  563. package/dist/server/bare/runtime/with-request-context.d.ts +1 -1
  564. package/dist/server/bare/runtime/with-request-context.js +11 -11
  565. package/dist/server/bare/runtime-lifecycle.d.ts +1 -1
  566. package/dist/server/bare/runtime-lifecycle.js +27 -31
  567. package/dist/server/bare/types/addon-responses.d.ts +5 -4
  568. package/dist/server/bare/utils/audio-input.d.ts +2 -2
  569. package/dist/server/bare/utils/audio-input.js +7 -7
  570. package/dist/server/bare/utils/transcribe-metadata.d.ts +1 -1
  571. package/dist/server/bare/utils/transcribe-metadata.js +4 -4
  572. package/dist/server/bare/utils/tts-stats.d.ts +1 -1
  573. package/dist/server/bare/utils/tts-stats.js +3 -3
  574. package/dist/server/env.js +8 -8
  575. package/dist/server/error-handlers.d.ts +3 -3
  576. package/dist/server/error-handlers.js +11 -11
  577. package/dist/server/plugins/index.d.ts +1 -1
  578. package/dist/server/plugins/index.js +1 -1
  579. package/dist/server/plugins/registry.d.ts +1 -1
  580. package/dist/server/plugins/registry.js +12 -14
  581. package/dist/server/rpc/create-server.d.ts +1 -1
  582. package/dist/server/rpc/create-server.js +11 -12
  583. package/dist/server/rpc/delegate-transport.d.ts +3 -3
  584. package/dist/server/rpc/delegate-transport.js +43 -44
  585. package/dist/server/rpc/handle-request.d.ts +1 -1
  586. package/dist/server/rpc/handle-request.js +28 -30
  587. package/dist/server/rpc/handler-registry.d.ts +1 -1
  588. package/dist/server/rpc/handler-registry.js +97 -92
  589. package/dist/server/rpc/handler-selection.d.ts +3 -3
  590. package/dist/server/rpc/handler-selection.js +3 -3
  591. package/dist/server/rpc/handler-utils.d.ts +7 -7
  592. package/dist/server/rpc/handler-utils.js +32 -35
  593. package/dist/server/rpc/handlers/batch-completion-stream.d.ts +78 -0
  594. package/dist/server/rpc/handlers/batch-completion-stream.js +4 -0
  595. package/dist/server/rpc/handlers/bci-transcribe-stream.d.ts +1 -1
  596. package/dist/server/rpc/handlers/bci-transcribe-stream.js +2 -2
  597. package/dist/server/rpc/handlers/bci-transcribe.d.ts +1 -1
  598. package/dist/server/rpc/handlers/bci-transcribe.js +2 -2
  599. package/dist/server/rpc/handlers/cancel-delegated.d.ts +2 -2
  600. package/dist/server/rpc/handlers/cancel-delegated.js +13 -13
  601. package/dist/server/rpc/handlers/cancelHandler.d.ts +1 -1
  602. package/dist/server/rpc/handlers/cancelHandler.js +11 -11
  603. package/dist/server/rpc/handlers/classify.d.ts +1 -1
  604. package/dist/server/rpc/handlers/classify.js +2 -2
  605. package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +2 -2
  606. package/dist/server/rpc/handlers/completion-stream-delegated.js +14 -14
  607. package/dist/server/rpc/handlers/completion-stream.d.ts +1 -1
  608. package/dist/server/rpc/handlers/completion-stream.js +2 -2
  609. package/dist/server/rpc/handlers/delete-cache.d.ts +1 -1
  610. package/dist/server/rpc/handlers/delete-cache.js +10 -10
  611. package/dist/server/rpc/handlers/diffusion-stream.d.ts +1 -1
  612. package/dist/server/rpc/handlers/diffusion-stream.js +2 -2
  613. package/dist/server/rpc/handlers/download-asset.d.ts +1 -1
  614. package/dist/server/rpc/handlers/download-asset.js +20 -20
  615. package/dist/server/rpc/handlers/embed.d.ts +1 -1
  616. package/dist/server/rpc/handlers/embed.js +2 -2
  617. package/dist/server/rpc/handlers/finetune.d.ts +1 -1
  618. package/dist/server/rpc/handlers/finetune.js +8 -6
  619. package/dist/server/rpc/handlers/get-loaded-model-info.d.ts +1 -1
  620. package/dist/server/rpc/handlers/get-loaded-model-info.js +9 -9
  621. package/dist/server/rpc/handlers/get-model-info.d.ts +1 -1
  622. package/dist/server/rpc/handlers/get-model-info.js +20 -20
  623. package/dist/server/rpc/handlers/heartbeat-delegated.d.ts +2 -2
  624. package/dist/server/rpc/handlers/heartbeat-delegated.js +7 -7
  625. package/dist/server/rpc/handlers/heartbeat.d.ts +1 -1
  626. package/dist/server/rpc/handlers/heartbeat.js +1 -1
  627. package/dist/server/rpc/handlers/index.d.ts +33 -31
  628. package/dist/server/rpc/handlers/index.js +34 -32
  629. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +4 -4
  630. package/dist/server/rpc/handlers/load-model/download-manager.js +19 -17
  631. package/dist/server/rpc/handlers/load-model/download-stats.d.ts +4 -3
  632. package/dist/server/rpc/handlers/load-model/download-stats.js +9 -11
  633. package/dist/server/rpc/handlers/load-model/handler.d.ts +1 -1
  634. package/dist/server/rpc/handlers/load-model/handler.js +42 -43
  635. package/dist/server/rpc/handlers/load-model/http.d.ts +2 -2
  636. package/dist/server/rpc/handlers/load-model/http.js +100 -107
  637. package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +2 -2
  638. package/dist/server/rpc/handlers/load-model/hyperdrive.js +72 -74
  639. package/dist/server/rpc/handlers/load-model/index.d.ts +2 -2
  640. package/dist/server/rpc/handlers/load-model/index.js +2 -2
  641. package/dist/server/rpc/handlers/load-model/registry-client-options.d.ts +2 -2
  642. package/dist/server/rpc/handlers/load-model/registry-client-options.js +2 -3
  643. package/dist/server/rpc/handlers/load-model/registry-companion-set.d.ts +5 -5
  644. package/dist/server/rpc/handlers/load-model/registry-companion-set.js +19 -21
  645. package/dist/server/rpc/handlers/load-model/registry-download-utils.d.ts +6 -6
  646. package/dist/server/rpc/handlers/load-model/registry-download-utils.js +16 -18
  647. package/dist/server/rpc/handlers/load-model/registry-metadata.d.ts +11 -0
  648. package/dist/server/rpc/handlers/load-model/registry-metadata.js +23 -0
  649. package/dist/server/rpc/handlers/load-model/registry.d.ts +4 -3
  650. package/dist/server/rpc/handlers/load-model/registry.js +50 -56
  651. package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +3 -3
  652. package/dist/server/rpc/handlers/load-model/resolve-session.js +7 -7
  653. package/dist/server/rpc/handlers/load-model/resolve.d.ts +3 -3
  654. package/dist/server/rpc/handlers/load-model/resolve.js +36 -35
  655. package/dist/server/rpc/handlers/load-model/types.d.ts +3 -3
  656. package/dist/server/rpc/handlers/load-model/types.js +7 -7
  657. package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -2
  658. package/dist/server/rpc/handlers/load-model-delegated.js +31 -30
  659. package/dist/server/rpc/handlers/logging-stream.d.ts +1 -1
  660. package/dist/server/rpc/handlers/logging-stream.js +3 -3
  661. package/dist/server/rpc/handlers/ocr-stream.d.ts +1 -1
  662. package/dist/server/rpc/handlers/ocr-stream.js +2 -2
  663. package/dist/server/rpc/handlers/plugin-dispatch.js +9 -9
  664. package/dist/server/rpc/handlers/plugin-invoke.d.ts +1 -1
  665. package/dist/server/rpc/handlers/plugin-invoke.js +16 -16
  666. package/dist/server/rpc/handlers/provideHandler/connection.d.ts +1 -1
  667. package/dist/server/rpc/handlers/provideHandler/connection.js +16 -16
  668. package/dist/server/rpc/handlers/provideHandler/handler.d.ts +1 -1
  669. package/dist/server/rpc/handlers/provideHandler/handler.js +18 -18
  670. package/dist/server/rpc/handlers/provideHandler/proxy.d.ts +1 -1
  671. package/dist/server/rpc/handlers/provideHandler/proxy.js +11 -11
  672. package/dist/server/rpc/handlers/provideHandler.d.ts +1 -1
  673. package/dist/server/rpc/handlers/provideHandler.js +1 -1
  674. package/dist/server/rpc/handlers/rag.d.ts +1 -1
  675. package/dist/server/rpc/handlers/rag.js +50 -50
  676. package/dist/server/rpc/handlers/registry.d.ts +1 -1
  677. package/dist/server/rpc/handlers/registry.js +34 -36
  678. package/dist/server/rpc/handlers/resume.d.ts +1 -1
  679. package/dist/server/rpc/handlers/resume.js +3 -3
  680. package/dist/server/rpc/handlers/state.d.ts +1 -1
  681. package/dist/server/rpc/handlers/state.js +3 -3
  682. package/dist/server/rpc/handlers/stopProvideHandler.d.ts +1 -1
  683. package/dist/server/rpc/handlers/stopProvideHandler.js +7 -7
  684. package/dist/server/rpc/handlers/suspend.d.ts +1 -1
  685. package/dist/server/rpc/handlers/suspend.js +3 -3
  686. package/dist/server/rpc/handlers/text-to-speech-stream.d.ts +1 -1
  687. package/dist/server/rpc/handlers/text-to-speech-stream.js +2 -2
  688. package/dist/server/rpc/handlers/text-to-speech.d.ts +1 -1
  689. package/dist/server/rpc/handlers/text-to-speech.js +2 -2
  690. package/dist/server/rpc/handlers/transcribe-stream.d.ts +1 -1
  691. package/dist/server/rpc/handlers/transcribe-stream.js +2 -2
  692. package/dist/server/rpc/handlers/transcribe.d.ts +1 -1
  693. package/dist/server/rpc/handlers/transcribe.js +2 -2
  694. package/dist/server/rpc/handlers/translate.d.ts +1 -1
  695. package/dist/server/rpc/handlers/translate.js +2 -2
  696. package/dist/server/rpc/handlers/unload-model-delegated.d.ts +1 -1
  697. package/dist/server/rpc/handlers/unload-model-delegated.js +10 -10
  698. package/dist/server/rpc/handlers/unload-model.d.ts +1 -1
  699. package/dist/server/rpc/handlers/unload-model.js +10 -10
  700. package/dist/server/rpc/handlers/upscale-stream.d.ts +1 -1
  701. package/dist/server/rpc/handlers/upscale-stream.js +2 -2
  702. package/dist/server/rpc/handlers/video-stream.d.ts +1 -1
  703. package/dist/server/rpc/handlers/video-stream.js +2 -2
  704. package/dist/server/rpc/index.d.ts +2 -2
  705. package/dist/server/rpc/index.js +2 -2
  706. package/dist/server/rpc/profiling/context.d.ts +1 -1
  707. package/dist/server/rpc/profiling/context.js +9 -10
  708. package/dist/server/rpc/profiling/delegation-profiler.d.ts +2 -2
  709. package/dist/server/rpc/profiling/delegation-profiler.js +23 -24
  710. package/dist/server/rpc/profiling/index.d.ts +4 -4
  711. package/dist/server/rpc/profiling/index.js +4 -4
  712. package/dist/server/rpc/profiling/operation-metrics.d.ts +2 -2
  713. package/dist/server/rpc/profiling/operation-metrics.js +102 -102
  714. package/dist/server/rpc/profiling/operation-wrappers.d.ts +1 -1
  715. package/dist/server/rpc/profiling/operation-wrappers.js +16 -14
  716. package/dist/server/rpc/profiling/profiler.d.ts +2 -2
  717. package/dist/server/rpc/profiling/profiler.js +9 -13
  718. package/dist/server/rpc/rpc-utils.js +1 -4
  719. package/dist/server/rpc/transport-selector.d.ts +1 -1
  720. package/dist/server/rpc/transport-selector.js +4 -4
  721. package/dist/server/utils/archive.js +27 -29
  722. package/dist/server/utils/audio/decoder.d.ts +2 -2
  723. package/dist/server/utils/audio/decoder.js +11 -11
  724. package/dist/server/utils/cache/auto-history.d.ts +1 -1
  725. package/dist/server/utils/cache/auto-history.js +5 -5
  726. package/dist/server/utils/cache/paths.d.ts +2 -2
  727. package/dist/server/utils/cache/paths.js +14 -14
  728. package/dist/server/utils/checksum.d.ts +1 -1
  729. package/dist/server/utils/checksum.js +10 -12
  730. package/dist/server/utils/clear-storage.d.ts +1 -1
  731. package/dist/server/utils/clear-storage.js +8 -11
  732. package/dist/server/utils/completion-normalizer.d.ts +1 -1
  733. package/dist/server/utils/completion-normalizer.js +106 -113
  734. package/dist/server/utils/config-transform.d.ts +1 -1
  735. package/dist/server/utils/config-transform.js +2 -2
  736. package/dist/server/utils/expand-gguf-shards.js +4 -4
  737. package/dist/server/utils/formatting.js +6 -12
  738. package/dist/server/utils/gguf-tensor-extractor.js +17 -21
  739. package/dist/server/utils/index.d.ts +11 -11
  740. package/dist/server/utils/index.js +11 -11
  741. package/dist/server/utils/multi-gpu-mobile.js +1 -1
  742. package/dist/server/utils/path-security.d.ts +1 -1
  743. package/dist/server/utils/path-security.js +6 -6
  744. package/dist/server/utils/qvac-paths.js +3 -3
  745. package/dist/server/utils/response-format.d.ts +1 -1
  746. package/dist/server/utils/response-format.js +4 -4
  747. package/dist/server/utils/shard-utils.d.ts +1 -1
  748. package/dist/server/utils/shard-utils.js +14 -16
  749. package/dist/server/utils/tool-integration.d.ts +1 -1
  750. package/dist/server/utils/tool-integration.js +5 -9
  751. package/dist/server/utils/tools/dialect.d.ts +1 -1
  752. package/dist/server/utils/tools/dialect.js +7 -7
  753. package/dist/server/utils/tools/index.d.ts +2 -2
  754. package/dist/server/utils/tools/index.js +2 -2
  755. package/dist/server/utils/tools/parser.d.ts +1 -1
  756. package/dist/server/utils/tools/parser.js +14 -14
  757. package/dist/server/utils/tools/parsers/gemma4native.d.ts +2 -2
  758. package/dist/server/utils/tools/parsers/gemma4native.js +13 -8
  759. package/dist/server/utils/tools/parsers/harmony.d.ts +2 -2
  760. package/dist/server/utils/tools/parsers/harmony.js +9 -11
  761. package/dist/server/utils/tools/parsers/hermes.d.ts +2 -2
  762. package/dist/server/utils/tools/parsers/hermes.js +16 -16
  763. package/dist/server/utils/tools/parsers/json.d.ts +2 -2
  764. package/dist/server/utils/tools/parsers/json.js +14 -14
  765. package/dist/server/utils/tools/parsers/pythonic.d.ts +2 -2
  766. package/dist/server/utils/tools/parsers/pythonic.js +43 -43
  767. package/dist/server/utils/tools/parsers/qwen35.d.ts +2 -2
  768. package/dist/server/utils/tools/parsers/qwen35.js +20 -20
  769. package/dist/server/utils/tools/shared.d.ts +1 -1
  770. package/dist/server/utils/tools/shared.js +10 -12
  771. package/dist/server/utils/worker-lock.js +10 -10
  772. package/dist/server/worker-core.d.ts +1 -1
  773. package/dist/server/worker-core.js +44 -43
  774. package/dist/server/worker.js +9 -9
  775. package/dist/utils/aggregate-events.d.ts +2 -2
  776. package/dist/utils/aggregate-events.js +17 -19
  777. package/dist/utils/cache-normalize.js +1 -4
  778. package/dist/utils/encoding.js +1 -1
  779. package/dist/utils/errors-base.d.ts +1 -1
  780. package/dist/utils/errors-base.js +1 -1
  781. package/dist/utils/errors-client.d.ts +1 -1
  782. package/dist/utils/errors-client.js +5 -5
  783. package/dist/utils/errors-server.d.ts +3 -3
  784. package/dist/utils/errors-server.js +19 -18
  785. package/dist/utils/load-model-validation.js +3 -3
  786. package/dist/utils/mcp-adapter.d.ts +4 -4
  787. package/dist/utils/mcp-adapter.js +31 -38
  788. package/dist/utils/path-sanitize.js +14 -17
  789. package/dist/utils/tool-helpers.d.ts +2 -2
  790. package/dist/utils/tool-helpers.js +25 -26
  791. package/dist/utils/withTimeout.d.ts +7 -0
  792. package/dist/utils/withTimeout.js +11 -1
  793. package/dist/utils/zod-error.d.ts +1 -1
  794. package/dist/utils/zod-error.js +1 -1
  795. package/electron-forge/index.cjs +274 -317
  796. package/expo/plugins/patches/android-link.mjs +25 -30
  797. package/expo/plugins/patches/ios-link.mjs +25 -30
  798. package/package.json +17 -16
@@ -1,179 +1,212 @@
1
- import { z } from "zod";
2
- import { modelSrcInputSchema } from "./model-src-utils.js";
1
+ import { z } from 'zod';
2
+ import { modelSrcInputSchema } from './model-src-utils.js';
3
3
  const BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
4
4
  const ABSOLUTE_PATH_PATTERN = /^(\/|[A-Za-z]:[\\/]|\\\\)/;
5
5
  const base64StringSchema = z.string().min(1).regex(BASE64_PATTERN);
6
6
  const samplingMethodSchema = z.enum([
7
- "euler",
8
- "euler_a",
9
- "heun",
10
- "dpm2",
11
- "dpm++2m",
12
- "dpm++2mv2",
13
- "dpm++2s_a",
14
- "lcm",
15
- "ipndm",
16
- "ipndm_v",
17
- "ddim_trailing",
18
- "tcd",
19
- "res_multistep",
20
- "res_2s",
7
+ 'euler',
8
+ 'euler_a',
9
+ 'heun',
10
+ 'dpm2',
11
+ 'dpm++2m',
12
+ 'dpm++2mv2',
13
+ 'dpm++2s_a',
14
+ 'lcm',
15
+ 'ipndm',
16
+ 'ipndm_v',
17
+ 'ddim_trailing',
18
+ 'tcd',
19
+ 'res_multistep',
20
+ 'res_2s'
21
21
  ]);
22
22
  const scheduleTypeSchema = z.enum([
23
- "discrete", "karras", "exponential", "ays", "gits",
24
- "sgm_uniform", "simple", "lcm", "smoothstep", "kl_optimal", "bong_tangent",
23
+ 'discrete',
24
+ 'karras',
25
+ 'exponential',
26
+ 'ays',
27
+ 'gits',
28
+ 'sgm_uniform',
29
+ 'simple',
30
+ 'lcm',
31
+ 'smoothstep',
32
+ 'kl_optimal',
33
+ 'bong_tangent'
25
34
  ]);
26
35
  const cacheModeSchema = z.enum([
27
- "disabled",
28
- "easycache",
29
- "ucache",
30
- "dbcache",
31
- "taylorseer",
32
- "cache-dit",
36
+ 'disabled',
37
+ 'easycache',
38
+ 'ucache',
39
+ 'dbcache',
40
+ 'taylorseer',
41
+ 'cache-dit'
33
42
  ]);
34
- export const sdcppConfigSchema = z
35
- .object({
36
- mode: z.enum(["diffusion", "upscale", "video"]).default("diffusion")
37
- .describe("Operation mode for the diffusion plugin. " +
43
+ export const sdcppConfigSchema = z.object({
44
+ mode: z
45
+ .enum(['diffusion', 'upscale', 'video'])
46
+ .default('diffusion')
47
+ .describe('Operation mode for the diffusion plugin. ' +
38
48
  "`'diffusion'` (default) builds a full SD / SDXL / SD3 / FLUX pipeline from " +
39
- "the primary model plus optional auxiliary text encoders, VAE, and ESRGAN " +
40
- "upscaler, and exposes diffusion({ ... }). " +
49
+ 'the primary model plus optional auxiliary text encoders, VAE, and ESRGAN ' +
50
+ 'upscaler, and exposes diffusion({ ... }). ' +
41
51
  "`'upscale'` builds a standalone ESRGAN upscaler from the primary model " +
42
- "file alone (auxiliary model sources are ignored) and exposes upscale({ ... }). " +
52
+ 'file alone (auxiliary model sources are ignored) and exposes upscale({ ... }). ' +
43
53
  "`'video'` builds a Wan `VideoStableDiffusion` pipeline and exposes video({ ... }). " +
44
- "On React Native, loading the video model on-device will likely fail " +
45
- "because the video diffusion models currently " +
46
- "shipped by the SDK are too large to load on typical mobile devices; " +
47
- "pass a `delegate` to `loadModel(...)` to run generation on a desktop peer instead."),
54
+ 'On React Native, loading the video model on-device will likely fail ' +
55
+ 'because the video diffusion models currently ' +
56
+ 'shipped by the SDK are too large to load on typical mobile devices; ' +
57
+ 'pass a `delegate` to `loadModel(...)` to run generation on a desktop peer instead.'),
48
58
  threads: z.number().optional(),
49
- device: z.enum(["gpu", "cpu"]).optional(),
59
+ device: z.enum(['gpu', 'cpu']).optional(),
50
60
  prediction: z
51
- .enum(["auto", "eps", "v", "edm_v", "flow", "flux2_flow"])
61
+ .enum(['auto', 'eps', 'v', 'edm_v', 'flow', 'flux2_flow'])
52
62
  .optional()
53
- .describe("Prediction type; auto-detected from model when omitted"),
63
+ .describe('Prediction type; auto-detected from model when omitted'),
54
64
  type: z
55
65
  .enum([
56
- "auto", "f32", "f16", "bf16",
57
- "q2_k", "q3_k", "q4_0", "q4_1", "q4_k",
58
- "q5_0", "q5_1", "q5_k", "q6_k", "q8_0",
66
+ 'auto',
67
+ 'f32',
68
+ 'f16',
69
+ 'bf16',
70
+ 'q2_k',
71
+ 'q3_k',
72
+ 'q4_0',
73
+ 'q4_1',
74
+ 'q4_k',
75
+ 'q5_0',
76
+ 'q5_1',
77
+ 'q5_k',
78
+ 'q6_k',
79
+ 'q8_0'
59
80
  ])
60
81
  .optional()
61
- .describe("Weight quantization type override; auto-detected when omitted"),
62
- rng: z.enum(["cpu", "cuda", "std_default"]).optional(),
63
- sampler_rng: z.enum(["cpu", "cuda", "std_default"]).optional(),
64
- clip_on_cpu: z.boolean().optional().describe("Force CLIP text encoder to run on CPU"),
65
- vae_on_cpu: z.boolean().optional().describe("Force VAE decoder to run on CPU"),
66
- vae_tiling: z.boolean().optional().describe("Enable VAE tiling for large images on limited VRAM"),
67
- offload_to_cpu: z.boolean().optional()
68
- .describe("Keep model weights in CPU memory and offload them during GPU compute"),
69
- flash_attn: z.boolean().optional().describe("Enable flash attention to reduce memory usage"),
70
- diffusion_fa: z.boolean().optional().describe("Enable flash attention for the diffusion transformer only"),
71
- lora_apply_mode: z.enum(["auto", "immediately", "at_runtime"]).optional()
72
- .describe("How LoRA adapters passed via diffusion({ lora }) are applied. " +
82
+ .describe('Weight quantization type override; auto-detected when omitted'),
83
+ rng: z.enum(['cpu', 'cuda', 'std_default']).optional(),
84
+ sampler_rng: z.enum(['cpu', 'cuda', 'std_default']).optional(),
85
+ clip_on_cpu: z.boolean().optional().describe('Force CLIP text encoder to run on CPU'),
86
+ vae_on_cpu: z.boolean().optional().describe('Force VAE decoder to run on CPU'),
87
+ vae_tiling: z.boolean().optional().describe('Enable VAE tiling for large images on limited VRAM'),
88
+ offload_to_cpu: z
89
+ .boolean()
90
+ .optional()
91
+ .describe('Keep model weights in CPU memory and offload them during GPU compute'),
92
+ flash_attn: z.boolean().optional().describe('Enable flash attention to reduce memory usage'),
93
+ diffusion_fa: z
94
+ .boolean()
95
+ .optional()
96
+ .describe('Enable flash attention for the diffusion transformer only'),
97
+ lora_apply_mode: z
98
+ .enum(['auto', 'immediately', 'at_runtime'])
99
+ .optional()
100
+ .describe('How LoRA adapters passed via diffusion({ lora }) are applied. ' +
73
101
  "'auto' (default): picked based on weight type — 'at_runtime' for " +
74
102
  "quantized weights, 'immediately' for full-precision. " +
75
103
  "'immediately': adapter is fused into the model on first use and " +
76
- "persists across subsequent diffusion() calls until the model is " +
77
- "unloaded. " +
104
+ 'persists across subsequent diffusion() calls until the model is ' +
105
+ 'unloaded. ' +
78
106
  "'at_runtime': adapter is applied per-call and not persisted."),
79
107
  verbosity: z.number().optional(),
80
- clipLModelSrc: modelSrcInputSchema.optional()
81
- .describe("CLIP-L text encoder model — required for SD3"),
82
- clipGModelSrc: modelSrcInputSchema.optional()
83
- .describe("CLIP-G text encoder model — required for SDXL and SD3"),
84
- t5XxlModelSrc: modelSrcInputSchema.optional()
85
- .describe("T5-XXL text encoder model — required for SD3"),
86
- llmModelSrc: modelSrcInputSchema.optional()
87
- .describe("LLM text encoder model (e.g. Qwen3) — required for FLUX.2 [klein]"),
88
- vaeModelSrc: modelSrcInputSchema.optional()
89
- .describe("VAE decoder model — required for FLUX.2 [klein], optional for SDXL"),
90
- highNoiseDiffusionModelSrc: modelSrcInputSchema.optional()
91
- .describe("High-noise diffusion expert — required for Wan 2.2 mixture-of-experts video models"),
92
- clipVisionModelSrc: modelSrcInputSchema.optional()
93
- .describe("OpenCLIP ViT-H/14 weights (`clip_vision_h.safetensors`). Required for " +
94
- "Wan image-to-video (`img2vid`); omit for text-to-video-only pipelines."),
95
- upscaler: z.object({
96
- type: z.literal("esrgan").optional()
97
- .describe("Type of upscaler to use for post-generation upscaling when requested in diffusion({ upscale })."),
98
- model_src: modelSrcInputSchema.optional()
99
- .describe("ESRGAN upscaler model (e.g. RealESRGAN_x4plus_anime_6B.pth). " +
100
- "Required in diffusion mode when this `upscaler` block is set — " +
101
- "configures the post-generation upscaler invoked via diffusion({ upscale }). " +
108
+ clipLModelSrc: modelSrcInputSchema
109
+ .optional()
110
+ .describe('CLIP-L text encoder model — required for SD3'),
111
+ clipGModelSrc: modelSrcInputSchema
112
+ .optional()
113
+ .describe('CLIP-G text encoder model — required for SDXL and SD3'),
114
+ t5XxlModelSrc: modelSrcInputSchema
115
+ .optional()
116
+ .describe('T5-XXL text encoder model — required for SD3'),
117
+ llmModelSrc: modelSrcInputSchema
118
+ .optional()
119
+ .describe('LLM text encoder model (e.g. Qwen3) — required for FLUX.2 [klein]'),
120
+ vaeModelSrc: modelSrcInputSchema
121
+ .optional()
122
+ .describe('VAE decoder model — required for FLUX.2 [klein], optional for SDXL'),
123
+ highNoiseDiffusionModelSrc: modelSrcInputSchema
124
+ .optional()
125
+ .describe('High-noise diffusion expert — required for Wan 2.2 mixture-of-experts video models'),
126
+ clipVisionModelSrc: modelSrcInputSchema
127
+ .optional()
128
+ .describe('OpenCLIP ViT-H/14 weights (`clip_vision_h.safetensors`). Required for ' +
129
+ 'Wan image-to-video (`img2vid`); omit for text-to-video-only pipelines.'),
130
+ upscaler: z
131
+ .object({
132
+ type: z
133
+ .literal('esrgan')
134
+ .optional()
135
+ .describe('Type of upscaler to use for post-generation upscaling when requested in diffusion({ upscale }).'),
136
+ model_src: modelSrcInputSchema
137
+ .optional()
138
+ .describe('ESRGAN upscaler model (e.g. RealESRGAN_x4plus_anime_6B.pth). ' +
139
+ 'Required in diffusion mode when this `upscaler` block is set — ' +
140
+ 'configures the post-generation upscaler invoked via diffusion({ upscale }). ' +
102
141
  "In `mode: 'upscale'` the primary modelSrc itself is the ESRGAN model, " +
103
- "so this field is ignored."),
104
- tile_size: z.number().int().positive().optional()
105
- .describe("ESRGAN upscaler tile size in pixels. Smaller tiles use less VRAM " +
106
- "at the cost of more passes."),
107
- direct: z.boolean().optional()
108
- .describe("Use direct convolution in the ESRGAN upscaler instead of im2col + " +
109
- "GEMM. Faster on some backends, slower on others."),
110
- offload_params_to_cpu: z.boolean().optional()
111
- .describe("Keep ESRGAN upscaler weights on CPU and offload them during compute. " +
112
- "Trades latency for VRAM headroom on memory-constrained GPUs."),
113
- threads: z.union([
114
- z.literal(-1),
115
- z.number().int().positive(),
116
- ])
142
+ 'so this field is ignored.'),
143
+ tile_size: z
144
+ .number()
145
+ .int()
146
+ .positive()
147
+ .optional()
148
+ .describe('ESRGAN upscaler tile size in pixels. Smaller tiles use less VRAM ' +
149
+ 'at the cost of more passes.'),
150
+ direct: z
151
+ .boolean()
152
+ .optional()
153
+ .describe('Use direct convolution in the ESRGAN upscaler instead of im2col + ' +
154
+ 'GEMM. Faster on some backends, slower on others.'),
155
+ offload_params_to_cpu: z
156
+ .boolean()
157
+ .optional()
158
+ .describe('Keep ESRGAN upscaler weights on CPU and offload them during compute. ' +
159
+ 'Trades latency for VRAM headroom on memory-constrained GPUs.'),
160
+ threads: z
161
+ .union([z.literal(-1), z.number().int().positive()])
117
162
  .optional()
118
- .describe("Number of CPU threads dedicated to the ESRGAN upscaler. -1 = auto."),
119
- }).strict().optional()
120
- .describe("ESRGAN upscaler configuration. In diffusion mode this enables the " +
121
- "post-generation upscale path invoked via diffusion({ upscale }) and " +
163
+ .describe('Number of CPU threads dedicated to the ESRGAN upscaler. -1 = auto.')
164
+ })
165
+ .strict()
166
+ .optional()
167
+ .describe('ESRGAN upscaler configuration. In diffusion mode this enables the ' +
168
+ 'post-generation upscale path invoked via diffusion({ upscale }) and ' +
122
169
  "requires `model_src`. In `mode: 'upscale'` only the tuning fields " +
123
- "(tile_size, direct, offload_params_to_cpu, threads) are honored — " +
124
- "the primary modelSrc IS the ESRGAN model in that mode and " +
170
+ '(tile_size, direct, offload_params_to_cpu, threads) are honored — ' +
171
+ 'the primary modelSrc IS the ESRGAN model in that mode and ' +
125
172
  "`model_src` here is ignored. In `mode: 'video'` the entire `upscaler` " +
126
- "object is ignored. Mode-dependent constraints (e.g. `model_src` " +
127
- "required in diffusion mode) are enforced by the sdcpp-generation " +
128
- "plugin at load time, not at the schema layer."),
173
+ 'object is ignored. Mode-dependent constraints (e.g. `model_src` ' +
174
+ 'required in diffusion mode) are enforced by the sdcpp-generation ' +
175
+ 'plugin at load time, not at the schema layer.')
129
176
  });
130
177
  export const diffusionStatsSchema = z.object({
131
178
  modelLoadMs: z
132
179
  .number()
133
180
  .optional()
134
- .describe("Time in milliseconds spent loading the diffusion model."),
181
+ .describe('Time in milliseconds spent loading the diffusion model.'),
135
182
  generationMs: z
136
183
  .number()
137
184
  .optional()
138
- .describe("Wall-clock time in milliseconds spent generating images."),
185
+ .describe('Wall-clock time in milliseconds spent generating images.'),
139
186
  totalGenerationMs: z
140
187
  .number()
141
188
  .optional()
142
- .describe("Total generation time in milliseconds across all images in the batch."),
189
+ .describe('Total generation time in milliseconds across all images in the batch.'),
143
190
  totalWallMs: z
144
191
  .number()
145
192
  .optional()
146
- .describe("Total wall-clock time in milliseconds including model load and sampling."),
147
- totalSteps: z
148
- .number()
149
- .optional()
150
- .describe("Total number of diffusion sampling steps executed."),
151
- totalGenerations: z
152
- .number()
153
- .optional()
154
- .describe("Total number of generation passes executed."),
155
- totalImages: z
156
- .number()
157
- .optional()
158
- .describe("Total number of images produced."),
193
+ .describe('Total wall-clock time in milliseconds including model load and sampling.'),
194
+ totalSteps: z.number().optional().describe('Total number of diffusion sampling steps executed.'),
195
+ totalGenerations: z.number().optional().describe('Total number of generation passes executed.'),
196
+ totalImages: z.number().optional().describe('Total number of images produced.'),
159
197
  totalPixels: z
160
198
  .number()
161
199
  .optional()
162
- .describe("Total number of pixels generated across all images."),
163
- width: z
164
- .number()
165
- .optional()
166
- .describe("Width in pixels of each generated image."),
167
- height: z
168
- .number()
169
- .optional()
170
- .describe("Height in pixels of each generated image."),
200
+ .describe('Total number of pixels generated across all images.'),
201
+ width: z.number().optional().describe('Width in pixels of each generated image.'),
202
+ height: z.number().optional().describe('Height in pixels of each generated image.'),
171
203
  seed: z
172
204
  .number()
173
205
  .optional()
174
- .describe("Seed that produced these outputs (randomized when not supplied by the caller)."),
206
+ .describe('Seed that produced these outputs (randomized when not supplied by the caller).')
175
207
  });
176
- export const videoStatsSchema = diffusionStatsSchema.pick({
208
+ export const videoStatsSchema = diffusionStatsSchema
209
+ .pick({
177
210
  modelLoadMs: true,
178
211
  generationMs: true,
179
212
  totalGenerationMs: true,
@@ -184,298 +217,269 @@ export const videoStatsSchema = diffusionStatsSchema.pick({
184
217
  totalPixels: true,
185
218
  width: true,
186
219
  height: true,
187
- seed: true,
188
- }).extend({
189
- totalVideos: z
190
- .number()
191
- .optional()
192
- .describe("Total number of videos produced."),
193
- totalVideoFrames: z
194
- .number()
195
- .optional()
196
- .describe("Total number of video frames produced."),
197
- videoFrames: z
198
- .number()
199
- .optional()
200
- .describe("Frame count of the most recent generated video."),
220
+ seed: true
221
+ })
222
+ .extend({
223
+ totalVideos: z.number().optional().describe('Total number of videos produced.'),
224
+ totalVideoFrames: z.number().optional().describe('Total number of video frames produced.'),
225
+ videoFrames: z.number().optional().describe('Frame count of the most recent generated video.'),
201
226
  fps: z
202
227
  .number()
203
228
  .optional()
204
- .describe("Frames-per-second metadata for the most recent generated video."),
229
+ .describe('Frames-per-second metadata for the most recent generated video.')
205
230
  });
206
231
  export const diffusionStreamResponseSchema = z.object({
207
- type: z.literal("diffusionStream"),
232
+ type: z.literal('diffusionStream'),
208
233
  step: z.number().optional(),
209
234
  totalSteps: z.number().optional(),
210
235
  elapsedMs: z.number().optional(),
211
236
  data: z.string().optional(),
212
237
  outputIndex: z.number().optional(),
213
238
  done: z.boolean().optional(),
214
- stats: diffusionStatsSchema.optional(),
239
+ stats: diffusionStatsSchema.optional()
215
240
  });
216
241
  export const videoStreamResponseSchema = z.object({
217
- type: z.literal("videoStream"),
242
+ type: z.literal('videoStream'),
218
243
  step: z.number().optional(),
219
244
  totalSteps: z.number().optional(),
220
245
  elapsedMs: z.number().optional(),
221
246
  data: z.string().optional(),
222
247
  outputIndex: z.number().optional(),
223
248
  done: z.boolean().optional(),
224
- stats: videoStatsSchema.optional(),
249
+ stats: videoStatsSchema.optional()
225
250
  });
226
- export const diffusionRequestSchema = z.object({
227
- modelId: z
228
- .string()
229
- .describe("The identifier of the diffusion model to use for generation."),
230
- prompt: z.string().describe("Positive prompt describing the image to generate."),
251
+ export const diffusionRequestSchema = z
252
+ .object({
253
+ modelId: z.string().describe('The identifier of the diffusion model to use for generation.'),
254
+ prompt: z.string().describe('Positive prompt describing the image to generate.'),
231
255
  negative_prompt: z
232
256
  .string()
233
257
  .optional()
234
- .describe("Optional negative prompt describing what to avoid."),
258
+ .describe('Optional negative prompt describing what to avoid.'),
235
259
  width: z
236
260
  .number()
237
261
  .int()
238
262
  .positive()
239
263
  .multipleOf(8)
240
264
  .optional()
241
- .describe("Image width in pixels (must be a multiple of 8)."),
265
+ .describe('Image width in pixels (must be a multiple of 8).'),
242
266
  height: z
243
267
  .number()
244
268
  .int()
245
269
  .positive()
246
270
  .multipleOf(8)
247
271
  .optional()
248
- .describe("Image height in pixels (must be a multiple of 8)."),
249
- steps: z
250
- .number()
251
- .int()
252
- .positive()
253
- .optional()
254
- .describe("Number of sampling steps to run."),
272
+ .describe('Image height in pixels (must be a multiple of 8).'),
273
+ steps: z.number().int().positive().optional().describe('Number of sampling steps to run.'),
255
274
  cfg_scale: z
256
275
  .number()
257
276
  .optional()
258
- .describe("Classifier-free guidance scale for SD 1.x / 2.x / XL / SD3 models; typical range 1–20, default 7"),
277
+ .describe('Classifier-free guidance scale for SD 1.x / 2.x / XL / SD3 models; typical range 1–20, default 7'),
259
278
  img_cfg_scale: z
260
279
  .number()
261
280
  .default(-1)
262
- .describe("Image CFG scale for img2img/inpaint workflows where the image and prompt should have different guidance weights; defaults to -1 which reuses cfg_scale"),
281
+ .describe('Image CFG scale for img2img/inpaint workflows where the image and prompt should have different guidance weights; defaults to -1 which reuses cfg_scale'),
263
282
  guidance: z
264
283
  .number()
265
284
  .optional()
266
- .describe("Distilled guidance for FLUX models; typical range 1–10, default 3.5"),
285
+ .describe('Distilled guidance for FLUX models; typical range 1–10, default 3.5'),
267
286
  sampling_method: samplingMethodSchema
268
287
  .optional()
269
- .describe("Sampling algorithm used by the diffusion scheduler."),
270
- scheduler: scheduleTypeSchema
271
- .optional()
272
- .describe("Noise schedule to apply when sampling."),
288
+ .describe('Sampling algorithm used by the diffusion scheduler.'),
289
+ scheduler: scheduleTypeSchema.optional().describe('Noise schedule to apply when sampling.'),
273
290
  seed: z
274
291
  .number()
275
292
  .int()
276
293
  .optional()
277
- .describe("Random seed; when omitted the SDK picks one and returns it in stats."),
294
+ .describe('Random seed; when omitted the SDK picks one and returns it in stats.'),
278
295
  batch_count: z
279
296
  .number()
280
297
  .int()
281
298
  .positive()
282
299
  .optional()
283
- .describe("Number of images to generate in this call."),
300
+ .describe('Number of images to generate in this call.'),
284
301
  vae_tiling: z
285
302
  .boolean()
286
303
  .optional()
287
- .describe("Enable VAE tiling for large images on constrained VRAM (overrides model config)."),
304
+ .describe('Enable VAE tiling for large images on constrained VRAM (overrides model config).'),
288
305
  cache_preset: z
289
306
  .string()
290
307
  .optional()
291
- .describe("Optional name of a cached sampler preset to reuse."),
308
+ .describe('Optional name of a cached sampler preset to reuse.'),
292
309
  init_image: base64StringSchema
293
310
  .optional()
294
- .describe("Base64-encoded image for img2img generation. Mutually exclusive with init_images."),
295
- init_images: z.array(base64StringSchema)
311
+ .describe('Base64-encoded image for img2img generation. Mutually exclusive with init_images.'),
312
+ init_images: z
313
+ .array(base64StringSchema)
296
314
  .min(1)
297
315
  .optional()
298
- .describe("FLUX.2-only multi-reference fusion: array of base64-encoded PNG/JPEG buffers. " +
299
- "Each buffer becomes a separate reference image that the FLUX.2 transformer attends to. " +
300
- "Mutually exclusive with init_image; requires the model to be loaded with " +
316
+ .describe('FLUX.2-only multi-reference fusion: array of base64-encoded PNG/JPEG buffers. ' +
317
+ 'Each buffer becomes a separate reference image that the FLUX.2 transformer attends to. ' +
318
+ 'Mutually exclusive with init_image; requires the model to be loaded with ' +
301
319
  "config.prediction='flux2_flow' and a Qwen3 text encoder via llmModelSrc."),
302
- increase_ref_index: z.boolean().optional()
303
- .describe("FLUX.2 fusion only. When omitted, the addon default (false) is used. When false, all " +
304
- "reference latents share one RoPE index slot and blend via attention (recommended for " +
305
- "FLUX.2-klein). When true, each reference gets its own RoPE index slot — use only with " +
306
- "text encoders that receive per-image vision tokens."),
307
- auto_resize_ref_image: z.boolean().optional()
308
- .describe("FLUX.2 only. When omitted, the addon default (true) is used. When true, every reference " +
309
- "image (single or fusion) is auto-resized to the target width/height before VAE-encoding. " +
310
- "Disable only if the buffers are already at the exact target dimensions."),
320
+ increase_ref_index: z
321
+ .boolean()
322
+ .optional()
323
+ .describe('FLUX.2 fusion only. When omitted, the addon default (false) is used. When false, all ' +
324
+ 'reference latents share one RoPE index slot and blend via attention (recommended for ' +
325
+ 'FLUX.2-klein). When true, each reference gets its own RoPE index slot — use only with ' +
326
+ 'text encoders that receive per-image vision tokens.'),
327
+ auto_resize_ref_image: z
328
+ .boolean()
329
+ .optional()
330
+ .describe('FLUX.2 only. When omitted, the addon default (true) is used. When true, every reference ' +
331
+ 'image (single or fusion) is auto-resized to the target width/height before VAE-encoding. ' +
332
+ 'Disable only if the buffers are already at the exact target dimensions.'),
311
333
  lora: z
312
334
  .string()
313
335
  .min(1)
314
336
  .regex(ABSOLUTE_PATH_PATTERN, {
315
- message: "lora must be an absolute path",
337
+ message: 'lora must be an absolute path'
316
338
  })
317
339
  .optional()
318
- .describe("Optional local LoRA adapter path to apply for this generation. " +
319
- "Must be an absolute filesystem path. " +
320
- "Whether the adapter persists across subsequent diffusion() calls is controlled " +
321
- "by sdcppConfigSchema.lora_apply_mode (set at loadModel time)."),
340
+ .describe('Optional local LoRA adapter path to apply for this generation. ' +
341
+ 'Must be an absolute filesystem path. ' +
342
+ 'Whether the adapter persists across subsequent diffusion() calls is controlled ' +
343
+ 'by sdcppConfigSchema.lora_apply_mode (set at loadModel time).'),
322
344
  strength: z
323
345
  .number()
324
346
  .min(0)
325
347
  .max(1)
326
348
  .optional()
327
- .describe("img2img denoising strength (0.0 = keep source, 1.0 = ignore source); used by the SD/SDXL SDEdit path. No-op for FLUX.2, which uses in-context conditioning and ignores this field."),
349
+ .describe('img2img denoising strength (0.0 = keep source, 1.0 = ignore source); used by the SD/SDXL SDEdit path. No-op for FLUX.2, which uses in-context conditioning and ignores this field.'),
328
350
  upscale: z
329
351
  .union([
330
352
  z.boolean(),
331
- z.object({
332
- repeats: z.number().int().positive().optional(),
333
- }).strict(),
353
+ z
354
+ .object({
355
+ repeats: z.number().int().positive().optional()
356
+ })
357
+ .strict()
334
358
  ])
335
359
  .optional()
336
- .describe("Post-generation ESRGAN upscale. " +
337
- "`true` (or `{}` / `{ repeats: 1 }`) runs a single upscale pass at the " +
360
+ .describe('Post-generation ESRGAN upscale. ' +
361
+ '`true` (or `{}` / `{ repeats: 1 }`) runs a single upscale pass at the ' +
338
362
  "model's native scale factor (e.g. x4 for RealESRGAN_x4plus). " +
339
- "`false` is a no-op (same as omitting the field). " +
340
- "`{ repeats: N }` runs the upscaler N times sequentially — each pass " +
363
+ '`false` is a no-op (same as omitting the field). ' +
364
+ '`{ repeats: N }` runs the upscaler N times sequentially — each pass ' +
341
365
  "multiplies the output dimensions by the model's scale factor. When " +
342
- "`batch_count > 1`, every output image is upscaled independently. " +
343
- "Requires the model to be loaded with `upscaler.model_src` set in modelConfig."),
344
- }).refine((d) => d.init_image === undefined || d.init_images === undefined, {
345
- message: "init_image and init_images are mutually exclusive — pass one or the other, not both.",
366
+ '`batch_count > 1`, every output image is upscaled independently. ' +
367
+ 'Requires the model to be loaded with `upscaler.model_src` set in modelConfig.')
368
+ })
369
+ .refine((d) => d.init_image === undefined || d.init_images === undefined, {
370
+ message: 'init_image and init_images are mutually exclusive — pass one or the other, not both.'
346
371
  });
347
372
  export const diffusionStreamRequestSchema = diffusionRequestSchema.extend({
348
- type: z.literal("diffusionStream"),
373
+ type: z.literal('diffusionStream')
349
374
  });
350
375
  const videoGenerationBaseSchema = z.object({
351
376
  modelId: z
352
377
  .string()
353
- .describe("The identifier of the loaded video model to use for generation. " +
354
- "On React Native, prefer a `modelId` loaded with a `delegate` because " +
355
- "the video diffusion models currently shipped by the SDK are too " +
356
- "large to load on typical mobile devices."),
378
+ .describe('The identifier of the loaded video model to use for generation. ' +
379
+ 'On React Native, prefer a `modelId` loaded with a `delegate` because ' +
380
+ 'the video diffusion models currently shipped by the SDK are too ' +
381
+ 'large to load on typical mobile devices.'),
357
382
  requestId: z
358
383
  .string()
359
384
  .min(1)
360
385
  .optional()
361
- .describe("Stable identifier for this in-flight video generation. Optional on the wire — the server falls back to a server-generated id when the field is missing."),
362
- prompt: z.string().describe("Positive prompt describing the video to generate."),
386
+ .describe('Stable identifier for this in-flight video generation. Optional on the wire — the server falls back to a server-generated id when the field is missing.'),
387
+ prompt: z.string().describe('Positive prompt describing the video to generate.'),
363
388
  negative_prompt: z
364
389
  .string()
365
390
  .optional()
366
- .describe("Optional negative prompt describing what to avoid."),
391
+ .describe('Optional negative prompt describing what to avoid.'),
367
392
  width: z
368
393
  .number()
369
394
  .int()
370
395
  .positive()
371
396
  .multipleOf(16)
372
397
  .optional()
373
- .describe("Video width in pixels (must be a multiple of 16)."),
398
+ .describe('Video width in pixels (must be a multiple of 16).'),
374
399
  height: z
375
400
  .number()
376
401
  .int()
377
402
  .positive()
378
403
  .multipleOf(16)
379
404
  .optional()
380
- .describe("Video height in pixels (must be a multiple of 16)."),
405
+ .describe('Video height in pixels (must be a multiple of 16).'),
381
406
  video_frames: z
382
407
  .number()
383
408
  .int()
384
409
  .refine((value) => value >= 5 && (value - 1) % 4 === 0, {
385
- message: "video_frames must be an integer >= 5 of the form (4*k + 1)",
410
+ message: 'video_frames must be an integer >= 5 of the form (4*k + 1)'
386
411
  })
387
412
  .optional()
388
- .describe("Frame count for the generated video; must satisfy (4*k + 1), where k>=1."),
413
+ .describe('Frame count for the generated video; must satisfy (4*k + 1), where k>=1.'),
389
414
  fps: z
390
415
  .number()
391
416
  .positive()
392
417
  .max(120)
393
418
  .optional()
394
- .describe("AVI framerate metadata in frames per second; must be in (0, 120]."),
419
+ .describe('AVI framerate metadata in frames per second; must be in (0, 120].'),
395
420
  seed: z
396
421
  .number()
397
422
  .int()
398
423
  .optional()
399
- .describe("Random seed; when omitted the SDK picks one and returns it in stats."),
424
+ .describe('Random seed; when omitted the SDK picks one and returns it in stats.'),
400
425
  steps: z
401
426
  .number()
402
427
  .int()
403
428
  .positive()
404
429
  .optional()
405
- .describe("Low-noise or single-expert denoising step count."),
430
+ .describe('Low-noise or single-expert denoising step count.'),
406
431
  sampling_method: samplingMethodSchema
407
432
  .optional()
408
- .describe("Sampling algorithm used by the low-noise diffusion scheduler."),
433
+ .describe('Sampling algorithm used by the low-noise diffusion scheduler.'),
409
434
  scheduler: scheduleTypeSchema
410
435
  .optional()
411
- .describe("Noise schedule to apply for the low-noise diffusion path."),
412
- cfg_scale: z
413
- .number()
414
- .optional()
415
- .describe("Classifier-free guidance scale."),
416
- flow_shift: z
417
- .number()
418
- .optional()
419
- .describe("Per-request flow-matching guidance shift override."),
436
+ .describe('Noise schedule to apply for the low-noise diffusion path.'),
437
+ cfg_scale: z.number().optional().describe('Classifier-free guidance scale.'),
438
+ flow_shift: z.number().optional().describe('Per-request flow-matching guidance shift override.'),
420
439
  high_noise_steps: z
421
440
  .number()
422
441
  .int()
423
442
  .positive()
424
443
  .optional()
425
- .describe("Wan 2.2 high-noise expert step count."),
444
+ .describe('Wan 2.2 high-noise expert step count.'),
426
445
  high_noise_sampler: samplingMethodSchema
427
446
  .optional()
428
- .describe("Wan 2.2 high-noise expert sampler."),
447
+ .describe('Wan 2.2 high-noise expert sampler.'),
429
448
  high_noise_scheduler: scheduleTypeSchema
430
449
  .optional()
431
- .describe("Wan 2.2 high-noise expert scheduler."),
432
- high_noise_cfg_scale: z
433
- .number()
434
- .optional()
435
- .describe("Wan 2.2 high-noise expert CFG scale."),
450
+ .describe('Wan 2.2 high-noise expert scheduler.'),
451
+ high_noise_cfg_scale: z.number().optional().describe('Wan 2.2 high-noise expert CFG scale.'),
436
452
  high_noise_flow_shift: z
437
453
  .number()
438
454
  .optional()
439
- .describe("Wan 2.2 high-noise expert flow shift override."),
455
+ .describe('Wan 2.2 high-noise expert flow shift override.'),
440
456
  moe_boundary: z
441
457
  .number()
442
458
  .min(0)
443
459
  .max(1)
444
460
  .optional()
445
- .describe("Wan 2.2 mixture-of-experts boundary in [0, 1]."),
446
- vace_strength: z
447
- .number()
448
- .min(0)
449
- .max(1)
450
- .optional()
451
- .describe("Control-frame guidance strength."),
452
- control_frames: z.array(base64StringSchema)
461
+ .describe('Wan 2.2 mixture-of-experts boundary in [0, 1].'),
462
+ vace_strength: z.number().min(0).max(1).optional().describe('Control-frame guidance strength.'),
463
+ control_frames: z
464
+ .array(base64StringSchema)
453
465
  .min(1)
454
466
  .optional()
455
- .describe("Optional array of base64-encoded control-frame images."),
467
+ .describe('Optional array of base64-encoded control-frame images.'),
456
468
  vae_tiling: z
457
469
  .boolean()
458
470
  .optional()
459
- .describe("Enable VAE tiling for large videos on constrained VRAM."),
471
+ .describe('Enable VAE tiling for large videos on constrained VRAM.'),
460
472
  vae_tile_size: z
461
473
  .union([z.number().positive(), z.string().min(1)])
462
474
  .optional()
463
- .describe("VAE tile size override."),
464
- vae_tile_overlap: z
465
- .number()
466
- .optional()
467
- .describe("VAE tile overlap override."),
468
- cache_mode: cacheModeSchema
469
- .optional()
470
- .describe("Step-caching algorithm."),
475
+ .describe('VAE tile size override.'),
476
+ vae_tile_overlap: z.number().optional().describe('VAE tile overlap override.'),
477
+ cache_mode: cacheModeSchema.optional().describe('Step-caching algorithm.'),
471
478
  cache_preset: z
472
479
  .string()
473
480
  .optional()
474
- .describe("Optional name of a cached sampler preset to reuse."),
475
- cache_threshold: z
476
- .number()
477
- .optional()
478
- .describe("Direct cache reuse threshold override."),
481
+ .describe('Optional name of a cached sampler preset to reuse.'),
482
+ cache_threshold: z.number().optional().describe('Direct cache reuse threshold override.')
479
483
  });
480
484
  // Single wire object with mode-dependent rules expressed via a shared refine.
481
485
  // Keeping the wire schema a plain object (instead of a discriminated union)
@@ -485,46 +489,46 @@ const videoGenerationBaseSchema = z.object({
485
489
  // discriminated union types below.
486
490
  const videoRequestObjectSchema = videoGenerationBaseSchema.extend({
487
491
  mode: z
488
- .enum(["txt2vid", "img2vid"])
492
+ .enum(['txt2vid', 'img2vid'])
489
493
  .describe("Generation mode: 'txt2vid' (no source frame) or 'img2vid' (first-frame image)."),
490
494
  init_image: base64StringSchema
491
495
  .optional()
492
- .describe("Base64-encoded first-frame image (PNG/JPEG). Required for img2vid; rejected for txt2vid."),
496
+ .describe('Base64-encoded first-frame image (PNG/JPEG). Required for img2vid; rejected for txt2vid.'),
493
497
  strength: z
494
498
  .number()
495
499
  .min(0)
496
500
  .max(1)
497
501
  .optional()
498
- .describe("img2vid denoise strength in [0, 1]; rejected for txt2vid."),
502
+ .describe('img2vid denoise strength in [0, 1]; rejected for txt2vid.')
499
503
  });
500
504
  function refineVideoMode(data, ctx) {
501
- if (data.mode === "img2vid" && data.init_image === undefined) {
505
+ if (data.mode === 'img2vid' && data.init_image === undefined) {
502
506
  ctx.addIssue({
503
- code: "custom",
504
- path: ["init_image"],
505
- message: "init_image is required when mode is 'img2vid'.",
507
+ code: 'custom',
508
+ path: ['init_image'],
509
+ message: "init_image is required when mode is 'img2vid'."
506
510
  });
507
511
  }
508
- if (data.mode === "txt2vid") {
512
+ if (data.mode === 'txt2vid') {
509
513
  if (data.init_image !== undefined) {
510
514
  ctx.addIssue({
511
- code: "custom",
512
- path: ["init_image"],
513
- message: "init_image is only valid for img2vid.",
515
+ code: 'custom',
516
+ path: ['init_image'],
517
+ message: 'init_image is only valid for img2vid.'
514
518
  });
515
519
  }
516
520
  if (data.strength !== undefined) {
517
521
  ctx.addIssue({
518
- code: "custom",
519
- path: ["strength"],
520
- message: "strength is only valid for img2vid.",
522
+ code: 'custom',
523
+ path: ['strength'],
524
+ message: 'strength is only valid for img2vid.'
521
525
  });
522
526
  }
523
527
  }
524
528
  }
525
529
  export const videoRequestSchema = videoRequestObjectSchema.superRefine(refineVideoMode);
526
530
  export const videoStreamRequestSchema = videoRequestObjectSchema
527
- .extend({ type: z.literal("videoStream") })
531
+ .extend({ type: z.literal('videoStream') })
528
532
  .superRefine(refineVideoMode);
529
533
  // ============================================
530
534
  // Standalone ESRGAN upscale (mode: "upscale")
@@ -533,70 +537,64 @@ export const upscaleStatsSchema = z.object({
533
537
  modelLoadMs: z
534
538
  .number()
535
539
  .optional()
536
- .describe("Wall-clock time in milliseconds spent loading the upscaler model."),
540
+ .describe('Wall-clock time in milliseconds spent loading the upscaler model.'),
537
541
  upscaleMs: z
538
542
  .number()
539
543
  .optional()
540
- .describe("Wall-clock time in milliseconds for the most recent upscale job."),
544
+ .describe('Wall-clock time in milliseconds for the most recent upscale job.'),
541
545
  totalUpscaleMs: z
542
546
  .number()
543
547
  .optional()
544
- .describe("Cumulative upscale time in milliseconds across all jobs."),
548
+ .describe('Cumulative upscale time in milliseconds across all jobs.'),
545
549
  totalWallMs: z
546
550
  .number()
547
551
  .optional()
548
- .describe("Total wall-clock time in milliseconds including model load and upscaling."),
549
- totalUpscales: z
550
- .number()
551
- .optional()
552
- .describe("Cumulative number of upscale calls."),
553
- totalImages: z
554
- .number()
555
- .optional()
556
- .describe("Cumulative number of images produced."),
552
+ .describe('Total wall-clock time in milliseconds including model load and upscaling.'),
553
+ totalUpscales: z.number().optional().describe('Cumulative number of upscale calls.'),
554
+ totalImages: z.number().optional().describe('Cumulative number of images produced.'),
557
555
  totalPixels: z
558
556
  .number()
559
557
  .optional()
560
- .describe("Cumulative number of pixels produced across all images."),
561
- width: z.number().optional().describe("Width of the most recent emitted PNG."),
562
- height: z.number().optional().describe("Height of the most recent emitted PNG."),
558
+ .describe('Cumulative number of pixels produced across all images.'),
559
+ width: z.number().optional().describe('Width of the most recent emitted PNG.'),
560
+ height: z.number().optional().describe('Height of the most recent emitted PNG.'),
563
561
  repeats: z
564
562
  .number()
565
563
  .optional()
566
- .describe("Number of ESRGAN passes used by the most recent upscale job."),
564
+ .describe('Number of ESRGAN passes used by the most recent upscale job.'),
567
565
  backendDevice: z
568
- .enum(["cpu", "gpu"])
566
+ .enum(['cpu', 'gpu'])
569
567
  .optional()
570
- .describe("Actual compute device used by the ESRGAN upscaler. " +
571
- "Reflects the backend stable-diffusion.cpp selected (e.g. Android `gpu` " +
572
- "falls back to `cpu` because the mobile GPU/OpenCL path is unstable)."),
568
+ .describe('Actual compute device used by the ESRGAN upscaler. ' +
569
+ 'Reflects the backend stable-diffusion.cpp selected (e.g. Android `gpu` ' +
570
+ 'falls back to `cpu` because the mobile GPU/OpenCL path is unstable).')
573
571
  });
574
572
  export const upscaleRequestSchema = z.object({
575
573
  modelId: z
576
574
  .string()
577
- .describe("Identifier of the loaded upscaler model. The model must have been loaded " +
575
+ .describe('Identifier of the loaded upscaler model. The model must have been loaded ' +
578
576
  "with `modelType: 'diffusion'` and `modelConfig.mode: 'upscale'`."),
579
577
  image: z
580
578
  .string()
581
579
  .min(1)
582
580
  .regex(BASE64_PATTERN)
583
- .describe("Base64-encoded PNG/JPEG bytes of the source image."),
581
+ .describe('Base64-encoded PNG/JPEG bytes of the source image.'),
584
582
  repeats: z
585
583
  .number()
586
584
  .int()
587
585
  .positive()
588
586
  .optional()
589
- .describe("Number of ESRGAN passes to run sequentially. Each pass multiplies " +
587
+ .describe('Number of ESRGAN passes to run sequentially. Each pass multiplies ' +
590
588
  "dimensions by the model's native scale factor; only the final image " +
591
- "is emitted (`outputs.length === 1`). Defaults to 1."),
589
+ 'is emitted (`outputs.length === 1`). Defaults to 1.')
592
590
  });
593
591
  export const upscaleStreamRequestSchema = upscaleRequestSchema.extend({
594
- type: z.literal("upscaleStream"),
592
+ type: z.literal('upscaleStream')
595
593
  });
596
594
  export const upscaleStreamResponseSchema = z.object({
597
- type: z.literal("upscaleStream"),
595
+ type: z.literal('upscaleStream'),
598
596
  data: z.string().optional(),
599
597
  outputIndex: z.number().optional(),
600
598
  done: z.boolean().optional(),
601
- stats: upscaleStatsSchema.optional(),
599
+ stats: upscaleStatsSchema.optional()
602
600
  });