diffusers-workflow 0.12.0__tar.gz → 0.13.0__tar.gz

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 (610) hide show
  1. {diffusers_workflow-0.12.0/diffusers_workflow.egg-info → diffusers_workflow-0.13.0}/PKG-INFO +28 -28
  2. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/README.md +1 -1
  3. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0/diffusers_workflow.egg-info}/PKG-INFO +28 -28
  4. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/SOURCES.txt +22 -21
  5. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/requires.txt +26 -26
  6. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/disk_caches.py +61 -9
  7. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/ARCHITECTURE.md +2 -2
  8. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/DEPENDENCIES.md +2 -2
  9. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/MCP.md +1 -1
  10. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/QUANTIZATION.md +1 -1
  11. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/RELEASING.md +82 -0
  12. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/SERVER.md +11 -1
  13. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/media.py +35 -0
  14. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/media_frames.py +9 -0
  15. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/components.py +1 -1
  16. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/quantized_cache.py +36 -11
  17. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/result.py +6 -0
  18. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/api_models.py +11 -0
  19. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/app.py +2 -0
  20. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/deps.py +33 -1
  21. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/jobs.py +28 -0
  22. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/assets.py +8 -0
  23. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/library.py +11 -0
  24. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/media.py +46 -28
  25. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/system.py +25 -17
  26. diffusers_workflow-0.12.0/dw/server/ui/assets/cssMode-n9saDHXf.js → diffusers_workflow-0.13.0/dw/server/ui/assets/cssMode-QzCkHHkC.js +1 -1
  27. diffusers_workflow-0.12.0/dw/server/ui/assets/editor.api-DBE2zlnf.js → diffusers_workflow-0.13.0/dw/server/ui/assets/editor.api-LvRbw1iL.js +1 -1
  28. diffusers_workflow-0.12.0/dw/server/ui/assets/freemarker2-BomqYelz.js → diffusers_workflow-0.13.0/dw/server/ui/assets/freemarker2-BFEReHqW.js +1 -1
  29. diffusers_workflow-0.12.0/dw/server/ui/assets/handlebars-8Houv1UM.js → diffusers_workflow-0.13.0/dw/server/ui/assets/handlebars--qZ0WvL7.js +1 -1
  30. diffusers_workflow-0.12.0/dw/server/ui/assets/html-DaY0zzOJ.js → diffusers_workflow-0.13.0/dw/server/ui/assets/html-Bs0VSJAA.js +1 -1
  31. diffusers_workflow-0.12.0/dw/server/ui/assets/htmlMode-DP2rYJIT.js → diffusers_workflow-0.13.0/dw/server/ui/assets/htmlMode-DrsyYX5n.js +1 -1
  32. diffusers_workflow-0.13.0/dw/server/ui/assets/index-BgBhcVj3.js +54 -0
  33. diffusers_workflow-0.13.0/dw/server/ui/assets/index-DSM5LA24.css +1 -0
  34. diffusers_workflow-0.12.0/dw/server/ui/assets/javascript-B5R3UPTQ.js → diffusers_workflow-0.13.0/dw/server/ui/assets/javascript-C3KR7rul.js +1 -1
  35. diffusers_workflow-0.12.0/dw/server/ui/assets/jsonMode-DsuGIxoD.js → diffusers_workflow-0.13.0/dw/server/ui/assets/jsonMode-DEXt-mqp.js +1 -1
  36. diffusers_workflow-0.12.0/dw/server/ui/assets/liquid-B2d5ZvOn.js → diffusers_workflow-0.13.0/dw/server/ui/assets/liquid-ByBJuq1e.js +1 -1
  37. diffusers_workflow-0.12.0/dw/server/ui/assets/lspLanguageFeatures-ChdmQify.js → diffusers_workflow-0.13.0/dw/server/ui/assets/lspLanguageFeatures-6nDoG86-.js +1 -1
  38. diffusers_workflow-0.12.0/dw/server/ui/assets/mdx-DIXDAORJ.js → diffusers_workflow-0.13.0/dw/server/ui/assets/mdx-BH2GyjV6.js +1 -1
  39. diffusers_workflow-0.12.0/dw/server/ui/assets/monaco-BgG3yDUh.js → diffusers_workflow-0.13.0/dw/server/ui/assets/monaco-B6Bmfo5o.js +4 -4
  40. diffusers_workflow-0.12.0/dw/server/ui/assets/python-CXHtns6L.js → diffusers_workflow-0.13.0/dw/server/ui/assets/python-C1sJMrAm.js +1 -1
  41. diffusers_workflow-0.12.0/dw/server/ui/assets/razor-BSKKsa7H.js → diffusers_workflow-0.13.0/dw/server/ui/assets/razor-BdPZ4bvZ.js +1 -1
  42. diffusers_workflow-0.12.0/dw/server/ui/assets/tsMode-DRjPuZ2P.js → diffusers_workflow-0.13.0/dw/server/ui/assets/tsMode-DW5i-ukN.js +1 -1
  43. diffusers_workflow-0.12.0/dw/server/ui/assets/typescript-CBpoJtqE.js → diffusers_workflow-0.13.0/dw/server/ui/assets/typescript-C_QzKQY3.js +1 -1
  44. diffusers_workflow-0.12.0/dw/server/ui/assets/workers-DUo4Mox_.js → diffusers_workflow-0.13.0/dw/server/ui/assets/workers-DHqaOvh8.js +1 -1
  45. diffusers_workflow-0.12.0/dw/server/ui/assets/xml-B2gZoNmP.js → diffusers_workflow-0.13.0/dw/server/ui/assets/xml-D3UEcM_2.js +1 -1
  46. diffusers_workflow-0.12.0/dw/server/ui/assets/yaml-CSvo_Woe.js → diffusers_workflow-0.13.0/dw/server/ui/assets/yaml-C0TnGcnd.js +1 -1
  47. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/index.html +2 -2
  48. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/cuts.py +5 -6
  49. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_catalog.py +11 -11
  50. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/workspaces.py +35 -10
  51. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/pyproject.toml +30 -33
  52. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_api_contract.py +1 -0
  53. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_disk_caches.py +140 -2
  54. diffusers_workflow-0.13.0/tests/test_faststart.py +103 -0
  55. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_workspaces.py +24 -0
  56. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_modular_pipeline.py +4 -4
  57. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_plan_cuts.py +19 -0
  58. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_quantized_cache.py +32 -2
  59. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server.py +68 -3
  60. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_library_path.py +52 -0
  61. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_updater.py +12 -3
  62. diffusers_workflow-0.12.0/dw/server/ui/assets/index-CZtjWH1q.css +0 -1
  63. diffusers_workflow-0.12.0/dw/server/ui/assets/index-DGl2EK47.js +0 -48
  64. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/LICENSE +0 -0
  65. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/MANIFEST.in +0 -0
  66. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
  67. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/entry_points.txt +0 -0
  68. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/diffusers_workflow.egg-info/top_level.txt +0 -0
  69. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/__init__.py +0 -0
  70. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/adapter_compatibility.py +0 -0
  71. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/argument_media.py +0 -0
  72. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/argument_warnings.py +0 -0
  73. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/arguments.py +0 -0
  74. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/assessment_rules.py +0 -0
  75. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/assets.py +0 -0
  76. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/audio_qc.py +0 -0
  77. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/cache_blocks.json +0 -0
  78. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/cache_blocks.py +0 -0
  79. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
  80. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/community_pipelines/pipeline_ltx2_refine.py +0 -0
  81. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/content_types.py +0 -0
  82. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/devices.py +0 -0
  83. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/dissolve_frame_errors.py +0 -0
  84. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/ACCELERATION.md +0 -0
  85. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/AGENT_LOOP.md +0 -0
  86. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/IP_ADAPTER.md +0 -0
  87. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/LORAS.md +0 -0
  88. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/PROMPT_WEIGHTING.md +0 -0
  89. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/RECIPES_24GB.md +0 -0
  90. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/REMOTE.md +0 -0
  91. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/SECURITY.md +0 -0
  92. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/SECURITY_QUICKREF.md +0 -0
  93. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/TASKS.md +0 -0
  94. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/TESTING.md +0 -0
  95. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/WORKER_GUIDE.md +0 -0
  96. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/WORKFLOW_GUIDE.md +0 -0
  97. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/docs/WORKSPACES.md +0 -0
  98. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/download_watch.py +0 -0
  99. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/dsp.py +0 -0
  100. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/elision.py +0 -0
  101. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/events.py +0 -0
  102. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/for_each.py +0 -0
  103. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/guides.py +0 -0
  104. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/hold_audio.py +0 -0
  105. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/host_memory.py +0 -0
  106. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/host_memory_projection.py +0 -0
  107. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/hub_cache.py +0 -0
  108. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/introspection.py +0 -0
  109. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/kernel_availability.py +0 -0
  110. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/library.py +0 -0
  111. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/locations.py +0 -0
  112. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/log_setup.py +0 -0
  113. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/lora_catalog.py +0 -0
  114. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/lora_catalog_schema.json +0 -0
  115. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/lora_hub.py +0 -0
  116. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/media_types.py +0 -0
  117. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/outbound.py +0 -0
  118. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/output_extraction.py +0 -0
  119. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/path_redaction.py +0 -0
  120. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_ownership.py +0 -0
  121. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/adapters.py +0 -0
  122. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/chain.py +0 -0
  123. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/config_objects.py +0 -0
  124. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_guide_steps.py +0 -0
  125. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_guides.py +0 -0
  126. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_hold.py +0 -0
  127. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_hold_steps.py +0 -0
  128. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/h3_rules.py +0 -0
  129. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/pipeline.py +0 -0
  130. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/placement.py +0 -0
  131. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/progress.py +0 -0
  132. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/pipeline_processors/remote.py +0 -0
  133. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/plan.py +0 -0
  134. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/previous_results.py +0 -0
  135. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/probe_paths.py +0 -0
  136. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/prompt_schema.json +0 -0
  137. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/prompt_weighting.py +0 -0
  138. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/prompts.py +0 -0
  139. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/realize.py +0 -0
  140. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/reference_limits.py +0 -0
  141. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/reference_names.py +0 -0
  142. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/references.py +0 -0
  143. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/run.py +0 -0
  144. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/runs.py +0 -0
  145. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/scalar_result_validation.py +0 -0
  146. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/schema.py +0 -0
  147. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/script_lines.py +0 -0
  148. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/security.py +0 -0
  149. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/serve.py +0 -0
  150. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/__init__.py +0 -0
  151. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/admission.py +0 -0
  152. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/assess.py +0 -0
  153. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/catalog.py +0 -0
  154. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/catalog_shape.py +0 -0
  155. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/enhancers.py +0 -0
  156. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/exports.py +0 -0
  157. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/guides.py +0 -0
  158. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/http_security.py +0 -0
  159. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/inline_media.py +0 -0
  160. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/job_history.py +0 -0
  161. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/job_record.py +0 -0
  162. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/job_results.py +0 -0
  163. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/mcp_mount.py +0 -0
  164. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/netinfo.py +0 -0
  165. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/observed_cost.py +0 -0
  166. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/outputs.py +0 -0
  167. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/pool.py +0 -0
  168. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/__init__.py +0 -0
  169. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/files.py +0 -0
  170. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/gallery.py +0 -0
  171. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/jobs.py +0 -0
  172. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/routes/loras.py +0 -0
  173. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/sysinfo.py +0 -0
  174. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
  175. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
  176. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
  177. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
  178. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
  179. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
  180. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
  181. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/codicon-DF1abBS2.ttf +0 -0
  182. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
  183. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
  184. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
  185. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
  186. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
  187. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/css.worker-C6lDtRpF.js +0 -0
  188. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
  189. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
  190. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
  191. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
  192. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/editor-DjpsE8to.css +0 -0
  193. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/editor.worker-BmdWdrHZ.js +0 -0
  194. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
  195. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
  196. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
  197. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
  198. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
  199. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
  200. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/html.worker-C5yZDBHz.js +0 -0
  201. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
  202. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
  203. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/json.worker-DdeUAmHa.js +0 -0
  204. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
  205. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
  206. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
  207. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
  208. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
  209. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
  210. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
  211. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
  212. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/monaco-n7clI0si.css +0 -0
  213. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
  214. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
  215. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
  216. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
  217. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
  218. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
  219. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
  220. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/php-nr791fC2.js +0 -0
  221. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
  222. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
  223. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
  224. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
  225. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
  226. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
  227. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
  228. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
  229. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
  230. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
  231. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
  232. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
  233. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
  234. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
  235. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
  236. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
  237. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
  238. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
  239. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
  240. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
  241. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
  242. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
  243. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/st-DbInun42.js +0 -0
  244. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
  245. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
  246. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
  247. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/ts.worker-DGGa2mF8.js +0 -0
  248. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
  249. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
  250. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
  251. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
  252. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/updater.py +0 -0
  253. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/server/worker_memory.py +0 -0
  254. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/settings.py +0 -0
  255. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/shot_span_preflight.py +0 -0
  256. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/shots.py +0 -0
  257. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/slice_preflight.py +0 -0
  258. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/step.py +0 -0
  259. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/step_cache.py +0 -0
  260. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/step_value_checks.py +0 -0
  261. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/subfolders.py +0 -0
  262. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/task_domains.py +0 -0
  263. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/task_problems.py +0 -0
  264. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/assess.py +0 -0
  265. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_dynamics.py +0 -0
  266. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_handlers.py +0 -0
  267. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_transcription.py +0 -0
  268. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/audio_utils.py +0 -0
  269. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/background_remover.py +0 -0
  270. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/beats.py +0 -0
  271. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/borders.py +0 -0
  272. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/compose_text.py +0 -0
  273. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/concat_videos.py +0 -0
  274. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/depth_estimator.py +0 -0
  275. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/diffusion_upscale.py +0 -0
  276. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/dissolve_videos.py +0 -0
  277. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/face_track.py +0 -0
  278. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/finish.py +0 -0
  279. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/finish_handlers.py +0 -0
  280. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/fit.py +0 -0
  281. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/format_messages.py +0 -0
  282. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/gather.py +0 -0
  283. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/grade.py +0 -0
  284. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/h3_latent_upscale.py +0 -0
  285. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/h3_latent_upscaler_model.py +0 -0
  286. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/image_ops.py +0 -0
  287. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/image_to_text.py +0 -0
  288. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/image_utils.py +0 -0
  289. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/interpolate_frames.py +0 -0
  290. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/join_into_song.py +0 -0
  291. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/joins.py +0 -0
  292. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/judge.py +0 -0
  293. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/loop_bed.py +0 -0
  294. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/lut.py +0 -0
  295. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/measure_sync.py +0 -0
  296. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/model_cache.py +0 -0
  297. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/model_handlers.py +0 -0
  298. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/pair_audio.py +0 -0
  299. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/qr_code.py +0 -0
  300. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/registry.py +0 -0
  301. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/restore_faces.py +0 -0
  302. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/rife_model.py +0 -0
  303. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/script_check.py +0 -0
  304. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/segment.py +0 -0
  305. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/select.py +0 -0
  306. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/speech_generation.py +0 -0
  307. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/stabilize.py +0 -0
  308. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/task.py +0 -0
  309. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/tensor_image.py +0 -0
  310. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/text_generation.py +0 -0
  311. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/text_sections.py +0 -0
  312. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/trim.py +0 -0
  313. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/upscale.py +0 -0
  314. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/video_handlers.py +0 -0
  315. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/video_utils.py +0 -0
  316. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/voice_attribution.py +0 -0
  317. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/windows.py +0 -0
  318. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/tasks/zoe_depth.py +0 -0
  319. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/test.py +0 -0
  320. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/trust.py +0 -0
  321. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/type_helpers.py +0 -0
  322. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/type_references.py +0 -0
  323. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/validate.py +0 -0
  324. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/validation.py +0 -0
  325. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/variable_constraints.py +0 -0
  326. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/variables.py +0 -0
  327. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/video_extensions.py +0 -0
  328. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/video_size_errors.py +0 -0
  329. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/vram_estimate.py +0 -0
  330. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/vram_inheritance.py +0 -0
  331. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/window_count_errors.py +0 -0
  332. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/worker.py +0 -0
  333. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/worker_manager.py +0 -0
  334. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/worker_protocol.py +0 -0
  335. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflow.py +0 -0
  336. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflow_run.py +0 -0
  337. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflow_schema.json +0 -0
  338. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflows/h3_context_ir.json +0 -0
  339. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workflows/test.json +0 -0
  340. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/workspace.py +0 -0
  341. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw/writers.py +0 -0
  342. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/__init__.py +0 -0
  343. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/__main__.py +0 -0
  344. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/assets.py +0 -0
  345. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/authoring.py +0 -0
  346. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/catalog.py +0 -0
  347. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/client.py +0 -0
  348. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/confine.py +0 -0
  349. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/diagnose.py +0 -0
  350. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/exports.py +0 -0
  351. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/guides.py +0 -0
  352. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/loras.py +0 -0
  353. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/media.py +0 -0
  354. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/models.py +0 -0
  355. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/prompts.py +0 -0
  356. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/server.py +0 -0
  357. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_authoring.py +0 -0
  358. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_jobs.py +0 -0
  359. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/dw_mcp/tools_media.py +0 -0
  360. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/setup.cfg +0 -0
  361. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_admission.py +0 -0
  362. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_admission_capacity.py +0 -0
  363. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_analyze_beats.py +0 -0
  364. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_arch_metrics.py +0 -0
  365. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_arch_report.py +0 -0
  366. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_architecture_map.py +0 -0
  367. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_argument_updates.py +0 -0
  368. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_arguments.py +0 -0
  369. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assemble_and_score_target_lufs.py +0 -0
  370. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assess.py +0 -0
  371. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assessment_rules.py +0 -0
  372. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_assets.py +0 -0
  373. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_attention_slicing.py +0 -0
  374. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_audio_utils.py +0 -0
  375. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_best_of_n_template.py +0 -0
  376. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_borders.py +0 -0
  377. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_cache_blocks.py +0 -0
  378. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_catalog_shape.py +0 -0
  379. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_catalog_speed_defaults.py +0 -0
  380. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_catalog_structure.py +0 -0
  381. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_chain.py +0 -0
  382. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ci_config.py +0 -0
  383. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_cli.py +0 -0
  384. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_component_name_errors.py +0 -0
  385. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_component_pruning.py +0 -0
  386. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_component_type_errors.py +0 -0
  387. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_compose_text.py +0 -0
  388. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_concat_videos.py +0 -0
  389. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_config_objects.py +0 -0
  390. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_configuration_schema.py +0 -0
  391. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_content_types.py +0 -0
  392. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_depth_estimator.py +0 -0
  393. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_device.py +0 -0
  394. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_device_helpers.py +0 -0
  395. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_device_portability.py +0 -0
  396. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dialogue_short_voices.py +0 -0
  397. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_diffusion_upscale.py +0 -0
  398. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dissolve_frame_errors.py +0 -0
  399. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dissolve_videos.py +0 -0
  400. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_docs_links.py +0 -0
  401. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_download_watch.py +0 -0
  402. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_dsp.py +0 -0
  403. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_elision.py +0 -0
  404. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_events.py +0 -0
  405. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_examples.py +0 -0
  406. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_face_track.py +0 -0
  407. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_find_loop_bed.py +0 -0
  408. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_finish.py +0 -0
  409. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_fit_templates.py +0 -0
  410. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_fit_to_model.py +0 -0
  411. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_for_each.py +0 -0
  412. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_gather.py +0 -0
  413. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_grade.py +0 -0
  414. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_guide_chain_validation.py +0 -0
  415. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_guides_validation.py +0 -0
  416. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_adapters.py +0 -0
  417. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_context_ir.py +0 -0
  418. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_guides.py +0 -0
  419. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_hold_audio.py +0 -0
  420. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_latent_upscale.py +0 -0
  421. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_refine.py +0 -0
  422. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_rules.py +0 -0
  423. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_schedule.py +0 -0
  424. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_upscaler_source.py +0 -0
  425. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_h3_vram_ceiling.py +0 -0
  426. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_hf_placement.py +0 -0
  427. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_host_memory.py +0 -0
  428. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_host_memory_projection.py +0 -0
  429. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_hub_cache.py +0 -0
  430. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_image_ops.py +0 -0
  431. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_image_to_text.py +0 -0
  432. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_image_utils.py +0 -0
  433. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_inductor_cache_default.py +0 -0
  434. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ingredients_grid.py +0 -0
  435. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_inherited_cost.py +0 -0
  436. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_integration.py +0 -0
  437. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_interpolate_frames.py +0 -0
  438. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_introspection.py +0 -0
  439. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_history_device.py +0 -0
  440. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_history_wal.py +0 -0
  441. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_progress.py +0 -0
  442. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_job_warnings.py +0 -0
  443. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_jobs_listing.py +0 -0
  444. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_jobs_reused.py +0 -0
  445. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_join_into_song.py +0 -0
  446. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_join_windows.py +0 -0
  447. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_judge.py +0 -0
  448. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_kernel_availability.py +0 -0
  449. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_library_path.py +0 -0
  450. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_library_sources.py +0 -0
  451. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_list_images.py +0 -0
  452. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_locations.py +0 -0
  453. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_alpha.py +0 -0
  454. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_catalog.py +0 -0
  455. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_disable.py +0 -0
  456. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_hub.py +0 -0
  457. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lora_library.py +0 -0
  458. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_diffusion_decode.py +0 -0
  459. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_extend_clip.py +0 -0
  460. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_ic_loras.py +0 -0
  461. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx2_refine_pipeline.py +0 -0
  462. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ltx_prompt_library.py +0 -0
  463. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_lut.py +0 -0
  464. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_assets.py +0 -0
  465. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_authoring.py +0 -0
  466. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_catalog.py +0 -0
  467. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_client.py +0 -0
  468. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_confine.py +0 -0
  469. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_diagnose.py +0 -0
  470. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_exports.py +0 -0
  471. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_guides.py +0 -0
  472. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_loras.py +0 -0
  473. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_main.py +0 -0
  474. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_media.py +0 -0
  475. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_models.py +0 -0
  476. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_prompts.py +0 -0
  477. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_server.py +0 -0
  478. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mcp_twins.py +0 -0
  479. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_measure_sync.py +0 -0
  480. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_audio.py +0 -0
  481. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_decode_threads.py +0 -0
  482. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_frames.py +0 -0
  483. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_info.py +0 -0
  484. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_media_layering.py +0 -0
  485. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mix_audio.py +0 -0
  486. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_model_cache.py +0 -0
  487. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_modular_output_properties.py +0 -0
  488. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_modular_progress.py +0 -0
  489. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mps_fallback_warning.py +0 -0
  490. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_mps_rope_precision.py +0 -0
  491. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_null_media.py +0 -0
  492. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_numeric_coercion.py +0 -0
  493. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_observed_cost.py +0 -0
  494. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_offload_placement.py +0 -0
  495. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_outbound.py +0 -0
  496. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_output_references.py +0 -0
  497. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pair_audio.py +0 -0
  498. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pair_audio_fit.py +0 -0
  499. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_parallel_loading_default.py +0 -0
  500. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_path_redaction.py +0 -0
  501. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_phase_events.py +0 -0
  502. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pipeline_caching.py +0 -0
  503. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_pipeline_components.py +0 -0
  504. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_plan.py +0 -0
  505. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_plugin_skills.py +0 -0
  506. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prepare_pipeline.py +0 -0
  507. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_previous_result_walker_parity.py +0 -0
  508. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_previous_results.py +0 -0
  509. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_library.py +0 -0
  510. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_parser.py +0 -0
  511. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_references.py +0 -0
  512. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompt_weighting.py +0 -0
  513. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_prompts.py +0 -0
  514. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_read_frame_range.py +0 -0
  515. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_real_models.py +0 -0
  516. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_realize.py +0 -0
  517. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_recenter_crop.py +0 -0
  518. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_reference_limits.py +0 -0
  519. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_reference_names.py +0 -0
  520. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_reference_skip_sets.py +0 -0
  521. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_references.py +0 -0
  522. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_rerun_new_seed.py +0 -0
  523. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_resize_bucket.py +0 -0
  524. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_restore_faces_helper_cache.py +0 -0
  525. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_restore_faces_video.py +0 -0
  526. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_result.py +0 -0
  527. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_result_fps.py +0 -0
  528. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_result_output_naming.py +0 -0
  529. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_rule_parity.py +0 -0
  530. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_runs.py +0 -0
  531. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_runtime_settings.py +0 -0
  532. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_scalar_result_validation.py +0 -0
  533. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_scheduler_config.py +0 -0
  534. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_schema.py +0 -0
  535. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_script_check.py +0 -0
  536. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security.py +0 -0
  537. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_auth.py +0 -0
  538. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_decoder_bombs.py +0 -0
  539. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_input_caps.py +0 -0
  540. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_ssrf.py +0 -0
  541. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_symlinks.py +0 -0
  542. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_trust_gate.py +0 -0
  543. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_security_web_headers.py +0 -0
  544. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_segment.py +0 -0
  545. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_select.py +0 -0
  546. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_select_validation.py +0 -0
  547. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_separate_stems.py +0 -0
  548. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_serve_main.py +0 -0
  549. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_assess.py +0 -0
  550. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_downloads.py +0 -0
  551. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_exports.py +0 -0
  552. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_gallery_image.py +0 -0
  553. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_guides.py +0 -0
  554. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_info.py +0 -0
  555. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_jobs.py +0 -0
  556. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_loras.py +0 -0
  557. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_mcp.py +0 -0
  558. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_server_workspaces.py +0 -0
  559. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_shaping_logs.py +0 -0
  560. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_shot_span_preflight.py +0 -0
  561. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_shots.py +0 -0
  562. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_slice_preflight.py +0 -0
  563. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_speech_generation.py +0 -0
  564. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_stabilize.py +0 -0
  565. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_step.py +0 -0
  566. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_step_cache.py +0 -0
  567. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_strip_exif_and_watermark.py +0 -0
  568. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_sub_workflow_resolver.py +0 -0
  569. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_subfolders.py +0 -0
  570. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task.py +0 -0
  571. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_discovery.py +0 -0
  572. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_domains.py +0 -0
  573. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_public_imports.py +0 -0
  574. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_registry_rules.py +0 -0
  575. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_task_signature_errors.py +0 -0
  576. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_template_defaults.py +0 -0
  577. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_template_subfolders.py +0 -0
  578. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_tensor_image.py +0 -0
  579. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_text_generation.py +0 -0
  580. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_text_sections.py +0 -0
  581. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_transcribe_audio.py +0 -0
  582. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_trim_video.py +0 -0
  583. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_type_helpers.py +0 -0
  584. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_type_helpers_concurrency.py +0 -0
  585. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_ui_twins.py +0 -0
  586. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_validate_arguments.py +0 -0
  587. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_validation.py +0 -0
  588. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_variable_constraints.py +0 -0
  589. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_variables.py +0 -0
  590. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_video_extensions.py +0 -0
  591. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_video_size_errors.py +0 -0
  592. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_video_utils.py +0 -0
  593. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_voice_attribution.py +0 -0
  594. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_vram_estimate.py +0 -0
  595. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_vram_guides.py +0 -0
  596. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_vram_inheritance.py +0 -0
  597. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_window_count_errors.py +0 -0
  598. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_window_video.py +0 -0
  599. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker.py +0 -0
  600. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_execute.py +0 -0
  601. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_job_peak_rss.py +0 -0
  602. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_manager.py +0 -0
  603. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_messages.py +0 -0
  604. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_worker_pool.py +0 -0
  605. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow.py +0 -0
  606. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_run_keys.py +0 -0
  607. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_snapshot.py +0 -0
  608. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_step_cache.py +0 -0
  609. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workflow_trust.py +0 -0
  610. {diffusers_workflow-0.12.0 → diffusers_workflow-0.13.0}/tests/test_workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffusers-workflow
3
- Version: 0.12.0
3
+ Version: 0.13.0
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -16,70 +16,70 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  Requires-Python: >=3.10
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
- Requires-Dist: torch>=2.13.0
20
- Requires-Dist: torchvision>=0.28.0
19
+ Requires-Dist: torch>=2.14.1
20
+ Requires-Dist: torchvision>=0.29.1
21
21
  Requires-Dist: diffusers>=0.40.0
22
- Requires-Dist: transformers!=5.17.0,>=5.16.1
23
- Requires-Dist: accelerate>=1.14.0
24
- Requires-Dist: peft>=0.20.0
22
+ Requires-Dist: transformers>=5.19.0
23
+ Requires-Dist: accelerate>=1.15.0
24
+ Requires-Dist: peft>=0.21.2
25
25
  Requires-Dist: safetensors>=0.8.0
26
- Requires-Dist: huggingface-hub>=1.29.0
26
+ Requires-Dist: huggingface-hub>=1.33.0
27
27
  Requires-Dist: sentencepiece>=0.2.2
28
- Requires-Dist: protobuf>=7.36.0
28
+ Requires-Dist: protobuf>=7.36.2
29
29
  Requires-Dist: ftfy>=6.3.1
30
30
  Requires-Dist: torchsde>=0.2.6
31
31
  Requires-Dist: torchao>=0.18.0
32
32
  Requires-Dist: optimum-quanto>=0.2.7
33
- Requires-Dist: sdnq>=0.2.5
33
+ Requires-Dist: sdnq>=0.2.8
34
34
  Requires-Dist: gguf>=0.19.0
35
35
  Requires-Dist: bitsandbytes>=0.50.2; sys_platform == "linux"
36
36
  Requires-Dist: controlnet-aux>=0.0.10
37
37
  Requires-Dist: opencv-python-headless>=5.0.0.93
38
38
  Requires-Dist: kornia>=0.8.3
39
- Requires-Dist: kernels>=0.17.0
39
+ Requires-Dist: kernels>=0.17.2
40
40
  Requires-Dist: spandrel>=0.4.2
41
41
  Requires-Dist: facexlib>=0.3.0
42
- Requires-Dist: numpy>=2.5.2
42
+ Requires-Dist: numpy>=2.5.4
43
43
  Requires-Dist: Pillow>=12.3.0
44
44
  Requires-Dist: piexif>=1.1.3
45
- Requires-Dist: imageio>=2.37.4
45
+ Requires-Dist: imageio>=2.38.1
46
46
  Requires-Dist: imageio-ffmpeg>=0.6.0
47
- Requires-Dist: av>=18.1.0
47
+ Requires-Dist: av>=19.0.1
48
48
  Requires-Dist: soundfile>=0.14.0
49
- Requires-Dist: matplotlib>=3.11.1
49
+ Requires-Dist: matplotlib>=3.11.2
50
50
  Requires-Dist: pyloudnorm>=0.2.0
51
51
  Requires-Dist: scipy>=1.18.1
52
- Requires-Dist: speechbrain>=1.0.3
52
+ Requires-Dist: speechbrain>=1.1.1
53
53
  Requires-Dist: demucs>=4.1.0
54
54
  Requires-Dist: qrcode>=8.2
55
55
  Requires-Dist: requests>=2.34.2
56
- Requires-Dist: aiohttp>=3.14.3
56
+ Requires-Dist: aiohttp>=3.14.5
57
57
  Requires-Dist: beautifulsoup4>=4.15.0
58
58
  Requires-Dist: jsonschema>=4.26.0
59
- Requires-Dist: concurrent-log-handler>=0.9.29
60
- Requires-Dist: python-dotenv>=1.2.3
59
+ Requires-Dist: concurrent-log-handler>=0.9.30
60
+ Requires-Dist: python-dotenv>=1.2.4
61
61
  Requires-Dist: packaging>=26.3
62
- Requires-Dist: filelock>=3.12
62
+ Requires-Dist: filelock>=4.1.1
63
63
  Requires-Dist: httpx>=0.28.1
64
64
  Provides-Extra: server
65
- Requires-Dist: fastapi>=0.141.1; extra == "server"
66
- Requires-Dist: uvicorn[standard]>=0.52.4; extra == "server"
65
+ Requires-Dist: fastapi>=0.143.0; extra == "server"
66
+ Requires-Dist: uvicorn[standard]>=0.54.0; extra == "server"
67
67
  Provides-Extra: mcp
68
- Requires-Dist: mcp>=2.1.1; extra == "mcp"
68
+ Requires-Dist: mcp>=2.3.0; extra == "mcp"
69
69
  Provides-Extra: dev
70
70
  Requires-Dist: pytest>=9.1.1; extra == "dev"
71
71
  Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
72
72
  Requires-Dist: pytest-xdist>=3.8.0; extra == "dev"
73
73
  Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
74
- Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
74
+ Requires-Dist: pytest-mock>=3.16.0; extra == "dev"
75
75
  Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
76
76
  Requires-Dist: httpx>=0.28.1; extra == "dev"
77
- Requires-Dist: ruff>=0.15.0; extra == "dev"
77
+ Requires-Dist: ruff>=0.17.0; extra == "dev"
78
78
  Requires-Dist: build; extra == "dev"
79
- Requires-Dist: mcp>=2.1.1; extra == "dev"
80
- Requires-Dist: pylint>=3.3; extra == "dev"
79
+ Requires-Dist: mcp>=2.3.0; extra == "dev"
80
+ Requires-Dist: pylint>=4.1.3; extra == "dev"
81
81
  Requires-Dist: import-linter>=2.15; extra == "dev"
82
- Requires-Dist: networkx>=3.0; extra == "dev"
82
+ Requires-Dist: networkx>=3.7; extra == "dev"
83
83
  Requires-Dist: pygount>=3.2; extra == "dev"
84
84
  Dynamic: license-file
85
85
 
@@ -148,7 +148,7 @@ family that knows which workflow fits a request and the rules that bite:
148
148
  ```
149
149
 
150
150
  Most of the shipped workflows (Flux, LTX-2, MiniMax...) use **gated** models.
151
- Request access on the model's Hugging Face page, then `huggingface-cli login`
151
+ Request access on the model's Hugging Face page, then `hf auth login`
152
152
  once; without it the run fails partway through with a 401/403 from the Hub.
153
153
 
154
154
  > **GPU on another machine?** Start the engine there with `--mcp` and connect
@@ -63,7 +63,7 @@ family that knows which workflow fits a request and the rules that bite:
63
63
  ```
64
64
 
65
65
  Most of the shipped workflows (Flux, LTX-2, MiniMax...) use **gated** models.
66
- Request access on the model's Hugging Face page, then `huggingface-cli login`
66
+ Request access on the model's Hugging Face page, then `hf auth login`
67
67
  once; without it the run fails partway through with a 401/403 from the Hub.
68
68
 
69
69
  > **GPU on another machine?** Start the engine there with `--mcp` and connect
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffusers-workflow
3
- Version: 0.12.0
3
+ Version: 0.13.0
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -16,70 +16,70 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  Requires-Python: >=3.10
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
- Requires-Dist: torch>=2.13.0
20
- Requires-Dist: torchvision>=0.28.0
19
+ Requires-Dist: torch>=2.14.1
20
+ Requires-Dist: torchvision>=0.29.1
21
21
  Requires-Dist: diffusers>=0.40.0
22
- Requires-Dist: transformers!=5.17.0,>=5.16.1
23
- Requires-Dist: accelerate>=1.14.0
24
- Requires-Dist: peft>=0.20.0
22
+ Requires-Dist: transformers>=5.19.0
23
+ Requires-Dist: accelerate>=1.15.0
24
+ Requires-Dist: peft>=0.21.2
25
25
  Requires-Dist: safetensors>=0.8.0
26
- Requires-Dist: huggingface-hub>=1.29.0
26
+ Requires-Dist: huggingface-hub>=1.33.0
27
27
  Requires-Dist: sentencepiece>=0.2.2
28
- Requires-Dist: protobuf>=7.36.0
28
+ Requires-Dist: protobuf>=7.36.2
29
29
  Requires-Dist: ftfy>=6.3.1
30
30
  Requires-Dist: torchsde>=0.2.6
31
31
  Requires-Dist: torchao>=0.18.0
32
32
  Requires-Dist: optimum-quanto>=0.2.7
33
- Requires-Dist: sdnq>=0.2.5
33
+ Requires-Dist: sdnq>=0.2.8
34
34
  Requires-Dist: gguf>=0.19.0
35
35
  Requires-Dist: bitsandbytes>=0.50.2; sys_platform == "linux"
36
36
  Requires-Dist: controlnet-aux>=0.0.10
37
37
  Requires-Dist: opencv-python-headless>=5.0.0.93
38
38
  Requires-Dist: kornia>=0.8.3
39
- Requires-Dist: kernels>=0.17.0
39
+ Requires-Dist: kernels>=0.17.2
40
40
  Requires-Dist: spandrel>=0.4.2
41
41
  Requires-Dist: facexlib>=0.3.0
42
- Requires-Dist: numpy>=2.5.2
42
+ Requires-Dist: numpy>=2.5.4
43
43
  Requires-Dist: Pillow>=12.3.0
44
44
  Requires-Dist: piexif>=1.1.3
45
- Requires-Dist: imageio>=2.37.4
45
+ Requires-Dist: imageio>=2.38.1
46
46
  Requires-Dist: imageio-ffmpeg>=0.6.0
47
- Requires-Dist: av>=18.1.0
47
+ Requires-Dist: av>=19.0.1
48
48
  Requires-Dist: soundfile>=0.14.0
49
- Requires-Dist: matplotlib>=3.11.1
49
+ Requires-Dist: matplotlib>=3.11.2
50
50
  Requires-Dist: pyloudnorm>=0.2.0
51
51
  Requires-Dist: scipy>=1.18.1
52
- Requires-Dist: speechbrain>=1.0.3
52
+ Requires-Dist: speechbrain>=1.1.1
53
53
  Requires-Dist: demucs>=4.1.0
54
54
  Requires-Dist: qrcode>=8.2
55
55
  Requires-Dist: requests>=2.34.2
56
- Requires-Dist: aiohttp>=3.14.3
56
+ Requires-Dist: aiohttp>=3.14.5
57
57
  Requires-Dist: beautifulsoup4>=4.15.0
58
58
  Requires-Dist: jsonschema>=4.26.0
59
- Requires-Dist: concurrent-log-handler>=0.9.29
60
- Requires-Dist: python-dotenv>=1.2.3
59
+ Requires-Dist: concurrent-log-handler>=0.9.30
60
+ Requires-Dist: python-dotenv>=1.2.4
61
61
  Requires-Dist: packaging>=26.3
62
- Requires-Dist: filelock>=3.12
62
+ Requires-Dist: filelock>=4.1.1
63
63
  Requires-Dist: httpx>=0.28.1
64
64
  Provides-Extra: server
65
- Requires-Dist: fastapi>=0.141.1; extra == "server"
66
- Requires-Dist: uvicorn[standard]>=0.52.4; extra == "server"
65
+ Requires-Dist: fastapi>=0.143.0; extra == "server"
66
+ Requires-Dist: uvicorn[standard]>=0.54.0; extra == "server"
67
67
  Provides-Extra: mcp
68
- Requires-Dist: mcp>=2.1.1; extra == "mcp"
68
+ Requires-Dist: mcp>=2.3.0; extra == "mcp"
69
69
  Provides-Extra: dev
70
70
  Requires-Dist: pytest>=9.1.1; extra == "dev"
71
71
  Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
72
72
  Requires-Dist: pytest-xdist>=3.8.0; extra == "dev"
73
73
  Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
74
- Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
74
+ Requires-Dist: pytest-mock>=3.16.0; extra == "dev"
75
75
  Requires-Dist: pytest-asyncio>=1.4.0; extra == "dev"
76
76
  Requires-Dist: httpx>=0.28.1; extra == "dev"
77
- Requires-Dist: ruff>=0.15.0; extra == "dev"
77
+ Requires-Dist: ruff>=0.17.0; extra == "dev"
78
78
  Requires-Dist: build; extra == "dev"
79
- Requires-Dist: mcp>=2.1.1; extra == "dev"
80
- Requires-Dist: pylint>=3.3; extra == "dev"
79
+ Requires-Dist: mcp>=2.3.0; extra == "dev"
80
+ Requires-Dist: pylint>=4.1.3; extra == "dev"
81
81
  Requires-Dist: import-linter>=2.15; extra == "dev"
82
- Requires-Dist: networkx>=3.0; extra == "dev"
82
+ Requires-Dist: networkx>=3.7; extra == "dev"
83
83
  Requires-Dist: pygount>=3.2; extra == "dev"
84
84
  Dynamic: license-file
85
85
 
@@ -148,7 +148,7 @@ family that knows which workflow fits a request and the rules that bite:
148
148
  ```
149
149
 
150
150
  Most of the shipped workflows (Flux, LTX-2, MiniMax...) use **gated** models.
151
- Request access on the model's Hugging Face page, then `huggingface-cli login`
151
+ Request access on the model's Hugging Face page, then `hf auth login`
152
152
  once; without it the run fails partway through with a 401/403 from the Hub.
153
153
 
154
154
  > **GPU on another machine?** Start the engine there with `--mcp` and connect
@@ -181,44 +181,44 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
181
181
  dw/server/ui/assets/csp-bTuwJoIa.js
182
182
  dw/server/ui/assets/css-DIMkf-bt.js
183
183
  dw/server/ui/assets/css.worker-C6lDtRpF.js
184
- dw/server/ui/assets/cssMode-n9saDHXf.js
184
+ dw/server/ui/assets/cssMode-QzCkHHkC.js
185
185
  dw/server/ui/assets/cypher-CVaqCwHa.js
186
186
  dw/server/ui/assets/dart-onAF5SnQ.js
187
187
  dw/server/ui/assets/dockerfile-DZFCIeNp.js
188
188
  dw/server/ui/assets/ecl-D05T4iGw.js
189
189
  dw/server/ui/assets/editor-DjpsE8to.css
190
- dw/server/ui/assets/editor.api-DBE2zlnf.js
190
+ dw/server/ui/assets/editor.api-LvRbw1iL.js
191
191
  dw/server/ui/assets/editor.worker-BmdWdrHZ.js
192
192
  dw/server/ui/assets/elixir-6RTg0lbw.js
193
193
  dw/server/ui/assets/flow9-C5_-GSwl.js
194
- dw/server/ui/assets/freemarker2-BomqYelz.js
194
+ dw/server/ui/assets/freemarker2-BFEReHqW.js
195
195
  dw/server/ui/assets/fsharp-C8Ef5oNN.js
196
196
  dw/server/ui/assets/go-C-y9NEjX.js
197
197
  dw/server/ui/assets/graphql-fmXr3nnJ.js
198
- dw/server/ui/assets/handlebars-8Houv1UM.js
198
+ dw/server/ui/assets/handlebars--qZ0WvL7.js
199
199
  dw/server/ui/assets/hcl-CpzslTdj.js
200
- dw/server/ui/assets/html-DaY0zzOJ.js
200
+ dw/server/ui/assets/html-Bs0VSJAA.js
201
201
  dw/server/ui/assets/html.worker-C5yZDBHz.js
202
- dw/server/ui/assets/htmlMode-DP2rYJIT.js
203
- dw/server/ui/assets/index-CZtjWH1q.css
204
- dw/server/ui/assets/index-DGl2EK47.js
202
+ dw/server/ui/assets/htmlMode-DrsyYX5n.js
203
+ dw/server/ui/assets/index-BgBhcVj3.js
204
+ dw/server/ui/assets/index-DSM5LA24.css
205
205
  dw/server/ui/assets/ini-sBoK_t0W.js
206
206
  dw/server/ui/assets/java-BEtHBSE6.js
207
- dw/server/ui/assets/javascript-B5R3UPTQ.js
207
+ dw/server/ui/assets/javascript-C3KR7rul.js
208
208
  dw/server/ui/assets/json.worker-DdeUAmHa.js
209
- dw/server/ui/assets/jsonMode-DsuGIxoD.js
209
+ dw/server/ui/assets/jsonMode-DEXt-mqp.js
210
210
  dw/server/ui/assets/julia-Bri6UV-V.js
211
211
  dw/server/ui/assets/kotlin-BOotOW0E.js
212
212
  dw/server/ui/assets/less-B9JPFI3C.js
213
213
  dw/server/ui/assets/lexon-CfSJPG6W.js
214
- dw/server/ui/assets/liquid-B2d5ZvOn.js
215
- dw/server/ui/assets/lspLanguageFeatures-ChdmQify.js
214
+ dw/server/ui/assets/liquid-ByBJuq1e.js
215
+ dw/server/ui/assets/lspLanguageFeatures-6nDoG86-.js
216
216
  dw/server/ui/assets/lua-CsQS60Ue.js
217
217
  dw/server/ui/assets/m3-D-oSqn_W.js
218
218
  dw/server/ui/assets/markdown-Cimd5fb3.js
219
- dw/server/ui/assets/mdx-DIXDAORJ.js
219
+ dw/server/ui/assets/mdx-BH2GyjV6.js
220
220
  dw/server/ui/assets/mips-CIPQ_RoX.js
221
- dw/server/ui/assets/monaco-BgG3yDUh.js
221
+ dw/server/ui/assets/monaco-B6Bmfo5o.js
222
222
  dw/server/ui/assets/monaco-n7clI0si.css
223
223
  dw/server/ui/assets/msdax-DauUninz.js
224
224
  dw/server/ui/assets/mysql-SOo6toE5.js
@@ -234,10 +234,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
234
234
  dw/server/ui/assets/powershell-DmHpPYUd.js
235
235
  dw/server/ui/assets/protobuf-C531GsRP.js
236
236
  dw/server/ui/assets/pug-Z5eAx3Zn.js
237
- dw/server/ui/assets/python-CXHtns6L.js
237
+ dw/server/ui/assets/python-C1sJMrAm.js
238
238
  dw/server/ui/assets/qsharp-DkqhCAOL.js
239
239
  dw/server/ui/assets/r-BwWrilGY.js
240
- dw/server/ui/assets/razor-BSKKsa7H.js
240
+ dw/server/ui/assets/razor-BdPZ4bvZ.js
241
241
  dw/server/ui/assets/redis-ClamHrr6.js
242
242
  dw/server/ui/assets/redshift-DT7zqm-g.js
243
243
  dw/server/ui/assets/restructuredtext-BYgofb2h.js
@@ -257,15 +257,15 @@ dw/server/ui/assets/swift-Bxkupp3x.js
257
257
  dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
258
258
  dw/server/ui/assets/tcl-DISqw1ZD.js
259
259
  dw/server/ui/assets/ts.worker-DGGa2mF8.js
260
- dw/server/ui/assets/tsMode-DRjPuZ2P.js
260
+ dw/server/ui/assets/tsMode-DW5i-ukN.js
261
261
  dw/server/ui/assets/twig-De2hgUGE.js
262
- dw/server/ui/assets/typescript-CBpoJtqE.js
262
+ dw/server/ui/assets/typescript-C_QzKQY3.js
263
263
  dw/server/ui/assets/typespec-B8J7ngcE.js
264
264
  dw/server/ui/assets/vb-DV3o63ZY.js
265
265
  dw/server/ui/assets/wgsl-DpFanUEy.js
266
- dw/server/ui/assets/workers-DUo4Mox_.js
267
- dw/server/ui/assets/xml-B2gZoNmP.js
268
- dw/server/ui/assets/yaml-CSvo_Woe.js
266
+ dw/server/ui/assets/workers-DHqaOvh8.js
267
+ dw/server/ui/assets/xml-D3UEcM_2.js
268
+ dw/server/ui/assets/yaml-C0TnGcnd.js
269
269
  dw/tasks/assess.py
270
270
  dw/tasks/audio_dynamics.py
271
271
  dw/tasks/audio_handlers.py
@@ -392,6 +392,7 @@ tests/test_elision.py
392
392
  tests/test_events.py
393
393
  tests/test_examples.py
394
394
  tests/test_face_track.py
395
+ tests/test_faststart.py
395
396
  tests/test_find_loop_bed.py
396
397
  tests/test_finish.py
397
398
  tests/test_fit_templates.py
@@ -1,46 +1,46 @@
1
- torch>=2.13.0
2
- torchvision>=0.28.0
1
+ torch>=2.14.1
2
+ torchvision>=0.29.1
3
3
  diffusers>=0.40.0
4
- transformers!=5.17.0,>=5.16.1
5
- accelerate>=1.14.0
6
- peft>=0.20.0
4
+ transformers>=5.19.0
5
+ accelerate>=1.15.0
6
+ peft>=0.21.2
7
7
  safetensors>=0.8.0
8
- huggingface-hub>=1.29.0
8
+ huggingface-hub>=1.33.0
9
9
  sentencepiece>=0.2.2
10
- protobuf>=7.36.0
10
+ protobuf>=7.36.2
11
11
  ftfy>=6.3.1
12
12
  torchsde>=0.2.6
13
13
  torchao>=0.18.0
14
14
  optimum-quanto>=0.2.7
15
- sdnq>=0.2.5
15
+ sdnq>=0.2.8
16
16
  gguf>=0.19.0
17
17
  controlnet-aux>=0.0.10
18
18
  opencv-python-headless>=5.0.0.93
19
19
  kornia>=0.8.3
20
- kernels>=0.17.0
20
+ kernels>=0.17.2
21
21
  spandrel>=0.4.2
22
22
  facexlib>=0.3.0
23
- numpy>=2.5.2
23
+ numpy>=2.5.4
24
24
  Pillow>=12.3.0
25
25
  piexif>=1.1.3
26
- imageio>=2.37.4
26
+ imageio>=2.38.1
27
27
  imageio-ffmpeg>=0.6.0
28
- av>=18.1.0
28
+ av>=19.0.1
29
29
  soundfile>=0.14.0
30
- matplotlib>=3.11.1
30
+ matplotlib>=3.11.2
31
31
  pyloudnorm>=0.2.0
32
32
  scipy>=1.18.1
33
- speechbrain>=1.0.3
33
+ speechbrain>=1.1.1
34
34
  demucs>=4.1.0
35
35
  qrcode>=8.2
36
36
  requests>=2.34.2
37
- aiohttp>=3.14.3
37
+ aiohttp>=3.14.5
38
38
  beautifulsoup4>=4.15.0
39
39
  jsonschema>=4.26.0
40
- concurrent-log-handler>=0.9.29
41
- python-dotenv>=1.2.3
40
+ concurrent-log-handler>=0.9.30
41
+ python-dotenv>=1.2.4
42
42
  packaging>=26.3
43
- filelock>=3.12
43
+ filelock>=4.1.1
44
44
  httpx>=0.28.1
45
45
 
46
46
  [:sys_platform == "linux"]
@@ -51,20 +51,20 @@ pytest>=9.1.1
51
51
  pytest-cov>=7.1.0
52
52
  pytest-xdist>=3.8.0
53
53
  pytest-timeout>=2.4.0
54
- pytest-mock>=3.15.1
54
+ pytest-mock>=3.16.0
55
55
  pytest-asyncio>=1.4.0
56
56
  httpx>=0.28.1
57
- ruff>=0.15.0
57
+ ruff>=0.17.0
58
58
  build
59
- mcp>=2.1.1
60
- pylint>=3.3
59
+ mcp>=2.3.0
60
+ pylint>=4.1.3
61
61
  import-linter>=2.15
62
- networkx>=3.0
62
+ networkx>=3.7
63
63
  pygount>=3.2
64
64
 
65
65
  [mcp]
66
- mcp>=2.1.1
66
+ mcp>=2.3.0
67
67
 
68
68
  [server]
69
- fastapi>=0.141.1
70
- uvicorn[standard]>=0.52.4
69
+ fastapi>=0.143.0
70
+ uvicorn[standard]>=0.54.0
@@ -33,7 +33,11 @@ refused, until someone marks it by hand.
33
33
  is renamed into one `<root>/.clearing-<pid>-<rand>/` directory, which is then
34
34
  deleted. A writer racing the clear finds an empty cache and rebuilds; it never
35
35
  reads a half-deleted tree. An entry delete moves the one entry the same way. The
36
- routes refuse while a job is running or queued.
36
+ routes refuse while a job is running or queued, and hold the job queue still
37
+ (`JobManager.hold_dispatch`) while they work, so a job submitted meanwhile waits
38
+ instead of starting into a root being emptied. A staging directory a killed
39
+ server left behind is removed at `mark_roots()` and at the next clear, and is
40
+ never counted by a scan. `scan_all()` reuses its answer for a few seconds.
37
41
 
38
42
  **An entry id must have a cache key's shape** (`quantized_cache.is_key`, 64
39
43
  lowercase hex) before any path is built from it.
@@ -45,6 +49,7 @@ import os
45
49
  import secrets
46
50
  import shutil
47
51
  import threading
52
+ import time
48
53
  from dataclasses import dataclass
49
54
  from typing import Callable
50
55
 
@@ -65,6 +70,12 @@ _MARKER_TEXT = (
65
70
  _clear_lock = threading.Lock()
66
71
 
67
72
 
73
+ # How long scan_all's answer is reused. A scan stat()s every file of every
74
+ # cache, and get_server_info asks on each call (#840)
75
+ _SCAN_TTL = 5.0
76
+ _scan_memo = None # (monotonic time, scan_all's result)
77
+
78
+
68
79
  class UnknownCache(ValueError):
69
80
  pass
70
81
 
@@ -210,9 +221,28 @@ def _write_marker(root):
210
221
  f.write(_MARKER_TEXT)
211
222
 
212
223
 
213
- def mark_root(cache):
224
+ def _sweep_staging(root):
225
+ """Delete the `.clearing-*` directories a clear that died mid-delete left
226
+ in `root`. Only called where no clear can be running: server start, or
227
+ inside `_clear_lock`."""
228
+ try:
229
+ leftovers = [
230
+ entry.path
231
+ for entry in _children(root)
232
+ if entry.name.startswith(_CLEARING_PREFIX)
233
+ and entry.is_dir(follow_symlinks=False)
234
+ ]
235
+ except OSError:
236
+ return
237
+ for path in leftovers:
238
+ shutil.rmtree(path, ignore_errors=True)
239
+ logger.info(f"Removed the leftover {path} from an interrupted clear")
240
+
241
+
242
+ def mark_root(cache, quiet=False):
214
243
  """Mark one cache's root as dw's to clear, if the rule allows it.
215
- Returns whether the root carries the marker afterwards."""
244
+ Returns whether the root carries the marker afterwards. `quiet` logs the
245
+ refusal at DEBUG: only the startup pass says it at INFO (#841)."""
216
246
  root = cache.root()
217
247
  if os.path.islink(root) or (os.path.exists(root) and not os.path.isdir(root)):
218
248
  return False
@@ -223,9 +253,10 @@ def mark_root(cache):
223
253
  if _has_marker(root):
224
254
  return True
225
255
  if _children(root) and root != cache.default_root():
226
- logger.info(
256
+ logger.log(
257
+ logging.DEBUG if quiet else logging.INFO,
227
258
  f"The {cache.name} cache at {root} was not created by dw and "
228
- f"has no {MARKER} marker, so it can't be cleared from the server"
259
+ f"has no {MARKER} marker, so it can't be cleared from the server",
229
260
  )
230
261
  return False
231
262
  _write_marker(root)
@@ -237,7 +268,8 @@ def mark_roots():
237
268
  once at server start; a root it can't write is left unclearable."""
238
269
  for cache in CACHES.values():
239
270
  try:
240
- mark_root(cache)
271
+ if mark_root(cache):
272
+ _sweep_staging(cache.root())
241
273
  except (OSError, SecurityError) as e:
242
274
  logger.warning(f"Could not mark the {cache.name} cache: {e}")
243
275
 
@@ -255,6 +287,9 @@ def _walk(top):
255
287
  continue
256
288
  with entries:
257
289
  for entry in entries:
290
+ if directory == top and entry.name.startswith(_CLEARING_PREFIX):
291
+ # A clear's staging directory is on its way out
292
+ continue
258
293
  try:
259
294
  if entry.is_dir(follow_symlinks=False):
260
295
  stack.append(entry.path)
@@ -295,7 +330,7 @@ def _reason(cache):
295
330
  root = cache.root()
296
331
  if os.path.isdir(root) and not _has_marker(root):
297
332
  try:
298
- mark_root(cache)
333
+ mark_root(cache, quiet=True)
299
334
  except (OSError, SecurityError) as e:
300
335
  logger.warning(f"Could not mark the {cache.name} cache: {e}")
301
336
  return _not_clearable_reason(root)
@@ -340,7 +375,7 @@ def scan(cache):
340
375
  def _entry_fields(path):
341
376
  """What an entry's `entry.json` says of it, or None when it can't be
342
377
  read. `component` falls back to the subfolder - the component's name in
343
- a diffusers repo - since entry.json doesn't record it."""
378
+ a diffusers repo - for entries written before entry.json recorded it."""
344
379
  try:
345
380
  entry = quantized_cache.read_entry(path)
346
381
  except (OSError, ValueError):
@@ -385,7 +420,20 @@ def scan_entries(root):
385
420
 
386
421
 
387
422
  def scan_all():
388
- return [scan(cache) for cache in CACHES.values()]
423
+ """Every cache as plain data, reused for `_SCAN_TTL` seconds; a clear or
424
+ entry delete drops the reused answer."""
425
+ global _scan_memo
426
+ memo = _scan_memo
427
+ if memo is not None and time.monotonic() - memo[0] < _SCAN_TTL:
428
+ return memo[1]
429
+ result = [scan(cache) for cache in CACHES.values()]
430
+ _scan_memo = (time.monotonic(), result)
431
+ return result
432
+
433
+
434
+ def _forget_scans():
435
+ global _scan_memo
436
+ _scan_memo = None
389
437
 
390
438
 
391
439
  def entry_cache(name, entry):
@@ -441,10 +489,12 @@ def delete_entry(name, entry):
441
489
  if reason:
442
490
  raise NotClearable(f"The {name} cache at {root} can't be changed: {reason}")
443
491
  root = validate_path(root)
492
+ _sweep_staging(root)
444
493
  path = quantized_cache.entry_path(root, entry)
445
494
  if os.path.islink(path) or not os.path.isdir(path):
446
495
  raise UnknownEntry(f"The {name} cache has no entry {entry}")
447
496
  freed, files = _stage_out(root, [path])
497
+ _forget_scans()
448
498
  logger.info(f"Deleted {name} cache entry {entry} ({freed} bytes, {files} files)")
449
499
  return {"freed": freed, "files": files}
450
500
 
@@ -462,10 +512,12 @@ def clear(name):
462
512
  if reason:
463
513
  raise NotClearable(f"The {name} cache at {root} can't be cleared: {reason}")
464
514
  root = validate_path(root)
515
+ _sweep_staging(root)
465
516
  # A link is left alone: validate_path resolves it, so the rename
466
517
  # would move its target, not the link
467
518
  freed, files = _stage_out(
468
519
  root, [entry.path for entry in _children(root) if not entry.is_symlink()]
469
520
  )
521
+ _forget_scans()
470
522
  logger.info(f"Cleared the {name} cache at {root} ({freed} bytes, {files} files)")
471
523
  return {"freed": freed, "files": files}
@@ -150,10 +150,10 @@ one to open.
150
150
  | App factory | `dw/server/app.py`: `create_app` | `create_app` builds the JobManager and `app.state`, installs the middleware and registers the routes, and all state lives in the JobManager. | — |
151
151
  | Routers | `dw/server/routes/*.py`, `dw/server/routes/__init__.py`: `ROUTERS`, `include_routers`, `include_file_routes` | Routers register in `ROUTERS` order, because a greedy `{name:path}` route must come after its specific siblings. The files router comes later, after `/mcp`. | `tests/test_server_downloads.py::test_download_workflow_sets_content_disposition_attachment` |
152
152
  | Job queue | `dw/server/jobs.py`: `JobManager`; `dw/server/job_results.py`: `consume_results` | A dispatcher thread hands queued jobs, in queue order, to the pool's workers (`Worker pool dispatch`); each worker runs one job at a time, and `consume_results` folds that worker's replies into the job, naming files relative to the job's own `output_dir`. A job carries its own `output_dir`, `asset_dir` and `workflow_dir`, so it stays in its workspace. | `tests/test_server_workspaces.py::TestRunning::test_rerun_stays_in_the_workspace_it_ran_in` (FIFO: —) |
153
- | Worker pool dispatch | `dw/server/jobs.py`: `JobManager._next_dispatch`; `dw/server/pool.py`: `WorkerSlot`, `check_fits`, `largest_ceiling_gb`; `dw/vram_estimate.py`: `required_vram_gb`; `dw/server/admission.py`: `pool_capacity` | `--devices` runs one worker per card; a queued job goes to a free card that fits what it needs, a job that fits no free card keeps its place while a smaller one behind it takes the card, a job bigger than every card is refused at submit, and cancel or a crash touches only the worker running that job. On a backend no `cost` entry describes, a declared `vram_estimate` is held at admission to the pool's largest card, so a job the first card cannot hold is not refused when a larger card can hold it. | `tests/test_worker_pool.py::TestConcurrency::test_two_workers_run_two_jobs_at_once`, `tests/test_worker_pool.py::TestBackfill::test_a_job_too_big_for_the_free_card_waits_while_a_smaller_one_takes_it`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_too_big_for_every_card_is_refused_naming_the_largest`, `tests/test_worker_pool.py::TestCancel::test_cancel_reaches_the_worker_running_the_job`, `tests/test_worker_pool.py::TestCrashIsolation::test_a_crashed_worker_fails_only_its_own_job`, `tests/test_worker_pool.py::TestOomRanking::test_the_later_started_worker_is_ranked_first`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_only_the_larger_card_holds_is_admitted` |
153
+ | Worker pool dispatch | `dw/server/jobs.py`: `JobManager._next_dispatch`; `dw/server/pool.py`: `WorkerSlot`, `check_fits`, `largest_ceiling_gb`; `dw/vram_estimate.py`: `required_vram_gb`; `dw/server/admission.py`: `pool_capacity` | `--devices` runs one worker per card; a queued job goes to a free card that fits what it needs (none starts while a cache clear holds dispatch, `dw disk caches`), a job that fits no free card keeps its place while a smaller one behind it takes the card, a job bigger than every card is refused at submit, and cancel or a crash touches only the worker running that job. On a backend no `cost` entry describes, a declared `vram_estimate` is held at admission to the pool's largest card, so a job the first card cannot hold is not refused when a larger card can hold it. | `tests/test_worker_pool.py::TestConcurrency::test_two_workers_run_two_jobs_at_once`, `tests/test_worker_pool.py::TestBackfill::test_a_job_too_big_for_the_free_card_waits_while_a_smaller_one_takes_it`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_too_big_for_every_card_is_refused_naming_the_largest`, `tests/test_worker_pool.py::TestCancel::test_cancel_reaches_the_worker_running_the_job`, `tests/test_worker_pool.py::TestCrashIsolation::test_a_crashed_worker_fails_only_its_own_job`, `tests/test_worker_pool.py::TestOomRanking::test_the_later_started_worker_is_ranked_first`, `tests/test_worker_pool.py::TestFitAtSubmit::test_a_job_only_the_larger_card_holds_is_admitted` |
154
154
  | Card affinity | `dw/server/pool.py`: `choose_slot`; `dw/server/jobs.py`: `JobManager.route`; `dw/worker_protocol.py`: `workflow_identity` | Among the free cards a job fits it goes to the rerun's original card, else the card whose worker last ran its workflow identity (`workflow_identity`, the one rule the worker caches by too), else one with no worker running, else the first in `--devices` order; a cache probe and `plan.estimate` (`priced_for`) ask about the card `route` names, and memory is read and cleared per card. | `tests/test_worker_pool.py::TestIdentityAffinity::test_a_second_run_lands_on_the_card_that_ran_the_workflow_first`, `tests/test_worker_pool.py::TestRerunAffinity::test_a_rerun_lands_on_the_original_card_when_it_is_free`, `tests/test_worker_pool.py::TestProbeRouting::test_the_probe_goes_to_the_worker_the_job_would_be_routed_to`, `tests/test_worker_pool.py::TestMemoryPerCard::test_a_named_card_running_a_job_is_refused_though_the_other_is_idle` |
155
155
  | Per-card memory and cache | `dw/server/worker_memory.py`: `memory_status`, `clear_memory`, `probe_cache` | Each card keeps its own last memory reading; an idle card's worker is asked live, a busy one answers with the run's last report and says why it is not live, and a clear leaves a card running a job alone. Every request takes the card's lock with a bounded wait, and a card's lock is never taken while the JobManager's lock is held. | `tests/test_worker_pool.py::TestMemoryPerCard::test_a_named_card_running_a_job_is_refused_though_the_other_is_idle`, `tests/test_worker_pool.py::TestProbeRouting::test_the_probe_goes_to_the_worker_the_job_would_be_routed_to`, `tests/test_server.py::test_memory_says_why_a_reading_is_not_the_worker_s` |
156
- | dw disk caches | `dw/disk_caches.py` | Members `inductor`, `triton`, `quantized`. Clear only a root carrying the `.dw-cache` marker, never while a job is running or queued (`quantized` also not during a model download); an entry delete takes only a 64-hex id, checked before any path is built; clear renames into `.clearing-*` then deletes. | `tests/test_disk_caches.py` |
156
+ | dw disk caches | `dw/disk_caches.py`; `dw/server/jobs.py`: `JobManager.hold_dispatch`; `dw/server/routes/system.py`: `clear_cache`, `delete_cache_entry` | Members `inductor`, `triton`, `quantized`. Clear only a root carrying the `.dw-cache` marker, never while a job is running or queued (`quantized` also not during a model download); an entry delete takes only a 64-hex id, checked before any path is built; clear renames into `.clearing-*` then deletes. The busy check and the dispatch hold are one step in `JobManager.hold_dispatch`, kept for the whole clear or entry delete: a job submitted meanwhile is accepted but stays queued until it ends. | `tests/test_disk_caches.py`, `tests/test_disk_caches.py::test_job_submitted_during_a_clear_waits_for_it` |
157
157
  | Job-to-run link | `dw/server/job_record.py`, `dw/server/jobs.py`: `JobManager.realized` | A job records `run_id`, `run_dir` and `run_version`, and `JobManager.realized` reads that run's `workflow.json`, confined to the output root. | `tests/test_server_jobs.py::test_realized_reads_the_file_the_run_wrote`, `tests/test_server_jobs.py::test_realized_refuses_a_run_dir_that_escapes_the_output_root` |
158
158
  | Job history | `dw/server/job_history.py`: `JobHistory` | Finished jobs persist in `jobs.sqlite`, in WAL mode, so the Jobs view survives a restart. | `tests/test_server.py::test_job_history_survives_restart_and_reruns`, `tests/test_job_history_wal.py::test_the_jobs_database_uses_wal_mode` |
159
159
  | HTTP security | `dw/server/http_security.py`: `install_middleware`, `query_token_ok` | Every API route needs the token, and only a route marked `query_token_ok` takes it as `?token=`. | `tests/test_security_auth.py::TestTheTokenGate::test_every_api_spelling_needs_the_token`, `tests/test_security_auth.py::TestTheTokenGate::test_the_query_token_is_refused_where_it_is_not_allowed` |
@@ -76,10 +76,10 @@ bash ./install.sh
76
76
 
77
77
  ## Troubleshooting
78
78
 
79
- **Hugging Face authentication (401/403 downloading a model):** Most workflows under `workflows/` (Flux, LTX-2, MiniMax...) point at **gated** models on the Hub — repos that require the owner to approve your account before you can download them. A run against one of these fails with an actionable error naming the repo and `huggingface-cli login` (mapped from the Hub's 401/403 in `load_component()`, `dw/pipeline_processors/components.py`) — request access on the model's page (e.g. [black-forest-labs/FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev)) and then log in once, locally:
79
+ **Hugging Face authentication (401/403 downloading a model):** Most workflows under `workflows/` (Flux, LTX-2, MiniMax...) point at **gated** models on the Hub — repos that require the owner to approve your account before you can download them. A run against one of these fails with an actionable error naming the repo and `hf auth login` (mapped from the Hub's 401/403 in `load_component()`, `dw/pipeline_processors/components.py`) — request access on the model's page (e.g. [black-forest-labs/FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev)) and then log in once, locally:
80
80
 
81
81
  ```bash
82
- huggingface-cli login
82
+ hf auth login
83
83
  ```
84
84
 
85
85
  `workflows/templates/text-to-image.json` uses an ungated model and needs no login - start there if you just want to confirm the install works.