@atomic-chat/core 0.13.6 → 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 (342) hide show
  1. package/README.md +1 -1
  2. package/dist/backend/advisor/advisor.d.ts +8 -7
  3. package/dist/backend/advisor/advisor.js +17 -25
  4. package/dist/backend/advisor/advisor.js.map +1 -1
  5. package/dist/backend/catalog/index.d.ts +4 -2
  6. package/dist/backend/catalog/index.js +4 -2
  7. package/dist/backend/catalog/index.js.map +1 -1
  8. package/dist/backend/catalog/manifest.d.ts +5 -51
  9. package/dist/backend/catalog/manifest.js +5 -93
  10. package/dist/backend/catalog/manifest.js.map +1 -1
  11. package/dist/backend/catalog/upstream-releases-baseline.d.ts +2 -0
  12. package/dist/backend/catalog/upstream-releases-baseline.js +12 -0
  13. package/dist/backend/catalog/upstream-releases-baseline.js.map +1 -0
  14. package/dist/backend/catalog/upstream-releases-baseline.json +101 -0
  15. package/dist/backend/catalog/upstream-releases-catalog.d.ts +54 -0
  16. package/dist/backend/catalog/upstream-releases-catalog.js +148 -0
  17. package/dist/backend/catalog/upstream-releases-catalog.js.map +1 -0
  18. package/dist/backend/catalog/upstream-releases.d.ts +75 -0
  19. package/dist/backend/catalog/upstream-releases.js +155 -0
  20. package/dist/backend/catalog/upstream-releases.js.map +1 -0
  21. package/dist/backend/install/service.d.ts +7 -4
  22. package/dist/backend/install/service.js +4 -4
  23. package/dist/backend/install/service.js.map +1 -1
  24. package/dist/cli/commands/serve.js +10 -28
  25. package/dist/cli/commands/serve.js.map +1 -1
  26. package/dist/cli/main.d.ts +1 -1
  27. package/dist/cli/main.js +0 -1
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/client/control-client.d.ts +7 -19
  30. package/dist/client/control-client.js +9 -29
  31. package/dist/client/control-client.js.map +1 -1
  32. package/dist/cloud/registry.d.ts +14 -1
  33. package/dist/cloud/registry.js +73 -2
  34. package/dist/cloud/registry.js.map +1 -1
  35. package/dist/config/paths.d.ts +4 -3
  36. package/dist/config/paths.js +15 -14
  37. package/dist/config/paths.js.map +1 -1
  38. package/dist/contracts/diffusion.d.ts +45 -18
  39. package/dist/contracts/diffusion.js +1 -1
  40. package/dist/contracts/diffusion.js.map +1 -1
  41. package/dist/contracts/engines.d.ts +1 -1
  42. package/dist/contracts/engines.js +2 -0
  43. package/dist/contracts/engines.js.map +1 -1
  44. package/dist/contracts/errors.d.ts +1 -3
  45. package/dist/contracts/errors.js +16 -0
  46. package/dist/contracts/errors.js.map +1 -1
  47. package/dist/contracts/events.d.ts +11 -6
  48. package/dist/contracts/index.d.ts +1 -1
  49. package/dist/contracts/index.js +1 -1
  50. package/dist/contracts/index.js.map +1 -1
  51. package/dist/contracts/media.d.ts +186 -0
  52. package/dist/contracts/media.js +55 -0
  53. package/dist/contracts/media.js.map +1 -0
  54. package/dist/contracts/session.d.ts +10 -1
  55. package/dist/contracts/session.js +10 -0
  56. package/dist/contracts/session.js.map +1 -1
  57. package/dist/contracts/settings.d.ts +36 -1
  58. package/dist/contracts/settings.js.map +1 -1
  59. package/dist/core/atomic-core.d.ts +5 -5
  60. package/dist/core/atomic-core.js.map +1 -1
  61. package/dist/core/create.js +43 -59
  62. package/dist/core/create.js.map +1 -1
  63. package/dist/core/managed-engines.js +2 -0
  64. package/dist/core/managed-engines.js.map +1 -1
  65. package/dist/core/prism.d.ts +21 -6
  66. package/dist/core/prism.js +44 -0
  67. package/dist/core/prism.js.map +1 -1
  68. package/dist/core/types.d.ts +0 -5
  69. package/dist/core/types.js.map +1 -1
  70. package/dist/diffusion/gallery.d.ts +24 -3
  71. package/dist/diffusion/gallery.js +151 -21
  72. package/dist/diffusion/gallery.js.map +1 -1
  73. package/dist/diffusion/index.d.ts +3 -0
  74. package/dist/diffusion/index.js +3 -0
  75. package/dist/diffusion/index.js.map +1 -1
  76. package/dist/diffusion/jobs.d.ts +6 -1
  77. package/dist/diffusion/jobs.js +6 -1
  78. package/dist/diffusion/jobs.js.map +1 -1
  79. package/dist/diffusion/media-header.d.ts +22 -0
  80. package/dist/diffusion/media-header.js +149 -0
  81. package/dist/diffusion/media-header.js.map +1 -0
  82. package/dist/diffusion/parse.d.ts +3 -1
  83. package/dist/diffusion/parse.js +36 -0
  84. package/dist/diffusion/parse.js.map +1 -1
  85. package/dist/diffusion/recipe.d.ts +10 -1
  86. package/dist/diffusion/recipe.js +85 -21
  87. package/dist/diffusion/recipe.js.map +1 -1
  88. package/dist/diffusion/remote-job.d.ts +76 -0
  89. package/dist/diffusion/remote-job.js +643 -0
  90. package/dist/diffusion/remote-job.js.map +1 -0
  91. package/dist/diffusion/remote-store.d.ts +38 -0
  92. package/dist/diffusion/remote-store.js +91 -0
  93. package/dist/diffusion/remote-store.js.map +1 -0
  94. package/dist/diffusion/service.d.ts +9 -1
  95. package/dist/diffusion/service.js +49 -9
  96. package/dist/diffusion/service.js.map +1 -1
  97. package/dist/diffusion/state.d.ts +13 -1
  98. package/dist/diffusion/state.js +8 -0
  99. package/dist/diffusion/state.js.map +1 -1
  100. package/dist/diffusion/video-gallery.d.ts +11 -4
  101. package/dist/diffusion/video-gallery.js +62 -25
  102. package/dist/diffusion/video-gallery.js.map +1 -1
  103. package/dist/diffusion/video-history.js +4 -1
  104. package/dist/diffusion/video-history.js.map +1 -1
  105. package/dist/diffusion/video-recipe.js +58 -25
  106. package/dist/diffusion/video-recipe.js.map +1 -1
  107. package/dist/diffusion/wiring.d.ts +3 -0
  108. package/dist/diffusion/wiring.js +1 -0
  109. package/dist/diffusion/wiring.js.map +1 -1
  110. package/dist/downloads/downloader.d.ts +1 -18
  111. package/dist/downloads/downloader.js +1 -45
  112. package/dist/downloads/downloader.js.map +1 -1
  113. package/dist/media/adapters/a1111.d.ts +32 -0
  114. package/dist/media/adapters/a1111.js +207 -0
  115. package/dist/media/adapters/a1111.js.map +1 -0
  116. package/dist/media/adapters/aimlapi-videos.d.ts +34 -0
  117. package/dist/media/adapters/aimlapi-videos.js +172 -0
  118. package/dist/media/adapters/aimlapi-videos.js.map +1 -0
  119. package/dist/media/adapters/dashscope-image.d.ts +26 -0
  120. package/dist/media/adapters/dashscope-image.js +160 -0
  121. package/dist/media/adapters/dashscope-image.js.map +1 -0
  122. package/dist/media/adapters/dashscope-video.d.ts +47 -0
  123. package/dist/media/adapters/dashscope-video.js +251 -0
  124. package/dist/media/adapters/dashscope-video.js.map +1 -0
  125. package/dist/media/adapters/gemini-image.d.ts +27 -0
  126. package/dist/media/adapters/gemini-image.js +181 -0
  127. package/dist/media/adapters/gemini-image.js.map +1 -0
  128. package/dist/media/adapters/gemini-veo.d.ts +39 -0
  129. package/dist/media/adapters/gemini-veo.js +196 -0
  130. package/dist/media/adapters/gemini-veo.js.map +1 -0
  131. package/dist/media/adapters/hf-images.d.ts +85 -0
  132. package/dist/media/adapters/hf-images.js +439 -0
  133. package/dist/media/adapters/hf-images.js.map +1 -0
  134. package/dist/media/adapters/hf-videos.d.ts +44 -0
  135. package/dist/media/adapters/hf-videos.js +265 -0
  136. package/dist/media/adapters/hf-videos.js.map +1 -0
  137. package/dist/media/adapters/minimax-image.d.ts +26 -0
  138. package/dist/media/adapters/minimax-image.js +111 -0
  139. package/dist/media/adapters/minimax-image.js.map +1 -0
  140. package/dist/media/adapters/minimax-video-v2.d.ts +34 -0
  141. package/dist/media/adapters/minimax-video-v2.js +191 -0
  142. package/dist/media/adapters/minimax-video-v2.js.map +1 -0
  143. package/dist/media/adapters/minimax-video.d.ts +28 -0
  144. package/dist/media/adapters/minimax-video.js +155 -0
  145. package/dist/media/adapters/minimax-video.js.map +1 -0
  146. package/dist/media/adapters/mistral-agent-image.d.ts +33 -0
  147. package/dist/media/adapters/mistral-agent-image.js +108 -0
  148. package/dist/media/adapters/mistral-agent-image.js.map +1 -0
  149. package/dist/media/adapters/nvidia-genai.d.ts +28 -0
  150. package/dist/media/adapters/nvidia-genai.js +182 -0
  151. package/dist/media/adapters/nvidia-genai.js.map +1 -0
  152. package/dist/media/adapters/openai-images.d.ts +23 -0
  153. package/dist/media/adapters/openai-images.js +164 -0
  154. package/dist/media/adapters/openai-images.js.map +1 -0
  155. package/dist/media/adapters/openai-videos.d.ts +34 -0
  156. package/dist/media/adapters/openai-videos.js +175 -0
  157. package/dist/media/adapters/openai-videos.js.map +1 -0
  158. package/dist/media/adapters/openrouter-images.d.ts +25 -0
  159. package/dist/media/adapters/openrouter-images.js +161 -0
  160. package/dist/media/adapters/openrouter-images.js.map +1 -0
  161. package/dist/media/adapters/openrouter-videos.d.ts +43 -0
  162. package/dist/media/adapters/openrouter-videos.js +208 -0
  163. package/dist/media/adapters/openrouter-videos.js.map +1 -0
  164. package/dist/media/adapters/registry.d.ts +7 -0
  165. package/dist/media/adapters/registry.js +45 -0
  166. package/dist/media/adapters/registry.js.map +1 -0
  167. package/dist/media/adapters/types.d.ts +133 -0
  168. package/dist/media/adapters/types.js +15 -0
  169. package/dist/media/adapters/types.js.map +1 -0
  170. package/dist/media/adapters/xai-images.d.ts +19 -0
  171. package/dist/media/adapters/xai-images.js +83 -0
  172. package/dist/media/adapters/xai-images.js.map +1 -0
  173. package/dist/media/adapters/xai-videos.d.ts +29 -0
  174. package/dist/media/adapters/xai-videos.js +148 -0
  175. package/dist/media/adapters/xai-videos.js.map +1 -0
  176. package/dist/media/catalog-baseline.d.ts +2 -0
  177. package/dist/media/catalog-baseline.js +10 -0
  178. package/dist/media/catalog-baseline.js.map +1 -0
  179. package/dist/media/catalog-baseline.json +1819 -0
  180. package/dist/media/catalog-service.d.ts +42 -0
  181. package/dist/media/catalog-service.js +111 -0
  182. package/dist/media/catalog-service.js.map +1 -0
  183. package/dist/media/catalog.d.ts +50 -0
  184. package/dist/media/catalog.js +315 -0
  185. package/dist/media/catalog.js.map +1 -0
  186. package/dist/media/http.d.ts +125 -0
  187. package/dist/media/http.js +308 -0
  188. package/dist/media/http.js.map +1 -0
  189. package/dist/media/index.d.ts +14 -0
  190. package/dist/media/index.js +15 -0
  191. package/dist/media/index.js.map +1 -0
  192. package/dist/media/mask.d.ts +12 -0
  193. package/dist/media/mask.js +57 -0
  194. package/dist/media/mask.js.map +1 -0
  195. package/dist/media/service.d.ts +42 -0
  196. package/dist/media/service.js +144 -0
  197. package/dist/media/service.js.map +1 -0
  198. package/dist/models/hf.d.ts +3 -16
  199. package/dist/models/hf.js +4 -42
  200. package/dist/models/hf.js.map +1 -1
  201. package/dist/router/resolve.d.ts +15 -4
  202. package/dist/router/resolve.js +25 -3
  203. package/dist/router/resolve.js.map +1 -1
  204. package/dist/runtime/environment/linux-provisioner.js +7 -67
  205. package/dist/runtime/environment/linux-provisioner.js.map +1 -1
  206. package/dist/runtime/environment/runtime-removal-plan.d.ts +19 -0
  207. package/dist/runtime/environment/runtime-removal-plan.js +74 -0
  208. package/dist/runtime/environment/runtime-removal-plan.js.map +1 -0
  209. package/dist/runtime/environment/windows-provisioner.js +20 -4
  210. package/dist/runtime/environment/windows-provisioner.js.map +1 -1
  211. package/dist/runtime/managed-engines/spec.d.ts +2 -2
  212. package/dist/runtime/managed-engines/spec.js +6 -0
  213. package/dist/runtime/managed-engines/spec.js.map +1 -1
  214. package/dist/runtime/managed-models/compatibility.d.ts +10 -0
  215. package/dist/runtime/managed-models/compatibility.js +18 -0
  216. package/dist/runtime/managed-models/compatibility.js.map +1 -1
  217. package/dist/runtime/managed-text/request-rules.d.ts +9 -7
  218. package/dist/runtime/managed-text/request-rules.js +58 -2
  219. package/dist/runtime/managed-text/request-rules.js.map +1 -1
  220. package/dist/runtime/managed-text/setting-values.d.ts +9 -0
  221. package/dist/runtime/managed-text/setting-values.js +44 -0
  222. package/dist/runtime/managed-text/setting-values.js.map +1 -0
  223. package/dist/runtime/sglang/adapter.d.ts +50 -0
  224. package/dist/runtime/sglang/adapter.js +393 -0
  225. package/dist/runtime/sglang/adapter.js.map +1 -0
  226. package/dist/runtime/sglang/engine.d.ts +16 -0
  227. package/dist/runtime/sglang/engine.js +38 -0
  228. package/dist/runtime/sglang/engine.js.map +1 -0
  229. package/dist/runtime/sglang/index.d.ts +11 -0
  230. package/dist/runtime/sglang/index.js +12 -0
  231. package/dist/runtime/sglang/index.js.map +1 -0
  232. package/dist/runtime/sglang/memory.d.ts +64 -0
  233. package/dist/runtime/sglang/memory.js +90 -0
  234. package/dist/runtime/sglang/memory.js.map +1 -0
  235. package/dist/runtime/sglang/settings.d.ts +49 -0
  236. package/dist/runtime/sglang/settings.js +118 -0
  237. package/dist/runtime/sglang/settings.js.map +1 -0
  238. package/dist/runtime/shared/external-sessions.js +1 -0
  239. package/dist/runtime/shared/external-sessions.js.map +1 -1
  240. package/dist/runtime/vllm/adapter.js +2 -47
  241. package/dist/runtime/vllm/adapter.js.map +1 -1
  242. package/dist/runtime/vllm/memory.js +3 -16
  243. package/dist/runtime/vllm/memory.js.map +1 -1
  244. package/dist/runtime/vllm/settings.d.ts +7 -0
  245. package/dist/runtime/vllm/settings.js +2 -30
  246. package/dist/runtime/vllm/settings.js.map +1 -1
  247. package/dist/server/control/router.js +4 -3
  248. package/dist/server/control/router.js.map +1 -1
  249. package/dist/server/control/routes/media.d.ts +9 -0
  250. package/dist/server/control/routes/media.js +24 -0
  251. package/dist/server/control/routes/media.js.map +1 -0
  252. package/dist/server/control/routes/model-compatibility.d.ts +9 -0
  253. package/dist/server/control/routes/model-compatibility.js +31 -0
  254. package/dist/server/control/routes/model-compatibility.js.map +1 -0
  255. package/dist/server/control/types.d.ts +14 -20
  256. package/dist/server/control/types.js.map +1 -1
  257. package/dist/server/http.js +15 -2
  258. package/dist/server/http.js.map +1 -1
  259. package/dist/server/public/images-params.js +18 -1
  260. package/dist/server/public/images-params.js.map +1 -1
  261. package/dist/server/public/images.d.ts +11 -2
  262. package/dist/server/public/images.js +73 -9
  263. package/dist/server/public/images.js.map +1 -1
  264. package/dist/server/public/index.js +7 -1
  265. package/dist/server/public/index.js.map +1 -1
  266. package/dist/server/public/listing.js +1 -0
  267. package/dist/server/public/listing.js.map +1 -1
  268. package/dist/server/public/remote-media.d.ts +51 -0
  269. package/dist/server/public/remote-media.js +225 -0
  270. package/dist/server/public/remote-media.js.map +1 -0
  271. package/dist/server/public/responses.js +4 -2
  272. package/dist/server/public/responses.js.map +1 -1
  273. package/dist/server/public/static-assets.generated.js +1 -1
  274. package/dist/server/public/static-assets.generated.js.map +1 -1
  275. package/dist/server/public/trace.js +2 -0
  276. package/dist/server/public/trace.js.map +1 -1
  277. package/dist/server/public/types.d.ts +5 -1
  278. package/dist/server/public/videos-params.js +13 -3
  279. package/dist/server/public/videos-params.js.map +1 -1
  280. package/dist/server/public/videos.d.ts +1 -0
  281. package/dist/server/public/videos.js +21 -3
  282. package/dist/server/public/videos.js.map +1 -1
  283. package/dist/settings/schema/llamacpp-upstream.json +9 -0
  284. package/dist/settings/schema/sglang.json +251 -0
  285. package/dist/settings/schema.js +27 -1
  286. package/dist/settings/schema.js.map +1 -1
  287. package/dist/version.d.ts +1 -1
  288. package/dist/version.js +1 -1
  289. package/package.json +1 -5
  290. package/src/settings/schema/llamacpp-upstream.json +9 -0
  291. package/src/settings/schema/sglang.json +251 -0
  292. package/dist/backend/catalog/bundled-manifest-baseline.d.ts +0 -2
  293. package/dist/backend/catalog/bundled-manifest-baseline.js +0 -65
  294. package/dist/backend/catalog/bundled-manifest-baseline.js.map +0 -1
  295. package/dist/contracts/model-setup.d.ts +0 -115
  296. package/dist/contracts/model-setup.js +0 -33
  297. package/dist/contracts/model-setup.js.map +0 -1
  298. package/dist/core/model-setup/index.d.ts +0 -4
  299. package/dist/core/model-setup/index.js +0 -5
  300. package/dist/core/model-setup/index.js.map +0 -1
  301. package/dist/core/model-setup/plan.d.ts +0 -56
  302. package/dist/core/model-setup/plan.js +0 -158
  303. package/dist/core/model-setup/plan.js.map +0 -1
  304. package/dist/core/model-setup/service.d.ts +0 -92
  305. package/dist/core/model-setup/service.js +0 -329
  306. package/dist/core/model-setup/service.js.map +0 -1
  307. package/dist/core/model-setup/store.d.ts +0 -29
  308. package/dist/core/model-setup/store.js +0 -116
  309. package/dist/core/model-setup/store.js.map +0 -1
  310. package/dist/core/model-setup/wiring.d.ts +0 -59
  311. package/dist/core/model-setup/wiring.js +0 -132
  312. package/dist/core/model-setup/wiring.js.map +0 -1
  313. package/dist/core/tensorrt-llm.d.ts +0 -169
  314. package/dist/core/tensorrt-llm.js +0 -428
  315. package/dist/core/tensorrt-llm.js.map +0 -1
  316. package/dist/downloads/segmented.d.ts +0 -40
  317. package/dist/downloads/segmented.js +0 -170
  318. package/dist/downloads/segmented.js.map +0 -1
  319. package/dist/runtime/tensorrt-llm/delete.d.ts +0 -15
  320. package/dist/runtime/tensorrt-llm/delete.js +0 -60
  321. package/dist/runtime/tensorrt-llm/delete.js.map +0 -1
  322. package/dist/runtime/tensorrt-llm/guest-files.d.ts +0 -8
  323. package/dist/runtime/tensorrt-llm/guest-files.js +0 -49
  324. package/dist/runtime/tensorrt-llm/guest-files.js.map +0 -1
  325. package/dist/runtime/tensorrt-llm/location.d.ts +0 -20
  326. package/dist/runtime/tensorrt-llm/location.js +0 -48
  327. package/dist/runtime/tensorrt-llm/location.js.map +0 -1
  328. package/dist/runtime/tensorrt-llm/model-dir.d.ts +0 -38
  329. package/dist/runtime/tensorrt-llm/model-dir.js +0 -137
  330. package/dist/runtime/tensorrt-llm/model-dir.js.map +0 -1
  331. package/dist/runtime/tensorrt-llm/quant-format.d.ts +0 -65
  332. package/dist/runtime/tensorrt-llm/quant-format.js +0 -189
  333. package/dist/runtime/tensorrt-llm/quant-format.js.map +0 -1
  334. package/dist/runtime/tensorrt-llm/registry.d.ts +0 -26
  335. package/dist/runtime/tensorrt-llm/registry.js +0 -68
  336. package/dist/runtime/tensorrt-llm/registry.js.map +0 -1
  337. package/dist/runtime/tensorrt-llm/runtime.d.ts +0 -130
  338. package/dist/runtime/tensorrt-llm/runtime.js +0 -395
  339. package/dist/runtime/tensorrt-llm/runtime.js.map +0 -1
  340. package/dist/server/control/routes/model-setups.d.ts +0 -11
  341. package/dist/server/control/routes/model-setups.js +0 -55
  342. package/dist/server/control/routes/model-setups.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The video gallery on disk: `<videoOutputDir>/<jobId>.webm` with its recipe as `<jobId>.json`
2
+ * The video gallery on disk: `<videoOutputDir>/<jobId>.webm` (or `.mp4`, a provider's clip) with its recipe as `<jobId>.json`
3
3
  * beside it, a `<jobId>.thumb.png` poster once the app rendered one, and the same `.flags.json`
4
4
  * as the image gallery, in its own folder. The core has no video decoder (AGENTS.md rule 8): it
5
5
  * checks the container's magic, writes the bytes as they came, and reads everything it knows about
@@ -13,10 +13,14 @@ import { dirname, join } from 'node:path';
13
13
  import { isWithin } from './containment.js';
14
14
  import { diffusionError, ioError } from './errors.js';
15
15
  import { readFlags, writeAtomic, writeFlags } from './gallery.js';
16
+ import { isMp4 } from './media-header.js';
16
17
  import { AsyncMutex } from './mutex.js';
17
18
  import { isPng, parseHeader } from './png.js';
18
19
  import { parseVideoRecipe, RECIPE_SIDECAR_SUFFIX, serializeVideoRecipe } from './video-recipe.js';
19
20
  export const VIDEO_SUFFIX = '.webm';
21
+ /** The file each container is stored as; WebM first, every local clip is one. */
22
+ export const VIDEO_SUFFIXES = { webm: '.webm', mp4: '.mp4' };
23
+ const FORMATS = Object.keys(VIDEO_SUFFIXES);
20
24
  export const POSTER_SUFFIX = '.thumb.png';
21
25
  /** The app's poster is a small PNG; anything larger is not one. */
22
26
  export const MAX_POSTER_BYTES = 16 * 1024 * 1024;
@@ -51,8 +55,12 @@ export const VIDEO_WRITE_MESSAGES = {
51
55
  export function isValidVideoId(id) {
52
56
  return /^[a-f0-9]{32}$/.test(id);
53
57
  }
54
- export function videoPath(dir, id) {
55
- return join(dir, `${id}${VIDEO_SUFFIX}`);
58
+ export function videoPath(dir, id, format = 'webm') {
59
+ return join(dir, `${id}${VIDEO_SUFFIXES[format]}`);
60
+ }
61
+ /** Whether `bytes` are in the container `format` names. */
62
+ export function isVideoOf(format, bytes) {
63
+ return format === 'mp4' ? isMp4(bytes) : isWebm(bytes);
56
64
  }
57
65
  export function videoRecipePath(dir, id) {
58
66
  return join(dir, `${id}${RECIPE_SIDECAR_SUFFIX}`);
@@ -69,6 +77,18 @@ function checkedVideoPath(dir, id) {
69
77
  return path;
70
78
  }
71
79
  const isFile = (path) => stat(path).then((s) => s.isFile(), () => false);
80
+ /** The clip an id names, whichever container it is in; the WebM path when there is none. */
81
+ async function locateVideo(dir, id) {
82
+ const webm = checkedVideoPath(dir, id);
83
+ for (const format of FORMATS) {
84
+ const path = format === 'webm' ? webm : videoPath(dir, id, format);
85
+ if (await isFile(path))
86
+ return { path, exists: true };
87
+ }
88
+ return { path: webm, exists: false };
89
+ }
90
+ /** A clip's length: what its recipe recorded, else its frames over its rate. */
91
+ const clipSeconds = (recipe) => recipe.durationSecs ?? (recipe.fps > 0 ? recipe.frameCount / recipe.fps : 0);
72
92
  async function readRecipe(dir, id) {
73
93
  const text = await readFile(videoRecipePath(dir, id), 'utf8').catch(() => undefined);
74
94
  return text === undefined ? undefined : parseVideoRecipe(text);
@@ -87,7 +107,7 @@ async function itemFromRecipe(dir, id, path, recipe, flags) {
87
107
  height: recipe.height,
88
108
  fps: recipe.fps,
89
109
  frameCount: recipe.frameCount,
90
- durationSecs: recipe.fps > 0 ? recipe.frameCount / recipe.fps : 0,
110
+ durationSecs: clipSeconds(recipe),
91
111
  sizeBytes: meta.size,
92
112
  createdAtMs: recipe.createdAtMs,
93
113
  pinned: flag?.pinned ?? false,
@@ -97,19 +117,30 @@ async function itemFromRecipe(dir, id, path, recipe, flags) {
97
117
  }
98
118
  async function itemFromPath(dir, id, path, flags) {
99
119
  const recipe = await readRecipe(dir, id);
100
- return recipe ? itemFromRecipe(dir, id, path, recipe, flags) : undefined;
120
+ // The file must be the container the recipe says: a stray `.mp4` beside a WebM's sidecar is not ours.
121
+ if (!recipe || !path.endsWith(VIDEO_SUFFIXES[recipe.outputFormat]))
122
+ return undefined;
123
+ return itemFromRecipe(dir, id, path, recipe, flags);
101
124
  }
102
125
  /** Every owned clip, newest first. */
103
126
  async function scan(dir, flags) {
104
127
  const names = await readdir(dir).catch(() => []);
105
- const ids = names
106
- .filter((name) => name.endsWith(VIDEO_SUFFIX))
107
- .map((name) => name.slice(0, -VIDEO_SUFFIX.length))
108
- .filter(isValidVideoId);
128
+ const files = new Map();
129
+ for (const format of FORMATS) {
130
+ const suffix = VIDEO_SUFFIXES[format];
131
+ for (const name of names) {
132
+ if (!name.endsWith(suffix))
133
+ continue;
134
+ const id = name.slice(0, -suffix.length);
135
+ if (isValidVideoId(id) && !files.has(id))
136
+ files.set(id, join(dir, name));
137
+ }
138
+ }
139
+ const ids = [...files.keys()];
109
140
  const items = [];
110
141
  for (let at = 0; at < ids.length; at += SCAN_CONCURRENCY) {
111
142
  const batch = ids.slice(at, at + SCAN_CONCURRENCY);
112
- const found = await Promise.all(batch.map((id) => itemFromPath(dir, id, videoPath(dir, id), flags)));
143
+ const found = await Promise.all(batch.map((id) => itemFromPath(dir, id, files.get(id), flags)));
113
144
  for (const item of found)
114
145
  if (item)
115
146
  items.push(item);
@@ -126,15 +157,21 @@ export class VideoGallery {
126
157
  constructor(log = () => { }) {
127
158
  this.log = log;
128
159
  }
129
- /** Write the sidecar, then the clip, and answer the item with the bytes (the facade streams them). */
160
+ /**
161
+ * Write the sidecar, then the clip in the container its recipe names, and answer the item with the
162
+ * bytes (the facade streams them).
163
+ */
130
164
  async save(dir, recipe, webm) {
131
165
  await mkdir(dir, { recursive: true }).catch((error) => {
132
166
  throw ioError('Could not create the videos folder.', error);
133
167
  });
134
168
  const id = recipe.jobId;
135
- const path = checkedVideoPath(dir, id);
136
- if (!isWebm(webm))
137
- throw diffusionError('INVALID_OUTPUT', 'The video engine returned something that is not a WebM.');
169
+ checkedVideoPath(dir, id);
170
+ const path = videoPath(dir, id, recipe.outputFormat);
171
+ if (!isVideoOf(recipe.outputFormat, webm))
172
+ throw diffusionError('INVALID_OUTPUT', recipe.outputFormat === 'mp4'
173
+ ? 'The provider returned something that is not an MP4.'
174
+ : 'The video engine returned something that is not a WebM.');
138
175
  // The sidecar first: a clip without one is foreign, so a crash between the two leaves nothing listed.
139
176
  await writeAtomic(videoRecipePath(dir, id), serializeVideoRecipe(recipe), VIDEO_WRITE_MESSAGES);
140
177
  await writeAtomic(path, webm, VIDEO_WRITE_MESSAGES);
@@ -148,7 +185,7 @@ export class VideoGallery {
148
185
  height: recipe.height,
149
186
  fps: recipe.fps,
150
187
  frameCount: recipe.frameCount,
151
- durationSecs: recipe.fps > 0 ? recipe.frameCount / recipe.fps : 0,
188
+ durationSecs: clipSeconds(recipe),
152
189
  sizeBytes: webm.length,
153
190
  createdAtMs: recipe.createdAtMs,
154
191
  pinned: flag?.pinned ?? false,
@@ -160,8 +197,8 @@ export class VideoGallery {
160
197
  }
161
198
  /** The poster the app rendered from the first frame: a PNG with a readable header, kept as is. */
162
199
  async setPoster(dir, id, png) {
163
- const path = checkedVideoPath(dir, id);
164
- if (!(await isFile(path)) || (await readRecipe(dir, id)) === undefined)
200
+ const { path, exists } = await locateVideo(dir, id);
201
+ if (!exists || (await readRecipe(dir, id)) === undefined)
165
202
  throw diffusionError('JOB_NOT_FOUND', 'That video is no longer in the gallery.');
166
203
  if (png.length > MAX_POSTER_BYTES)
167
204
  throw diffusionError('INVALID_REQUEST', 'The poster is too large.', `${png.length} bytes`);
@@ -176,8 +213,8 @@ export class VideoGallery {
176
213
  return item;
177
214
  }
178
215
  async get(dir, id) {
179
- const path = checkedVideoPath(dir, id);
180
- if (!(await isFile(path)))
216
+ const { path, exists } = await locateVideo(dir, id);
217
+ if (!exists)
181
218
  return null;
182
219
  const flags = await this.flagsLock.run(() => readFlags(dir));
183
220
  return (await itemFromPath(dir, id, path, flags)) ?? null;
@@ -194,8 +231,8 @@ export class VideoGallery {
194
231
  const flags = await readFlags(dir);
195
232
  let changed = false;
196
233
  for (const id of ids) {
197
- const path = checkedVideoPath(dir, id);
198
- if (await isFile(path)) {
234
+ const { path, exists } = await locateVideo(dir, id);
235
+ if (exists) {
199
236
  if ((await readRecipe(dir, id)) === undefined) {
200
237
  this.log('warn', `refusing to delete foreign video ${id}`);
201
238
  continue;
@@ -215,8 +252,8 @@ export class VideoGallery {
215
252
  }
216
253
  setFlags(dir, id, update) {
217
254
  return this.flagsLock.run(async () => {
218
- const path = checkedVideoPath(dir, id);
219
- if (!(await isFile(path)))
255
+ const { path, exists } = await locateVideo(dir, id);
256
+ if (!exists)
220
257
  throw diffusionError('JOB_NOT_FOUND', 'That video is no longer in the gallery.');
221
258
  const flags = await readFlags(dir);
222
259
  const entry = { ...(flags.get(id) ?? { pinned: false, archived: false }) };
@@ -238,8 +275,8 @@ export class VideoGallery {
238
275
  }
239
276
  /** Byte-for-byte copy of the clip; the recipe stays behind with the gallery. */
240
277
  async export(dir, id, target) {
241
- const path = checkedVideoPath(dir, id);
242
- if (!(await isFile(path)))
278
+ const { path, exists } = await locateVideo(dir, id);
279
+ if (!exists)
243
280
  throw diffusionError('JOB_NOT_FOUND', 'That video is no longer in the gallery.');
244
281
  await mkdir(dirname(target), { recursive: true }).catch((error) => {
245
282
  throw ioError('Could not create the destination folder.', error);
@@ -1 +1 @@
1
- {"version":3,"file":"video-gallery.js","sourceRoot":"","sources":["../../src/diffusion/video-gallery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-gallery.js","sourceRoot":"","sources":["../../src/diffusion/video-gallery.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,10 @@ export function recipeInput(input, recipe) {
37
37
  */
38
38
  export function historyRecipes(recipes, input) {
39
39
  return recipes
40
- .filter((recipe) => recipe.model.family === input.family &&
40
+ .filter((recipe) =>
41
+ // A provider's clip says nothing about this machine.
42
+ recipe.engine.kind !== 'remote' &&
43
+ recipe.model.family === input.family &&
41
44
  recipe.engine.backend === input.backend &&
42
45
  recipe.engine.offload === input.offload &&
43
46
  !recipe.engine.cpuFallback &&
@@ -1 +1 @@
1
- {"version":3,"file":"video-history.js","sourceRoot":"","sources":["../../src/diffusion/video-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-history.js","sourceRoot":"","sources":["../../src/diffusion/video-history.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,11 @@
4
4
  * order of `ImageRecipe`'s sibling, so a clip copied anywhere can be reproduced. The parser is as
5
5
  * strict as `parseRecipe`, because it decides whether a `.webm` in the folder is ours.
6
6
  */
7
+ import { orderedEngine, parseRecipeEngine } from './recipe.js';
7
8
  import { VIDEO_WORKFLOWS } from './workflow.js';
8
9
  export const RECIPE_SIDECAR_SUFFIX = '.json';
9
- const ENGINES = ['sd-cpp', 'diffusers'];
10
- const BACKENDS = ['cpu', 'metal', 'cuda', 'vulkan', 'rocm'];
11
- const OFFLOADS = ['none', 'group', 'model'];
10
+ const OUTPUT_FORMATS = ['webm', 'mp4'];
11
+ const REMOTE_VIDEO_STRINGS = ['resolution', 'aspectRatio', 'size'];
12
12
  const isObject = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
13
13
  const isWhole = (value) => typeof value === 'number' && Number.isInteger(value) && value >= 0;
14
14
  /** Seeds as `parseRecipe` takes them: an `i64` as a double sees it. */
@@ -47,19 +47,55 @@ export function serializeVideoRecipe(recipe) {
47
47
  displayName: recipe.model.displayName,
48
48
  filename: recipe.model.filename,
49
49
  },
50
- engine: {
51
- kind: recipe.engine.kind,
52
- backend: recipe.engine.backend,
53
- tag: recipe.engine.tag,
54
- offload: recipe.engine.offload,
55
- cpuFallback: recipe.engine.cpuFallback,
56
- },
50
+ engine: orderedEngine(recipe.engine),
57
51
  createdAtMs: recipe.createdAtMs,
58
52
  durationMs: recipe.durationMs,
59
53
  ...(recipe.decodeMs === undefined ? {} : { decodeMs: recipe.decodeMs }),
54
+ ...(recipe.durationSecs === undefined ? {} : { durationSecs: recipe.durationSecs }),
55
+ ...(recipe.remote === undefined ? {} : { remote: orderedRemoteVideo(recipe.remote) }),
60
56
  };
61
57
  return `${JSON.stringify(ordered, null, 2)}\n`;
62
58
  }
59
+ function orderedRemoteVideo(options) {
60
+ const out = {};
61
+ if (options.durationSecs !== undefined)
62
+ out.durationSecs = options.durationSecs;
63
+ for (const key of REMOTE_VIDEO_STRINGS)
64
+ if (options[key] !== undefined)
65
+ out[key] = options[key];
66
+ if (options.generateAudio !== undefined)
67
+ out.generateAudio = options.generateAudio;
68
+ return out;
69
+ }
70
+ /** A remote clip's extra settings, or `undefined` when the value is not such an object. */
71
+ function parseRemoteVideo(value) {
72
+ if (value === undefined || value === null)
73
+ return null;
74
+ if (!isObject(value))
75
+ return undefined;
76
+ const out = {};
77
+ const duration = value['durationSecs'];
78
+ if (duration !== undefined && duration !== null) {
79
+ if (!isNumber(duration))
80
+ return undefined;
81
+ out.durationSecs = duration;
82
+ }
83
+ for (const key of REMOTE_VIDEO_STRINGS) {
84
+ const item = value[key];
85
+ if (item === undefined || item === null)
86
+ continue;
87
+ if (!isString(item))
88
+ return undefined;
89
+ out[key] = item;
90
+ }
91
+ const audio = value['generateAudio'];
92
+ if (audio !== undefined && audio !== null) {
93
+ if (typeof audio !== 'boolean')
94
+ return undefined;
95
+ out.generateAudio = audio;
96
+ }
97
+ return out;
98
+ }
63
99
  /** The recipe out of a sidecar, or `undefined` when the text is not one. */
64
100
  export function parseVideoRecipe(text) {
65
101
  let raw;
@@ -76,6 +112,8 @@ export function parseVideoRecipe(text) {
76
112
  const guidance = optional(raw['guidance'], isNumber);
77
113
  const samplingMethod = optional(raw['samplingMethod'], isString);
78
114
  const flowShift = optional(raw['flowShift'], isNumber);
115
+ const parsedEngine = parseRecipeEngine(engine);
116
+ const remote = parseRemoteVideo(raw['remote']);
79
117
  const ok = isString(raw['jobId']) &&
80
118
  isString(raw['prompt']) &&
81
119
  isWhole(raw['width']) &&
@@ -87,23 +125,20 @@ export function parseVideoRecipe(text) {
87
125
  isNumber(raw['cfgScale']) &&
88
126
  isI64(raw['seed']) &&
89
127
  among(raw['workflow'], VIDEO_WORKFLOWS) &&
90
- raw['outputFormat'] === 'webm' &&
128
+ among(raw['outputFormat'], OUTPUT_FORMATS) &&
91
129
  isString(model['modelId']) &&
92
130
  isString(model['family']) &&
93
131
  isString(model['displayName']) &&
94
132
  isString(model['filename']) &&
95
- among(engine['kind'], ENGINES) &&
96
- among(engine['backend'], BACKENDS) &&
97
- isString(engine['tag']) &&
98
- among(engine['offload'], OFFLOADS) &&
99
- typeof engine['cpuFallback'] === 'boolean' &&
133
+ parsedEngine !== undefined &&
134
+ remote !== undefined &&
100
135
  isWhole(raw['createdAtMs']) &&
101
136
  isWhole(raw['durationMs']) &&
102
137
  negativePrompt !== undefined &&
103
138
  guidance !== undefined &&
104
139
  samplingMethod !== undefined &&
105
140
  flowShift !== undefined;
106
- if (!ok)
141
+ if (!ok || parsedEngine === undefined || remote === undefined)
107
142
  return undefined;
108
143
  return {
109
144
  jobId: raw['jobId'],
@@ -121,24 +156,22 @@ export function parseVideoRecipe(text) {
121
156
  samplingMethod,
122
157
  flowShift,
123
158
  workflow: raw['workflow'],
124
- outputFormat: 'webm',
159
+ outputFormat: raw['outputFormat'],
125
160
  model: {
126
161
  modelId: model['modelId'],
127
162
  family: model['family'],
128
163
  displayName: model['displayName'],
129
164
  filename: model['filename'],
130
165
  },
131
- engine: {
132
- kind: engine['kind'],
133
- backend: engine['backend'],
134
- tag: engine['tag'],
135
- offload: engine['offload'],
136
- cpuFallback: engine['cpuFallback'],
137
- },
166
+ engine: parsedEngine,
138
167
  createdAtMs: raw['createdAtMs'],
139
168
  durationMs: raw['durationMs'],
140
169
  // Older clips have none; a malformed one is dropped rather than the clip.
141
170
  ...(isWhole(raw['decodeMs']) ? { decodeMs: raw['decodeMs'] } : {}),
171
+ ...(isNumber(raw['durationSecs']) && raw['durationSecs'] >= 0
172
+ ? { durationSecs: raw['durationSecs'] }
173
+ : {}),
174
+ ...(remote === null ? {} : { remote }),
142
175
  };
143
176
  }
144
177
  //# sourceMappingURL=video-recipe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"video-recipe.js","sourceRoot":"","sources":["../../src/diffusion/video-recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-recipe.js","sourceRoot":"","sources":["../../src/diffusion/video-recipe.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import type { CoreEvents, HardwareInfoResponse, SystemInfo } from '../contracts/
8
8
  import type { ProcessJournal } from '../lock/index.js';
9
9
  import type { BackendOutputSink, GpuClaimHook } from '../runtime/shared/index.js';
10
10
  import { DiffusionService } from './service.js';
11
+ import type { RemoteMediaGateway } from './remote-job.js';
11
12
  import type { DiffusionServiceDeps } from './service.js';
12
13
  export interface WireDiffusionOptions {
13
14
  layout: DataLayout;
@@ -25,6 +26,8 @@ export interface WireDiffusionOptions {
25
26
  env?: NodeJS.ProcessEnv;
26
27
  /** Core's GPU residency (task 2.15), asked before every `sd-server` spawn. */
27
28
  claimGpu?: GpuClaimHook;
29
+ /** Cloud and self-hosted providers' image and video models. */
30
+ remoteMedia?: RemoteMediaGateway;
28
31
  /** Test seams, straight through to the service. */
29
32
  overrides?: Pick<DiffusionServiceDeps, 'http' | 'spawn' | 'timings' | 'idleTickMs' | 'now' | 'sleep' | 'drawSeed'>;
30
33
  }
@@ -36,6 +36,7 @@ export function wireDiffusion(options) {
36
36
  ...(options.platform ? { platform: options.platform } : {}),
37
37
  ...(options.env ? { env: options.env } : {}),
38
38
  ...(options.claimGpu ? { claimGpu: options.claimGpu } : {}),
39
+ ...(options.remoteMedia ? { remoteMedia: options.remoteMedia } : {}),
39
40
  ...(options.backendOutput ? { backendOutput: options.backendOutput } : {}),
40
41
  ...options.overrides,
41
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/diffusion/wiring.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAwB/C,8GAA8G;AAC9G,MAAM,UAAU,gBAAgB,CAC9B,OAA+C,EAC/C,UAAkB,EAClB,MAAoB,IAAI,CAAC,GAAG;IAE5B,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CAAC,GAAG,CAAC;YACV,WAAW,EAAE,UAAU;YACvB,GAAG;YACH,gBAAgB,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;YACrD,GAAG;YACH,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,OAAO;YACjB,IAAI;YACJ,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;SAC1C,CAAC;QACJ,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;KACrC,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,QAElC;IACC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;QAC/B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;QAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,OAAO,CAAC,SAAS;KACrB,CAAC,CAAA;IACF,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/diffusion/wiring.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AA2B/C,8GAA8G;AAC9G,MAAM,UAAU,gBAAgB,CAC9B,OAA+C,EAC/C,UAAkB,EAClB,MAAoB,IAAI,CAAC,GAAG;IAE5B,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CACrC,OAAO,CAAC,GAAG,CAAC;YACV,WAAW,EAAE,UAAU;YACvB,GAAG;YACH,gBAAgB,EAAE,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;YACrD,GAAG;YACH,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,OAAO;YACjB,IAAI;YACJ,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;SAC1C,CAAC;QACJ,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;KACrC,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,QAElC;IACC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;QAC/B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;QAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,OAAO,CAAC,SAAS;KACrB,CAAC,CAAA;IACF,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -8,10 +8,6 @@
8
8
  * - `Range: bytes=N-` → 206 + validated `Content-Range`; 200/416 → restart from 0; 408/429/5xx retry
9
9
  * - 5 retries per stall, counter reset after every 1 MiB of fresh progress
10
10
  * - combined progress `{transferred,total}` after resume, every 10 MiB per file, per file end, task end
11
- * (with `streams` > 1 also every 250 ms while bytes flow: a terminal draws from it, the app's bar
12
- * does not, and the app never sets `streams`)
13
- * - with `streams` > 1, a hash-pinned file of at least 32 MiB downloads over byte ranges in parallel
14
- * (`segmented.ts`), falling back to one stream when the server cannot serve ranges
15
11
  * - verification (size, sha256) after all files; on failure the file and its directory (non-recursive)
16
12
  * are removed and the task fails; cancel keeps every partial and finished file
17
13
  * - preflight: Windows path limit, free space with 512 MiB headroom (skipped when unknown)
@@ -20,7 +16,7 @@
20
16
  * I/O is injected (`fetch`, fs, free-space probe, sleep) so the whole flow is testable against a
21
17
  * scripted HTTP server without touching the network or the real data folder.
22
18
  */
23
- import type { CoreEvents } from '../contracts/index.js';
19
+ import type { CoreEvents, DownloadProgress } from '../contracts/index.js';
24
20
  import type { ProxyConfig } from './protocol.js';
25
21
  import type { VerifyDeps } from './verify.js';
26
22
  export interface DownloadItem {
@@ -38,10 +34,6 @@ export interface DownloadOptions {
38
34
  }
39
35
  export declare const DOWNLOAD_CANCELLED = "Download cancelled";
40
36
  export interface DownloaderDeps {
41
- /** Parallel byte-range streams for a hash-pinned file of at least 32 MiB (`segmented.ts`); one by default. */
42
- streams?: number;
43
- /** Milliseconds, for the time-based progress cadence `streams` > 1 adds. */
44
- now?: () => number;
45
37
  dataFolder: string;
46
38
  platform: NodeJS.Platform;
47
39
  fetch: typeof fetch;
@@ -58,15 +50,6 @@ export interface DownloaderDeps {
58
50
  /** The events a download raises; narrow on purpose, so a caller cannot be handed anything else. */
59
51
  export type DownloaderEventName = 'download:progress' | 'download:stage' | 'model:validation-started';
60
52
  export type DownloaderEmit = <K extends DownloaderEventName>(name: K, payload: CoreEvents[K]) => void;
61
- /** One running task's combined progress, as its last `download:progress` event said. */
62
- export interface DownloadProgress {
63
- taskId: string;
64
- transferred: number;
65
- total: number;
66
- percent: number;
67
- }
68
- /** With `streams` > 1, progress is also reported this often while bytes flow. */
69
- export declare const TIMED_PROGRESS_INTERVAL_MS = 250;
70
53
  export declare function defaultAvailableSpace(path: string): Promise<number | undefined>;
71
54
  export declare function defaultSleep(ms: number, signal: AbortSignal): Promise<void>;
72
55
  /** Resolve the longest existing prefix through symlinks, then re-append the rest (Rust `canonicalize_existing_prefix`). */
@@ -8,10 +8,6 @@
8
8
  * - `Range: bytes=N-` → 206 + validated `Content-Range`; 200/416 → restart from 0; 408/429/5xx retry
9
9
  * - 5 retries per stall, counter reset after every 1 MiB of fresh progress
10
10
  * - combined progress `{transferred,total}` after resume, every 10 MiB per file, per file end, task end
11
- * (with `streams` > 1 also every 250 ms while bytes flow: a terminal draws from it, the app's bar
12
- * does not, and the app never sets `streams`)
13
- * - with `streams` > 1, a hash-pinned file of at least 32 MiB downloads over byte ranges in parallel
14
- * (`segmented.ts`), falling back to one stream when the server cannot serve ranges
15
11
  * - verification (size, sha256) after all files; on failure the file and its directory (non-recursive)
16
12
  * are removed and the task fails; cancel keeps every partial and finished file
17
13
  * - preflight: Windows path limit, free space with 512 MiB headroom (skipped when unknown)
@@ -26,11 +22,8 @@ import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
26
22
  import { checkFreeSpace, checkPathWithinLimit, diskErrToString, remainingBytes } from './disk.js';
27
23
  import { classifyDownloadStatus, classifyResumeStatus, DownloadRequestError, downloadStage, expectedDownloadSize, HEAD_TIMEOUT_MS, MAX_STREAM_RETRIES, PROGRESS_EMIT_INTERVAL_BYTES, RETRY_RESET_PROGRESS_BYTES, retryDelayMs, shouldBypassProxy, sidecarPath, validateContentRange, validateProxyConfig, } from './protocol.js';
28
24
  import { policyFetchFor } from './proxy-fetch.js';
29
- import { downloadSegments, SEGMENTED_MIN_BYTES } from './segmented.js';
30
25
  import { verifyDownloadedFile } from './verify.js';
31
26
  export const DOWNLOAD_CANCELLED = 'Download cancelled';
32
- /** With `streams` > 1, progress is also reported this often while bytes flow. */
33
- export const TIMED_PROGRESS_INTERVAL_MS = 250;
34
27
  export async function defaultAvailableSpace(path) {
35
28
  let probe = path;
36
29
  for (;;) {
@@ -94,7 +87,6 @@ export class Downloader {
94
87
  sleep: defaultSleep,
95
88
  retryBaseMs: 1000,
96
89
  log: () => { },
97
- now: Date.now,
98
90
  ...deps,
99
91
  };
100
92
  }
@@ -322,36 +314,6 @@ export class Downloader {
322
314
  throw disk(e);
323
315
  });
324
316
  const expectedSize = expectedDownloadSize(item.size, fileSize);
325
- const streams = this.deps.streams ?? 1;
326
- if (!shouldResume && item.sha256 && expectedSize >= SEGMENTED_MIN_BYTES && streams > 1) {
327
- reportStage('connecting', 0);
328
- const done = await downloadSegments({
329
- url: item.url,
330
- destination: savePath,
331
- size: expectedSize,
332
- sha256: item.sha256,
333
- streams,
334
- fetch: fetchImpl,
335
- headers,
336
- signal,
337
- sleep: this.deps.sleep,
338
- retryBaseMs: this.deps.retryBaseMs,
339
- now: this.deps.now,
340
- progress: (bytes) => {
341
- progress.set(fileId, bytes);
342
- emitProgress();
343
- },
344
- }).catch((e) => {
345
- if (signal.aborted)
346
- throw new Error(DOWNLOAD_CANCELLED);
347
- throw new Error(`Download failed for '${item.url}': ${e.message}`);
348
- });
349
- if (done) {
350
- await rm(urlPath, { force: true }).catch(() => { });
351
- return savePath;
352
- }
353
- this.deps.log('info', `Ranges are unavailable for '${item.url}'; downloading in one stream`);
354
- }
355
317
  let res;
356
318
  let totalTransferred = 0;
357
319
  if (shouldResume) {
@@ -400,10 +362,6 @@ export class Downloader {
400
362
  const close = () => new Promise((ok, fail) => writer.end((e) => (e ? fail(disk(e)) : ok())));
401
363
  let body = res.body ?? new ReadableStream({ start: (c) => c.close() });
402
364
  let reader = body.getReader();
403
- // The app's bar is fed every 10 MiB and nothing more; a client that asked for parallel streams
404
- // also gets a report every `TIMED_PROGRESS_INTERVAL_MS` while bytes flow.
405
- const timedProgress = streams > 1;
406
- let reportedAt = this.deps.now();
407
365
  let delta = 0;
408
366
  let retryCount = 0;
409
367
  let sinceReset = 0;
@@ -432,9 +390,7 @@ export class Downloader {
432
390
  retryCount = 0;
433
391
  sinceReset = 0;
434
392
  }
435
- if (delta >= PROGRESS_EMIT_INTERVAL_BYTES ||
436
- (timedProgress && this.deps.now() - reportedAt >= TIMED_PROGRESS_INTERVAL_MS)) {
437
- reportedAt = this.deps.now();
393
+ if (delta >= PROGRESS_EMIT_INTERVAL_BYTES) {
438
394
  progress.set(fileId, totalTransferred);
439
395
  emitProgress();
440
396
  delta = 0;