@qvac/sdk 0.15.0 → 0.17.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 (617) hide show
  1. package/NOTICE +87 -84
  2. package/README.md +65 -0
  3. package/dist/client/api/audio-gen-result.d.ts +4 -0
  4. package/dist/client/api/audio-gen-result.js +132 -0
  5. package/dist/client/api/audio-gen.d.ts +29 -0
  6. package/dist/client/api/audio-gen.js +31 -0
  7. package/dist/client/api/batch-completion.d.ts +2 -2
  8. package/dist/client/api/batch-completion.js +2 -2
  9. package/dist/client/api/bci-transcribe.d.ts +1 -1
  10. package/dist/client/api/bci-transcribe.js +3 -3
  11. package/dist/client/api/cancel.d.ts +1 -1
  12. package/dist/client/api/cancel.js +1 -1
  13. package/dist/client/api/classify.d.ts +1 -1
  14. package/dist/client/api/classify.js +1 -1
  15. package/dist/client/api/completion-stream.d.ts +3 -3
  16. package/dist/client/api/completion-stream.js +3 -3
  17. package/dist/client/api/delete-cache.js +1 -1
  18. package/dist/client/api/diffusion.d.ts +1 -1
  19. package/dist/client/api/diffusion.js +1 -1
  20. package/dist/client/api/download-asset.d.ts +1 -1
  21. package/dist/client/api/download-asset.js +3 -3
  22. package/dist/client/api/embed.d.ts +1 -1
  23. package/dist/client/api/embed.js +2 -2
  24. package/dist/client/api/finetune.d.ts +1 -1
  25. package/dist/client/api/finetune.js +2 -2
  26. package/dist/client/api/get-loaded-model-info.d.ts +2 -2
  27. package/dist/client/api/get-loaded-model-info.js +1 -1
  28. package/dist/client/api/get-model-info.d.ts +2 -2
  29. package/dist/client/api/get-model-info.js +1 -1
  30. package/dist/client/api/get-system-resources.d.ts +3 -0
  31. package/dist/client/api/get-system-resources.js +16 -0
  32. package/dist/client/api/heartbeat.d.ts +2 -2
  33. package/dist/client/api/heartbeat.js +1 -1
  34. package/dist/client/api/index.d.ts +35 -33
  35. package/dist/client/api/index.js +2 -0
  36. package/dist/client/api/invoke-plugin.d.ts +1 -1
  37. package/dist/client/api/invoke-plugin.js +1 -1
  38. package/dist/client/api/load-model.d.ts +2 -2
  39. package/dist/client/api/load-model.js +4 -4
  40. package/dist/client/api/logging-stream.d.ts +1 -1
  41. package/dist/client/api/logging-stream.js +1 -1
  42. package/dist/client/api/ocr.d.ts +10 -1
  43. package/dist/client/api/ocr.js +10 -1
  44. package/dist/client/api/provide.d.ts +1 -1
  45. package/dist/client/api/provide.js +1 -1
  46. package/dist/client/api/rag.d.ts +1 -1
  47. package/dist/client/api/rag.js +2 -2
  48. package/dist/client/api/registry.d.ts +1 -1
  49. package/dist/client/api/registry.js +1 -1
  50. package/dist/client/api/resume.js +1 -1
  51. package/dist/client/api/state.d.ts +1 -1
  52. package/dist/client/api/state.js +1 -1
  53. package/dist/client/api/stop-provider.js +1 -1
  54. package/dist/client/api/subscribe-logs.d.ts +1 -1
  55. package/dist/client/api/suspend.js +1 -1
  56. package/dist/client/api/text-to-speech.d.ts +3 -2
  57. package/dist/client/api/text-to-speech.js +31 -9
  58. package/dist/client/api/transcribe.d.ts +1 -1
  59. package/dist/client/api/transcribe.js +2 -2
  60. package/dist/client/api/translate.d.ts +1 -1
  61. package/dist/client/api/translate.js +7 -18
  62. package/dist/client/api/unload-model.d.ts +1 -1
  63. package/dist/client/api/unload-model.js +2 -2
  64. package/dist/client/api/upscale.d.ts +1 -1
  65. package/dist/client/api/upscale.js +1 -1
  66. package/dist/client/api/video.d.ts +8 -5
  67. package/dist/client/api/video.js +9 -6
  68. package/dist/client/api/vla.d.ts +15 -11
  69. package/dist/client/api/vla.js +14 -10
  70. package/dist/client/config-loader/config-utils.d.ts +1 -1
  71. package/dist/client/config-loader/resolve-config.bare.d.ts +1 -1
  72. package/dist/client/config-loader/resolve-config.expo.d.ts +1 -1
  73. package/dist/client/config-loader/resolve-config.node.d.ts +1 -1
  74. package/dist/client/index.d.ts +1 -1
  75. package/dist/client/init-hooks.d.ts +1 -1
  76. package/dist/client/logging-stream-registry.d.ts +1 -1
  77. package/dist/client/plugins-factory.d.ts +2 -2
  78. package/dist/client/plugins-factory.js +1 -1
  79. package/dist/client/rpc/bare-client.d.ts +1 -1
  80. package/dist/client/rpc/bare-client.js +3 -3
  81. package/dist/client/rpc/expo-rpc-client.js +3 -3
  82. package/dist/client/rpc/node-rpc-client.js +2 -2
  83. package/dist/client/rpc/profiling/index.d.ts +1 -1
  84. package/dist/client/rpc/profiling/profiler.d.ts +2 -2
  85. package/dist/client/rpc/profiling/profiler.js +4 -0
  86. package/dist/client/rpc/rpc-client.d.ts +1 -1
  87. package/dist/client/rpc/rpc-client.js +7 -4
  88. package/dist/client/rpc/rpc-error.d.ts +1 -1
  89. package/dist/client/rpc/rpc-error.js +7 -1
  90. package/dist/commands/bundle/bare-pack.d.ts +1 -1
  91. package/dist/commands/bundle/constants.js +1 -0
  92. package/dist/commands/bundle/entry-gen.js +1 -1
  93. package/dist/commands/bundle/index.js +6 -6
  94. package/dist/commands/bundle/manifest.d.ts +1 -1
  95. package/dist/commands/bundle/plugins.d.ts +2 -2
  96. package/dist/commands/bundle/plugins.js +1 -1
  97. package/dist/commands/index.d.ts +4 -4
  98. package/dist/commands/index.js +2 -2
  99. package/dist/commands/verify/abi.d.ts +1 -1
  100. package/dist/commands/verify/abi.js +1 -1
  101. package/dist/commands/verify/bundle-source.d.ts +1 -1
  102. package/dist/commands/verify/bundle-source.js +2 -2
  103. package/dist/commands/verify/index.d.ts +3 -3
  104. package/dist/commands/verify/index.js +5 -5
  105. package/dist/commands/verify/node-modules-source.d.ts +1 -1
  106. package/dist/commands/verify/node-modules-source.js +1 -1
  107. package/dist/commands/verify/prebuilds.d.ts +2 -1
  108. package/dist/commands/verify/prebuilds.js +8 -11
  109. package/dist/commands/verify/resource-collectors.d.ts +88 -0
  110. package/dist/commands/verify/resource-collectors.js +261 -0
  111. package/dist/constants/audio.js +1 -1
  112. package/dist/constants/index.d.ts +2 -2
  113. package/dist/examples/{transcription → asr}/parakeet-ctc-filesystem.js +2 -3
  114. package/dist/examples/{transcription → asr}/parakeet-microphone-record.js +2 -2
  115. package/dist/examples/{transcription → asr}/parakeet-microphone-stream.js +2 -2
  116. package/dist/examples/{transcription → asr}/parakeet-sortformer-streaming.js +2 -2
  117. package/dist/examples/{transcription → asr}/parakeet-sortformer.js +1 -1
  118. package/dist/examples/asr/parakeet-tdt-filesystem-chunked.d.ts +2 -0
  119. package/dist/examples/asr/parakeet-tdt-filesystem-chunked.js +203 -0
  120. package/dist/examples/{transcription → asr}/parakeet-tdt-filesystem.js +2 -2
  121. package/dist/examples/{transcription → asr}/whispercpp-filesystem-streaming.js +1 -1
  122. package/dist/examples/{transcription → asr}/whispercpp-filesystem.js +1 -1
  123. package/dist/examples/{transcription → asr}/whispercpp-microphone-conversation.js +1 -1
  124. package/dist/examples/{transcription → asr}/whispercpp-microphone-record.js +2 -2
  125. package/dist/examples/{transcription → asr}/whispercpp-prompt.js +1 -1
  126. package/dist/examples/audiogen/generate-music.d.ts +2 -0
  127. package/dist/examples/audiogen/generate-music.js +112 -0
  128. package/dist/examples/cache-management.js +1 -1
  129. package/dist/examples/config-reload.js +1 -1
  130. package/dist/examples/diffusion-ideogram.d.ts +2 -0
  131. package/dist/examples/diffusion-ideogram.js +108 -0
  132. package/dist/examples/diffusion-img2vid-ltx.d.ts +2 -0
  133. package/dist/examples/diffusion-img2vid-ltx.js +98 -0
  134. package/dist/examples/diffusion-txt2vid-ltx.d.ts +2 -0
  135. package/dist/examples/diffusion-txt2vid-ltx.js +92 -0
  136. package/dist/examples/diffusion-txt2vid-wan22.d.ts +2 -0
  137. package/dist/examples/diffusion-txt2vid-wan22.js +96 -0
  138. package/dist/examples/logging-streaming.js +5 -1
  139. package/dist/examples/quickstart.bare.js +1 -1
  140. package/dist/examples/rag/rag-mongodb.d.ts +2 -0
  141. package/dist/examples/rag/rag-mongodb.js +180 -0
  142. package/dist/examples/tools/llamacpp-tools-auto-dialect.d.ts +2 -0
  143. package/dist/examples/tools/llamacpp-tools-auto-dialect.js +77 -0
  144. package/dist/examples/tts/parler.d.ts +2 -0
  145. package/dist/examples/tts/parler.js +51 -0
  146. package/dist/examples/vla-groot.d.ts +2 -0
  147. package/dist/examples/vla-groot.js +120 -0
  148. package/dist/examples/voice-assistant/voice-assistant.js +2 -2
  149. package/dist/expo/plugins/index.d.ts +11 -11
  150. package/dist/expo/plugins/withDeviceInfo.js +2 -2
  151. package/dist/expo/plugins/withMobileBundle.js +3 -3
  152. package/dist/index.d.ts +16 -16
  153. package/dist/index.js +4 -4
  154. package/dist/logging/addon.d.ts +1 -1
  155. package/dist/logging/base-logger.d.ts +1 -1
  156. package/dist/logging/base-logger.js +1 -1
  157. package/dist/logging/client-logger.d.ts +1 -1
  158. package/dist/logging/index.d.ts +9 -9
  159. package/dist/logging/logger.d.ts +1 -1
  160. package/dist/logging/namespaces.d.ts +1 -1
  161. package/dist/logging/registry.d.ts +1 -1
  162. package/dist/logging/server-logger.d.ts +1 -1
  163. package/dist/logging/stream-logger.d.ts +1 -1
  164. package/dist/logging/transport.d.ts +1 -1
  165. package/dist/logging/utils.d.ts +1 -1
  166. package/dist/logging/utils.js +1 -1
  167. package/dist/models/registry/index.d.ts +1 -1
  168. package/dist/models/registry/models.d.ts +6443 -9832
  169. package/dist/models/registry/models.js +4076 -7658
  170. package/dist/models/update-models/codegen.d.ts +1 -1
  171. package/dist/models/update-models/companions.d.ts +1 -1
  172. package/dist/models/update-models/history.d.ts +1 -1
  173. package/dist/models/update-models/history.js +4 -4
  174. package/dist/models/update-models/naming.d.ts +1 -1
  175. package/dist/models/update-models/naming.js +12 -2
  176. package/dist/models/update-models/processing.d.ts +1 -1
  177. package/dist/models/update-models/processing.js +1 -1
  178. package/dist/models/update-models/registry.d.ts +2 -2
  179. package/dist/models/update-models/shards.d.ts +1 -1
  180. package/dist/models/update-models/types.d.ts +1 -1
  181. package/dist/pear/pre.js +2 -0
  182. package/dist/profiling/aggregator.d.ts +1 -1
  183. package/dist/profiling/backend-diagnostics.d.ts +8 -0
  184. package/dist/profiling/backend-diagnostics.js +21 -0
  185. package/dist/profiling/controller.d.ts +4 -2
  186. package/dist/profiling/controller.js +8 -0
  187. package/dist/profiling/envelope.d.ts +3 -2
  188. package/dist/profiling/envelope.js +13 -2
  189. package/dist/profiling/events.d.ts +2 -2
  190. package/dist/profiling/exporters.d.ts +1 -1
  191. package/dist/profiling/index.d.ts +9 -8
  192. package/dist/profiling/index.js +3 -2
  193. package/dist/profiling/types.d.ts +6 -0
  194. package/dist/schemas/audio-gen.d.ts +253 -0
  195. package/dist/schemas/audio-gen.js +69 -0
  196. package/dist/schemas/batch-completion-stream.d.ts +11 -6
  197. package/dist/schemas/bci-config.d.ts +2 -0
  198. package/dist/schemas/bci.d.ts +1 -1
  199. package/dist/schemas/cancel.d.ts +5 -0
  200. package/dist/schemas/cancel.js +1 -0
  201. package/dist/schemas/common.d.ts +1938 -58
  202. package/dist/schemas/common.js +9 -1
  203. package/dist/schemas/completion-event.d.ts +5 -2
  204. package/dist/schemas/completion-event.js +3 -0
  205. package/dist/schemas/completion-stream.d.ts +195 -3
  206. package/dist/schemas/completion-stream.js +72 -2
  207. package/dist/schemas/constants-registry.d.ts +69 -0
  208. package/dist/schemas/constants-registry.js +52 -0
  209. package/dist/schemas/delete-cache.js +7 -3
  210. package/dist/schemas/download-asset.d.ts +8 -4
  211. package/dist/schemas/engine-addon-map.d.ts +3 -1
  212. package/dist/schemas/engine-addon-map.js +6 -2
  213. package/dist/schemas/finetune.js +6 -3
  214. package/dist/schemas/get-loaded-model-info.d.ts +18 -0
  215. package/dist/schemas/get-loaded-model-info.js +14 -6
  216. package/dist/schemas/get-model-info.d.ts +2 -0
  217. package/dist/schemas/get-model-info.js +1 -0
  218. package/dist/schemas/index.d.ts +53 -51
  219. package/dist/schemas/index.js +4 -2
  220. package/dist/schemas/llamacpp-config.d.ts +30 -6
  221. package/dist/schemas/llamacpp-config.js +1 -6
  222. package/dist/schemas/load-model.d.ts +7654 -2919
  223. package/dist/schemas/load-model.js +45 -6
  224. package/dist/schemas/mcp-adapter.d.ts +1 -1
  225. package/dist/schemas/model-src-utils.d.ts +10 -2
  226. package/dist/schemas/model-types.d.ts +19 -1
  227. package/dist/schemas/model-types.js +11 -0
  228. package/dist/schemas/ocr.d.ts +2 -0
  229. package/dist/schemas/plugin.d.ts +17 -8
  230. package/dist/schemas/plugin.js +16 -6
  231. package/dist/schemas/profiling.d.ts +587 -0
  232. package/dist/schemas/profiling.js +22 -0
  233. package/dist/schemas/registry.d.ts +18 -0
  234. package/dist/schemas/registry.js +2 -0
  235. package/dist/schemas/reload-config.d.ts +10 -2
  236. package/dist/schemas/reload-config.js +3 -1
  237. package/dist/schemas/sdcpp-config.d.ts +296 -0
  238. package/dist/schemas/sdcpp-config.js +165 -17
  239. package/dist/schemas/sdk-config.d.ts +958 -40
  240. package/dist/schemas/sdk-errors-server.js +3 -1
  241. package/dist/schemas/system-resources.d.ts +3967 -0
  242. package/dist/schemas/system-resources.js +149 -0
  243. package/dist/schemas/text-to-speech.d.ts +340 -6
  244. package/dist/schemas/text-to-speech.js +136 -17
  245. package/dist/schemas/tools.d.ts +1 -1
  246. package/dist/schemas/tools.js +2 -1
  247. package/dist/schemas/transcription-config.d.ts +2 -0
  248. package/dist/schemas/translate.d.ts +2 -2
  249. package/dist/schemas/translate.js +12 -6
  250. package/dist/schemas/translation-config.d.ts +30 -10
  251. package/dist/schemas/vla.d.ts +10 -0
  252. package/dist/schemas/vla.js +31 -11
  253. package/dist/scripts/check-resource-collectors-packaging.d.ts +33 -0
  254. package/dist/scripts/check-resource-collectors-packaging.js +136 -0
  255. package/dist/scripts/contract/build-contract.d.ts +38 -0
  256. package/dist/scripts/contract/build-contract.js +620 -0
  257. package/dist/scripts/contract/build-error-codes.d.ts +17 -0
  258. package/dist/scripts/contract/build-error-codes.js +17 -0
  259. package/dist/scripts/contract/build-model-type-maps.d.ts +22 -0
  260. package/dist/scripts/contract/build-model-type-maps.js +16 -0
  261. package/dist/scripts/contract/build-models-registry.d.ts +17 -0
  262. package/dist/scripts/contract/build-models-registry.js +31 -0
  263. package/dist/scripts/contract/plugin-contract.d.ts +23 -0
  264. package/dist/scripts/contract/plugin-contract.js +28 -0
  265. package/dist/scripts/export-contract.d.ts +2 -0
  266. package/dist/scripts/export-contract.js +27 -0
  267. package/dist/scripts/export-plugin-contract.d.ts +2 -0
  268. package/dist/scripts/export-plugin-contract.js +18 -0
  269. package/dist/server/bare/delegate-rpc-client.d.ts +1 -1
  270. package/dist/server/bare/delegate-rpc-client.js +3 -3
  271. package/dist/server/bare/hyperswarm.d.ts +1 -1
  272. package/dist/server/bare/hyperswarm.js +2 -2
  273. package/dist/server/bare/ops/bci-transcribe.d.ts +1 -1
  274. package/dist/server/bare/ops/bci-transcribe.js +4 -4
  275. package/dist/server/bare/ops/cancel.d.ts +2 -2
  276. package/dist/server/bare/ops/cancel.js +2 -2
  277. package/dist/server/bare/ops/embed.d.ts +1 -1
  278. package/dist/server/bare/ops/embed.js +3 -3
  279. package/dist/server/bare/ops/kv-cache-retention.d.ts +12 -0
  280. package/dist/server/bare/ops/kv-cache-retention.js +121 -0
  281. package/dist/server/bare/ops/kv-cache-utils.d.ts +2 -1
  282. package/dist/server/bare/ops/kv-cache-utils.js +26 -5
  283. package/dist/server/bare/ops/load-model.d.ts +2 -2
  284. package/dist/server/bare/ops/load-model.js +7 -5
  285. package/dist/server/bare/ops/transcribe.d.ts +2 -2
  286. package/dist/server/bare/ops/transcribe.js +20 -40
  287. package/dist/server/bare/ops/translate.d.ts +1 -1
  288. package/dist/server/bare/ops/translate.js +21 -12
  289. package/dist/server/bare/ops/unload-model.d.ts +1 -1
  290. package/dist/server/bare/ops/unload-model.js +5 -5
  291. package/dist/server/bare/plugins/asr-ggml/config.d.ts +32 -0
  292. package/dist/server/bare/plugins/asr-ggml/config.js +46 -0
  293. package/dist/server/bare/plugins/asr-ggml/logging.d.ts +11 -0
  294. package/dist/server/bare/plugins/asr-ggml/logging.js +12 -0
  295. package/dist/server/bare/plugins/audiogen-ggml/config.d.ts +18 -0
  296. package/dist/server/bare/plugins/audiogen-ggml/config.js +23 -0
  297. package/dist/server/bare/plugins/audiogen-ggml/ops/audio-gen-stream.d.ts +3 -0
  298. package/dist/server/bare/plugins/audiogen-ggml/ops/audio-gen-stream.js +162 -0
  299. package/dist/server/bare/plugins/audiogen-ggml/plugin.d.ts +213 -0
  300. package/dist/server/bare/plugins/audiogen-ggml/plugin.js +58 -0
  301. package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.d.ts +8 -5
  302. package/dist/server/bare/plugins/bci-whispercpp-transcription/plugin.js +4 -4
  303. package/dist/server/bare/plugins/bci-whispercpp-transcription/resolve-config.d.ts +1 -1
  304. package/dist/server/bare/plugins/ggml-classification/ops/classify.d.ts +1 -1
  305. package/dist/server/bare/plugins/ggml-classification/ops/classify.js +1 -1
  306. package/dist/server/bare/plugins/ggml-classification/plugin.d.ts +2 -2
  307. package/dist/server/bare/plugins/ggml-classification/plugin.js +1 -1
  308. package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.d.ts +1 -1
  309. package/dist/server/bare/plugins/ggml-ocr/ops/ocr-stream.js +2 -2
  310. package/dist/server/bare/plugins/ggml-ocr/plugin.d.ts +4 -2
  311. package/dist/server/bare/plugins/ggml-ocr/plugin.js +4 -25
  312. package/dist/server/bare/plugins/ggml-ocr/resolve-config.d.ts +6 -0
  313. package/dist/server/bare/plugins/ggml-ocr/resolve-config.js +73 -0
  314. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.d.ts +1 -1
  315. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.js +1 -1
  316. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.d.ts +1 -1
  317. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.js +1 -1
  318. package/dist/server/bare/plugins/ggml-vla/plugin.d.ts +8 -3
  319. package/dist/server/bare/plugins/ggml-vla/plugin.js +1 -1
  320. package/dist/server/bare/plugins/index.d.ts +12 -11
  321. package/dist/server/bare/plugins/index.js +1 -0
  322. package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.d.ts +3 -3
  323. package/dist/server/bare/plugins/llamacpp-completion/ops/batch-completion-stream.js +5 -5
  324. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.d.ts +11 -1
  325. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stats.js +16 -0
  326. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +3 -3
  327. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +26 -35
  328. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.d.ts +1 -1
  329. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +3 -3
  330. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.d.ts +20 -10
  331. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js +217 -80
  332. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.d.ts +8 -0
  333. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +8 -0
  334. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +20 -8
  335. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +16 -16
  336. package/dist/server/bare/plugins/llamacpp-completion/transform.d.ts +1 -1
  337. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +8 -3
  338. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +5 -5
  339. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +12 -2
  340. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +3 -3
  341. package/dist/server/bare/plugins/nmtcpp-translation/resolve-vocab.d.ts +1 -1
  342. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +6 -6
  343. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +13 -20
  344. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.d.ts +1 -1
  345. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +1 -1
  346. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.d.ts +1 -1
  347. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.js +1 -1
  348. package/dist/server/bare/plugins/sdcpp-generation/ops/video.d.ts +4 -1
  349. package/dist/server/bare/plugins/sdcpp-generation/ops/video.js +40 -5
  350. package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +155 -5
  351. package/dist/server/bare/plugins/sdcpp-generation/plugin.js +109 -23
  352. package/dist/server/bare/plugins/tts-ggml/ops/parler-options.d.ts +7 -0
  353. package/dist/server/bare/plugins/tts-ggml/ops/parler-options.js +30 -0
  354. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.d.ts +2 -2
  355. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech-stream.js +8 -5
  356. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.d.ts +2 -2
  357. package/dist/server/bare/plugins/tts-ggml/ops/text-to-speech.js +16 -22
  358. package/dist/server/bare/plugins/tts-ggml/plugin.d.ts +120 -5
  359. package/dist/server/bare/plugins/tts-ggml/plugin.js +63 -5
  360. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +8 -6
  361. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +17 -25
  362. package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +1 -1
  363. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +1 -1
  364. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +1 -1
  365. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
  366. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +1 -1
  367. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +1 -1
  368. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +1 -1
  369. package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +1 -1
  370. package/dist/server/bare/rag-hyperdb/handlers/ingest.js +2 -2
  371. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +1 -1
  372. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +1 -1
  373. package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +1 -1
  374. package/dist/server/bare/rag-hyperdb/handlers/reindex.js +1 -1
  375. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +1 -1
  376. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +1 -1
  377. package/dist/server/bare/rag-hyperdb/handlers/search.d.ts +1 -1
  378. package/dist/server/bare/rag-hyperdb/handlers/search.js +2 -2
  379. package/dist/server/bare/rag-hyperdb/index.d.ts +11 -11
  380. package/dist/server/bare/rag-hyperdb/index.js +11 -11
  381. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +1 -1
  382. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +4 -4
  383. package/dist/server/bare/registry/config-registry.d.ts +1 -1
  384. package/dist/server/bare/registry/config-registry.js +1 -1
  385. package/dist/server/bare/registry/model-config-registry.d.ts +2 -2
  386. package/dist/server/bare/registry/model-config-registry.js +4 -4
  387. package/dist/server/bare/registry/model-config-utils.d.ts +1 -1
  388. package/dist/server/bare/registry/model-config-utils.js +3 -0
  389. package/dist/server/bare/registry/model-registry.d.ts +15 -4
  390. package/dist/server/bare/registry/registry-client.js +2 -2
  391. package/dist/server/bare/registry/runtime-context-registry.d.ts +1 -1
  392. package/dist/server/bare/resources/collector.d.ts +644 -0
  393. package/dist/server/bare/resources/collector.js +226 -0
  394. package/dist/server/bare/resources/native.d.ts +3 -0
  395. package/dist/server/bare/resources/native.js +35 -0
  396. package/dist/server/bare/resources/normalize.d.ts +13 -0
  397. package/dist/server/bare/resources/normalize.js +73 -0
  398. package/dist/server/bare/resources/types.d.ts +66 -0
  399. package/dist/server/bare/resources/types.js +1 -0
  400. package/dist/server/bare/resources/worker-collector.d.ts +5 -0
  401. package/dist/server/bare/resources/worker-collector.js +15 -0
  402. package/dist/server/bare/runtime/index.d.ts +7 -7
  403. package/dist/server/bare/runtime/index.js +3 -3
  404. package/dist/server/bare/runtime/request-context.d.ts +2 -2
  405. package/dist/server/bare/runtime/request-registry-singleton.d.ts +1 -1
  406. package/dist/server/bare/runtime/request-registry-singleton.js +11 -1
  407. package/dist/server/bare/runtime/request-registry.d.ts +2 -2
  408. package/dist/server/bare/runtime/request-registry.js +1 -1
  409. package/dist/server/bare/runtime/with-request-context.d.ts +1 -1
  410. package/dist/server/bare/runtime-lifecycle.d.ts +1 -1
  411. package/dist/server/bare/types/addon-responses.d.ts +8 -34
  412. package/dist/server/bare/utils/asr-events.d.ts +15 -0
  413. package/dist/server/bare/utils/asr-events.js +30 -0
  414. package/dist/server/bare/utils/audio-input.d.ts +1 -1
  415. package/dist/server/bare/utils/audio-input.js +1 -1
  416. package/dist/server/bare/utils/transcribe-metadata.d.ts +1 -1
  417. package/dist/server/bare/utils/tts-stats.d.ts +9 -5
  418. package/dist/server/bare/utils/tts-stats.js +6 -0
  419. package/dist/server/error-handlers.d.ts +1 -1
  420. package/dist/server/plugins/index.d.ts +1 -1
  421. package/dist/server/plugins/registry.d.ts +1 -1
  422. package/dist/server/plugins/registry.js +35 -8
  423. package/dist/server/rpc/create-server.js +23 -1
  424. package/dist/server/rpc/delegate-transport.d.ts +2 -2
  425. package/dist/server/rpc/delegate-transport.js +5 -10
  426. package/dist/server/rpc/handle-request.js +3 -3
  427. package/dist/server/rpc/handler-registry.d.ts +1 -1
  428. package/dist/server/rpc/handler-registry.js +45 -36
  429. package/dist/server/rpc/handler-selection.d.ts +2 -2
  430. package/dist/server/rpc/handler-utils.d.ts +2 -2
  431. package/dist/server/rpc/handler-utils.js +5 -5
  432. package/dist/server/rpc/handlers/audio-gen-stream.d.ts +3 -0
  433. package/dist/server/rpc/handlers/audio-gen-stream.js +4 -0
  434. package/dist/server/rpc/handlers/batch-completion-stream.d.ts +3 -1
  435. package/dist/server/rpc/handlers/batch-completion-stream.js +1 -1
  436. package/dist/server/rpc/handlers/bci-transcribe-stream.d.ts +1 -1
  437. package/dist/server/rpc/handlers/bci-transcribe-stream.js +1 -1
  438. package/dist/server/rpc/handlers/bci-transcribe.d.ts +1 -1
  439. package/dist/server/rpc/handlers/bci-transcribe.js +1 -1
  440. package/dist/server/rpc/handlers/cancel-delegated.d.ts +2 -2
  441. package/dist/server/rpc/handlers/cancel-delegated.js +3 -3
  442. package/dist/server/rpc/handlers/cancelHandler.d.ts +1 -1
  443. package/dist/server/rpc/handlers/cancelHandler.js +3 -3
  444. package/dist/server/rpc/handlers/classify.d.ts +1 -1
  445. package/dist/server/rpc/handlers/classify.js +1 -1
  446. package/dist/server/rpc/handlers/completion-orchestrate.d.ts +42 -0
  447. package/dist/server/rpc/handlers/completion-orchestrate.js +190 -0
  448. package/dist/server/rpc/handlers/completion-stream-delegated.d.ts +2 -2
  449. package/dist/server/rpc/handlers/completion-stream-delegated.js +3 -3
  450. package/dist/server/rpc/handlers/completion-stream.d.ts +1 -1
  451. package/dist/server/rpc/handlers/completion-stream.js +1 -1
  452. package/dist/server/rpc/handlers/delete-cache.d.ts +1 -1
  453. package/dist/server/rpc/handlers/delete-cache.js +1 -1
  454. package/dist/server/rpc/handlers/diffusion-stream.d.ts +1 -1
  455. package/dist/server/rpc/handlers/diffusion-stream.js +1 -1
  456. package/dist/server/rpc/handlers/download-asset.d.ts +1 -1
  457. package/dist/server/rpc/handlers/download-asset.js +4 -4
  458. package/dist/server/rpc/handlers/embed.d.ts +1 -1
  459. package/dist/server/rpc/handlers/embed.js +1 -1
  460. package/dist/server/rpc/handlers/finetune.d.ts +1 -1
  461. package/dist/server/rpc/handlers/finetune.js +2 -2
  462. package/dist/server/rpc/handlers/get-loaded-model-info.d.ts +1 -1
  463. package/dist/server/rpc/handlers/get-loaded-model-info.js +10 -4
  464. package/dist/server/rpc/handlers/get-model-info.d.ts +1 -1
  465. package/dist/server/rpc/handlers/get-model-info.js +4 -4
  466. package/dist/server/rpc/handlers/get-system-resources.d.ts +3 -0
  467. package/dist/server/rpc/handlers/get-system-resources.js +53 -0
  468. package/dist/server/rpc/handlers/heartbeat-delegated.d.ts +2 -2
  469. package/dist/server/rpc/handlers/heartbeat-delegated.js +2 -2
  470. package/dist/server/rpc/handlers/heartbeat.d.ts +1 -1
  471. package/dist/server/rpc/handlers/index.d.ts +38 -32
  472. package/dist/server/rpc/handlers/index.js +6 -0
  473. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +3 -3
  474. package/dist/server/rpc/handlers/load-model/download-manager.js +1 -1
  475. package/dist/server/rpc/handlers/load-model/download-stats.d.ts +3 -3
  476. package/dist/server/rpc/handlers/load-model/handler.d.ts +1 -1
  477. package/dist/server/rpc/handlers/load-model/handler.js +12 -8
  478. package/dist/server/rpc/handlers/load-model/http.d.ts +2 -2
  479. package/dist/server/rpc/handlers/load-model/http.js +4 -4
  480. package/dist/server/rpc/handlers/load-model/hyperdrive.d.ts +2 -2
  481. package/dist/server/rpc/handlers/load-model/hyperdrive.js +5 -5
  482. package/dist/server/rpc/handlers/load-model/index.d.ts +2 -2
  483. package/dist/server/rpc/handlers/load-model/registry-client-options.d.ts +1 -1
  484. package/dist/server/rpc/handlers/load-model/registry-companion-set.d.ts +3 -3
  485. package/dist/server/rpc/handlers/load-model/registry-companion-set.js +3 -3
  486. package/dist/server/rpc/handlers/load-model/registry-download-utils.d.ts +4 -4
  487. package/dist/server/rpc/handlers/load-model/registry-download-utils.js +3 -3
  488. package/dist/server/rpc/handlers/load-model/registry-metadata.d.ts +1 -1
  489. package/dist/server/rpc/handlers/load-model/registry.d.ts +3 -3
  490. package/dist/server/rpc/handlers/load-model/registry.js +6 -6
  491. package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +2 -2
  492. package/dist/server/rpc/handlers/load-model/resolve-session.js +3 -3
  493. package/dist/server/rpc/handlers/load-model/resolve.d.ts +2 -2
  494. package/dist/server/rpc/handlers/load-model/resolve.js +2 -2
  495. package/dist/server/rpc/handlers/load-model/types.d.ts +2 -2
  496. package/dist/server/rpc/handlers/load-model-delegated.d.ts +2 -2
  497. package/dist/server/rpc/handlers/load-model-delegated.js +3 -3
  498. package/dist/server/rpc/handlers/logging-stream.d.ts +1 -1
  499. package/dist/server/rpc/handlers/logging-stream.js +1 -1
  500. package/dist/server/rpc/handlers/ocr-stream.d.ts +1 -1
  501. package/dist/server/rpc/handlers/ocr-stream.js +1 -1
  502. package/dist/server/rpc/handlers/plugin-dispatch.js +3 -3
  503. package/dist/server/rpc/handlers/plugin-invoke.d.ts +1 -1
  504. package/dist/server/rpc/handlers/plugin-invoke.js +3 -3
  505. package/dist/server/rpc/handlers/provideHandler/connection.js +1 -1
  506. package/dist/server/rpc/handlers/provideHandler/handler.d.ts +1 -1
  507. package/dist/server/rpc/handlers/provideHandler/handler.js +1 -1
  508. package/dist/server/rpc/handlers/provideHandler/proxy.js +1 -1
  509. package/dist/server/rpc/handlers/provideHandler.d.ts +1 -1
  510. package/dist/server/rpc/handlers/rag.d.ts +1 -1
  511. package/dist/server/rpc/handlers/rag.js +4 -4
  512. package/dist/server/rpc/handlers/registry.d.ts +1 -1
  513. package/dist/server/rpc/handlers/registry.js +1 -1
  514. package/dist/server/rpc/handlers/resume.d.ts +1 -1
  515. package/dist/server/rpc/handlers/resume.js +1 -1
  516. package/dist/server/rpc/handlers/state.d.ts +1 -1
  517. package/dist/server/rpc/handlers/state.js +1 -1
  518. package/dist/server/rpc/handlers/stopProvideHandler.d.ts +1 -1
  519. package/dist/server/rpc/handlers/stopProvideHandler.js +1 -1
  520. package/dist/server/rpc/handlers/suspend.d.ts +1 -1
  521. package/dist/server/rpc/handlers/suspend.js +1 -1
  522. package/dist/server/rpc/handlers/text-to-speech-stream.d.ts +1 -1
  523. package/dist/server/rpc/handlers/text-to-speech-stream.js +1 -1
  524. package/dist/server/rpc/handlers/text-to-speech.d.ts +1 -1
  525. package/dist/server/rpc/handlers/text-to-speech.js +1 -1
  526. package/dist/server/rpc/handlers/transcribe-stream.d.ts +1 -1
  527. package/dist/server/rpc/handlers/transcribe-stream.js +1 -1
  528. package/dist/server/rpc/handlers/transcribe.d.ts +1 -1
  529. package/dist/server/rpc/handlers/transcribe.js +1 -1
  530. package/dist/server/rpc/handlers/translate.d.ts +1 -1
  531. package/dist/server/rpc/handlers/translate.js +1 -1
  532. package/dist/server/rpc/handlers/unload-model-delegated.d.ts +1 -1
  533. package/dist/server/rpc/handlers/unload-model-delegated.js +5 -5
  534. package/dist/server/rpc/handlers/unload-model.d.ts +1 -1
  535. package/dist/server/rpc/handlers/unload-model.js +3 -3
  536. package/dist/server/rpc/handlers/upscale-stream.d.ts +1 -1
  537. package/dist/server/rpc/handlers/upscale-stream.js +1 -1
  538. package/dist/server/rpc/handlers/video-stream.d.ts +1 -1
  539. package/dist/server/rpc/handlers/video-stream.js +1 -1
  540. package/dist/server/rpc/index.d.ts +2 -2
  541. package/dist/server/rpc/method-shapes.d.ts +53 -0
  542. package/dist/server/rpc/method-shapes.js +50 -0
  543. package/dist/server/rpc/profiling/backend-diagnostics.d.ts +3 -0
  544. package/dist/server/rpc/profiling/backend-diagnostics.js +16 -0
  545. package/dist/server/rpc/profiling/context.d.ts +1 -1
  546. package/dist/server/rpc/profiling/delegation-profiler.d.ts +2 -2
  547. package/dist/server/rpc/profiling/index.d.ts +4 -4
  548. package/dist/server/rpc/profiling/operation-metrics.d.ts +2 -2
  549. package/dist/server/rpc/profiling/operation-metrics.js +29 -1
  550. package/dist/server/rpc/profiling/operation-wrappers.d.ts +1 -1
  551. package/dist/server/rpc/profiling/operation-wrappers.js +51 -13
  552. package/dist/server/rpc/profiling/profiler.d.ts +2 -2
  553. package/dist/server/rpc/transport-selector.d.ts +1 -1
  554. package/dist/server/utils/archive.js +1 -1
  555. package/dist/server/utils/audio/decoder.d.ts +1 -1
  556. package/dist/server/utils/audio/decoder.js +1 -1
  557. package/dist/server/utils/cache/auto-history.d.ts +1 -1
  558. package/dist/server/utils/cache/auto-history.js +13 -9
  559. package/dist/server/utils/cache/paths.d.ts +1 -1
  560. package/dist/server/utils/cache/paths.js +6 -6
  561. package/dist/server/utils/checksum.d.ts +1 -1
  562. package/dist/server/utils/completion-normalizer.d.ts +2 -1
  563. package/dist/server/utils/completion-normalizer.js +31 -1
  564. package/dist/server/utils/config-transform.d.ts +1 -1
  565. package/dist/server/utils/config-transform.js +5 -7
  566. package/dist/server/utils/index.d.ts +11 -11
  567. package/dist/server/utils/path-security.d.ts +1 -1
  568. package/dist/server/utils/qvac-paths.js +1 -1
  569. package/dist/server/utils/response-format.d.ts +1 -1
  570. package/dist/server/utils/shard-utils.d.ts +1 -1
  571. package/dist/server/utils/tool-integration.d.ts +1 -1
  572. package/dist/server/utils/tool-integration.js +2 -2
  573. package/dist/server/utils/tools/dialect.d.ts +1 -1
  574. package/dist/server/utils/tools/dialect.js +2 -0
  575. package/dist/server/utils/tools/index.d.ts +2 -2
  576. package/dist/server/utils/tools/parser.d.ts +1 -1
  577. package/dist/server/utils/tools/parser.js +16 -8
  578. package/dist/server/utils/tools/parsers/dsml.d.ts +4 -0
  579. package/dist/server/utils/tools/parsers/dsml.js +176 -0
  580. package/dist/server/utils/tools/parsers/gemma4native.d.ts +2 -2
  581. package/dist/server/utils/tools/parsers/gemma4native.js +1 -1
  582. package/dist/server/utils/tools/parsers/harmony.d.ts +2 -2
  583. package/dist/server/utils/tools/parsers/harmony.js +1 -1
  584. package/dist/server/utils/tools/parsers/hermes.d.ts +2 -2
  585. package/dist/server/utils/tools/parsers/hermes.js +1 -1
  586. package/dist/server/utils/tools/parsers/json.d.ts +2 -2
  587. package/dist/server/utils/tools/parsers/json.js +1 -1
  588. package/dist/server/utils/tools/parsers/pythonic.d.ts +2 -2
  589. package/dist/server/utils/tools/parsers/pythonic.js +1 -1
  590. package/dist/server/utils/tools/parsers/qwen35.d.ts +2 -2
  591. package/dist/server/utils/tools/parsers/qwen35.js +1 -1
  592. package/dist/server/utils/tools/shared.d.ts +1 -1
  593. package/dist/server/utils/worker-lock.js +1 -1
  594. package/dist/server/worker-core.js +14 -10
  595. package/dist/server/worker.js +4 -3
  596. package/dist/utils/aggregate-events.d.ts +2 -2
  597. package/dist/utils/aggregate-events.js +2 -2
  598. package/dist/utils/errors-client.d.ts +0 -3
  599. package/dist/utils/errors-client.js +0 -5
  600. package/dist/utils/errors-server.d.ts +1 -1
  601. package/dist/utils/mcp-adapter.d.ts +4 -4
  602. package/dist/utils/mcp-adapter.js +1 -1
  603. package/dist/utils/tool-helpers.d.ts +1 -1
  604. package/dist/utils/tool-helpers.js +1 -1
  605. package/docs/system-resources-support-matrix.md +103 -0
  606. package/package.json +37 -19
  607. /package/dist/examples/{transcription → asr}/parakeet-ctc-filesystem.d.ts +0 -0
  608. /package/dist/examples/{transcription → asr}/parakeet-microphone-record.d.ts +0 -0
  609. /package/dist/examples/{transcription → asr}/parakeet-microphone-stream.d.ts +0 -0
  610. /package/dist/examples/{transcription → asr}/parakeet-sortformer-streaming.d.ts +0 -0
  611. /package/dist/examples/{transcription → asr}/parakeet-sortformer.d.ts +0 -0
  612. /package/dist/examples/{transcription → asr}/parakeet-tdt-filesystem.d.ts +0 -0
  613. /package/dist/examples/{transcription → asr}/whispercpp-filesystem-streaming.d.ts +0 -0
  614. /package/dist/examples/{transcription → asr}/whispercpp-filesystem.d.ts +0 -0
  615. /package/dist/examples/{transcription → asr}/whispercpp-microphone-conversation.d.ts +0 -0
  616. /package/dist/examples/{transcription → asr}/whispercpp-microphone-record.d.ts +0 -0
  617. /package/dist/examples/{transcription → asr}/whispercpp-prompt.d.ts +0 -0
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Parakeet TDT transcription for long audio files.
3
+ *
4
+ * Usage:
5
+ * bun run examples/asr/parakeet-tdt-filesystem-chunked.ts <audio-file> [parakeet-tdt-gguf]
6
+ *
7
+ * FFmpeg first detects silence, then this example selects boundaries near
8
+ * 45 seconds and transcribes one segment at a time. Segments never exceed
9
+ * 60 seconds, which keeps audio and inference memory bounded. Any audio
10
+ * format supported by FFmpeg can be used.
11
+ */
12
+ import { loadModel, unloadModel, transcribe, PARAKEET_TDT_0_6B_V3_Q8_0 } from '@qvac/sdk';
13
+ import { spawn } from 'child_process';
14
+ const SAMPLE_RATE = 16000;
15
+ const SILENCE_NOISE_DB = -35;
16
+ const SILENCE_DURATION_S = 0.5;
17
+ const MIN_SEGMENT_S = 10;
18
+ const TARGET_SEGMENT_S = 45;
19
+ const MAX_SEGMENT_S = 60;
20
+ function runCommand(command, args) {
21
+ return new Promise((resolve, reject) => {
22
+ const child = spawn(command, args, { stdio: ['ignore', 'pipe', 'pipe'] });
23
+ const stdout = [];
24
+ const stderr = [];
25
+ child.stdout.on('data', (chunk) => stdout.push(chunk));
26
+ child.stderr.on('data', (chunk) => stderr.push(chunk));
27
+ child.on('error', reject);
28
+ child.on('close', (code) => {
29
+ const stderrText = Buffer.concat(stderr).toString();
30
+ if (code !== 0) {
31
+ reject(new Error(`${command} exited with code ${code}: ${stderrText.trim()}`));
32
+ return;
33
+ }
34
+ resolve({ stdout: Buffer.concat(stdout), stderr: stderrText });
35
+ });
36
+ });
37
+ }
38
+ async function getAudioDuration(audioPath) {
39
+ const result = await runCommand('ffprobe', [
40
+ '-v',
41
+ 'error',
42
+ '-show_entries',
43
+ 'format=duration',
44
+ '-of',
45
+ 'default=noprint_wrappers=1:nokey=1',
46
+ audioPath
47
+ ]);
48
+ const duration = Number.parseFloat(result.stdout.toString().trim());
49
+ if (!Number.isFinite(duration) || duration <= 0) {
50
+ throw new Error(`Could not determine audio duration for ${audioPath}`);
51
+ }
52
+ return duration;
53
+ }
54
+ async function detectSilences(audioPath, duration) {
55
+ const result = await runCommand('ffmpeg', [
56
+ '-hide_banner',
57
+ '-nostats',
58
+ '-i',
59
+ audioPath,
60
+ '-vn',
61
+ '-af',
62
+ `silencedetect=noise=${SILENCE_NOISE_DB}dB:d=${SILENCE_DURATION_S}`,
63
+ '-f',
64
+ 'null',
65
+ '-'
66
+ ]);
67
+ const intervals = [];
68
+ let currentStart = null;
69
+ for (const line of result.stderr.split('\n')) {
70
+ const startMatch = line.match(/silence_start:\s*([0-9.]+)/);
71
+ if (startMatch?.[1]) {
72
+ const start = Number.parseFloat(startMatch[1]);
73
+ if (Number.isFinite(start))
74
+ currentStart = start;
75
+ }
76
+ const endMatch = line.match(/silence_end:\s*([0-9.]+)/);
77
+ if (endMatch?.[1] && currentStart !== null) {
78
+ const end = Number.parseFloat(endMatch[1]);
79
+ if (Number.isFinite(end) && end > currentStart) {
80
+ intervals.push({ start: currentStart, end });
81
+ }
82
+ currentStart = null;
83
+ }
84
+ }
85
+ if (currentStart !== null && currentStart < duration) {
86
+ intervals.push({ start: currentStart, end: duration });
87
+ }
88
+ return intervals;
89
+ }
90
+ function createAudioSegments(duration, silences) {
91
+ const silenceMidpoints = silences.map(({ start, end }) => start + (end - start) / 2);
92
+ const segments = [];
93
+ let start = 0;
94
+ while (duration - start > MAX_SEGMENT_S) {
95
+ const target = start + TARGET_SEGMENT_S;
96
+ const minimumCut = start + MIN_SEGMENT_S;
97
+ const maximumCut = start + MAX_SEGMENT_S;
98
+ const candidates = silenceMidpoints.filter((candidate) => candidate >= minimumCut && candidate <= maximumCut);
99
+ const firstCandidate = candidates[0];
100
+ const cut = firstCandidate === undefined
101
+ ? Math.min(target, duration - MIN_SEGMENT_S)
102
+ : candidates.slice(1).reduce((best, candidate) => {
103
+ return Math.abs(candidate - target) < Math.abs(best - target) ? candidate : best;
104
+ }, firstCandidate);
105
+ segments.push({ start, end: cut });
106
+ start = cut;
107
+ }
108
+ if (duration > start) {
109
+ segments.push({ start, end: duration });
110
+ }
111
+ return segments;
112
+ }
113
+ async function decodeSegment(audioPath, segment) {
114
+ const result = await runCommand('ffmpeg', [
115
+ '-hide_banner',
116
+ '-loglevel',
117
+ 'error',
118
+ '-ss',
119
+ segment.start.toFixed(3),
120
+ '-i',
121
+ audioPath,
122
+ '-t',
123
+ (segment.end - segment.start).toFixed(3),
124
+ '-vn',
125
+ '-ar',
126
+ String(SAMPLE_RATE),
127
+ '-ac',
128
+ '1',
129
+ '-sample_fmt',
130
+ 's16',
131
+ '-f',
132
+ 's16le',
133
+ 'pipe:1'
134
+ ]);
135
+ return result.stdout;
136
+ }
137
+ function formatTimestamp(seconds) {
138
+ const totalTenths = Math.round(seconds * 10);
139
+ const hours = Math.floor(totalTenths / 36000);
140
+ const minutes = Math.floor((totalTenths % 36000) / 600);
141
+ const remainingSeconds = ((totalTenths % 600) / 10).toFixed(1).padStart(4, '0');
142
+ return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${remainingSeconds}`;
143
+ }
144
+ const args = process.argv.slice(2);
145
+ if (!args[0]) {
146
+ console.error('Usage: bun run examples/asr/parakeet-tdt-filesystem-chunked.ts ' +
147
+ '<audio-file> [parakeet-tdt-gguf]');
148
+ process.exit(1);
149
+ }
150
+ const audioFilePath = args[0];
151
+ const parakeetModelSrc = args[1] ?? PARAKEET_TDT_0_6B_V3_Q8_0;
152
+ let modelId = null;
153
+ try {
154
+ await runCommand('ffmpeg', ['-version']);
155
+ await runCommand('ffprobe', ['-version']);
156
+ console.log('▸ Detecting silence and planning bounded segments...');
157
+ const duration = await getAudioDuration(audioFilePath);
158
+ const silences = await detectSilences(audioFilePath, duration);
159
+ const segments = createAudioSegments(duration, silences);
160
+ console.log(`▸ Audio duration: ${formatTimestamp(duration)}; detected ${silences.length} silence interval(s); planned ${segments.length} segment(s)`);
161
+ console.log('▸ Loading Parakeet TDT model...');
162
+ modelId = await loadModel({
163
+ modelSrc: parakeetModelSrc,
164
+ modelType: 'parakeet-transcription',
165
+ onProgress: (p) => {
166
+ const mb = (n) => (n / 1e6).toFixed(1);
167
+ const line = `▸ Downloading ${p.percentage.toFixed(0)}% (${mb(p.downloaded)}/${mb(p.total)} MB)`;
168
+ process.stderr.write(process.stderr.isTTY ? `\r${line}` : `${line}\n`);
169
+ if (p.percentage >= 100)
170
+ process.stderr.write('\n');
171
+ }
172
+ });
173
+ console.log(`▸ Model loaded: ${modelId}`);
174
+ const transcript = [];
175
+ for (const [index, segment] of segments.entries()) {
176
+ console.log(`▸ Segment ${index + 1}/${segments.length}: ${formatTimestamp(segment.start)} - ${formatTimestamp(segment.end)}`);
177
+ const audioChunk = await decodeSegment(audioFilePath, segment);
178
+ const text = await transcribe({ modelId, audioChunk });
179
+ const normalizedText = text.trim();
180
+ if (normalizedText && !normalizedText.includes('[No speech detected]')) {
181
+ transcript.push(normalizedText);
182
+ console.log(normalizedText);
183
+ }
184
+ }
185
+ console.log('\n▸ Complete transcript');
186
+ console.log(transcript.join(' '));
187
+ await unloadModel({ modelId });
188
+ modelId = null;
189
+ console.log('▸ Done');
190
+ process.exit(0);
191
+ }
192
+ catch (error) {
193
+ console.error('✖', error);
194
+ if (modelId) {
195
+ try {
196
+ await unloadModel({ modelId });
197
+ }
198
+ catch (unloadError) {
199
+ console.error('✖ Failed to unload model:', unloadError);
200
+ }
201
+ }
202
+ process.exit(1);
203
+ }
@@ -2,7 +2,7 @@
2
2
  * Parakeet TDT transcription from a WAV file.
3
3
  *
4
4
  * Usage:
5
- * bun run examples/transcription/parakeet-tdt-filesystem.ts <wav-file> [parakeet-tdt-gguf]
5
+ * bun run examples/asr/parakeet-tdt-filesystem.ts <wav-file> [parakeet-tdt-gguf]
6
6
  *
7
7
  * Loads a single GGUF checkpoint (`PARAKEET_TDT_0_6B_V3_Q8_0` by default) and
8
8
  * transcribes the file with the batch `transcribe` API. Omit the model
@@ -13,7 +13,7 @@
13
13
  import { loadModel, unloadModel, transcribe, PARAKEET_TDT_0_6B_V3_Q8_0 } from '@qvac/sdk';
14
14
  const args = process.argv.slice(2);
15
15
  if (!args[0]) {
16
- console.error('Usage: bun run examples/transcription/parakeet-tdt-filesystem.ts <wav-file-path> ' +
16
+ console.error('Usage: bun run examples/asr/parakeet-tdt-filesystem.ts <wav-file-path> ' +
17
17
  '[parakeet-tdt-gguf]');
18
18
  console.error('\nIf the model path is omitted, defaults to the registry model.');
19
19
  process.exit(1);
@@ -2,7 +2,7 @@
2
2
  * Test script: pipes a WAV file through transcribeStream to verify
3
3
  * the bidirectional streaming + addon processing works end-to-end.
4
4
  *
5
- * Usage: bun run examples/transcription/whispercpp-filesystem-streaming.ts
5
+ * Usage: bun run examples/asr/whispercpp-filesystem-streaming.ts
6
6
  *
7
7
  * Uses FFmpeg to convert the WAV to raw f32le and streams chunks
8
8
  * through the duplex RPC session to the whisper addon.
@@ -2,7 +2,7 @@ import { loadModel, unloadModel, transcribe, WHISPER_TINY } from '@qvac/sdk';
2
2
  // Parse command line arguments
3
3
  const args = process.argv.slice(2);
4
4
  if (!args[0]) {
5
- console.error('Usage: bun run examples/whispercpp-filesystem.ts <wav-file-path>');
5
+ console.error('Usage: bun run examples/asr/whispercpp-filesystem.ts <wav-file-path>');
6
6
  process.exit(1);
7
7
  }
8
8
  const audioFilePath = args[0];
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import { loadModel, unloadModel, transcribeStream, WHISPER_TINY, VAD_SILERO_5_1_2 } from '@qvac/sdk';
20
20
  import { spawnSync } from 'child_process';
21
- import { startMicrophone } from '../audio/mic-input';
21
+ import { startMicrophone } from '../audio/mic-input.js';
22
22
  const SAMPLE_RATE = 16000;
23
23
  try {
24
24
  const r = spawnSync('ffmpeg', ['-version'], { stdio: 'ignore' });
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Microphone → Whisper streaming transcription with native VAD.
3
3
  *
4
- * Usage: bun run examples/transcription/whispercpp-microphone-record.ts
4
+ * Usage: bun run examples/asr/whispercpp-microphone-record.ts
5
5
  *
6
6
  * Speak into your mic; transcriptions appear automatically when you pause.
7
7
  * Press Ctrl+C to quit.
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import { loadModel, unloadModel, transcribeStream, WHISPER_TINY, VAD_SILERO_5_1_2 } from '@qvac/sdk';
12
12
  import { spawnSync } from 'child_process';
13
- import { startMicrophone } from '../audio/mic-input';
13
+ import { startMicrophone } from '../audio/mic-input.js';
14
14
  const SAMPLE_RATE = 16000;
15
15
  // ── Main ──
16
16
  try {
@@ -2,7 +2,7 @@
2
2
  * Whisper transcription with prompt example.
3
3
  *
4
4
  * Usage:
5
- * bun examples/transcription/whispercpp-prompt.ts
5
+ * bun examples/asr/whispercpp-prompt.ts
6
6
  *
7
7
  * This example requires a test audio file (default: examples/audio/sample-16khz.wav).
8
8
  * Sample audio files are available in the QVAC source repository, but not included in the published npm package.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate-music.d.ts.map
@@ -0,0 +1,112 @@
1
+ import { writeFileSync } from 'node:fs';
2
+ import { AUDIOGEN_ACESTEP_5HZ_LM_0_6B_Q8_0, AUDIOGEN_ACESTEP_V15_TURBO_Q4_K_M, AUDIOGEN_QWEN3_EMBEDDING_0_6B_Q8_0, AUDIOGEN_VAE_BF16, audioGen, loadModel, unloadModel } from '@qvac/sdk';
3
+ // Usage:
4
+ // bun examples/audiogen/generate-music.ts "lo-fi hip hop, mellow piano" output.wav
5
+ const caption = process.argv[2] ?? 'Lo-fi hip hop with mellow piano, soft drums, and a warm bass line';
6
+ const outputPath = process.argv[3] ?? 'audiogen-output.wav';
7
+ let modelId;
8
+ const lastLoggedPercentageByDownload = new Map();
9
+ const completedDownloads = new Set();
10
+ try {
11
+ console.log('▸ Loading ACE-Step AudioGen models...');
12
+ modelId = await loadModel({
13
+ modelType: 'audiogen',
14
+ modelConfig: {
15
+ textEncModelSrc: AUDIOGEN_QWEN3_EMBEDDING_0_6B_Q8_0,
16
+ lmModelSrc: AUDIOGEN_ACESTEP_5HZ_LM_0_6B_Q8_0,
17
+ ditModelSrc: AUDIOGEN_ACESTEP_V15_TURBO_Q4_K_M,
18
+ vaeModelSrc: AUDIOGEN_VAE_BF16,
19
+ useGPU: true,
20
+ inferenceSteps: 8
21
+ },
22
+ onProgress: (progress) => {
23
+ const mb = (bytes) => (bytes / 1e6).toFixed(1);
24
+ const label = getDownloadLabel(progress.downloadKey);
25
+ const line = `▸ Downloading ${label}: ${progress.percentage.toFixed(0)}% ` +
26
+ `(${mb(progress.downloaded)}/${mb(progress.total)} MB)`;
27
+ if (process.stderr.isTTY) {
28
+ process.stderr.write(`\r${line}`);
29
+ if (progress.percentage >= 100 && !completedDownloads.has(progress.downloadKey)) {
30
+ completedDownloads.add(progress.downloadKey);
31
+ process.stderr.write('\n');
32
+ }
33
+ return;
34
+ }
35
+ const percentageBucket = Math.floor(progress.percentage / 5) * 5;
36
+ const lastLogged = lastLoggedPercentageByDownload.get(progress.downloadKey);
37
+ const isNewCompletion = progress.percentage >= 100 && lastLogged !== 100;
38
+ if (lastLogged === undefined || percentageBucket > lastLogged || isNewCompletion) {
39
+ lastLoggedPercentageByDownload.set(progress.downloadKey, percentageBucket);
40
+ process.stderr.write(`${line}\n`);
41
+ }
42
+ }
43
+ });
44
+ console.log(`▸ Model loaded: ${modelId}`);
45
+ console.log(`▸ Generating: ${caption}`);
46
+ const run = audioGen({
47
+ modelId,
48
+ caption,
49
+ lyrics: '[Instrumental]',
50
+ seed: 42,
51
+ duration: 10
52
+ });
53
+ console.log(`▸ requestId: ${run.requestId}`);
54
+ for await (const progress of run.progressStream) {
55
+ console.log(`▸ ${progress.stage}: ${progress.step}/${progress.total}`);
56
+ }
57
+ const [audio, stats] = await Promise.all([run.audio, run.stats]);
58
+ const wav = createWav(audio.pcm, audio.sampleRate, audio.channels, audio.bitsPerSample);
59
+ writeFileSync(outputPath, wav);
60
+ const samplesPerChannel = audio.pcm.byteLength / (audio.bitsPerSample / 8) / audio.channels;
61
+ console.log(`▸ Generated ${samplesPerChannel} samples per channel at ` +
62
+ `${audio.sampleRate} Hz (${audio.channels} channels)`);
63
+ if (stats)
64
+ console.log(`▸ Stats: ${JSON.stringify(stats)}`);
65
+ console.log(`▸ Saved ${outputPath}`);
66
+ await unloadModel({ modelId });
67
+ modelId = undefined;
68
+ console.log('▸ Model unloaded');
69
+ process.exit(0);
70
+ }
71
+ catch (error) {
72
+ if (modelId !== undefined) {
73
+ try {
74
+ await unloadModel({ modelId });
75
+ }
76
+ catch {
77
+ // Preserve the generation error as the primary failure.
78
+ }
79
+ }
80
+ console.error('✖', error);
81
+ process.exit(1);
82
+ }
83
+ function getDownloadLabel(downloadKey) {
84
+ return downloadKey.split('/').pop() ?? downloadKey;
85
+ }
86
+ function createWav(pcm, sampleRate, channels, bitsPerSample) {
87
+ const header = new ArrayBuffer(44);
88
+ const view = new DataView(header);
89
+ const blockAlign = channels * (bitsPerSample / 8);
90
+ writeAscii(view, 0, 'RIFF');
91
+ view.setUint32(4, 36 + pcm.byteLength, true);
92
+ writeAscii(view, 8, 'WAVE');
93
+ writeAscii(view, 12, 'fmt ');
94
+ view.setUint32(16, 16, true);
95
+ view.setUint16(20, 1, true);
96
+ view.setUint16(22, channels, true);
97
+ view.setUint32(24, sampleRate, true);
98
+ view.setUint32(28, sampleRate * blockAlign, true);
99
+ view.setUint16(32, blockAlign, true);
100
+ view.setUint16(34, bitsPerSample, true);
101
+ writeAscii(view, 36, 'data');
102
+ view.setUint32(40, pcm.byteLength, true);
103
+ const wav = new Uint8Array(44 + pcm.byteLength);
104
+ wav.set(new Uint8Array(header));
105
+ wav.set(pcm, 44);
106
+ return wav;
107
+ }
108
+ function writeAscii(view, offset, value) {
109
+ for (let index = 0; index < value.length; index++) {
110
+ view.setUint8(offset + index, value.charCodeAt(index));
111
+ }
112
+ }
@@ -1,5 +1,5 @@
1
1
  import { WHISPER_TINY } from '../models/registry/index.js';
2
- import { downloadAsset, getModelInfo, loadModel, unloadModel } from '..';
2
+ import { downloadAsset, getModelInfo, loadModel, unloadModel } from '../index.js';
3
3
  const printModelStatus = (info, label) => {
4
4
  console.log(`\n▸ ${label}`);
5
5
  console.log(`▸ Model Name: ${info.name}`);
@@ -1,4 +1,4 @@
1
- import { WHISPER_TINY, loadModel, transcribe, unloadModel } from '../index';
1
+ import { WHISPER_TINY, loadModel, transcribe, unloadModel } from '../index.js';
2
2
  // Parse command line arguments
3
3
  const args = process.argv.slice(2);
4
4
  if (!args[0]) {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=diffusion-ideogram.d.ts.map
@@ -0,0 +1,108 @@
1
+ import { diffusion, loadModel, unloadModel } from '@qvac/sdk';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ const diffusionModelSrc = process.argv[2] ||
5
+ 'https://huggingface.co/leejet/ideogram-4-GGUF/resolve/main/ideogram4-Q4_0.gguf';
6
+ const uncondModelSrc = process.argv[3] ||
7
+ 'https://huggingface.co/leejet/ideogram-4-GGUF/resolve/main/ideogram4_uncond-Q4_0.gguf';
8
+ const llmModelSrc = process.argv[4] ||
9
+ 'https://huggingface.co/unsloth/Qwen3-VL-8B-Instruct-GGUF/resolve/main/Qwen3-VL-8B-Instruct-Q4_K_M.gguf';
10
+ const vaeModelSrc = process.argv[5] ||
11
+ 'https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors';
12
+ const outputDir = process.argv[6] || '.';
13
+ function formatMb(bytes) {
14
+ return (bytes / 1e6).toFixed(1);
15
+ }
16
+ // Ideogram 4 expects a JSON-serialized structured caption with explicit
17
+ // bounding boxes. Plain-text prompts produce degenerate or placeholder output.
18
+ const structuredPrompt = {
19
+ high_level_description: 'A bright product photo of one yellow coffee mug on a clean office desk with a tiny readable label that says IDEO.',
20
+ style_description: {
21
+ aesthetics: 'simple product photography, clean bright office desk, minimal composition',
22
+ lighting: 'soft studio light with gentle shadows',
23
+ photo: 'sharp focus, crisp readable label text',
24
+ medium: 'product photo',
25
+ color_palette: ['#FFD54A', '#FFFFFF', '#111111', '#7EC8E3']
26
+ },
27
+ compositional_deconstruction: {
28
+ canvas: 'Square canvas, upright orientation. All text is horizontal and readable.',
29
+ background: 'Clean white office desk with a soft blue background gradient.',
30
+ elements: [
31
+ {
32
+ type: 'obj',
33
+ bbox: [230, 260, 800, 740],
34
+ desc: 'Exactly one matte yellow ceramic coffee mug centered on the desk.'
35
+ },
36
+ {
37
+ type: 'text',
38
+ bbox: [510, 360, 620, 640],
39
+ text: 'IDEO',
40
+ desc: 'Small black label printed horizontally on the mug.'
41
+ }
42
+ ]
43
+ }
44
+ };
45
+ if (process.argv.includes('--help')) {
46
+ console.log('Usage: tsx examples/diffusion-ideogram.ts [model] [uncond] [llm] [vae] [output-dir]');
47
+ console.log('▸ Defaults use the four Hugging Face model URLs supported by the diffusion addon.');
48
+ process.exit(0);
49
+ }
50
+ let modelId;
51
+ try {
52
+ console.log('▸ Loading Ideogram 4 split-layout model...');
53
+ modelId = await loadModel({
54
+ modelSrc: diffusionModelSrc,
55
+ modelType: 'sdcpp-generation',
56
+ modelConfig: {
57
+ device: 'gpu',
58
+ threads: 4,
59
+ diffusion_fa: true,
60
+ offload_to_cpu: true,
61
+ llmModelSrc,
62
+ vaeModelSrc,
63
+ uncondModelSrc
64
+ },
65
+ onProgress: (progress) => {
66
+ const line = `▸ Downloading ${progress.percentage.toFixed(0)}% (${formatMb(progress.downloaded)}/${formatMb(progress.total)} MB)`;
67
+ process.stderr.write(process.stderr.isTTY ? `\r${line}` : `${line}\n`);
68
+ if (progress.percentage >= 100)
69
+ process.stderr.write('\n');
70
+ }
71
+ });
72
+ console.log(`▸ Model loaded: ${modelId}`);
73
+ const { progressStream, outputs, stats } = diffusion({
74
+ modelId,
75
+ prompt: JSON.stringify(structuredPrompt),
76
+ width: 768,
77
+ height: 768,
78
+ steps: 16,
79
+ cfg_scale: 7,
80
+ seed: 42
81
+ });
82
+ for await (const { step, totalSteps } of progressStream) {
83
+ console.log(`▸ step ${step}/${totalSteps}`);
84
+ }
85
+ const buffers = await outputs;
86
+ for (let i = 0; i < buffers.length; i++) {
87
+ const outputPath = path.join(outputDir, `ideogram_${i}.png`);
88
+ fs.writeFileSync(outputPath, buffers[i]);
89
+ console.log(`▸ Saved ${outputPath}`);
90
+ }
91
+ console.log('▸ Stats:', await stats);
92
+ await unloadModel({ modelId, clearStorage: false });
93
+ modelId = undefined;
94
+ console.log('▸ Done');
95
+ process.exit(0);
96
+ }
97
+ catch (error) {
98
+ if (modelId) {
99
+ try {
100
+ await unloadModel({ modelId, clearStorage: false });
101
+ }
102
+ catch {
103
+ // Preserve the original error.
104
+ }
105
+ }
106
+ console.error('✖', error);
107
+ process.exit(1);
108
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=diffusion-img2vid-ltx.d.ts.map
@@ -0,0 +1,98 @@
1
+ import { loadModel, unloadModel, video } from '@qvac/sdk';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ // Image-to-video (+ synchronized audio) with LTX-2. Unlike Wan I2V, LTX-2
5
+ // conditions on the first frame through its video VAE, so it needs NO CLIP
6
+ // vision weights (clipVisionModelSrc) — the same LTX-2 layout used for
7
+ // txt2vid works for img2vid, you just add an init_image at generation time.
8
+ //
9
+ // This example needs powerful hardware: LTX-2.3 is a ~21B model, budget at
10
+ // least 20+ GB of video / unified memory.
11
+ //
12
+ // No LTX-2 model constants ship in the SDK registry, so the model sources
13
+ // default to public HuggingFace URLs (the SDK downloads http(s) sources
14
+ // directly). Pass your own paths / URLs via argv to override.
15
+ const HF = 'https://huggingface.co';
16
+ const initImagePath = process.argv[2];
17
+ const prompt = process.argv[3] || 'the subject slowly turns and smiles, soft natural lighting, cinematic';
18
+ const outputDir = process.argv[4] || '.';
19
+ const diffusionModelSrc = process.argv[5] ||
20
+ `${HF}/QuantStack/LTX-2.3-GGUF/resolve/main/LTX-2.3-distilled-1.1/LTX-2.3-22B-distilled-1.1-Q5_K_M.gguf`;
21
+ const llmModelSrc = process.argv[6] || `${HF}/unsloth/gemma-3-12b-it-GGUF/resolve/main/gemma-3-12b-it-UD-Q4_K_XL.gguf`;
22
+ const vaeModelSrc = process.argv[7] ||
23
+ `${HF}/unsloth/LTX-2.3-GGUF/resolve/main/vae/ltx-2.3-22b-distilled_video_vae.safetensors`;
24
+ const audioVaeModelSrc = process.argv[8] ||
25
+ `${HF}/unsloth/LTX-2.3-GGUF/resolve/main/vae/ltx-2.3-22b-distilled_audio_vae.safetensors`;
26
+ const embeddingsConnectorsModelSrc = process.argv[9] ||
27
+ `${HF}/unsloth/LTX-2.3-GGUF/resolve/main/text_encoders/ltx-2.3-22b-distilled_embeddings_connectors.safetensors`;
28
+ if (!initImagePath) {
29
+ console.error('✖ init image path is required');
30
+ console.error('Usage: bun run bare:example dist/examples/diffusion-img2vid-ltx.js ' +
31
+ '<initImagePath> [prompt] [outputDir] ' +
32
+ '[diffusionModelSrc] [llmModelSrc] [vaeModelSrc] [audioVaeModelSrc] [embeddingsConnectorsModelSrc]');
33
+ process.exit(1);
34
+ }
35
+ try {
36
+ console.log('▸ Loading LTX-2 model (diffusion + Gemma + video VAE + audio VAE + connectors)...');
37
+ // no clipVisionModelSrc — LTX-2 img2vid does not use CLIP vision.
38
+ const modelId = await loadModel({
39
+ modelSrc: diffusionModelSrc,
40
+ modelType: 'sdcpp-generation',
41
+ modelConfig: {
42
+ mode: 'video',
43
+ device: 'gpu',
44
+ threads: 4,
45
+ // Supplying embeddingsConnectorsModelSrc selects the LTX-2 layout.
46
+ llmModelSrc,
47
+ vaeModelSrc,
48
+ audioVaeModelSrc,
49
+ embeddingsConnectorsModelSrc,
50
+ diffusion_fa: true,
51
+ vae_tiling: true
52
+ },
53
+ onProgress: (p) => {
54
+ const mb = (n) => (n / 1e6).toFixed(1);
55
+ const line = `▸ Downloading ${p.percentage.toFixed(0)}% (${mb(p.downloaded)}/${mb(p.total)} MB)`;
56
+ process.stderr.write(process.stderr.isTTY ? `\r${line}` : `${line}\n`);
57
+ if (p.percentage >= 100)
58
+ process.stderr.write('\n');
59
+ }
60
+ });
61
+ console.log(`▸ Model loaded: ${modelId}`);
62
+ const init_image = new Uint8Array(fs.readFileSync(initImagePath));
63
+ console.log(`▸ Generating video for: "${prompt}"`);
64
+ const { progressStream, outputs, stats } = video({
65
+ modelId,
66
+ mode: 'img2vid',
67
+ prompt,
68
+ init_image,
69
+ negative_prompt: 'blurry, distorted, low quality, jittery, static, frozen, distorted audio',
70
+ strength: 0.85,
71
+ // LTX-2 requires width/height as multiples of 32 and (8*k + 1) frames (max 257).
72
+ width: 512,
73
+ height: 320,
74
+ video_frames: 121,
75
+ fps: 24,
76
+ steps: 10,
77
+ cfg_scale: 1.0,
78
+ seed: 42,
79
+ temporal_tiling: true
80
+ });
81
+ for await (const { step, totalSteps } of progressStream) {
82
+ console.log(`▸ step ${step}/${totalSteps}`);
83
+ }
84
+ const buffers = await outputs;
85
+ for (let i = 0; i < buffers.length; i++) {
86
+ const outputPath = path.join(outputDir, `ltx_i2v_${i}.avi`);
87
+ fs.writeFileSync(outputPath, buffers[i]);
88
+ console.log(`▸ Saved ${outputPath} (play in VLC to hear the muxed audio track)`);
89
+ }
90
+ console.log('▸ Stats:', await stats);
91
+ await unloadModel({ modelId, clearStorage: false });
92
+ console.log('▸ Done');
93
+ process.exit(0);
94
+ }
95
+ catch (error) {
96
+ console.error('✖', error);
97
+ process.exit(1);
98
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=diffusion-txt2vid-ltx.d.ts.map