diffusers-workflow 0.5.0__tar.gz → 0.6.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 (533) hide show
  1. {diffusers_workflow-0.5.0/diffusers_workflow.egg-info → diffusers_workflow-0.6.0}/PKG-INFO +23 -11
  2. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/README.md +16 -9
  3. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0/diffusers_workflow.egg-info}/PKG-INFO +23 -11
  4. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/diffusers_workflow.egg-info/SOURCES.txt +86 -39
  5. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/diffusers_workflow.egg-info/entry_points.txt +0 -1
  6. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/diffusers_workflow.egg-info/requires.txt +6 -1
  7. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/adapter_compatibility.py +6 -14
  8. diffusers_workflow-0.6.0/dw/argument_media.py +322 -0
  9. diffusers_workflow-0.6.0/dw/argument_warnings.py +216 -0
  10. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/arguments.py +140 -417
  11. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/assessment_rules.py +4 -3
  12. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/assets.py +33 -31
  13. diffusers_workflow-0.6.0/dw/audio_qc.py +426 -0
  14. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/content_types.py +67 -9
  15. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/dissolve_frame_errors.py +21 -25
  16. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/ACCELERATION.md +2 -60
  17. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/DEPENDENCIES.md +1 -1
  18. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/MCP.md +12 -11
  19. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/RECIPES_24GB.md +4 -1
  20. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/RELEASING.md +188 -1
  21. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/SECURITY.md +7 -7
  22. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/SERVER.md +15 -7
  23. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/TASKS.md +240 -9
  24. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/TESTING.md +14 -5
  25. diffusers_workflow-0.6.0/dw/docs/WORKER_GUIDE.md +46 -0
  26. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/WORKFLOW_GUIDE.md +107 -24
  27. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/WORKSPACES.md +36 -21
  28. diffusers_workflow-0.6.0/dw/dsp.py +612 -0
  29. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/elision.py +28 -9
  30. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/events.py +4 -4
  31. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/for_each.py +21 -34
  32. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/host_memory_projection.py +1 -1
  33. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/introspection.py +27 -477
  34. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/kernel_availability.py +5 -8
  35. diffusers_workflow-0.6.0/dw/library.py +717 -0
  36. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/locations.py +22 -24
  37. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/log_setup.py +3 -2
  38. diffusers_workflow-0.6.0/dw/media.py +851 -0
  39. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/media_frames.py +67 -115
  40. diffusers_workflow-0.6.0/dw/media_types.py +192 -0
  41. diffusers_workflow-0.6.0/dw/output_extraction.py +249 -0
  42. diffusers_workflow-0.6.0/dw/pipeline_ownership.py +308 -0
  43. diffusers_workflow-0.6.0/dw/pipeline_processors/adapters.py +164 -0
  44. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/pipeline_processors/chain.py +10 -20
  45. diffusers_workflow-0.6.0/dw/pipeline_processors/components.py +828 -0
  46. diffusers_workflow-0.6.0/dw/pipeline_processors/pipeline.py +853 -0
  47. diffusers_workflow-0.6.0/dw/pipeline_processors/placement.py +369 -0
  48. diffusers_workflow-0.6.0/dw/pipeline_processors/progress.py +236 -0
  49. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/pipeline_processors/remote.py +1 -1
  50. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/plan.py +206 -200
  51. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/previous_results.py +26 -41
  52. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/probe_paths.py +8 -1
  53. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/prompts.py +30 -25
  54. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/realize.py +21 -15
  55. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/reference_limits.py +3 -6
  56. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/reference_names.py +3 -6
  57. diffusers_workflow-0.6.0/dw/references.py +140 -0
  58. diffusers_workflow-0.6.0/dw/result.py +848 -0
  59. diffusers_workflow-0.6.0/dw/run.py +268 -0
  60. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/runs.py +182 -56
  61. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/scalar_result_validation.py +2 -5
  62. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/schema.py +1 -1
  63. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/security.py +7 -274
  64. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/serve.py +102 -53
  65. diffusers_workflow-0.6.0/dw/server/admission.py +425 -0
  66. diffusers_workflow-0.6.0/dw/server/app.py +238 -0
  67. diffusers_workflow-0.6.0/dw/server/catalog.py +434 -0
  68. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/catalog_shape.py +9 -9
  69. diffusers_workflow-0.6.0/dw/server/deps.py +189 -0
  70. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/exports.py +9 -17
  71. diffusers_workflow-0.6.0/dw/server/http_security.py +187 -0
  72. diffusers_workflow-0.6.0/dw/server/job_history.py +437 -0
  73. diffusers_workflow-0.6.0/dw/server/job_record.py +281 -0
  74. diffusers_workflow-0.6.0/dw/server/jobs.py +898 -0
  75. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/mcp_mount.py +2 -5
  76. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/netinfo.py +9 -1
  77. diffusers_workflow-0.6.0/dw/server/outputs.py +400 -0
  78. diffusers_workflow-0.6.0/dw/server/routes/__init__.py +46 -0
  79. diffusers_workflow-0.6.0/dw/server/routes/assets.py +443 -0
  80. diffusers_workflow-0.6.0/dw/server/routes/files.py +159 -0
  81. diffusers_workflow-0.6.0/dw/server/routes/gallery.py +385 -0
  82. diffusers_workflow-0.6.0/dw/server/routes/jobs.py +765 -0
  83. diffusers_workflow-0.6.0/dw/server/routes/library.py +706 -0
  84. diffusers_workflow-0.6.0/dw/server/routes/media.py +566 -0
  85. diffusers_workflow-0.6.0/dw/server/routes/system.py +416 -0
  86. diffusers_workflow-0.5.0/dw/server/ui/assets/cssMode-DRY1oIAQ.js → diffusers_workflow-0.6.0/dw/server/ui/assets/cssMode-CjZLP_Pe.js +1 -1
  87. diffusers_workflow-0.5.0/dw/server/ui/assets/editor.api-C_Q9knYh.js → diffusers_workflow-0.6.0/dw/server/ui/assets/editor.api-DXlBngV6.js +1 -1
  88. diffusers_workflow-0.5.0/dw/server/ui/assets/freemarker2-CoeF3Y-p.js → diffusers_workflow-0.6.0/dw/server/ui/assets/freemarker2-CtKALOjK.js +1 -1
  89. diffusers_workflow-0.5.0/dw/server/ui/assets/handlebars-ClJeebFA.js → diffusers_workflow-0.6.0/dw/server/ui/assets/handlebars-teGPbQUB.js +1 -1
  90. diffusers_workflow-0.5.0/dw/server/ui/assets/html-Bp7ECOGB.js → diffusers_workflow-0.6.0/dw/server/ui/assets/html-DfSymt9C.js +1 -1
  91. diffusers_workflow-0.5.0/dw/server/ui/assets/htmlMode-DWzbYXCs.js → diffusers_workflow-0.6.0/dw/server/ui/assets/htmlMode-Cr3jQp_U.js +1 -1
  92. diffusers_workflow-0.6.0/dw/server/ui/assets/index-J5rsq_M9.js +43 -0
  93. diffusers_workflow-0.5.0/dw/server/ui/assets/javascript-B6Cbtyg8.js → diffusers_workflow-0.6.0/dw/server/ui/assets/javascript-BeSdrNYj.js +1 -1
  94. diffusers_workflow-0.5.0/dw/server/ui/assets/jsonMode-dg5n9059.js → diffusers_workflow-0.6.0/dw/server/ui/assets/jsonMode-DJLaxAu8.js +1 -1
  95. diffusers_workflow-0.5.0/dw/server/ui/assets/liquid-CAyPEpMs.js → diffusers_workflow-0.6.0/dw/server/ui/assets/liquid-D5XtXQ2P.js +1 -1
  96. diffusers_workflow-0.5.0/dw/server/ui/assets/lspLanguageFeatures-BGj-zQOH.js → diffusers_workflow-0.6.0/dw/server/ui/assets/lspLanguageFeatures-BJkK4mNN.js +1 -1
  97. diffusers_workflow-0.5.0/dw/server/ui/assets/mdx-B5EuIkzP.js → diffusers_workflow-0.6.0/dw/server/ui/assets/mdx-CIThOdKr.js +1 -1
  98. diffusers_workflow-0.5.0/dw/server/ui/assets/monaco-ULLHC90E.js → diffusers_workflow-0.6.0/dw/server/ui/assets/monaco-CYXGxb41.js +4 -4
  99. diffusers_workflow-0.5.0/dw/server/ui/assets/python-C5D4i8ni.js → diffusers_workflow-0.6.0/dw/server/ui/assets/python-BlzkzsC6.js +1 -1
  100. diffusers_workflow-0.5.0/dw/server/ui/assets/razor-DL9EVLH-.js → diffusers_workflow-0.6.0/dw/server/ui/assets/razor-DeSKNqSl.js +1 -1
  101. diffusers_workflow-0.5.0/dw/server/ui/assets/tsMode-BtDRLqfW.js → diffusers_workflow-0.6.0/dw/server/ui/assets/tsMode-BCUw0fMr.js +1 -1
  102. diffusers_workflow-0.5.0/dw/server/ui/assets/typescript-DYpkXm7y.js → diffusers_workflow-0.6.0/dw/server/ui/assets/typescript-3N0ou1YS.js +1 -1
  103. diffusers_workflow-0.5.0/dw/server/ui/assets/workers-B4R84wCs.js → diffusers_workflow-0.6.0/dw/server/ui/assets/workers-C91O0to6.js +1 -1
  104. diffusers_workflow-0.5.0/dw/server/ui/assets/xml-CQNiPADm.js → diffusers_workflow-0.6.0/dw/server/ui/assets/xml-DmIqin7X.js +1 -1
  105. diffusers_workflow-0.5.0/dw/server/ui/assets/yaml-iWBPUkB-.js → diffusers_workflow-0.6.0/dw/server/ui/assets/yaml-BQg2lXI1.js +1 -1
  106. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/index.html +1 -1
  107. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/shot_span_preflight.py +16 -14
  108. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/shots.py +33 -5
  109. diffusers_workflow-0.6.0/dw/slice_preflight.py +173 -0
  110. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/step.py +24 -1
  111. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/step_cache.py +185 -18
  112. diffusers_workflow-0.6.0/dw/step_value_checks.py +312 -0
  113. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/subfolders.py +3 -6
  114. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/task_domains.py +179 -7
  115. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/assess.py +19 -75
  116. diffusers_workflow-0.6.0/dw/tasks/audio_dynamics.py +423 -0
  117. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/audio_transcription.py +12 -7
  118. diffusers_workflow-0.6.0/dw/tasks/audio_utils.py +882 -0
  119. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/compose_text.py +1 -1
  120. diffusers_workflow-0.6.0/dw/tasks/concat_videos.py +383 -0
  121. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/dissolve_videos.py +40 -84
  122. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/gather.py +1 -1
  123. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/image_utils.py +1 -1
  124. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/interpolate_frames.py +1 -1
  125. diffusers_workflow-0.6.0/dw/tasks/join_into_song.py +461 -0
  126. diffusers_workflow-0.6.0/dw/tasks/joins.py +581 -0
  127. diffusers_workflow-0.6.0/dw/tasks/loop_bed.py +850 -0
  128. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/pair_audio.py +71 -8
  129. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/select.py +14 -36
  130. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/speech_generation.py +4 -2
  131. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/stabilize.py +1 -1
  132. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/task.py +34 -35
  133. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/video_utils.py +29 -192
  134. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/voice_attribution.py +113 -83
  135. diffusers_workflow-0.6.0/dw/trust.py +277 -0
  136. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/type_helpers.py +6 -2
  137. diffusers_workflow-0.6.0/dw/type_references.py +267 -0
  138. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/validate.py +2 -1
  139. diffusers_workflow-0.6.0/dw/validation.py +835 -0
  140. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/variable_constraints.py +63 -38
  141. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/variables.py +33 -17
  142. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/video_extensions.py +6 -13
  143. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/video_size_errors.py +37 -30
  144. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/vram_estimate.py +96 -9
  145. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/vram_inheritance.py +1 -37
  146. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/worker.py +243 -220
  147. diffusers_workflow-0.5.0/dw/repl_worker.py → diffusers_workflow-0.6.0/dw/worker_manager.py +40 -4
  148. diffusers_workflow-0.6.0/dw/worker_protocol.py +235 -0
  149. diffusers_workflow-0.6.0/dw/workflow.py +996 -0
  150. diffusers_workflow-0.6.0/dw/workflow_run.py +972 -0
  151. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/workflow_schema.json +2 -25
  152. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/workspace.py +11 -68
  153. diffusers_workflow-0.6.0/dw/writers.py +376 -0
  154. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/assets.py +8 -8
  155. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/catalog.py +8 -6
  156. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/client.py +8 -2
  157. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/media.py +15 -5
  158. diffusers_workflow-0.6.0/dw_mcp/server.py +204 -0
  159. diffusers_workflow-0.6.0/dw_mcp/tools_authoring.py +233 -0
  160. diffusers_workflow-0.6.0/dw_mcp/tools_catalog.py +432 -0
  161. diffusers_workflow-0.6.0/dw_mcp/tools_jobs.py +231 -0
  162. diffusers_workflow-0.6.0/dw_mcp/tools_media.py +382 -0
  163. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/pyproject.toml +16 -4
  164. diffusers_workflow-0.6.0/tests/test_admission.py +651 -0
  165. diffusers_workflow-0.6.0/tests/test_arch_metrics.py +183 -0
  166. diffusers_workflow-0.6.0/tests/test_arch_report.py +95 -0
  167. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_arguments.py +11 -12
  168. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_assemble_and_score_target_lufs.py +11 -2
  169. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_assess.py +3 -3
  170. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_assessment_rules.py +8 -6
  171. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_assets.py +18 -1
  172. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_attention_slicing.py +1 -1
  173. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_audio_utils.py +139 -96
  174. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_cache_blocks.py +5 -5
  175. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_catalog_structure.py +95 -6
  176. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_chain.py +1 -1
  177. diffusers_workflow-0.6.0/tests/test_cli.py +495 -0
  178. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_component_name_errors.py +2 -1
  179. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_component_pruning.py +1 -1
  180. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_component_type_errors.py +2 -2
  181. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_concat_videos.py +218 -8
  182. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_configuration_schema.py +4 -0
  183. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_device_portability.py +4 -3
  184. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_dissolve_frame_errors.py +104 -13
  185. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_dissolve_videos.py +59 -3
  186. diffusers_workflow-0.6.0/tests/test_dsp.py +60 -0
  187. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_elision.py +52 -1
  188. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_events.py +19 -18
  189. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_examples.py +3 -4
  190. diffusers_workflow-0.6.0/tests/test_find_loop_bed.py +920 -0
  191. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_for_each.py +2 -2
  192. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_gather.py +2 -2
  193. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_grade.py +1 -1
  194. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_h3_vram_ceiling.py +3 -3
  195. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_host_memory.py +0 -22
  196. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_interpolate_frames.py +1 -1
  197. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_introspection.py +16 -1
  198. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_job_history_wal.py +1 -1
  199. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_job_progress.py +1 -1
  200. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_job_warnings.py +1 -1
  201. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_jobs_listing.py +1 -1
  202. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_jobs_reused.py +2 -1
  203. diffusers_workflow-0.6.0/tests/test_join_into_song.py +500 -0
  204. diffusers_workflow-0.6.0/tests/test_library_path.py +749 -0
  205. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_library_sources.py +80 -24
  206. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_list_images.py +1 -1
  207. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_locations.py +4 -4
  208. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_lora_alpha.py +1 -1
  209. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_lora_disable.py +1 -1
  210. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_ltx2_ic_loras.py +70 -7
  211. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_ltx_prompt_library.py +2 -1
  212. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_assets.py +18 -20
  213. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_authoring.py +2 -2
  214. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_catalog.py +6 -5
  215. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_media.py +15 -9
  216. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_prompts.py +1 -1
  217. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_workspaces.py +1 -1
  218. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_media_audio.py +4 -4
  219. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_media_frames.py +12 -11
  220. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_media_info.py +154 -1
  221. diffusers_workflow-0.6.0/tests/test_media_layering.py +152 -0
  222. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mix_audio.py +19 -1
  223. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_modular_output_properties.py +3 -2
  224. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_modular_pipeline.py +4 -4
  225. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_modular_progress.py +3 -1
  226. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mps_rope_precision.py +1 -1
  227. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_null_media.py +1 -1
  228. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_observed_cost.py +2 -2
  229. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_offload_placement.py +3 -3
  230. diffusers_workflow-0.6.0/tests/test_pair_audio.py +300 -0
  231. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_pair_audio_fit.py +1 -1
  232. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_phase_events.py +11 -11
  233. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_pipeline_caching.py +330 -78
  234. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_pipeline_components.py +194 -11
  235. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_plan.py +2 -1
  236. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_plugin_skills.py +52 -1
  237. diffusers_workflow-0.6.0/tests/test_prepare_pipeline.py +150 -0
  238. diffusers_workflow-0.6.0/tests/test_previous_result_walker_parity.py +107 -0
  239. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_previous_results.py +1 -1
  240. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_prompt_references.py +1 -1
  241. diffusers_workflow-0.6.0/tests/test_real_models.py +178 -0
  242. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_realize.py +289 -19
  243. diffusers_workflow-0.6.0/tests/test_reference_sets.py +36 -0
  244. diffusers_workflow-0.6.0/tests/test_references.py +90 -0
  245. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_rerun_new_seed.py +20 -0
  246. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_result.py +151 -51
  247. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_result_fps.py +1 -1
  248. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_result_output_naming.py +1 -1
  249. diffusers_workflow-0.6.0/tests/test_rule_parity.py +313 -0
  250. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_runs.py +162 -10
  251. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_scheduler_config.py +1 -1
  252. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_schema.py +4 -3
  253. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security_input_caps.py +15 -12
  254. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security_ssrf.py +11 -10
  255. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security_symlinks.py +2 -17
  256. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security_trust_gate.py +45 -29
  257. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security_web_headers.py +1 -1
  258. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_select_validation.py +1 -1
  259. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server.py +509 -89
  260. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_exports.py +2 -1
  261. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_info.py +2 -2
  262. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_jobs.py +226 -39
  263. diffusers_workflow-0.6.0/tests/test_server_library_path.py +551 -0
  264. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_workspaces.py +83 -11
  265. diffusers_workflow-0.6.0/tests/test_shaping_logs.py +57 -0
  266. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_shot_span_preflight.py +62 -11
  267. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_shots.py +19 -8
  268. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_slice_preflight.py +41 -0
  269. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_stabilize.py +2 -2
  270. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_step.py +46 -0
  271. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_step_cache.py +306 -0
  272. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_task.py +4 -4
  273. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_task_discovery.py +1 -1
  274. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_task_domains.py +4 -3
  275. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_task_signature_errors.py +15 -6
  276. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_template_subfolders.py +4 -23
  277. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_transcribe_audio.py +42 -1
  278. diffusers_workflow-0.6.0/tests/test_validation.py +415 -0
  279. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_variable_constraints.py +57 -2
  280. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_variables.py +1 -1
  281. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_video_size_errors.py +85 -15
  282. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_video_utils.py +14 -14
  283. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_voice_attribution.py +2 -2
  284. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_vram_estimate.py +87 -11
  285. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_vram_inheritance.py +16 -8
  286. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_worker.py +79 -40
  287. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_worker_execute.py +155 -75
  288. diffusers_workflow-0.6.0/tests/test_worker_manager.py +210 -0
  289. diffusers_workflow-0.6.0/tests/test_worker_messages.py +246 -0
  290. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_workflow.py +181 -14
  291. diffusers_workflow-0.6.0/tests/test_workflow_snapshot.py +98 -0
  292. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_workflow_step_cache.py +522 -52
  293. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_workflow_trust.py +10 -9
  294. diffusers_workflow-0.5.0/dw/docs/REPL_COMMANDS.md +0 -121
  295. diffusers_workflow-0.5.0/dw/docs/REPL_WORKER_GUIDE.md +0 -51
  296. diffusers_workflow-0.5.0/dw/loudness.py +0 -82
  297. diffusers_workflow-0.5.0/dw/media_audio.py +0 -217
  298. diffusers_workflow-0.5.0/dw/media_info.py +0 -297
  299. diffusers_workflow-0.5.0/dw/null_media.py +0 -99
  300. diffusers_workflow-0.5.0/dw/pipeline_processors/pipeline.py +0 -2360
  301. diffusers_workflow-0.5.0/dw/repl.py +0 -338
  302. diffusers_workflow-0.5.0/dw/repl_commands.py +0 -836
  303. diffusers_workflow-0.5.0/dw/result.py +0 -1774
  304. diffusers_workflow-0.5.0/dw/result_fps.py +0 -82
  305. diffusers_workflow-0.5.0/dw/run.py +0 -162
  306. diffusers_workflow-0.5.0/dw/select_validation.py +0 -115
  307. diffusers_workflow-0.5.0/dw/server/app.py +0 -4653
  308. diffusers_workflow-0.5.0/dw/server/jobs.py +0 -1569
  309. diffusers_workflow-0.5.0/dw/server/ui/assets/index-Bv4OgazC.js +0 -43
  310. diffusers_workflow-0.5.0/dw/slice_preflight.py +0 -148
  311. diffusers_workflow-0.5.0/dw/tasks/audio_utils.py +0 -2152
  312. diffusers_workflow-0.5.0/dw/tasks/concat_videos.py +0 -318
  313. diffusers_workflow-0.5.0/dw/teacache.py +0 -381
  314. diffusers_workflow-0.5.0/dw/teacache_models.json +0 -99
  315. diffusers_workflow-0.5.0/dw/workflow.py +0 -2109
  316. diffusers_workflow-0.5.0/dw/workflow_sources.py +0 -383
  317. diffusers_workflow-0.5.0/dw_mcp/server.py +0 -1344
  318. diffusers_workflow-0.5.0/tests/test_cli.py +0 -219
  319. diffusers_workflow-0.5.0/tests/test_pair_audio.py +0 -117
  320. diffusers_workflow-0.5.0/tests/test_repl_commands.py +0 -56
  321. diffusers_workflow-0.5.0/tests/test_repl_ergonomics.py +0 -113
  322. diffusers_workflow-0.5.0/tests/test_repl_worker.py +0 -112
  323. diffusers_workflow-0.5.0/tests/test_teacache.py +0 -300
  324. diffusers_workflow-0.5.0/tests/test_workflow_sources.py +0 -241
  325. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/LICENSE +0 -0
  326. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/MANIFEST.in +0 -0
  327. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
  328. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/diffusers_workflow.egg-info/top_level.txt +0 -0
  329. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/__init__.py +0 -0
  330. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/cache_blocks.json +0 -0
  331. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/cache_blocks.py +0 -0
  332. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
  333. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/AGENT_LOOP.md +0 -0
  334. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/IP_ADAPTER.md +0 -0
  335. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/LORAS.md +0 -0
  336. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/PROMPT_WEIGHTING.md +0 -0
  337. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/QUANTIZATION.md +0 -0
  338. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/REMOTE.md +0 -0
  339. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/docs/SECURITY_QUICKREF.md +0 -0
  340. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/download_watch.py +0 -0
  341. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/host_memory.py +0 -0
  342. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/hub_cache.py +0 -0
  343. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/pipeline_processors/config_objects.py +0 -0
  344. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/prompt_schema.json +0 -0
  345. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/prompt_weighting.py +0 -0
  346. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/__init__.py +0 -0
  347. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/assess.py +0 -0
  348. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/enhancers.py +0 -0
  349. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/guides.py +0 -0
  350. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/observed_cost.py +0 -0
  351. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/sysinfo.py +0 -0
  352. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
  353. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
  354. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
  355. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
  356. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
  357. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
  358. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
  359. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
  360. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
  361. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
  362. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
  363. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
  364. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
  365. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/css.worker-B3ciXF_0.js +0 -0
  366. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
  367. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
  368. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
  369. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
  370. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/editor-jjEx9u7D.css +0 -0
  371. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/editor.worker-q-txB4vs.js +0 -0
  372. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
  373. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
  374. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
  375. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
  376. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
  377. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
  378. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/html.worker-C93Ht9o9.js +0 -0
  379. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/index-3Vw6WAPW.css +0 -0
  380. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
  381. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
  382. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/json.worker-B2V3pomh.js +0 -0
  383. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
  384. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
  385. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
  386. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
  387. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
  388. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
  389. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
  390. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
  391. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/monaco--ixms01u.css +0 -0
  392. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
  393. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
  394. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
  395. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
  396. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
  397. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
  398. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
  399. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/php-nr791fC2.js +0 -0
  400. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
  401. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
  402. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
  403. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
  404. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
  405. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
  406. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
  407. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
  408. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
  409. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
  410. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
  411. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
  412. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
  413. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
  414. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
  415. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
  416. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
  417. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
  418. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
  419. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
  420. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
  421. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
  422. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/st-DbInun42.js +0 -0
  423. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
  424. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
  425. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
  426. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/ts.worker-D7T1-Ig5.js +0 -0
  427. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
  428. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
  429. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
  430. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
  431. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/server/updater.py +0 -0
  432. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/settings.py +0 -0
  433. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/background_remover.py +0 -0
  434. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/borders.py +0 -0
  435. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/depth_estimator.py +0 -0
  436. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/diffusion_upscale.py +0 -0
  437. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/format_messages.py +0 -0
  438. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/grade.py +0 -0
  439. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/image_to_text.py +0 -0
  440. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/judge.py +0 -0
  441. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/model_cache.py +0 -0
  442. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/qr_code.py +0 -0
  443. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/restore_faces.py +0 -0
  444. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/rife_model.py +0 -0
  445. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/segment.py +0 -0
  446. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/tensor_image.py +0 -0
  447. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/text_generation.py +0 -0
  448. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/text_sections.py +0 -0
  449. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/upscale.py +0 -0
  450. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/tasks/zoe_depth.py +0 -0
  451. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/test.py +0 -0
  452. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/workflows/h3_context_ir.json +0 -0
  453. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw/workflows/test.json +0 -0
  454. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/__init__.py +0 -0
  455. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/__main__.py +0 -0
  456. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/authoring.py +0 -0
  457. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/diagnose.py +0 -0
  458. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/exports.py +0 -0
  459. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/guides.py +0 -0
  460. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/models.py +0 -0
  461. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/prompts.py +0 -0
  462. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/dw_mcp/workspaces.py +0 -0
  463. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/setup.cfg +0 -0
  464. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_argument_updates.py +0 -0
  465. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_best_of_n_template.py +0 -0
  466. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_borders.py +0 -0
  467. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_catalog_shape.py +0 -0
  468. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_compose_text.py +0 -0
  469. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_config_objects.py +0 -0
  470. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_content_types.py +0 -0
  471. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_depth_estimator.py +0 -0
  472. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_device.py +0 -0
  473. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_device_helpers.py +0 -0
  474. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_dialogue_short_voices.py +0 -0
  475. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_diffusion_upscale.py +0 -0
  476. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_docs_links.py +0 -0
  477. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_download_watch.py +0 -0
  478. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_h3_adapters.py +0 -0
  479. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_h3_context_ir.py +0 -0
  480. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_h3_schedule.py +0 -0
  481. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_hf_placement.py +0 -0
  482. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_host_memory_projection.py +0 -0
  483. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_hub_cache.py +0 -0
  484. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_image_to_text.py +0 -0
  485. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_image_utils.py +0 -0
  486. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_integration.py +0 -0
  487. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_judge.py +0 -0
  488. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_kernel_availability.py +0 -0
  489. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_ltx2_diffusion_decode.py +0 -0
  490. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_ltx2_extend_clip.py +0 -0
  491. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_client.py +0 -0
  492. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_diagnose.py +0 -0
  493. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_exports.py +0 -0
  494. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_guides.py +0 -0
  495. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_main.py +0 -0
  496. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_models.py +0 -0
  497. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mcp_server.py +0 -0
  498. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_model_cache.py +0 -0
  499. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_mps_fallback_warning.py +0 -0
  500. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_output_references.py +0 -0
  501. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_parallel_loading_default.py +0 -0
  502. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_prompt_library.py +0 -0
  503. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_prompt_parser.py +0 -0
  504. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_prompt_weighting.py +0 -0
  505. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_prompts.py +0 -0
  506. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_recenter_crop.py +0 -0
  507. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_reference_limits.py +0 -0
  508. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_reference_names.py +0 -0
  509. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_resize_bucket.py +0 -0
  510. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_scalar_result_validation.py +0 -0
  511. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security.py +0 -0
  512. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security_auth.py +0 -0
  513. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_security_decoder_bombs.py +0 -0
  514. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_segment.py +0 -0
  515. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_select.py +0 -0
  516. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_serve_main.py +0 -0
  517. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_assess.py +0 -0
  518. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_downloads.py +0 -0
  519. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_guides.py +0 -0
  520. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_server_mcp.py +0 -0
  521. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_speech_generation.py +0 -0
  522. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_strip_exif_and_watermark.py +0 -0
  523. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_subfolders.py +0 -0
  524. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_template_defaults.py +0 -0
  525. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_tensor_image.py +0 -0
  526. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_text_generation.py +0 -0
  527. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_text_sections.py +0 -0
  528. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_type_helpers.py +0 -0
  529. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_updater.py +0 -0
  530. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_validate_arguments.py +0 -0
  531. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_video_extensions.py +0 -0
  532. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.0}/tests/test_worker_job_peak_rss.py +0 -0
  533. {diffusers_workflow-0.5.0 → diffusers_workflow-0.6.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.5.0
3
+ Version: 0.6.0
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -59,12 +59,13 @@ Requires-Dist: jsonschema>=4.26.0
59
59
  Requires-Dist: concurrent-log-handler>=0.9.29
60
60
  Requires-Dist: python-dotenv>=1.2.3
61
61
  Requires-Dist: packaging>=26.3
62
+ Requires-Dist: filelock>=3.12
63
+ Requires-Dist: httpx>=0.28.1
62
64
  Provides-Extra: server
63
65
  Requires-Dist: fastapi>=0.141.1; extra == "server"
64
66
  Requires-Dist: uvicorn[standard]>=0.52.4; extra == "server"
65
67
  Provides-Extra: mcp
66
68
  Requires-Dist: mcp>=2.1.1; extra == "mcp"
67
- Requires-Dist: httpx>=0.28.1; extra == "mcp"
68
69
  Provides-Extra: dev
69
70
  Requires-Dist: pytest>=9.1.1; extra == "dev"
70
71
  Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
@@ -76,6 +77,10 @@ Requires-Dist: httpx>=0.28.1; extra == "dev"
76
77
  Requires-Dist: ruff>=0.15.0; extra == "dev"
77
78
  Requires-Dist: build; extra == "dev"
78
79
  Requires-Dist: mcp>=2.1.1; extra == "dev"
80
+ Requires-Dist: pylint>=3.3; extra == "dev"
81
+ Requires-Dist: import-linter>=2.15; extra == "dev"
82
+ Requires-Dist: networkx>=3.0; extra == "dev"
83
+ Requires-Dist: pygount>=3.2; extra == "dev"
79
84
  Dynamic: license-file
80
85
 
81
86
  [![CodeQL](https://github.com/dkackman/diffusers-workflow/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/dkackman/diffusers-workflow/actions/workflows/github-code-scanning/codeql)
@@ -88,7 +93,7 @@ diffusers-workflow wraps the [Hugging Face Diffusers library](https://github.com
88
93
  in an engine that runs image, video and audio generation as jobs, and puts
89
94
  two front ends on it: an **MCP server**, so Claude Code (or any MCP client)
90
95
  can author, run and inspect generations; and a **web UI** for doing the same
91
- by hand. A CLI and REPL sit underneath for when you want neither.
96
+ by hand. A CLI sits underneath for when you want neither.
92
97
 
93
98
  **Python 3.10-3.14 | CUDA (NVIDIA) | MPS (Apple Silicon) | CPU**
94
99
 
@@ -256,16 +261,24 @@ pages and the HTTP API.
256
261
 
257
262
  ## The command line
258
263
 
259
- The engine also runs standalone, with no server involved:
264
+ `dw.run` is a thin client of `dw.serve`: it queues a job over HTTP, prints
265
+ its progress, and reports the run directory the server wrote to - start the
266
+ server first.
260
267
 
261
268
  ```bash
269
+ python -m dw.serve
262
270
  python -m dw.run workflows/templates/text-to-image.json
263
271
  python -m dw.run workflows/templates/text-to-image.json prompt="a cat" num_images_per_prompt=4
264
272
  python -m dw.validate workflows/models/flux-dev.json
265
273
  ```
266
274
 
267
- An interactive REPL (`python -m dw.repl`) keeps models resident between runs
268
- for 2-4x faster iteration. See [REPL Commands](docs/REPL_COMMANDS.md).
275
+ `dw.run` takes `WORKFLOW [name=value ...] [--server URL] [--workspace NAME]
276
+ [--token TOKEN]` - `--server` defaults to `DW_MCP_URL`, else
277
+ `http://127.0.0.1:8765`; `--token` to `DW_API_TOKEN`. Where the output lands,
278
+ which workspace's `prompts:`/`asset:` references resolve, and the output
279
+ layout are all `dw.serve` flags now (`--workspace`, `--output-dir`,
280
+ `--prompt-dir`, `--asset-dir`, `--output-layout` on the server) - `dw.run`
281
+ only says which server and which of its workspaces to run in.
269
282
 
270
283
  ## What's underneath
271
284
 
@@ -284,8 +297,8 @@ file from someone else the way you'd treat a `.py` script — see
284
297
  [Trust model](docs/SECURITY.md#trust-model).
285
298
 
286
299
  Under the hood the engine also handles: quantization (BitsAndBytes, TorchAO,
287
- GGUF, SDNQ, optimum-quanto); inference acceleration (TeaCache,
288
- FirstBlockCache, FasterCache, MagCache, TaylorSeerCache); LoRA and IP-Adapter;
300
+ GGUF, SDNQ, optimum-quanto); inference acceleration
301
+ (FirstBlockCache, FasterCache, MagCache, TaylorSeerCache); LoRA and IP-Adapter;
289
302
  A1111-style prompt weighting; long-video chaining with audio-driven length;
290
303
  step-output caching, so re-running a fixed-seed workflow finishes instantly;
291
304
  and utility tasks for upscaling, face restoration, segmentation, captioning,
@@ -301,7 +314,7 @@ frame interpolation and more.
301
314
  - [Workspaces](docs/WORKSPACES.md) — Where your content lives, run directories, and several workspaces on one server
302
315
  - [Workflow Guide](docs/WORKFLOW_GUIDE.md) — JSON structure, variables, steps, data flow
303
316
  - [Quantization](docs/QUANTIZATION.md) — BitsAndBytes, TorchAO, GGUF, SDNQ
304
- - [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer, TeaCache
317
+ - [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer
305
318
  - [Fast on 24GB](docs/RECIPES_24GB.md) — Recommended speed/memory configurations per model family
306
319
  - [LoRA](docs/LORAS.md) — Loading and stacking LoRA adapters
307
320
  - [IP-Adapter](docs/IP_ADAPTER.md) — Image-prompt conditioning
@@ -311,8 +324,7 @@ frame interpolation and more.
311
324
 
312
325
  ### Reference
313
326
 
314
- - [REPL Commands](docs/REPL_COMMANDS.md) — Interactive REPL command reference
315
- - [Worker Guide](docs/REPL_WORKER_GUIDE.md) — GPU persistence and troubleshooting
327
+ - [Worker Guide](docs/WORKER_GUIDE.md) — GPU persistence and troubleshooting
316
328
  - [Dependencies](docs/DEPENDENCIES.md) — Installation details
317
329
  - [Security](docs/SECURITY.md) — Security model
318
330
  - [Testing](docs/TESTING.md) — Running the test suite
@@ -8,7 +8,7 @@ diffusers-workflow wraps the [Hugging Face Diffusers library](https://github.com
8
8
  in an engine that runs image, video and audio generation as jobs, and puts
9
9
  two front ends on it: an **MCP server**, so Claude Code (or any MCP client)
10
10
  can author, run and inspect generations; and a **web UI** for doing the same
11
- by hand. A CLI and REPL sit underneath for when you want neither.
11
+ by hand. A CLI sits underneath for when you want neither.
12
12
 
13
13
  **Python 3.10-3.14 | CUDA (NVIDIA) | MPS (Apple Silicon) | CPU**
14
14
 
@@ -176,16 +176,24 @@ pages and the HTTP API.
176
176
 
177
177
  ## The command line
178
178
 
179
- The engine also runs standalone, with no server involved:
179
+ `dw.run` is a thin client of `dw.serve`: it queues a job over HTTP, prints
180
+ its progress, and reports the run directory the server wrote to - start the
181
+ server first.
180
182
 
181
183
  ```bash
184
+ python -m dw.serve
182
185
  python -m dw.run workflows/templates/text-to-image.json
183
186
  python -m dw.run workflows/templates/text-to-image.json prompt="a cat" num_images_per_prompt=4
184
187
  python -m dw.validate workflows/models/flux-dev.json
185
188
  ```
186
189
 
187
- An interactive REPL (`python -m dw.repl`) keeps models resident between runs
188
- for 2-4x faster iteration. See [REPL Commands](docs/REPL_COMMANDS.md).
190
+ `dw.run` takes `WORKFLOW [name=value ...] [--server URL] [--workspace NAME]
191
+ [--token TOKEN]` - `--server` defaults to `DW_MCP_URL`, else
192
+ `http://127.0.0.1:8765`; `--token` to `DW_API_TOKEN`. Where the output lands,
193
+ which workspace's `prompts:`/`asset:` references resolve, and the output
194
+ layout are all `dw.serve` flags now (`--workspace`, `--output-dir`,
195
+ `--prompt-dir`, `--asset-dir`, `--output-layout` on the server) - `dw.run`
196
+ only says which server and which of its workspaces to run in.
189
197
 
190
198
  ## What's underneath
191
199
 
@@ -204,8 +212,8 @@ file from someone else the way you'd treat a `.py` script — see
204
212
  [Trust model](docs/SECURITY.md#trust-model).
205
213
 
206
214
  Under the hood the engine also handles: quantization (BitsAndBytes, TorchAO,
207
- GGUF, SDNQ, optimum-quanto); inference acceleration (TeaCache,
208
- FirstBlockCache, FasterCache, MagCache, TaylorSeerCache); LoRA and IP-Adapter;
215
+ GGUF, SDNQ, optimum-quanto); inference acceleration
216
+ (FirstBlockCache, FasterCache, MagCache, TaylorSeerCache); LoRA and IP-Adapter;
209
217
  A1111-style prompt weighting; long-video chaining with audio-driven length;
210
218
  step-output caching, so re-running a fixed-seed workflow finishes instantly;
211
219
  and utility tasks for upscaling, face restoration, segmentation, captioning,
@@ -221,7 +229,7 @@ frame interpolation and more.
221
229
  - [Workspaces](docs/WORKSPACES.md) — Where your content lives, run directories, and several workspaces on one server
222
230
  - [Workflow Guide](docs/WORKFLOW_GUIDE.md) — JSON structure, variables, steps, data flow
223
231
  - [Quantization](docs/QUANTIZATION.md) — BitsAndBytes, TorchAO, GGUF, SDNQ
224
- - [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer, TeaCache
232
+ - [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer
225
233
  - [Fast on 24GB](docs/RECIPES_24GB.md) — Recommended speed/memory configurations per model family
226
234
  - [LoRA](docs/LORAS.md) — Loading and stacking LoRA adapters
227
235
  - [IP-Adapter](docs/IP_ADAPTER.md) — Image-prompt conditioning
@@ -231,8 +239,7 @@ frame interpolation and more.
231
239
 
232
240
  ### Reference
233
241
 
234
- - [REPL Commands](docs/REPL_COMMANDS.md) — Interactive REPL command reference
235
- - [Worker Guide](docs/REPL_WORKER_GUIDE.md) — GPU persistence and troubleshooting
242
+ - [Worker Guide](docs/WORKER_GUIDE.md) — GPU persistence and troubleshooting
236
243
  - [Dependencies](docs/DEPENDENCIES.md) — Installation details
237
244
  - [Security](docs/SECURITY.md) — Security model
238
245
  - [Testing](docs/TESTING.md) — Running the test suite
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diffusers-workflow
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Summary: Declarative workflow engine and web UI for Hugging Face Diffusers
5
5
  Author: dkackman
6
6
  License: Apache-2.0
@@ -59,12 +59,13 @@ Requires-Dist: jsonschema>=4.26.0
59
59
  Requires-Dist: concurrent-log-handler>=0.9.29
60
60
  Requires-Dist: python-dotenv>=1.2.3
61
61
  Requires-Dist: packaging>=26.3
62
+ Requires-Dist: filelock>=3.12
63
+ Requires-Dist: httpx>=0.28.1
62
64
  Provides-Extra: server
63
65
  Requires-Dist: fastapi>=0.141.1; extra == "server"
64
66
  Requires-Dist: uvicorn[standard]>=0.52.4; extra == "server"
65
67
  Provides-Extra: mcp
66
68
  Requires-Dist: mcp>=2.1.1; extra == "mcp"
67
- Requires-Dist: httpx>=0.28.1; extra == "mcp"
68
69
  Provides-Extra: dev
69
70
  Requires-Dist: pytest>=9.1.1; extra == "dev"
70
71
  Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
@@ -76,6 +77,10 @@ Requires-Dist: httpx>=0.28.1; extra == "dev"
76
77
  Requires-Dist: ruff>=0.15.0; extra == "dev"
77
78
  Requires-Dist: build; extra == "dev"
78
79
  Requires-Dist: mcp>=2.1.1; extra == "dev"
80
+ Requires-Dist: pylint>=3.3; extra == "dev"
81
+ Requires-Dist: import-linter>=2.15; extra == "dev"
82
+ Requires-Dist: networkx>=3.0; extra == "dev"
83
+ Requires-Dist: pygount>=3.2; extra == "dev"
79
84
  Dynamic: license-file
80
85
 
81
86
  [![CodeQL](https://github.com/dkackman/diffusers-workflow/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/dkackman/diffusers-workflow/actions/workflows/github-code-scanning/codeql)
@@ -88,7 +93,7 @@ diffusers-workflow wraps the [Hugging Face Diffusers library](https://github.com
88
93
  in an engine that runs image, video and audio generation as jobs, and puts
89
94
  two front ends on it: an **MCP server**, so Claude Code (or any MCP client)
90
95
  can author, run and inspect generations; and a **web UI** for doing the same
91
- by hand. A CLI and REPL sit underneath for when you want neither.
96
+ by hand. A CLI sits underneath for when you want neither.
92
97
 
93
98
  **Python 3.10-3.14 | CUDA (NVIDIA) | MPS (Apple Silicon) | CPU**
94
99
 
@@ -256,16 +261,24 @@ pages and the HTTP API.
256
261
 
257
262
  ## The command line
258
263
 
259
- The engine also runs standalone, with no server involved:
264
+ `dw.run` is a thin client of `dw.serve`: it queues a job over HTTP, prints
265
+ its progress, and reports the run directory the server wrote to - start the
266
+ server first.
260
267
 
261
268
  ```bash
269
+ python -m dw.serve
262
270
  python -m dw.run workflows/templates/text-to-image.json
263
271
  python -m dw.run workflows/templates/text-to-image.json prompt="a cat" num_images_per_prompt=4
264
272
  python -m dw.validate workflows/models/flux-dev.json
265
273
  ```
266
274
 
267
- An interactive REPL (`python -m dw.repl`) keeps models resident between runs
268
- for 2-4x faster iteration. See [REPL Commands](docs/REPL_COMMANDS.md).
275
+ `dw.run` takes `WORKFLOW [name=value ...] [--server URL] [--workspace NAME]
276
+ [--token TOKEN]` - `--server` defaults to `DW_MCP_URL`, else
277
+ `http://127.0.0.1:8765`; `--token` to `DW_API_TOKEN`. Where the output lands,
278
+ which workspace's `prompts:`/`asset:` references resolve, and the output
279
+ layout are all `dw.serve` flags now (`--workspace`, `--output-dir`,
280
+ `--prompt-dir`, `--asset-dir`, `--output-layout` on the server) - `dw.run`
281
+ only says which server and which of its workspaces to run in.
269
282
 
270
283
  ## What's underneath
271
284
 
@@ -284,8 +297,8 @@ file from someone else the way you'd treat a `.py` script — see
284
297
  [Trust model](docs/SECURITY.md#trust-model).
285
298
 
286
299
  Under the hood the engine also handles: quantization (BitsAndBytes, TorchAO,
287
- GGUF, SDNQ, optimum-quanto); inference acceleration (TeaCache,
288
- FirstBlockCache, FasterCache, MagCache, TaylorSeerCache); LoRA and IP-Adapter;
300
+ GGUF, SDNQ, optimum-quanto); inference acceleration
301
+ (FirstBlockCache, FasterCache, MagCache, TaylorSeerCache); LoRA and IP-Adapter;
289
302
  A1111-style prompt weighting; long-video chaining with audio-driven length;
290
303
  step-output caching, so re-running a fixed-seed workflow finishes instantly;
291
304
  and utility tasks for upscaling, face restoration, segmentation, captioning,
@@ -301,7 +314,7 @@ frame interpolation and more.
301
314
  - [Workspaces](docs/WORKSPACES.md) — Where your content lives, run directories, and several workspaces on one server
302
315
  - [Workflow Guide](docs/WORKFLOW_GUIDE.md) — JSON structure, variables, steps, data flow
303
316
  - [Quantization](docs/QUANTIZATION.md) — BitsAndBytes, TorchAO, GGUF, SDNQ
304
- - [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer, TeaCache
317
+ - [Inference Acceleration](docs/ACCELERATION.md) — torch.compile, FirstBlockCache, MagCache, TaylorSeer
305
318
  - [Fast on 24GB](docs/RECIPES_24GB.md) — Recommended speed/memory configurations per model family
306
319
  - [LoRA](docs/LORAS.md) — Loading and stacking LoRA adapters
307
320
  - [IP-Adapter](docs/IP_ADAPTER.md) — Image-prompt conditioning
@@ -311,8 +324,7 @@ frame interpolation and more.
311
324
 
312
325
  ### Reference
313
326
 
314
- - [REPL Commands](docs/REPL_COMMANDS.md) — Interactive REPL command reference
315
- - [Worker Guide](docs/REPL_WORKER_GUIDE.md) — GPU persistence and troubleshooting
327
+ - [Worker Guide](docs/WORKER_GUIDE.md) — GPU persistence and troubleshooting
316
328
  - [Dependencies](docs/DEPENDENCIES.md) — Installation details
317
329
  - [Security](docs/SECURITY.md) — Security model
318
330
  - [Testing](docs/TESTING.md) — Running the test suite
@@ -10,14 +10,18 @@ diffusers_workflow.egg-info/requires.txt
10
10
  diffusers_workflow.egg-info/top_level.txt
11
11
  dw/__init__.py
12
12
  dw/adapter_compatibility.py
13
+ dw/argument_media.py
14
+ dw/argument_warnings.py
13
15
  dw/arguments.py
14
16
  dw/assessment_rules.py
15
17
  dw/assets.py
18
+ dw/audio_qc.py
16
19
  dw/cache_blocks.json
17
20
  dw/cache_blocks.py
18
21
  dw/content_types.py
19
22
  dw/dissolve_frame_errors.py
20
23
  dw/download_watch.py
24
+ dw/dsp.py
21
25
  dw/elision.py
22
26
  dw/events.py
23
27
  dw/for_each.py
@@ -26,13 +30,14 @@ dw/host_memory_projection.py
26
30
  dw/hub_cache.py
27
31
  dw/introspection.py
28
32
  dw/kernel_availability.py
33
+ dw/library.py
29
34
  dw/locations.py
30
35
  dw/log_setup.py
31
- dw/loudness.py
32
- dw/media_audio.py
36
+ dw/media.py
33
37
  dw/media_frames.py
34
- dw/media_info.py
35
- dw/null_media.py
38
+ dw/media_types.py
39
+ dw/output_extraction.py
40
+ dw/pipeline_ownership.py
36
41
  dw/plan.py
37
42
  dw/previous_results.py
38
43
  dw/probe_paths.py
@@ -42,17 +47,13 @@ dw/prompts.py
42
47
  dw/realize.py
43
48
  dw/reference_limits.py
44
49
  dw/reference_names.py
45
- dw/repl.py
46
- dw/repl_commands.py
47
- dw/repl_worker.py
50
+ dw/references.py
48
51
  dw/result.py
49
- dw/result_fps.py
50
52
  dw/run.py
51
53
  dw/runs.py
52
54
  dw/scalar_result_validation.py
53
55
  dw/schema.py
54
56
  dw/security.py
55
- dw/select_validation.py
56
57
  dw/serve.py
57
58
  dw/settings.py
58
59
  dw/shot_span_preflight.py
@@ -60,13 +61,15 @@ dw/shots.py
60
61
  dw/slice_preflight.py
61
62
  dw/step.py
62
63
  dw/step_cache.py
64
+ dw/step_value_checks.py
63
65
  dw/subfolders.py
64
66
  dw/task_domains.py
65
- dw/teacache.py
66
- dw/teacache_models.json
67
67
  dw/test.py
68
+ dw/trust.py
68
69
  dw/type_helpers.py
70
+ dw/type_references.py
69
71
  dw/validate.py
72
+ dw/validation.py
70
73
  dw/variable_constraints.py
71
74
  dw/variables.py
72
75
  dw/video_extensions.py
@@ -74,10 +77,13 @@ dw/video_size_errors.py
74
77
  dw/vram_estimate.py
75
78
  dw/vram_inheritance.py
76
79
  dw/worker.py
80
+ dw/worker_manager.py
81
+ dw/worker_protocol.py
77
82
  dw/workflow.py
83
+ dw/workflow_run.py
78
84
  dw/workflow_schema.json
79
- dw/workflow_sources.py
80
85
  dw/workspace.py
86
+ dw/writers.py
81
87
  dw/community_pipelines/pipeline_flux_rf_inversion.py
82
88
  dw/docs/ACCELERATION.md
83
89
  dw/docs/AGENT_LOOP.md
@@ -90,32 +96,50 @@ dw/docs/QUANTIZATION.md
90
96
  dw/docs/RECIPES_24GB.md
91
97
  dw/docs/RELEASING.md
92
98
  dw/docs/REMOTE.md
93
- dw/docs/REPL_COMMANDS.md
94
- dw/docs/REPL_WORKER_GUIDE.md
95
99
  dw/docs/SECURITY.md
96
100
  dw/docs/SECURITY_QUICKREF.md
97
101
  dw/docs/SERVER.md
98
102
  dw/docs/TASKS.md
99
103
  dw/docs/TESTING.md
104
+ dw/docs/WORKER_GUIDE.md
100
105
  dw/docs/WORKFLOW_GUIDE.md
101
106
  dw/docs/WORKSPACES.md
107
+ dw/pipeline_processors/adapters.py
102
108
  dw/pipeline_processors/chain.py
109
+ dw/pipeline_processors/components.py
103
110
  dw/pipeline_processors/config_objects.py
104
111
  dw/pipeline_processors/pipeline.py
112
+ dw/pipeline_processors/placement.py
113
+ dw/pipeline_processors/progress.py
105
114
  dw/pipeline_processors/remote.py
106
115
  dw/server/__init__.py
116
+ dw/server/admission.py
107
117
  dw/server/app.py
108
118
  dw/server/assess.py
119
+ dw/server/catalog.py
109
120
  dw/server/catalog_shape.py
121
+ dw/server/deps.py
110
122
  dw/server/enhancers.py
111
123
  dw/server/exports.py
112
124
  dw/server/guides.py
125
+ dw/server/http_security.py
126
+ dw/server/job_history.py
127
+ dw/server/job_record.py
113
128
  dw/server/jobs.py
114
129
  dw/server/mcp_mount.py
115
130
  dw/server/netinfo.py
116
131
  dw/server/observed_cost.py
132
+ dw/server/outputs.py
117
133
  dw/server/sysinfo.py
118
134
  dw/server/updater.py
135
+ dw/server/routes/__init__.py
136
+ dw/server/routes/assets.py
137
+ dw/server/routes/files.py
138
+ dw/server/routes/gallery.py
139
+ dw/server/routes/jobs.py
140
+ dw/server/routes/library.py
141
+ dw/server/routes/media.py
142
+ dw/server/routes/system.py
119
143
  dw/server/ui/index.html
120
144
  dw/server/ui/assets/abap-08VXUWAP.js
121
145
  dw/server/ui/assets/apex-BWPQTe0t.js
@@ -131,45 +155,45 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
131
155
  dw/server/ui/assets/csp-bTuwJoIa.js
132
156
  dw/server/ui/assets/css-DIMkf-bt.js
133
157
  dw/server/ui/assets/css.worker-B3ciXF_0.js
134
- dw/server/ui/assets/cssMode-DRY1oIAQ.js
158
+ dw/server/ui/assets/cssMode-CjZLP_Pe.js
135
159
  dw/server/ui/assets/cypher-CVaqCwHa.js
136
160
  dw/server/ui/assets/dart-onAF5SnQ.js
137
161
  dw/server/ui/assets/dockerfile-DZFCIeNp.js
138
162
  dw/server/ui/assets/ecl-D05T4iGw.js
139
163
  dw/server/ui/assets/editor-jjEx9u7D.css
140
- dw/server/ui/assets/editor.api-C_Q9knYh.js
164
+ dw/server/ui/assets/editor.api-DXlBngV6.js
141
165
  dw/server/ui/assets/editor.worker-q-txB4vs.js
142
166
  dw/server/ui/assets/elixir-6RTg0lbw.js
143
167
  dw/server/ui/assets/flow9-C5_-GSwl.js
144
- dw/server/ui/assets/freemarker2-CoeF3Y-p.js
168
+ dw/server/ui/assets/freemarker2-CtKALOjK.js
145
169
  dw/server/ui/assets/fsharp-C8Ef5oNN.js
146
170
  dw/server/ui/assets/go-C-y9NEjX.js
147
171
  dw/server/ui/assets/graphql-fmXr3nnJ.js
148
- dw/server/ui/assets/handlebars-ClJeebFA.js
172
+ dw/server/ui/assets/handlebars-teGPbQUB.js
149
173
  dw/server/ui/assets/hcl-CpzslTdj.js
150
- dw/server/ui/assets/html-Bp7ECOGB.js
174
+ dw/server/ui/assets/html-DfSymt9C.js
151
175
  dw/server/ui/assets/html.worker-C93Ht9o9.js
152
- dw/server/ui/assets/htmlMode-DWzbYXCs.js
176
+ dw/server/ui/assets/htmlMode-Cr3jQp_U.js
153
177
  dw/server/ui/assets/index-3Vw6WAPW.css
154
- dw/server/ui/assets/index-Bv4OgazC.js
178
+ dw/server/ui/assets/index-J5rsq_M9.js
155
179
  dw/server/ui/assets/ini-sBoK_t0W.js
156
180
  dw/server/ui/assets/java-BEtHBSE6.js
157
- dw/server/ui/assets/javascript-B6Cbtyg8.js
181
+ dw/server/ui/assets/javascript-BeSdrNYj.js
158
182
  dw/server/ui/assets/json.worker-B2V3pomh.js
159
- dw/server/ui/assets/jsonMode-dg5n9059.js
183
+ dw/server/ui/assets/jsonMode-DJLaxAu8.js
160
184
  dw/server/ui/assets/julia-Bri6UV-V.js
161
185
  dw/server/ui/assets/kotlin-BOotOW0E.js
162
186
  dw/server/ui/assets/less-B9JPFI3C.js
163
187
  dw/server/ui/assets/lexon-CfSJPG6W.js
164
- dw/server/ui/assets/liquid-CAyPEpMs.js
165
- dw/server/ui/assets/lspLanguageFeatures-BGj-zQOH.js
188
+ dw/server/ui/assets/liquid-D5XtXQ2P.js
189
+ dw/server/ui/assets/lspLanguageFeatures-BJkK4mNN.js
166
190
  dw/server/ui/assets/lua-CsQS60Ue.js
167
191
  dw/server/ui/assets/m3-D-oSqn_W.js
168
192
  dw/server/ui/assets/markdown-Cimd5fb3.js
169
- dw/server/ui/assets/mdx-B5EuIkzP.js
193
+ dw/server/ui/assets/mdx-CIThOdKr.js
170
194
  dw/server/ui/assets/mips-CIPQ_RoX.js
171
195
  dw/server/ui/assets/monaco--ixms01u.css
172
- dw/server/ui/assets/monaco-ULLHC90E.js
196
+ dw/server/ui/assets/monaco-CYXGxb41.js
173
197
  dw/server/ui/assets/msdax-DauUninz.js
174
198
  dw/server/ui/assets/mysql-SOo6toE5.js
175
199
  dw/server/ui/assets/objective-c-FvmIjYaQ.js
@@ -184,10 +208,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
184
208
  dw/server/ui/assets/powershell-DmHpPYUd.js
185
209
  dw/server/ui/assets/protobuf-C531GsRP.js
186
210
  dw/server/ui/assets/pug-Z5eAx3Zn.js
187
- dw/server/ui/assets/python-C5D4i8ni.js
211
+ dw/server/ui/assets/python-BlzkzsC6.js
188
212
  dw/server/ui/assets/qsharp-DkqhCAOL.js
189
213
  dw/server/ui/assets/r-BwWrilGY.js
190
- dw/server/ui/assets/razor-DL9EVLH-.js
214
+ dw/server/ui/assets/razor-DeSKNqSl.js
191
215
  dw/server/ui/assets/redis-ClamHrr6.js
192
216
  dw/server/ui/assets/redshift-DT7zqm-g.js
193
217
  dw/server/ui/assets/restructuredtext-BYgofb2h.js
@@ -207,16 +231,17 @@ dw/server/ui/assets/swift-Bxkupp3x.js
207
231
  dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
208
232
  dw/server/ui/assets/tcl-DISqw1ZD.js
209
233
  dw/server/ui/assets/ts.worker-D7T1-Ig5.js
210
- dw/server/ui/assets/tsMode-BtDRLqfW.js
234
+ dw/server/ui/assets/tsMode-BCUw0fMr.js
211
235
  dw/server/ui/assets/twig-De2hgUGE.js
212
- dw/server/ui/assets/typescript-DYpkXm7y.js
236
+ dw/server/ui/assets/typescript-3N0ou1YS.js
213
237
  dw/server/ui/assets/typespec-B8J7ngcE.js
214
238
  dw/server/ui/assets/vb-DV3o63ZY.js
215
239
  dw/server/ui/assets/wgsl-DpFanUEy.js
216
- dw/server/ui/assets/workers-B4R84wCs.js
217
- dw/server/ui/assets/xml-CQNiPADm.js
218
- dw/server/ui/assets/yaml-iWBPUkB-.js
240
+ dw/server/ui/assets/workers-C91O0to6.js
241
+ dw/server/ui/assets/xml-DmIqin7X.js
242
+ dw/server/ui/assets/yaml-BQg2lXI1.js
219
243
  dw/tasks/assess.py
244
+ dw/tasks/audio_dynamics.py
220
245
  dw/tasks/audio_transcription.py
221
246
  dw/tasks/audio_utils.py
222
247
  dw/tasks/background_remover.py
@@ -232,7 +257,10 @@ dw/tasks/grade.py
232
257
  dw/tasks/image_to_text.py
233
258
  dw/tasks/image_utils.py
234
259
  dw/tasks/interpolate_frames.py
260
+ dw/tasks/join_into_song.py
261
+ dw/tasks/joins.py
235
262
  dw/tasks/judge.py
263
+ dw/tasks/loop_bed.py
236
264
  dw/tasks/model_cache.py
237
265
  dw/tasks/pair_audio.py
238
266
  dw/tasks/qr_code.py
@@ -265,7 +293,14 @@ dw_mcp/media.py
265
293
  dw_mcp/models.py
266
294
  dw_mcp/prompts.py
267
295
  dw_mcp/server.py
296
+ dw_mcp/tools_authoring.py
297
+ dw_mcp/tools_catalog.py
298
+ dw_mcp/tools_jobs.py
299
+ dw_mcp/tools_media.py
268
300
  dw_mcp/workspaces.py
301
+ tests/test_admission.py
302
+ tests/test_arch_metrics.py
303
+ tests/test_arch_report.py
269
304
  tests/test_argument_updates.py
270
305
  tests/test_arguments.py
271
306
  tests/test_assemble_and_score_target_lufs.py
@@ -299,9 +334,11 @@ tests/test_dissolve_frame_errors.py
299
334
  tests/test_dissolve_videos.py
300
335
  tests/test_docs_links.py
301
336
  tests/test_download_watch.py
337
+ tests/test_dsp.py
302
338
  tests/test_elision.py
303
339
  tests/test_events.py
304
340
  tests/test_examples.py
341
+ tests/test_find_loop_bed.py
305
342
  tests/test_for_each.py
306
343
  tests/test_gather.py
307
344
  tests/test_grade.py
@@ -323,8 +360,10 @@ tests/test_job_progress.py
323
360
  tests/test_job_warnings.py
324
361
  tests/test_jobs_listing.py
325
362
  tests/test_jobs_reused.py
363
+ tests/test_join_into_song.py
326
364
  tests/test_judge.py
327
365
  tests/test_kernel_availability.py
366
+ tests/test_library_path.py
328
367
  tests/test_library_sources.py
329
368
  tests/test_list_images.py
330
369
  tests/test_locations.py
@@ -350,6 +389,7 @@ tests/test_mcp_workspaces.py
350
389
  tests/test_media_audio.py
351
390
  tests/test_media_frames.py
352
391
  tests/test_media_info.py
392
+ tests/test_media_layering.py
353
393
  tests/test_mix_audio.py
354
394
  tests/test_model_cache.py
355
395
  tests/test_modular_output_properties.py
@@ -369,24 +409,27 @@ tests/test_pipeline_caching.py
369
409
  tests/test_pipeline_components.py
370
410
  tests/test_plan.py
371
411
  tests/test_plugin_skills.py
412
+ tests/test_prepare_pipeline.py
413
+ tests/test_previous_result_walker_parity.py
372
414
  tests/test_previous_results.py
373
415
  tests/test_prompt_library.py
374
416
  tests/test_prompt_parser.py
375
417
  tests/test_prompt_references.py
376
418
  tests/test_prompt_weighting.py
377
419
  tests/test_prompts.py
420
+ tests/test_real_models.py
378
421
  tests/test_realize.py
379
422
  tests/test_recenter_crop.py
380
423
  tests/test_reference_limits.py
381
424
  tests/test_reference_names.py
382
- tests/test_repl_commands.py
383
- tests/test_repl_ergonomics.py
384
- tests/test_repl_worker.py
425
+ tests/test_reference_sets.py
426
+ tests/test_references.py
385
427
  tests/test_rerun_new_seed.py
386
428
  tests/test_resize_bucket.py
387
429
  tests/test_result.py
388
430
  tests/test_result_fps.py
389
431
  tests/test_result_output_naming.py
432
+ tests/test_rule_parity.py
390
433
  tests/test_runs.py
391
434
  tests/test_scalar_result_validation.py
392
435
  tests/test_scheduler_config.py
@@ -410,8 +453,10 @@ tests/test_server_exports.py
410
453
  tests/test_server_guides.py
411
454
  tests/test_server_info.py
412
455
  tests/test_server_jobs.py
456
+ tests/test_server_library_path.py
413
457
  tests/test_server_mcp.py
414
458
  tests/test_server_workspaces.py
459
+ tests/test_shaping_logs.py
415
460
  tests/test_shot_span_preflight.py
416
461
  tests/test_shots.py
417
462
  tests/test_slice_preflight.py
@@ -425,7 +470,6 @@ tests/test_task.py
425
470
  tests/test_task_discovery.py
426
471
  tests/test_task_domains.py
427
472
  tests/test_task_signature_errors.py
428
- tests/test_teacache.py
429
473
  tests/test_template_defaults.py
430
474
  tests/test_template_subfolders.py
431
475
  tests/test_tensor_image.py
@@ -435,6 +479,7 @@ tests/test_transcribe_audio.py
435
479
  tests/test_type_helpers.py
436
480
  tests/test_updater.py
437
481
  tests/test_validate_arguments.py
482
+ tests/test_validation.py
438
483
  tests/test_variable_constraints.py
439
484
  tests/test_variables.py
440
485
  tests/test_video_extensions.py
@@ -446,8 +491,10 @@ tests/test_vram_inheritance.py
446
491
  tests/test_worker.py
447
492
  tests/test_worker_execute.py
448
493
  tests/test_worker_job_peak_rss.py
494
+ tests/test_worker_manager.py
495
+ tests/test_worker_messages.py
449
496
  tests/test_workflow.py
450
- tests/test_workflow_sources.py
497
+ tests/test_workflow_snapshot.py
451
498
  tests/test_workflow_step_cache.py
452
499
  tests/test_workflow_trust.py
453
500
  tests/test_workspace.py
@@ -1,6 +1,5 @@
1
1
  [console_scripts]
2
2
  dw-mcp = dw_mcp.__main__:main
3
- dw-repl = dw.repl:main
4
3
  dw-run = dw.run:main
5
4
  dw-serve = dw.serve:main
6
5
  dw-test = dw.test:main
@@ -40,6 +40,8 @@ jsonschema>=4.26.0
40
40
  concurrent-log-handler>=0.9.29
41
41
  python-dotenv>=1.2.3
42
42
  packaging>=26.3
43
+ filelock>=3.12
44
+ httpx>=0.28.1
43
45
 
44
46
  [:sys_platform == "linux"]
45
47
  bitsandbytes>=0.50.2
@@ -55,10 +57,13 @@ httpx>=0.28.1
55
57
  ruff>=0.15.0
56
58
  build
57
59
  mcp>=2.1.1
60
+ pylint>=3.3
61
+ import-linter>=2.15
62
+ networkx>=3.0
63
+ pygount>=3.2
58
64
 
59
65
  [mcp]
60
66
  mcp>=2.1.1
61
- httpx>=0.28.1
62
67
 
63
68
  [server]
64
69
  fastapi>=0.141.1