diffusers-workflow 0.5.0__tar.gz → 0.7.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 (536) hide show
  1. {diffusers_workflow-0.5.0/diffusers_workflow.egg-info → diffusers_workflow-0.7.0}/PKG-INFO +23 -11
  2. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/README.md +16 -9
  3. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0/diffusers_workflow.egg-info}/PKG-INFO +23 -11
  4. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/diffusers_workflow.egg-info/SOURCES.txt +89 -39
  5. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/diffusers_workflow.egg-info/entry_points.txt +0 -1
  6. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/diffusers_workflow.egg-info/requires.txt +6 -1
  7. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/__init__.py +9 -0
  8. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/adapter_compatibility.py +9 -18
  9. diffusers_workflow-0.7.0/dw/argument_media.py +322 -0
  10. diffusers_workflow-0.7.0/dw/argument_warnings.py +216 -0
  11. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/arguments.py +145 -419
  12. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/assessment_rules.py +4 -3
  13. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/assets.py +38 -34
  14. diffusers_workflow-0.7.0/dw/audio_qc.py +426 -0
  15. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/content_types.py +68 -13
  16. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/dissolve_frame_errors.py +21 -25
  17. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/ACCELERATION.md +2 -60
  18. diffusers_workflow-0.7.0/dw/docs/ARCHITECTURE.md +150 -0
  19. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/DEPENDENCIES.md +1 -1
  20. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/MCP.md +12 -11
  21. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/RECIPES_24GB.md +4 -1
  22. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/RELEASING.md +206 -1
  23. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/SECURITY.md +7 -7
  24. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/SERVER.md +15 -7
  25. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/TASKS.md +240 -9
  26. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/TESTING.md +14 -5
  27. diffusers_workflow-0.7.0/dw/docs/WORKER_GUIDE.md +46 -0
  28. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/WORKFLOW_GUIDE.md +107 -24
  29. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/WORKSPACES.md +36 -21
  30. diffusers_workflow-0.7.0/dw/dsp.py +612 -0
  31. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/elision.py +28 -9
  32. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/events.py +4 -4
  33. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/for_each.py +24 -35
  34. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/host_memory_projection.py +1 -1
  35. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/introspection.py +27 -477
  36. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/kernel_availability.py +23 -10
  37. diffusers_workflow-0.7.0/dw/library.py +753 -0
  38. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/locations.py +22 -24
  39. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/log_setup.py +3 -2
  40. diffusers_workflow-0.7.0/dw/media.py +851 -0
  41. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/media_frames.py +67 -115
  42. diffusers_workflow-0.7.0/dw/media_types.py +192 -0
  43. diffusers_workflow-0.7.0/dw/output_extraction.py +249 -0
  44. diffusers_workflow-0.7.0/dw/pipeline_ownership.py +308 -0
  45. diffusers_workflow-0.7.0/dw/pipeline_processors/adapters.py +164 -0
  46. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/pipeline_processors/chain.py +10 -20
  47. diffusers_workflow-0.7.0/dw/pipeline_processors/components.py +828 -0
  48. diffusers_workflow-0.7.0/dw/pipeline_processors/pipeline.py +853 -0
  49. diffusers_workflow-0.7.0/dw/pipeline_processors/placement.py +376 -0
  50. diffusers_workflow-0.7.0/dw/pipeline_processors/progress.py +236 -0
  51. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/pipeline_processors/remote.py +1 -1
  52. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/plan.py +213 -211
  53. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/previous_results.py +30 -42
  54. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/probe_paths.py +11 -6
  55. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/prompts.py +34 -39
  56. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/realize.py +46 -34
  57. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/reference_limits.py +5 -10
  58. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/reference_names.py +27 -23
  59. diffusers_workflow-0.7.0/dw/references.py +147 -0
  60. diffusers_workflow-0.7.0/dw/result.py +848 -0
  61. diffusers_workflow-0.7.0/dw/run.py +268 -0
  62. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/runs.py +194 -61
  63. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/scalar_result_validation.py +2 -5
  64. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/schema.py +1 -1
  65. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/security.py +7 -274
  66. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/serve.py +102 -53
  67. diffusers_workflow-0.7.0/dw/server/admission.py +426 -0
  68. diffusers_workflow-0.7.0/dw/server/app.py +238 -0
  69. diffusers_workflow-0.7.0/dw/server/catalog.py +435 -0
  70. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/catalog_shape.py +9 -9
  71. diffusers_workflow-0.7.0/dw/server/deps.py +189 -0
  72. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/enhancers.py +3 -1
  73. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/exports.py +14 -23
  74. diffusers_workflow-0.7.0/dw/server/http_security.py +187 -0
  75. diffusers_workflow-0.7.0/dw/server/job_history.py +443 -0
  76. diffusers_workflow-0.7.0/dw/server/job_record.py +281 -0
  77. diffusers_workflow-0.7.0/dw/server/jobs.py +898 -0
  78. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/mcp_mount.py +2 -5
  79. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/netinfo.py +9 -1
  80. diffusers_workflow-0.7.0/dw/server/outputs.py +400 -0
  81. diffusers_workflow-0.7.0/dw/server/routes/__init__.py +46 -0
  82. diffusers_workflow-0.7.0/dw/server/routes/assets.py +443 -0
  83. diffusers_workflow-0.7.0/dw/server/routes/files.py +159 -0
  84. diffusers_workflow-0.7.0/dw/server/routes/gallery.py +385 -0
  85. diffusers_workflow-0.7.0/dw/server/routes/jobs.py +764 -0
  86. diffusers_workflow-0.7.0/dw/server/routes/library.py +708 -0
  87. diffusers_workflow-0.7.0/dw/server/routes/media.py +566 -0
  88. diffusers_workflow-0.7.0/dw/server/routes/system.py +416 -0
  89. diffusers_workflow-0.5.0/dw/server/ui/assets/cssMode-DRY1oIAQ.js → diffusers_workflow-0.7.0/dw/server/ui/assets/cssMode-DQI1FUIr.js +1 -1
  90. diffusers_workflow-0.5.0/dw/server/ui/assets/editor.api-C_Q9knYh.js → diffusers_workflow-0.7.0/dw/server/ui/assets/editor.api-a3j9A86u.js +1 -1
  91. diffusers_workflow-0.5.0/dw/server/ui/assets/freemarker2-CoeF3Y-p.js → diffusers_workflow-0.7.0/dw/server/ui/assets/freemarker2-BcdiHyGC.js +1 -1
  92. diffusers_workflow-0.5.0/dw/server/ui/assets/handlebars-ClJeebFA.js → diffusers_workflow-0.7.0/dw/server/ui/assets/handlebars-DCj-aPE8.js +1 -1
  93. diffusers_workflow-0.5.0/dw/server/ui/assets/html-Bp7ECOGB.js → diffusers_workflow-0.7.0/dw/server/ui/assets/html-D8xomw9g.js +1 -1
  94. diffusers_workflow-0.5.0/dw/server/ui/assets/htmlMode-DWzbYXCs.js → diffusers_workflow-0.7.0/dw/server/ui/assets/htmlMode-DK_n-eew.js +1 -1
  95. diffusers_workflow-0.7.0/dw/server/ui/assets/index-CNiY-pOw.js +44 -0
  96. diffusers_workflow-0.5.0/dw/server/ui/assets/javascript-B6Cbtyg8.js → diffusers_workflow-0.7.0/dw/server/ui/assets/javascript-SmmG4uTF.js +1 -1
  97. diffusers_workflow-0.5.0/dw/server/ui/assets/jsonMode-dg5n9059.js → diffusers_workflow-0.7.0/dw/server/ui/assets/jsonMode-BRyslvRu.js +1 -1
  98. diffusers_workflow-0.5.0/dw/server/ui/assets/liquid-CAyPEpMs.js → diffusers_workflow-0.7.0/dw/server/ui/assets/liquid-CC4C0BTL.js +1 -1
  99. diffusers_workflow-0.5.0/dw/server/ui/assets/lspLanguageFeatures-BGj-zQOH.js → diffusers_workflow-0.7.0/dw/server/ui/assets/lspLanguageFeatures-Cmg2_33_.js +1 -1
  100. diffusers_workflow-0.5.0/dw/server/ui/assets/mdx-B5EuIkzP.js → diffusers_workflow-0.7.0/dw/server/ui/assets/mdx-DTAejllH.js +1 -1
  101. diffusers_workflow-0.5.0/dw/server/ui/assets/monaco-ULLHC90E.js → diffusers_workflow-0.7.0/dw/server/ui/assets/monaco-C_Um4bRZ.js +4 -4
  102. diffusers_workflow-0.5.0/dw/server/ui/assets/python-C5D4i8ni.js → diffusers_workflow-0.7.0/dw/server/ui/assets/python-DKASw3vF.js +1 -1
  103. diffusers_workflow-0.5.0/dw/server/ui/assets/razor-DL9EVLH-.js → diffusers_workflow-0.7.0/dw/server/ui/assets/razor-CkEOBTMa.js +1 -1
  104. diffusers_workflow-0.5.0/dw/server/ui/assets/tsMode-BtDRLqfW.js → diffusers_workflow-0.7.0/dw/server/ui/assets/tsMode-CmkUIEUu.js +1 -1
  105. diffusers_workflow-0.5.0/dw/server/ui/assets/typescript-DYpkXm7y.js → diffusers_workflow-0.7.0/dw/server/ui/assets/typescript-BXTFUpwg.js +1 -1
  106. diffusers_workflow-0.5.0/dw/server/ui/assets/workers-B4R84wCs.js → diffusers_workflow-0.7.0/dw/server/ui/assets/workers-Cpj1l6gK.js +1 -1
  107. diffusers_workflow-0.5.0/dw/server/ui/assets/xml-CQNiPADm.js → diffusers_workflow-0.7.0/dw/server/ui/assets/xml-D1BkO5yz.js +1 -1
  108. diffusers_workflow-0.5.0/dw/server/ui/assets/yaml-iWBPUkB-.js → diffusers_workflow-0.7.0/dw/server/ui/assets/yaml-CDFThBDz.js +1 -1
  109. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/index.html +1 -1
  110. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/settings.py +14 -0
  111. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/shot_span_preflight.py +16 -14
  112. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/shots.py +39 -14
  113. diffusers_workflow-0.7.0/dw/slice_preflight.py +173 -0
  114. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/step.py +24 -1
  115. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/step_cache.py +188 -19
  116. diffusers_workflow-0.7.0/dw/step_value_checks.py +309 -0
  117. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/subfolders.py +12 -11
  118. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/task_domains.py +179 -7
  119. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/assess.py +19 -75
  120. diffusers_workflow-0.7.0/dw/tasks/audio_dynamics.py +423 -0
  121. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/audio_transcription.py +12 -7
  122. diffusers_workflow-0.7.0/dw/tasks/audio_utils.py +883 -0
  123. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/compose_text.py +1 -1
  124. diffusers_workflow-0.7.0/dw/tasks/concat_videos.py +383 -0
  125. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/dissolve_videos.py +39 -84
  126. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/gather.py +1 -1
  127. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/image_utils.py +1 -1
  128. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/interpolate_frames.py +1 -1
  129. diffusers_workflow-0.7.0/dw/tasks/join_into_song.py +461 -0
  130. diffusers_workflow-0.7.0/dw/tasks/joins.py +584 -0
  131. diffusers_workflow-0.7.0/dw/tasks/loop_bed.py +850 -0
  132. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/pair_audio.py +71 -8
  133. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/select.py +14 -36
  134. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/speech_generation.py +4 -2
  135. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/stabilize.py +1 -1
  136. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/task.py +34 -35
  137. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/video_utils.py +29 -192
  138. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/voice_attribution.py +113 -83
  139. diffusers_workflow-0.7.0/dw/trust.py +277 -0
  140. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/type_helpers.py +6 -2
  141. diffusers_workflow-0.7.0/dw/type_references.py +267 -0
  142. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/validate.py +2 -1
  143. diffusers_workflow-0.7.0/dw/validation.py +836 -0
  144. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/variable_constraints.py +71 -41
  145. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/variables.py +33 -17
  146. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/video_extensions.py +9 -18
  147. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/video_size_errors.py +37 -30
  148. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/vram_estimate.py +97 -9
  149. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/vram_inheritance.py +1 -37
  150. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/worker.py +247 -221
  151. diffusers_workflow-0.5.0/dw/repl_worker.py → diffusers_workflow-0.7.0/dw/worker_manager.py +40 -4
  152. diffusers_workflow-0.7.0/dw/worker_protocol.py +235 -0
  153. diffusers_workflow-0.7.0/dw/workflow.py +840 -0
  154. diffusers_workflow-0.7.0/dw/workflow_run.py +971 -0
  155. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/workflow_schema.json +3 -26
  156. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/workspace.py +11 -68
  157. diffusers_workflow-0.7.0/dw/writers.py +376 -0
  158. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/__init__.py +4 -0
  159. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/assets.py +8 -8
  160. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/catalog.py +8 -6
  161. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/client.py +8 -2
  162. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/media.py +15 -5
  163. diffusers_workflow-0.7.0/dw_mcp/server.py +204 -0
  164. diffusers_workflow-0.7.0/dw_mcp/tools_authoring.py +233 -0
  165. diffusers_workflow-0.7.0/dw_mcp/tools_catalog.py +432 -0
  166. diffusers_workflow-0.7.0/dw_mcp/tools_jobs.py +231 -0
  167. diffusers_workflow-0.7.0/dw_mcp/tools_media.py +382 -0
  168. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/pyproject.toml +16 -4
  169. diffusers_workflow-0.7.0/tests/test_admission.py +651 -0
  170. diffusers_workflow-0.7.0/tests/test_arch_metrics.py +355 -0
  171. diffusers_workflow-0.7.0/tests/test_arch_report.py +95 -0
  172. diffusers_workflow-0.7.0/tests/test_architecture_map.py +172 -0
  173. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_arguments.py +19 -12
  174. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_assemble_and_score_target_lufs.py +11 -2
  175. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_assess.py +3 -3
  176. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_assessment_rules.py +8 -6
  177. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_assets.py +28 -1
  178. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_attention_slicing.py +1 -1
  179. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_audio_utils.py +164 -96
  180. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_cache_blocks.py +5 -5
  181. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_catalog_structure.py +95 -6
  182. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_chain.py +1 -1
  183. diffusers_workflow-0.7.0/tests/test_cli.py +495 -0
  184. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_component_name_errors.py +2 -1
  185. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_component_pruning.py +1 -1
  186. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_component_type_errors.py +2 -2
  187. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_concat_videos.py +234 -8
  188. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_configuration_schema.py +4 -0
  189. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_device_portability.py +4 -3
  190. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_dissolve_frame_errors.py +104 -13
  191. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_dissolve_videos.py +61 -3
  192. diffusers_workflow-0.7.0/tests/test_dsp.py +60 -0
  193. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_elision.py +52 -1
  194. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_events.py +19 -18
  195. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_examples.py +3 -4
  196. diffusers_workflow-0.7.0/tests/test_find_loop_bed.py +920 -0
  197. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_for_each.py +2 -2
  198. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_gather.py +2 -2
  199. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_grade.py +1 -1
  200. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_h3_vram_ceiling.py +3 -3
  201. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_host_memory.py +0 -22
  202. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_interpolate_frames.py +1 -1
  203. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_introspection.py +16 -1
  204. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_job_history_wal.py +1 -1
  205. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_job_progress.py +1 -1
  206. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_job_warnings.py +1 -1
  207. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_jobs_listing.py +1 -1
  208. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_jobs_reused.py +2 -1
  209. diffusers_workflow-0.7.0/tests/test_join_into_song.py +500 -0
  210. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_kernel_availability.py +33 -0
  211. diffusers_workflow-0.7.0/tests/test_library_path.py +749 -0
  212. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_library_sources.py +80 -24
  213. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_list_images.py +1 -1
  214. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_locations.py +4 -4
  215. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_lora_alpha.py +1 -1
  216. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_lora_disable.py +8 -3
  217. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_ltx2_ic_loras.py +70 -7
  218. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_ltx_prompt_library.py +2 -1
  219. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_assets.py +18 -20
  220. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_authoring.py +2 -2
  221. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_catalog.py +6 -5
  222. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_media.py +15 -9
  223. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_prompts.py +1 -1
  224. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_workspaces.py +1 -1
  225. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_media_audio.py +4 -4
  226. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_media_frames.py +12 -11
  227. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_media_info.py +154 -1
  228. diffusers_workflow-0.7.0/tests/test_media_layering.py +152 -0
  229. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mix_audio.py +19 -1
  230. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_modular_output_properties.py +3 -2
  231. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_modular_pipeline.py +4 -4
  232. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_modular_progress.py +3 -1
  233. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mps_rope_precision.py +1 -1
  234. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_null_media.py +1 -1
  235. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_observed_cost.py +2 -2
  236. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_offload_placement.py +3 -3
  237. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_output_references.py +8 -0
  238. diffusers_workflow-0.7.0/tests/test_pair_audio.py +300 -0
  239. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_pair_audio_fit.py +1 -1
  240. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_phase_events.py +11 -11
  241. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_pipeline_caching.py +330 -78
  242. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_pipeline_components.py +194 -11
  243. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_plan.py +2 -1
  244. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_plugin_skills.py +52 -1
  245. diffusers_workflow-0.7.0/tests/test_prepare_pipeline.py +150 -0
  246. diffusers_workflow-0.7.0/tests/test_previous_result_walker_parity.py +107 -0
  247. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_previous_results.py +1 -1
  248. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_prompt_references.py +4 -4
  249. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_prompts.py +18 -2
  250. diffusers_workflow-0.7.0/tests/test_real_models.py +178 -0
  251. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_realize.py +290 -19
  252. diffusers_workflow-0.7.0/tests/test_reference_skip_sets.py +108 -0
  253. diffusers_workflow-0.7.0/tests/test_references.py +120 -0
  254. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_rerun_new_seed.py +20 -0
  255. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_result.py +151 -51
  256. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_result_fps.py +1 -1
  257. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_result_output_naming.py +1 -1
  258. diffusers_workflow-0.7.0/tests/test_rule_parity.py +313 -0
  259. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_runs.py +189 -10
  260. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_scheduler_config.py +1 -1
  261. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_schema.py +4 -3
  262. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security_input_caps.py +15 -12
  263. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security_ssrf.py +11 -10
  264. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security_symlinks.py +2 -17
  265. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security_trust_gate.py +45 -29
  266. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security_web_headers.py +1 -1
  267. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_select_validation.py +1 -1
  268. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server.py +509 -89
  269. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_exports.py +2 -1
  270. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_guides.py +2 -2
  271. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_info.py +2 -2
  272. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_jobs.py +226 -39
  273. diffusers_workflow-0.7.0/tests/test_server_library_path.py +551 -0
  274. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_workspaces.py +83 -11
  275. diffusers_workflow-0.7.0/tests/test_shaping_logs.py +57 -0
  276. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_shot_span_preflight.py +64 -12
  277. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_shots.py +19 -8
  278. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_slice_preflight.py +45 -1
  279. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_stabilize.py +2 -2
  280. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_step.py +46 -0
  281. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_step_cache.py +306 -0
  282. diffusers_workflow-0.7.0/tests/test_sub_workflow_resolver.py +243 -0
  283. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_task.py +4 -4
  284. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_task_discovery.py +1 -1
  285. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_task_domains.py +4 -3
  286. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_task_signature_errors.py +15 -6
  287. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_template_subfolders.py +4 -23
  288. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_transcribe_audio.py +42 -1
  289. diffusers_workflow-0.7.0/tests/test_validation.py +430 -0
  290. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_variable_constraints.py +57 -2
  291. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_variables.py +1 -1
  292. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_video_size_errors.py +85 -15
  293. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_video_utils.py +14 -14
  294. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_voice_attribution.py +2 -2
  295. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_vram_estimate.py +87 -11
  296. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_vram_inheritance.py +21 -10
  297. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_worker.py +79 -40
  298. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_worker_execute.py +179 -90
  299. diffusers_workflow-0.7.0/tests/test_worker_manager.py +210 -0
  300. diffusers_workflow-0.7.0/tests/test_worker_messages.py +246 -0
  301. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_workflow.py +186 -16
  302. diffusers_workflow-0.7.0/tests/test_workflow_snapshot.py +98 -0
  303. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_workflow_step_cache.py +530 -57
  304. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_workflow_trust.py +10 -9
  305. diffusers_workflow-0.5.0/dw/docs/REPL_COMMANDS.md +0 -121
  306. diffusers_workflow-0.5.0/dw/docs/REPL_WORKER_GUIDE.md +0 -51
  307. diffusers_workflow-0.5.0/dw/loudness.py +0 -82
  308. diffusers_workflow-0.5.0/dw/media_audio.py +0 -217
  309. diffusers_workflow-0.5.0/dw/media_info.py +0 -297
  310. diffusers_workflow-0.5.0/dw/null_media.py +0 -99
  311. diffusers_workflow-0.5.0/dw/pipeline_processors/pipeline.py +0 -2360
  312. diffusers_workflow-0.5.0/dw/repl.py +0 -338
  313. diffusers_workflow-0.5.0/dw/repl_commands.py +0 -836
  314. diffusers_workflow-0.5.0/dw/result.py +0 -1774
  315. diffusers_workflow-0.5.0/dw/result_fps.py +0 -82
  316. diffusers_workflow-0.5.0/dw/run.py +0 -162
  317. diffusers_workflow-0.5.0/dw/select_validation.py +0 -115
  318. diffusers_workflow-0.5.0/dw/server/app.py +0 -4653
  319. diffusers_workflow-0.5.0/dw/server/jobs.py +0 -1569
  320. diffusers_workflow-0.5.0/dw/server/ui/assets/index-Bv4OgazC.js +0 -43
  321. diffusers_workflow-0.5.0/dw/slice_preflight.py +0 -148
  322. diffusers_workflow-0.5.0/dw/tasks/audio_utils.py +0 -2152
  323. diffusers_workflow-0.5.0/dw/tasks/concat_videos.py +0 -318
  324. diffusers_workflow-0.5.0/dw/teacache.py +0 -381
  325. diffusers_workflow-0.5.0/dw/teacache_models.json +0 -99
  326. diffusers_workflow-0.5.0/dw/workflow.py +0 -2109
  327. diffusers_workflow-0.5.0/dw/workflow_sources.py +0 -383
  328. diffusers_workflow-0.5.0/dw_mcp/server.py +0 -1344
  329. diffusers_workflow-0.5.0/tests/test_cli.py +0 -219
  330. diffusers_workflow-0.5.0/tests/test_pair_audio.py +0 -117
  331. diffusers_workflow-0.5.0/tests/test_repl_commands.py +0 -56
  332. diffusers_workflow-0.5.0/tests/test_repl_ergonomics.py +0 -113
  333. diffusers_workflow-0.5.0/tests/test_repl_worker.py +0 -112
  334. diffusers_workflow-0.5.0/tests/test_teacache.py +0 -300
  335. diffusers_workflow-0.5.0/tests/test_workflow_sources.py +0 -241
  336. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/LICENSE +0 -0
  337. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/MANIFEST.in +0 -0
  338. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/diffusers_workflow.egg-info/dependency_links.txt +0 -0
  339. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/diffusers_workflow.egg-info/top_level.txt +0 -0
  340. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/cache_blocks.json +0 -0
  341. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/cache_blocks.py +0 -0
  342. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/community_pipelines/pipeline_flux_rf_inversion.py +0 -0
  343. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/AGENT_LOOP.md +0 -0
  344. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/IP_ADAPTER.md +0 -0
  345. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/LORAS.md +0 -0
  346. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/PROMPT_WEIGHTING.md +0 -0
  347. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/QUANTIZATION.md +0 -0
  348. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/REMOTE.md +0 -0
  349. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/docs/SECURITY_QUICKREF.md +0 -0
  350. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/download_watch.py +0 -0
  351. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/host_memory.py +0 -0
  352. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/hub_cache.py +0 -0
  353. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/pipeline_processors/config_objects.py +0 -0
  354. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/prompt_schema.json +0 -0
  355. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/prompt_weighting.py +0 -0
  356. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/__init__.py +0 -0
  357. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/assess.py +0 -0
  358. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/guides.py +0 -0
  359. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/observed_cost.py +0 -0
  360. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/sysinfo.py +0 -0
  361. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/abap-08VXUWAP.js +0 -0
  362. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/apex-BWPQTe0t.js +0 -0
  363. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/azcli-Bc_sGQ0U.js +0 -0
  364. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/bat-i0X4ZdIN.js +0 -0
  365. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/bicep-B5-_aFwp.js +0 -0
  366. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/cameligo-DMUM7wLl.js +0 -0
  367. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/clojure-Cm7r79vr.js +0 -0
  368. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/codicon-Brq4_Ui5.ttf +0 -0
  369. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/coffee-Ba7i2nA0.js +0 -0
  370. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/cpp-C7h46wYY.js +0 -0
  371. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/csharp-BKxtCVv1.js +0 -0
  372. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/csp-bTuwJoIa.js +0 -0
  373. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/css-DIMkf-bt.js +0 -0
  374. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/css.worker-B3ciXF_0.js +0 -0
  375. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/cypher-CVaqCwHa.js +0 -0
  376. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/dart-onAF5SnQ.js +0 -0
  377. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/dockerfile-DZFCIeNp.js +0 -0
  378. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/ecl-D05T4iGw.js +0 -0
  379. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/editor-jjEx9u7D.css +0 -0
  380. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/editor.worker-q-txB4vs.js +0 -0
  381. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/elixir-6RTg0lbw.js +0 -0
  382. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/flow9-C5_-GSwl.js +0 -0
  383. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/fsharp-C8Ef5oNN.js +0 -0
  384. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/go-C-y9NEjX.js +0 -0
  385. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/graphql-fmXr3nnJ.js +0 -0
  386. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/hcl-CpzslTdj.js +0 -0
  387. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/html.worker-C93Ht9o9.js +0 -0
  388. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/index-3Vw6WAPW.css +0 -0
  389. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/ini-sBoK_t0W.js +0 -0
  390. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/java-BEtHBSE6.js +0 -0
  391. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/json.worker-B2V3pomh.js +0 -0
  392. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/julia-Bri6UV-V.js +0 -0
  393. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/kotlin-BOotOW0E.js +0 -0
  394. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/less-B9JPFI3C.js +0 -0
  395. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/lexon-CfSJPG6W.js +0 -0
  396. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/lua-CsQS60Ue.js +0 -0
  397. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/m3-D-oSqn_W.js +0 -0
  398. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/markdown-Cimd5fb3.js +0 -0
  399. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/mips-CIPQ_RoX.js +0 -0
  400. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/monaco--ixms01u.css +0 -0
  401. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/msdax-DauUninz.js +0 -0
  402. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/mysql-SOo6toE5.js +0 -0
  403. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/objective-c-FvmIjYaQ.js +0 -0
  404. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/pascal-DrH0SRf2.js +0 -0
  405. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/pascaligo-D-ptJ9y-.js +0 -0
  406. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/perl-oz_6vUea.js +0 -0
  407. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/pgsql-DTj74zXo.js +0 -0
  408. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/php-nr791fC2.js +0 -0
  409. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/pla-CopQ2nXW.js +0 -0
  410. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/postiats-43DmfD33.js +0 -0
  411. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/powerquery-D3hlyOfw.js +0 -0
  412. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/powershell-DmHpPYUd.js +0 -0
  413. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/protobuf-C531GsRP.js +0 -0
  414. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/pug-Z5eAx3Zn.js +0 -0
  415. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/qsharp-DkqhCAOL.js +0 -0
  416. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/r-BwWrilGY.js +0 -0
  417. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/redis-ClamHrr6.js +0 -0
  418. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/redshift-DT7zqm-g.js +0 -0
  419. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/restructuredtext-BYgofb2h.js +0 -0
  420. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/ruby-DezsRK8O.js +0 -0
  421. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/rust-DdL9SqIa.js +0 -0
  422. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/sb-CcwsVR0C.js +0 -0
  423. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/scala-DHpiXF5c.js +0 -0
  424. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/scheme-BeGwcela.js +0 -0
  425. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/scss-gp-XZpBa.js +0 -0
  426. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/shell-CC2rA5mh.js +0 -0
  427. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/solidity-BEEn4gHE.js +0 -0
  428. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/sophia-CRfGWb83.js +0 -0
  429. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/sparql-D_Lu-MrJ.js +0 -0
  430. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/sql-NEE52Syq.js +0 -0
  431. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/st-DbInun42.js +0 -0
  432. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/swift-Bxkupp3x.js +0 -0
  433. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/systemverilog-Bz4Y3fRF.js +0 -0
  434. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/tcl-DISqw1ZD.js +0 -0
  435. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/ts.worker-D7T1-Ig5.js +0 -0
  436. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/twig-De2hgUGE.js +0 -0
  437. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/typespec-B8J7ngcE.js +0 -0
  438. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/vb-DV3o63ZY.js +0 -0
  439. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/ui/assets/wgsl-DpFanUEy.js +0 -0
  440. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/server/updater.py +0 -0
  441. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/background_remover.py +0 -0
  442. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/borders.py +0 -0
  443. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/depth_estimator.py +0 -0
  444. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/diffusion_upscale.py +0 -0
  445. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/format_messages.py +0 -0
  446. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/grade.py +0 -0
  447. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/image_to_text.py +0 -0
  448. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/judge.py +0 -0
  449. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/model_cache.py +0 -0
  450. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/qr_code.py +0 -0
  451. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/restore_faces.py +0 -0
  452. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/rife_model.py +0 -0
  453. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/segment.py +0 -0
  454. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/tensor_image.py +0 -0
  455. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/text_generation.py +0 -0
  456. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/text_sections.py +0 -0
  457. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/upscale.py +0 -0
  458. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/tasks/zoe_depth.py +0 -0
  459. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/test.py +0 -0
  460. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/workflows/h3_context_ir.json +0 -0
  461. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw/workflows/test.json +0 -0
  462. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/__main__.py +0 -0
  463. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/authoring.py +0 -0
  464. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/diagnose.py +0 -0
  465. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/exports.py +0 -0
  466. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/guides.py +0 -0
  467. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/models.py +0 -0
  468. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/prompts.py +0 -0
  469. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/dw_mcp/workspaces.py +0 -0
  470. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/setup.cfg +0 -0
  471. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_argument_updates.py +0 -0
  472. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_best_of_n_template.py +0 -0
  473. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_borders.py +0 -0
  474. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_catalog_shape.py +0 -0
  475. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_compose_text.py +0 -0
  476. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_config_objects.py +0 -0
  477. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_content_types.py +0 -0
  478. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_depth_estimator.py +0 -0
  479. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_device.py +0 -0
  480. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_device_helpers.py +0 -0
  481. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_dialogue_short_voices.py +0 -0
  482. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_diffusion_upscale.py +0 -0
  483. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_docs_links.py +0 -0
  484. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_download_watch.py +0 -0
  485. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_h3_adapters.py +0 -0
  486. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_h3_context_ir.py +0 -0
  487. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_h3_schedule.py +0 -0
  488. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_hf_placement.py +0 -0
  489. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_host_memory_projection.py +0 -0
  490. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_hub_cache.py +0 -0
  491. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_image_to_text.py +0 -0
  492. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_image_utils.py +0 -0
  493. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_integration.py +0 -0
  494. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_judge.py +0 -0
  495. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_ltx2_diffusion_decode.py +0 -0
  496. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_ltx2_extend_clip.py +0 -0
  497. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_client.py +0 -0
  498. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_diagnose.py +0 -0
  499. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_exports.py +0 -0
  500. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_guides.py +0 -0
  501. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_main.py +0 -0
  502. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_models.py +0 -0
  503. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mcp_server.py +0 -0
  504. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_model_cache.py +0 -0
  505. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_mps_fallback_warning.py +0 -0
  506. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_parallel_loading_default.py +0 -0
  507. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_prompt_library.py +0 -0
  508. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_prompt_parser.py +0 -0
  509. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_prompt_weighting.py +0 -0
  510. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_recenter_crop.py +0 -0
  511. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_reference_limits.py +0 -0
  512. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_reference_names.py +0 -0
  513. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_resize_bucket.py +0 -0
  514. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_scalar_result_validation.py +0 -0
  515. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security.py +0 -0
  516. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security_auth.py +0 -0
  517. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_security_decoder_bombs.py +0 -0
  518. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_segment.py +0 -0
  519. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_select.py +0 -0
  520. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_serve_main.py +0 -0
  521. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_assess.py +0 -0
  522. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_downloads.py +0 -0
  523. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_server_mcp.py +0 -0
  524. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_speech_generation.py +0 -0
  525. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_strip_exif_and_watermark.py +0 -0
  526. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_subfolders.py +0 -0
  527. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_template_defaults.py +0 -0
  528. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_tensor_image.py +0 -0
  529. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_text_generation.py +0 -0
  530. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_text_sections.py +0 -0
  531. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_type_helpers.py +0 -0
  532. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_updater.py +0 -0
  533. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_validate_arguments.py +0 -0
  534. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_video_extensions.py +0 -0
  535. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.0}/tests/test_worker_job_peak_rss.py +0 -0
  536. {diffusers_workflow-0.5.0 → diffusers_workflow-0.7.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.7.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.7.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,13 +77,17 @@ 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
+ dw/docs/ARCHITECTURE.md
84
91
  dw/docs/DEPENDENCIES.md
85
92
  dw/docs/IP_ADAPTER.md
86
93
  dw/docs/LORAS.md
@@ -90,32 +97,50 @@ dw/docs/QUANTIZATION.md
90
97
  dw/docs/RECIPES_24GB.md
91
98
  dw/docs/RELEASING.md
92
99
  dw/docs/REMOTE.md
93
- dw/docs/REPL_COMMANDS.md
94
- dw/docs/REPL_WORKER_GUIDE.md
95
100
  dw/docs/SECURITY.md
96
101
  dw/docs/SECURITY_QUICKREF.md
97
102
  dw/docs/SERVER.md
98
103
  dw/docs/TASKS.md
99
104
  dw/docs/TESTING.md
105
+ dw/docs/WORKER_GUIDE.md
100
106
  dw/docs/WORKFLOW_GUIDE.md
101
107
  dw/docs/WORKSPACES.md
108
+ dw/pipeline_processors/adapters.py
102
109
  dw/pipeline_processors/chain.py
110
+ dw/pipeline_processors/components.py
103
111
  dw/pipeline_processors/config_objects.py
104
112
  dw/pipeline_processors/pipeline.py
113
+ dw/pipeline_processors/placement.py
114
+ dw/pipeline_processors/progress.py
105
115
  dw/pipeline_processors/remote.py
106
116
  dw/server/__init__.py
117
+ dw/server/admission.py
107
118
  dw/server/app.py
108
119
  dw/server/assess.py
120
+ dw/server/catalog.py
109
121
  dw/server/catalog_shape.py
122
+ dw/server/deps.py
110
123
  dw/server/enhancers.py
111
124
  dw/server/exports.py
112
125
  dw/server/guides.py
126
+ dw/server/http_security.py
127
+ dw/server/job_history.py
128
+ dw/server/job_record.py
113
129
  dw/server/jobs.py
114
130
  dw/server/mcp_mount.py
115
131
  dw/server/netinfo.py
116
132
  dw/server/observed_cost.py
133
+ dw/server/outputs.py
117
134
  dw/server/sysinfo.py
118
135
  dw/server/updater.py
136
+ dw/server/routes/__init__.py
137
+ dw/server/routes/assets.py
138
+ dw/server/routes/files.py
139
+ dw/server/routes/gallery.py
140
+ dw/server/routes/jobs.py
141
+ dw/server/routes/library.py
142
+ dw/server/routes/media.py
143
+ dw/server/routes/system.py
119
144
  dw/server/ui/index.html
120
145
  dw/server/ui/assets/abap-08VXUWAP.js
121
146
  dw/server/ui/assets/apex-BWPQTe0t.js
@@ -131,45 +156,45 @@ dw/server/ui/assets/csharp-BKxtCVv1.js
131
156
  dw/server/ui/assets/csp-bTuwJoIa.js
132
157
  dw/server/ui/assets/css-DIMkf-bt.js
133
158
  dw/server/ui/assets/css.worker-B3ciXF_0.js
134
- dw/server/ui/assets/cssMode-DRY1oIAQ.js
159
+ dw/server/ui/assets/cssMode-DQI1FUIr.js
135
160
  dw/server/ui/assets/cypher-CVaqCwHa.js
136
161
  dw/server/ui/assets/dart-onAF5SnQ.js
137
162
  dw/server/ui/assets/dockerfile-DZFCIeNp.js
138
163
  dw/server/ui/assets/ecl-D05T4iGw.js
139
164
  dw/server/ui/assets/editor-jjEx9u7D.css
140
- dw/server/ui/assets/editor.api-C_Q9knYh.js
165
+ dw/server/ui/assets/editor.api-a3j9A86u.js
141
166
  dw/server/ui/assets/editor.worker-q-txB4vs.js
142
167
  dw/server/ui/assets/elixir-6RTg0lbw.js
143
168
  dw/server/ui/assets/flow9-C5_-GSwl.js
144
- dw/server/ui/assets/freemarker2-CoeF3Y-p.js
169
+ dw/server/ui/assets/freemarker2-BcdiHyGC.js
145
170
  dw/server/ui/assets/fsharp-C8Ef5oNN.js
146
171
  dw/server/ui/assets/go-C-y9NEjX.js
147
172
  dw/server/ui/assets/graphql-fmXr3nnJ.js
148
- dw/server/ui/assets/handlebars-ClJeebFA.js
173
+ dw/server/ui/assets/handlebars-DCj-aPE8.js
149
174
  dw/server/ui/assets/hcl-CpzslTdj.js
150
- dw/server/ui/assets/html-Bp7ECOGB.js
175
+ dw/server/ui/assets/html-D8xomw9g.js
151
176
  dw/server/ui/assets/html.worker-C93Ht9o9.js
152
- dw/server/ui/assets/htmlMode-DWzbYXCs.js
177
+ dw/server/ui/assets/htmlMode-DK_n-eew.js
153
178
  dw/server/ui/assets/index-3Vw6WAPW.css
154
- dw/server/ui/assets/index-Bv4OgazC.js
179
+ dw/server/ui/assets/index-CNiY-pOw.js
155
180
  dw/server/ui/assets/ini-sBoK_t0W.js
156
181
  dw/server/ui/assets/java-BEtHBSE6.js
157
- dw/server/ui/assets/javascript-B6Cbtyg8.js
182
+ dw/server/ui/assets/javascript-SmmG4uTF.js
158
183
  dw/server/ui/assets/json.worker-B2V3pomh.js
159
- dw/server/ui/assets/jsonMode-dg5n9059.js
184
+ dw/server/ui/assets/jsonMode-BRyslvRu.js
160
185
  dw/server/ui/assets/julia-Bri6UV-V.js
161
186
  dw/server/ui/assets/kotlin-BOotOW0E.js
162
187
  dw/server/ui/assets/less-B9JPFI3C.js
163
188
  dw/server/ui/assets/lexon-CfSJPG6W.js
164
- dw/server/ui/assets/liquid-CAyPEpMs.js
165
- dw/server/ui/assets/lspLanguageFeatures-BGj-zQOH.js
189
+ dw/server/ui/assets/liquid-CC4C0BTL.js
190
+ dw/server/ui/assets/lspLanguageFeatures-Cmg2_33_.js
166
191
  dw/server/ui/assets/lua-CsQS60Ue.js
167
192
  dw/server/ui/assets/m3-D-oSqn_W.js
168
193
  dw/server/ui/assets/markdown-Cimd5fb3.js
169
- dw/server/ui/assets/mdx-B5EuIkzP.js
194
+ dw/server/ui/assets/mdx-DTAejllH.js
170
195
  dw/server/ui/assets/mips-CIPQ_RoX.js
171
196
  dw/server/ui/assets/monaco--ixms01u.css
172
- dw/server/ui/assets/monaco-ULLHC90E.js
197
+ dw/server/ui/assets/monaco-C_Um4bRZ.js
173
198
  dw/server/ui/assets/msdax-DauUninz.js
174
199
  dw/server/ui/assets/mysql-SOo6toE5.js
175
200
  dw/server/ui/assets/objective-c-FvmIjYaQ.js
@@ -184,10 +209,10 @@ dw/server/ui/assets/powerquery-D3hlyOfw.js
184
209
  dw/server/ui/assets/powershell-DmHpPYUd.js
185
210
  dw/server/ui/assets/protobuf-C531GsRP.js
186
211
  dw/server/ui/assets/pug-Z5eAx3Zn.js
187
- dw/server/ui/assets/python-C5D4i8ni.js
212
+ dw/server/ui/assets/python-DKASw3vF.js
188
213
  dw/server/ui/assets/qsharp-DkqhCAOL.js
189
214
  dw/server/ui/assets/r-BwWrilGY.js
190
- dw/server/ui/assets/razor-DL9EVLH-.js
215
+ dw/server/ui/assets/razor-CkEOBTMa.js
191
216
  dw/server/ui/assets/redis-ClamHrr6.js
192
217
  dw/server/ui/assets/redshift-DT7zqm-g.js
193
218
  dw/server/ui/assets/restructuredtext-BYgofb2h.js
@@ -207,16 +232,17 @@ dw/server/ui/assets/swift-Bxkupp3x.js
207
232
  dw/server/ui/assets/systemverilog-Bz4Y3fRF.js
208
233
  dw/server/ui/assets/tcl-DISqw1ZD.js
209
234
  dw/server/ui/assets/ts.worker-D7T1-Ig5.js
210
- dw/server/ui/assets/tsMode-BtDRLqfW.js
235
+ dw/server/ui/assets/tsMode-CmkUIEUu.js
211
236
  dw/server/ui/assets/twig-De2hgUGE.js
212
- dw/server/ui/assets/typescript-DYpkXm7y.js
237
+ dw/server/ui/assets/typescript-BXTFUpwg.js
213
238
  dw/server/ui/assets/typespec-B8J7ngcE.js
214
239
  dw/server/ui/assets/vb-DV3o63ZY.js
215
240
  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
241
+ dw/server/ui/assets/workers-Cpj1l6gK.js
242
+ dw/server/ui/assets/xml-D1BkO5yz.js
243
+ dw/server/ui/assets/yaml-CDFThBDz.js
219
244
  dw/tasks/assess.py
245
+ dw/tasks/audio_dynamics.py
220
246
  dw/tasks/audio_transcription.py
221
247
  dw/tasks/audio_utils.py
222
248
  dw/tasks/background_remover.py
@@ -232,7 +258,10 @@ dw/tasks/grade.py
232
258
  dw/tasks/image_to_text.py
233
259
  dw/tasks/image_utils.py
234
260
  dw/tasks/interpolate_frames.py
261
+ dw/tasks/join_into_song.py
262
+ dw/tasks/joins.py
235
263
  dw/tasks/judge.py
264
+ dw/tasks/loop_bed.py
236
265
  dw/tasks/model_cache.py
237
266
  dw/tasks/pair_audio.py
238
267
  dw/tasks/qr_code.py
@@ -265,7 +294,15 @@ dw_mcp/media.py
265
294
  dw_mcp/models.py
266
295
  dw_mcp/prompts.py
267
296
  dw_mcp/server.py
297
+ dw_mcp/tools_authoring.py
298
+ dw_mcp/tools_catalog.py
299
+ dw_mcp/tools_jobs.py
300
+ dw_mcp/tools_media.py
268
301
  dw_mcp/workspaces.py
302
+ tests/test_admission.py
303
+ tests/test_arch_metrics.py
304
+ tests/test_arch_report.py
305
+ tests/test_architecture_map.py
269
306
  tests/test_argument_updates.py
270
307
  tests/test_arguments.py
271
308
  tests/test_assemble_and_score_target_lufs.py
@@ -299,9 +336,11 @@ tests/test_dissolve_frame_errors.py
299
336
  tests/test_dissolve_videos.py
300
337
  tests/test_docs_links.py
301
338
  tests/test_download_watch.py
339
+ tests/test_dsp.py
302
340
  tests/test_elision.py
303
341
  tests/test_events.py
304
342
  tests/test_examples.py
343
+ tests/test_find_loop_bed.py
305
344
  tests/test_for_each.py
306
345
  tests/test_gather.py
307
346
  tests/test_grade.py
@@ -323,8 +362,10 @@ tests/test_job_progress.py
323
362
  tests/test_job_warnings.py
324
363
  tests/test_jobs_listing.py
325
364
  tests/test_jobs_reused.py
365
+ tests/test_join_into_song.py
326
366
  tests/test_judge.py
327
367
  tests/test_kernel_availability.py
368
+ tests/test_library_path.py
328
369
  tests/test_library_sources.py
329
370
  tests/test_list_images.py
330
371
  tests/test_locations.py
@@ -350,6 +391,7 @@ tests/test_mcp_workspaces.py
350
391
  tests/test_media_audio.py
351
392
  tests/test_media_frames.py
352
393
  tests/test_media_info.py
394
+ tests/test_media_layering.py
353
395
  tests/test_mix_audio.py
354
396
  tests/test_model_cache.py
355
397
  tests/test_modular_output_properties.py
@@ -369,24 +411,27 @@ tests/test_pipeline_caching.py
369
411
  tests/test_pipeline_components.py
370
412
  tests/test_plan.py
371
413
  tests/test_plugin_skills.py
414
+ tests/test_prepare_pipeline.py
415
+ tests/test_previous_result_walker_parity.py
372
416
  tests/test_previous_results.py
373
417
  tests/test_prompt_library.py
374
418
  tests/test_prompt_parser.py
375
419
  tests/test_prompt_references.py
376
420
  tests/test_prompt_weighting.py
377
421
  tests/test_prompts.py
422
+ tests/test_real_models.py
378
423
  tests/test_realize.py
379
424
  tests/test_recenter_crop.py
380
425
  tests/test_reference_limits.py
381
426
  tests/test_reference_names.py
382
- tests/test_repl_commands.py
383
- tests/test_repl_ergonomics.py
384
- tests/test_repl_worker.py
427
+ tests/test_reference_skip_sets.py
428
+ tests/test_references.py
385
429
  tests/test_rerun_new_seed.py
386
430
  tests/test_resize_bucket.py
387
431
  tests/test_result.py
388
432
  tests/test_result_fps.py
389
433
  tests/test_result_output_naming.py
434
+ tests/test_rule_parity.py
390
435
  tests/test_runs.py
391
436
  tests/test_scalar_result_validation.py
392
437
  tests/test_scheduler_config.py
@@ -410,8 +455,10 @@ tests/test_server_exports.py
410
455
  tests/test_server_guides.py
411
456
  tests/test_server_info.py
412
457
  tests/test_server_jobs.py
458
+ tests/test_server_library_path.py
413
459
  tests/test_server_mcp.py
414
460
  tests/test_server_workspaces.py
461
+ tests/test_shaping_logs.py
415
462
  tests/test_shot_span_preflight.py
416
463
  tests/test_shots.py
417
464
  tests/test_slice_preflight.py
@@ -420,12 +467,12 @@ tests/test_stabilize.py
420
467
  tests/test_step.py
421
468
  tests/test_step_cache.py
422
469
  tests/test_strip_exif_and_watermark.py
470
+ tests/test_sub_workflow_resolver.py
423
471
  tests/test_subfolders.py
424
472
  tests/test_task.py
425
473
  tests/test_task_discovery.py
426
474
  tests/test_task_domains.py
427
475
  tests/test_task_signature_errors.py
428
- tests/test_teacache.py
429
476
  tests/test_template_defaults.py
430
477
  tests/test_template_subfolders.py
431
478
  tests/test_tensor_image.py
@@ -435,6 +482,7 @@ tests/test_transcribe_audio.py
435
482
  tests/test_type_helpers.py
436
483
  tests/test_updater.py
437
484
  tests/test_validate_arguments.py
485
+ tests/test_validation.py
438
486
  tests/test_variable_constraints.py
439
487
  tests/test_variables.py
440
488
  tests/test_video_extensions.py
@@ -446,8 +494,10 @@ tests/test_vram_inheritance.py
446
494
  tests/test_worker.py
447
495
  tests/test_worker_execute.py
448
496
  tests/test_worker_job_peak_rss.py
497
+ tests/test_worker_manager.py
498
+ tests/test_worker_messages.py
449
499
  tests/test_workflow.py
450
- tests/test_workflow_sources.py
500
+ tests/test_workflow_snapshot.py
451
501
  tests/test_workflow_step_cache.py
452
502
  tests/test_workflow_trust.py
453
503
  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