model-compose 0.4.22__tar.gz → 0.4.24__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 (408) hide show
  1. {model_compose-0.4.22/src/model_compose.egg-info → model_compose-0.4.24}/PKG-INFO +1 -1
  2. {model_compose-0.4.22 → model_compose-0.4.24}/pyproject.toml +1 -1
  3. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/cli/compose.py +81 -2
  4. model_compose-0.4.24/src/mindor/cli/interrupt.py +30 -0
  5. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/context.py +4 -1
  6. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/__init__.py +1 -0
  7. model_compose-0.4.24/src/mindor/core/component/services/agent.py +194 -0
  8. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/http_client.py +6 -6
  9. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/http_server.py +6 -6
  10. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/__init__.py +1 -0
  11. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +1 -1
  12. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +6 -6
  13. model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/__init__.py +1 -0
  14. model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/common.py +38 -0
  15. model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/custom.py +12 -0
  16. model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/qwen.py +141 -0
  17. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/shell.py +5 -1
  18. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/compose/compose.py +15 -1
  19. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/compose/manager.py +4 -0
  20. model_compose-0.4.24/src/mindor/core/compose/validator.py +207 -0
  21. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/base.py +167 -26
  22. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/services/http_server.py +47 -5
  23. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/services/mcp_server.py +95 -108
  24. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/webui/gradio.py +4 -1
  25. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/webui/webui.py +1 -1
  26. model_compose-0.4.24/src/mindor/core/evaluator/__init__.py +1 -0
  27. model_compose-0.4.24/src/mindor/core/evaluator/condition.py +33 -0
  28. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/logger/logger.py +3 -1
  29. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/renderers.py +24 -3
  30. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/streaming.py +22 -0
  31. model_compose-0.4.24/src/mindor/core/utils/work_queue.py +103 -0
  32. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/context.py +5 -2
  33. model_compose-0.4.24/src/mindor/core/workflow/interrupt.py +47 -0
  34. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/action.py +43 -3
  35. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/if_.py +4 -33
  36. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/schema.py +14 -9
  37. model_compose-0.4.24/src/mindor/core/workflow/tool.py +80 -0
  38. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/workflow.py +6 -2
  39. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/action.py +2 -1
  40. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/__init__.py +1 -0
  41. model_compose-0.4.24/src/mindor/dsl/schema/action/impl/agent.py +15 -0
  42. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +1 -0
  43. model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/__init__.py +1 -0
  44. model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/__init__.py +2 -0
  45. model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/common.py +15 -0
  46. model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/qwen.py +19 -0
  47. model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/text_to_speech.py +12 -0
  48. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/model.py +1 -0
  49. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/component.py +2 -1
  50. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/__init__.py +1 -0
  51. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/agent.py +10 -0
  52. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/common.py +8 -0
  53. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/datasets/datasets.py +8 -0
  54. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/http_client.py +0 -9
  55. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/http_server.py +0 -7
  56. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/image_processor.py +8 -0
  57. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -10
  58. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -7
  59. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +1 -0
  60. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +8 -0
  61. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/common.py +1 -0
  62. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/common.py +2 -15
  63. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/dlib.py +2 -8
  64. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/facenet.py +2 -8
  65. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/insightface.py +2 -8
  66. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +15 -0
  67. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/flux.py +2 -8
  68. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/hunyuan_image.py +2 -8
  69. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/sdxl.py +2 -8
  70. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -9
  71. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/image_upscale.py +1 -1
  72. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +15 -0
  73. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/esrgan.py +4 -10
  74. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +8 -0
  75. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/real_esrgan.py +4 -10
  76. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +8 -0
  77. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +0 -9
  78. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +8 -0
  79. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +0 -9
  80. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/__init__.py +1 -0
  81. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/__init__.py +2 -0
  82. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/common.py +13 -0
  83. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/qwen.py +9 -0
  84. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/text_to_speech.py +10 -0
  85. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/model.py +3 -2
  86. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +0 -9
  87. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +8 -0
  88. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/shell.py +0 -8
  89. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/text_splitter.py +8 -0
  90. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/types.py +1 -0
  91. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +0 -10
  92. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +8 -0
  93. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +0 -9
  94. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -9
  95. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/web_scraper.py +0 -10
  96. model_compose-0.4.24/src/mindor/dsl/schema/component/impl/workflow.py +8 -0
  97. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/common.py +1 -0
  98. model_compose-0.4.24/src/mindor/dsl/schema/job/impl/action.py +42 -0
  99. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/if_.py +5 -18
  100. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/switch.py +3 -3
  101. model_compose-0.4.24/src/mindor/dsl/schema/operator/__init__.py +1 -0
  102. model_compose-0.4.24/src/mindor/dsl/schema/operator/condition.py +14 -0
  103. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/workflow.py +1 -0
  104. {model_compose-0.4.22 → model_compose-0.4.24/src/model_compose.egg-info}/PKG-INFO +1 -1
  105. {model_compose-0.4.22 → model_compose-0.4.24}/src/model_compose.egg-info/SOURCES.txt +25 -0
  106. model_compose-0.4.22/src/mindor/core/utils/work_queue.py +0 -56
  107. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/datasets/datasets.py +0 -18
  108. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/image_processor.py +0 -17
  109. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +0 -17
  110. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +0 -28
  111. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +0 -28
  112. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +0 -14
  113. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +0 -14
  114. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +0 -17
  115. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +0 -17
  116. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -17
  117. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -18
  118. model_compose-0.4.22/src/mindor/dsl/schema/component/impl/workflow.py +0 -17
  119. model_compose-0.4.22/src/mindor/dsl/schema/job/impl/action.py +0 -18
  120. {model_compose-0.4.22 → model_compose-0.4.24}/LICENSE +0 -0
  121. {model_compose-0.4.22 → model_compose-0.4.24}/README.md +0 -0
  122. {model_compose-0.4.22 → model_compose-0.4.24}/setup.cfg +0 -0
  123. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/__init__.py +0 -0
  124. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/cli/__init__.py +0 -0
  125. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/__init__.py +0 -0
  126. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/__init__.py +0 -0
  127. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/base.py +0 -0
  128. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/component.py +0 -0
  129. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/runtime/__init__.py +0 -0
  130. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/runtime/process_manager.py +0 -0
  131. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/runtime/process_worker.py +0 -0
  132. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/__init__.py +0 -0
  133. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/datasets.py +0 -0
  134. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/__init__.py +0 -0
  135. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/common.py +0 -0
  136. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/huggingface.py +0 -0
  137. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/local.py +0 -0
  138. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/utils.py +0 -0
  139. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/image_processor.py +0 -0
  140. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/mcp_client.py +0 -0
  141. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/mcp_server.py +0 -0
  142. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/__init__.py +0 -0
  143. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/__init__.py +0 -0
  144. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/common.py +0 -0
  145. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/huggingface.py +0 -0
  146. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
  147. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
  148. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/model.py +0 -0
  149. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
  150. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +0 -0
  151. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/__init__.py +0 -0
  152. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/common.py +0 -0
  153. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +0 -0
  154. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +0 -0
  155. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/__init__.py +0 -0
  156. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/common.py +0 -0
  157. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +0 -0
  158. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +0 -0
  159. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +0 -0
  160. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +0 -0
  161. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
  162. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +0 -0
  163. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +0 -0
  164. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +0 -0
  165. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +0 -0
  166. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +0 -0
  167. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +0 -0
  168. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
  169. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +0 -0
  170. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
  171. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +0 -0
  172. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
  173. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +0 -0
  174. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/text_splitter.py +0 -0
  175. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
  176. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/base.py +0 -0
  177. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
  178. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
  179. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
  180. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/vector_store.py +0 -0
  181. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/web_scraper.py +0 -0
  182. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/component/services/workflow.py +0 -0
  183. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/compose/__init__.py +0 -0
  184. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/__init__.py +0 -0
  185. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/controller.py +0 -0
  186. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runner/__init__.py +0 -0
  187. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runner/client.py +0 -0
  188. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runner/http_client.py +0 -0
  189. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  190. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runner/runner.py +0 -0
  191. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runtime/__init__.py +0 -0
  192. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
  193. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runtime/docker/context/Dockerfile +0 -0
  194. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
  195. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
  196. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runtime/native/native.py +0 -0
  197. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/runtime/specs.py +0 -0
  198. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/services/__init__.py +0 -0
  199. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/controller/webui/__init__.py +0 -0
  200. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/foundation/__init__.py +0 -0
  201. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/foundation/async_service.py +0 -0
  202. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/foundation/ipc_messages.py +0 -0
  203. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/foundation/process_manager.py +0 -0
  204. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/foundation/process_worker.py +0 -0
  205. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/__init__.py +0 -0
  206. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/base.py +0 -0
  207. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/gateway.py +0 -0
  208. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/__init__.py +0 -0
  209. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/__init__.py +0 -0
  210. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/base.py +0 -0
  211. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +0 -0
  212. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +0 -0
  213. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +0 -0
  214. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +0 -0
  215. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/gateway/services/ssh_tunnel.py +0 -0
  216. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/listener/__init__.py +0 -0
  217. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/listener/base.py +0 -0
  218. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/listener/listener.py +0 -0
  219. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/listener/services/__init__.py +0 -0
  220. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/listener/services/http_callback.py +0 -0
  221. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/listener/services/http_trigger.py +0 -0
  222. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/logger/__init__.py +0 -0
  223. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/logger/base.py +0 -0
  224. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/logger/logging.py +0 -0
  225. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/logger/services/__init__.py +0 -0
  226. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/logger/services/console.py +0 -0
  227. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/logger/services/file.py +0 -0
  228. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/runtime/__init__.py +0 -0
  229. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/runtime/docker/__init__.py +0 -0
  230. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/runtime/docker/docker.py +0 -0
  231. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/runtime/env.py +0 -0
  232. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/__init__.py +0 -0
  233. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/caching.py +0 -0
  234. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/http_client.py +0 -0
  235. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/http_request.py +0 -0
  236. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/http_response.py +0 -0
  237. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/http_status.py +0 -0
  238. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/image.py +0 -0
  239. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/mcp_client.py +0 -0
  240. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/package.py +0 -0
  241. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/resolvers.py +0 -0
  242. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/shell.py +0 -0
  243. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/ssh_client.py +0 -0
  244. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/streamer.py +0 -0
  245. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/time.py +0 -0
  246. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/url.py +0 -0
  247. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/utils/websocket_client.py +0 -0
  248. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/__init__.py +0 -0
  249. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/__init__.py +0 -0
  250. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/base.py +0 -0
  251. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
  252. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  253. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/filter.py +0 -0
  254. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/random_router.py +0 -0
  255. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/switch.py +0 -0
  256. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/core/workflow/job/job.py +0 -0
  257. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/__init__.py +0 -0
  258. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/loader.py +0 -0
  259. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/__init__.py +0 -0
  260. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/__init__.py +0 -0
  261. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  262. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/__init__.py +0 -0
  263. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/common.py +0 -0
  264. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/datasets.py +0 -0
  265. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +0 -0
  266. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +0 -0
  267. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +0 -0
  268. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +0 -0
  269. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/http_client.py +0 -0
  270. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/http_server.py +0 -0
  271. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/image_processor.py +0 -0
  272. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  273. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
  274. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
  275. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +0 -0
  276. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/common.py +0 -0
  277. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +0 -0
  278. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/face_embedding.py +0 -0
  279. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  280. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/common.py +0 -0
  281. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/dlib.py +0 -0
  282. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/facenet.py +0 -0
  283. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/insightface.py +0 -0
  284. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
  285. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/image_generation.py +0 -0
  286. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/__init__.py +0 -0
  287. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/common.py +0 -0
  288. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/flux.py +0 -0
  289. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  290. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  291. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
  292. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
  293. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/image_upscale.py +0 -0
  294. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  295. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/common.py +0 -0
  296. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  297. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  298. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  299. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  300. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
  301. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
  302. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
  303. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +0 -0
  304. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +0 -0
  305. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +0 -0
  306. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +0 -0
  307. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +0 -0
  308. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +0 -0
  309. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  310. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -0
  311. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
  312. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/__init__.py +0 -0
  313. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +0 -0
  314. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
  315. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +0 -0
  316. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +0 -0
  317. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +0 -0
  318. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
  319. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/web_scraper.py +0 -0
  320. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  321. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/__init__.py +0 -0
  322. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/datasets/__init__.py +0 -0
  323. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
  324. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +0 -0
  325. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/face_embedding.py +0 -0
  326. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  327. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
  328. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/image_generation.py +0 -0
  329. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/__init__.py +0 -0
  330. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
  331. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  332. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +0 -0
  333. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +0 -0
  334. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +0 -0
  335. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +0 -0
  336. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
  337. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/__init__.py +0 -0
  338. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +0 -0
  339. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
  340. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/compose.py +0 -0
  341. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  342. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/controller.py +0 -0
  343. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  344. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/http_server.py +0 -0
  345. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/mcp_server.py +0 -0
  346. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
  347. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
  348. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
  349. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/common.py +0 -0
  350. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
  351. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
  352. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
  353. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
  354. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  355. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  356. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  357. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
  358. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +0 -0
  359. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
  360. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
  361. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
  362. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +0 -0
  363. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
  364. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
  365. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  366. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/__init__.py +0 -0
  367. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
  368. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  369. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  370. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
  371. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
  372. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/types.py +0 -0
  373. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/job/job.py +0 -0
  374. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  375. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
  376. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  377. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
  378. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/http_trigger.py +0 -0
  379. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
  380. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/listener.py +0 -0
  381. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/__init__.py +0 -0
  382. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
  383. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
  384. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
  385. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
  386. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
  387. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/logger.py +0 -0
  388. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  389. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
  390. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  391. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
  392. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/embedded.py +0 -0
  393. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
  394. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/process.py +0 -0
  395. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
  396. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
  397. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/transport/__init__.py +0 -0
  398. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/transport/http.py +0 -0
  399. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/schema/transport/ssh.py +0 -0
  400. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/utils/__init__.py +0 -0
  401. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/utils/annotation.py +0 -0
  402. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/utils/enum.py +0 -0
  403. {model_compose-0.4.22 → model_compose-0.4.24}/src/mindor/dsl/utils/path.py +0 -0
  404. {model_compose-0.4.22 → model_compose-0.4.24}/src/model_compose.egg-info/dependency_links.txt +0 -0
  405. {model_compose-0.4.22 → model_compose-0.4.24}/src/model_compose.egg-info/entry_points.txt +0 -0
  406. {model_compose-0.4.22 → model_compose-0.4.24}/src/model_compose.egg-info/requires.txt +0 -0
  407. {model_compose-0.4.22 → model_compose-0.4.24}/src/model_compose.egg-info/top_level.txt +0 -0
  408. {model_compose-0.4.22 → model_compose-0.4.24}/tests/test_cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-compose
3
- Version: 0.4.22
3
+ Version: 0.4.24
4
4
  Summary: model-compose: Declarative AI Workflow Orchestrator
5
5
  Author-email: Hanyeol Cho <hanyeol.cho@gmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "model-compose"
3
- version = "0.4.22"
3
+ version = "0.4.24"
4
4
  description = "model-compose: Declarative AI Workflow Orchestrator"
5
5
  authors = [
6
6
  { name = "Hanyeol Cho", email = "hanyeol.cho@gmail.com" }
@@ -4,6 +4,7 @@ from pathlib import Path
4
4
  import click
5
5
  import asyncio
6
6
  import json
7
+ import sys
7
8
 
8
9
  def _load_compose_config(config_files: List[Path], env_files: List[Path], env_data: List[str]):
9
10
  from mindor.dsl.loader import load_compose_config
@@ -70,6 +71,7 @@ def up_command(
70
71
  traceback.print_exc()
71
72
  else:
72
73
  click.echo(f"❌ {e}", err=True)
74
+ raise SystemExit(1)
73
75
  asyncio.run(_async_command())
74
76
 
75
77
  @click.command(name="down")
@@ -104,6 +106,7 @@ def down_command(
104
106
  traceback.print_exc()
105
107
  else:
106
108
  click.echo(f"❌ {e}", err=True)
109
+ raise SystemExit(1)
107
110
  asyncio.run(_async_command())
108
111
 
109
112
  @click.command(name="start")
@@ -138,6 +141,7 @@ def start_command(
138
141
  traceback.print_exc()
139
142
  else:
140
143
  click.echo(f"❌ {e}", err=True)
144
+ raise SystemExit(1)
141
145
  asyncio.run(_async_command())
142
146
 
143
147
  @click.command(name="stop")
@@ -172,6 +176,7 @@ def stop_command(
172
176
  traceback.print_exc()
173
177
  else:
174
178
  click.echo(f"❌ {e}", err=True)
179
+ raise SystemExit(1)
175
180
  asyncio.run(_async_command())
176
181
 
177
182
  @click.command(name="run")
@@ -198,6 +203,7 @@ def stop_command(
198
203
  required=False,
199
204
  help="Path to save the output result as a file."
200
205
  )
206
+ @click.option("--auto-resume", is_flag=True, help="Automatically resume interrupts without prompting.")
201
207
  @click.option("--verbose", "-v", is_flag=True, help="Enable verbose output.")
202
208
  @click.pass_context
203
209
  def run_command(
@@ -207,15 +213,29 @@ def run_command(
207
213
  env_files: List[Path],
208
214
  env_data: List[str],
209
215
  output_path: Optional[Path],
216
+ auto_resume: bool,
210
217
  verbose: bool
211
218
  ) -> None:
212
- from mindor.core.compose import run_workflow
219
+ from mindor.core.compose.manager import ComposeManager
220
+ from mindor.core.controller.base import TaskStatus
221
+ from mindor.cli.interrupt import prompt_for_interrupt
213
222
  config_files = ctx.obj.get("config_files", [])
214
223
  async def _async_command():
215
224
  try:
216
225
  config = _load_compose_config(config_files, env_files, env_data)
217
226
  input = json.loads(input_json) if input_json else {}
218
- state = await run_workflow(config, workflow_id or "__default__", input, output_path, verbose)
227
+ is_tty = sys.stdin.isatty()
228
+
229
+ manager = ComposeManager(config, daemon=False)
230
+ state = await manager.run_workflow(workflow_id or "__default__", input, output_path, verbose)
231
+
232
+ while state.status == TaskStatus.INTERRUPTED:
233
+ if not auto_resume and not is_tty:
234
+ click.echo("❌ Workflow interrupted but no TTY available. Use --auto-resume to skip.", err=True)
235
+ raise SystemExit(1)
236
+ answer = None if auto_resume else prompt_for_interrupt(state)
237
+ state = await manager.resume_workflow(state.task_id, state.interrupt.job_id, answer)
238
+
219
239
  if isinstance(state.output, (dict, list)) or state.error:
220
240
  click.echo(json.dumps(
221
241
  state.output or state.error,
@@ -225,8 +245,12 @@ def run_command(
225
245
  else:
226
246
  if state.output is not None:
227
247
  click.echo(state.output)
248
+ except click.exceptions.Abort:
249
+ click.echo("\nInterrupt cancelled by user.", err=True)
250
+ raise SystemExit(130)
228
251
  except json.JSONDecodeError:
229
252
  click.echo("❌ Invalid JSON provided for --input", err=True)
253
+ raise SystemExit(1)
230
254
  except Exception as e:
231
255
  if verbose:
232
256
  import traceback
@@ -234,13 +258,68 @@ def run_command(
234
258
  traceback.print_exc()
235
259
  else:
236
260
  click.echo(f"❌ {e}", err=True)
261
+ raise SystemExit(1)
237
262
  asyncio.run(_async_command())
238
263
 
264
+ @click.command(name="validate")
265
+ @click.option(
266
+ "--env-file", "env_files", multiple=True,
267
+ type=click.Path(exists=True, dir_okay=False, path_type=Path),
268
+ required=False,
269
+ help="Path to a .env file containing environment variables."
270
+ )
271
+ @click.option(
272
+ "--env", "-e", "env_data", multiple=True,
273
+ help="Environment variable in the form KEY=VALUE. Repeatable."
274
+ )
275
+ @click.option("--verbose", "-v", is_flag=True, help="Enable verbose output.")
276
+ @click.pass_context
277
+ def validate_command(
278
+ ctx: click.Context,
279
+ env_files: List[Path],
280
+ env_data: List[str],
281
+ verbose: bool
282
+ ) -> None:
283
+ """Validate the compose configuration without starting any services."""
284
+ from mindor.core.compose import validate_compose_config
285
+ config_files = ctx.obj.get("config_files", [])
286
+ try:
287
+ config = _load_compose_config(config_files, env_files, env_data)
288
+ errors = validate_compose_config(config)
289
+
290
+ if errors:
291
+ click.echo("❌ Configuration has semantic errors:\n", err=True)
292
+ for error in errors:
293
+ click.echo(f" - {error}", err=True)
294
+ raise SystemExit(1)
295
+ else:
296
+ summary_parts = [f"controller: {config.controller.type.value}"]
297
+ if config.components:
298
+ summary_parts.append(f"{len(config.components)} component(s)")
299
+ if config.workflows:
300
+ summary_parts.append(f"{len(config.workflows)} workflow(s)")
301
+ if config.listeners:
302
+ summary_parts.append(f"{len(config.listeners)} listener(s)")
303
+ if config.gateways:
304
+ summary_parts.append(f"{len(config.gateways)} gateway(s)")
305
+ if config.loggers:
306
+ summary_parts.append(f"{len(config.loggers)} logger(s)")
307
+ click.echo(f"✅ Configuration is valid ({', '.join(summary_parts)})")
308
+ except Exception as e:
309
+ if verbose:
310
+ import traceback
311
+ click.echo(f"❌ Error: {e}\n\nTraceback:", err=True)
312
+ traceback.print_exc()
313
+ else:
314
+ click.echo(f"❌ {e}", err=True)
315
+ raise SystemExit(1)
316
+
239
317
  compose_command.add_command(up_command)
240
318
  compose_command.add_command(down_command)
241
319
  compose_command.add_command(start_command)
242
320
  compose_command.add_command(stop_command)
243
321
  compose_command.add_command(run_command)
322
+ compose_command.add_command(validate_command)
244
323
 
245
324
  if __name__ == "__main__":
246
325
  compose_command()
@@ -0,0 +1,30 @@
1
+ from __future__ import annotations
2
+ from typing import TYPE_CHECKING, Any
3
+ import click
4
+ import json
5
+
6
+ if TYPE_CHECKING:
7
+ from mindor.core.controller.base import TaskState
8
+
9
+ def prompt_for_interrupt(state: TaskState) -> Any:
10
+ interrupt = state.interrupt
11
+
12
+ click.echo("", err=True)
13
+ click.echo(f"--- Interrupted (job: {interrupt.job_id}, phase: {interrupt.phase}) ---", err=True)
14
+
15
+ if interrupt.message:
16
+ click.echo(f"\n{interrupt.message}", err=True)
17
+
18
+ if interrupt.metadata:
19
+ click.echo(json.dumps(interrupt.metadata, indent=2, ensure_ascii=False), err=True)
20
+
21
+ click.echo("", err=True)
22
+ raw = click.prompt("Enter response (JSON or text, empty to continue)", default="", show_default=False)
23
+
24
+ if not raw:
25
+ return None
26
+
27
+ try:
28
+ return json.loads(raw)
29
+ except json.JSONDecodeError:
30
+ return raw
@@ -1,5 +1,5 @@
1
1
  from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
- from mindor.core.utils.renderers import VariableRenderer, ImageValueRenderer
2
+ from mindor.core.utils.renderers import VariableRenderer, ImageValueRenderer, FileValueRenderer
3
3
  from mindor.core.gateway import find_gateway_by_port
4
4
  from PIL import Image as PILImage
5
5
 
@@ -20,6 +20,9 @@ class ComponentActionContext:
20
20
  async def render_image(self, value: Any) -> Optional[PILImage.Image]:
21
21
  return await ImageValueRenderer().render(await self.render_variable(value))
22
22
 
23
+ async def render_file(self, value: Any) -> Optional[str]:
24
+ return await FileValueRenderer().render(await self.render_variable(value))
25
+
23
26
  def contains_variable_reference(self, key: str, value: Any) -> bool:
24
27
  return self.renderer.contains_reference(key, value)
25
28
 
@@ -10,3 +10,4 @@ from .shell import *
10
10
  from .text_splitter import *
11
11
  from .image_processor import *
12
12
  from .web_scraper import *
13
+ from .agent import *
@@ -0,0 +1,194 @@
1
+ from typing import Optional, Dict, List, Any
2
+ from mindor.dsl.schema.component import AgentComponentConfig
3
+ from mindor.dsl.schema.action import ActionConfig, AgentActionConfig, AgentModelConfig
4
+ from mindor.core.component import ComponentService, ComponentGlobalConfigs, ComponentResolver, create_component
5
+ from mindor.core.workflow import Workflow, WorkflowResolver, create_workflow
6
+ from mindor.core.workflow.tool import WorkflowToolGenerator, WorkflowTool
7
+ from mindor.core.workflow.schema import create_workflow_schemas
8
+ from ..base import ComponentType, register_component
9
+ from ..context import ComponentActionContext
10
+ import asyncio, ulid, json
11
+
12
+ _JSON_SCHEMA_TYPE_MAP = { "int": "integer", "float": "number", "bool": "boolean", "list[dict]": "array" }
13
+
14
+ class AgentAction:
15
+ def __init__(self, action: AgentActionConfig, config: AgentComponentConfig, global_configs: ComponentGlobalConfigs, tools: Dict[str, WorkflowTool], function_schemas: List[Dict[str, Any]]):
16
+ self.action: AgentActionConfig = action
17
+ self.config: AgentComponentConfig = config
18
+ self.global_configs: ComponentGlobalConfigs = global_configs
19
+ self.tools: Dict[str, WorkflowTool] = tools
20
+ self.function_schemas: List[Dict[str, Any]] = function_schemas
21
+
22
+ async def run(self, context: ComponentActionContext) -> Any:
23
+ messages: List[Dict[str, Any]] = await self._build_initial_messages(context)
24
+
25
+ model_config = self.action.model
26
+ model_component = self._create_component(model_config.component)
27
+ if not model_component.started:
28
+ await model_component.start()
29
+
30
+ max_iteration_count = self.action.max_iteration_count or self.config.max_iteration_count
31
+ tools = self.function_schemas if self.function_schemas else None
32
+ streaming = await context.render_variable(self.action.streaming)
33
+
34
+ if streaming:
35
+ async def _stream_message_generator():
36
+ for message in messages:
37
+ yield message
38
+
39
+ for _ in range(max_iteration_count):
40
+ model_input = await self._render_model_input(context, model_config.input, messages, tools)
41
+ response = await model_component.run(model_config.action, ulid.ulid(), model_input)
42
+
43
+ assistant_message = await self._build_assistant_message(response)
44
+ messages.append(assistant_message)
45
+ yield assistant_message
46
+
47
+ tool_calls = self._extract_tool_calls(response)
48
+ if not tool_calls:
49
+ break
50
+
51
+ tool_messages = await asyncio.gather(*[self._execute_tool_call(tc) for tc in tool_calls])
52
+ for tool_message in tool_messages:
53
+ messages.append(tool_message)
54
+ yield tool_message
55
+
56
+ return _stream_message_generator()
57
+
58
+ for _ in range(max_iteration_count):
59
+ model_input = await self._render_model_input(context, model_config.input, messages, tools)
60
+ response = await model_component.run(model_config.action, ulid.ulid(), model_input)
61
+
62
+ assistant_message = await self._build_assistant_message(response)
63
+ messages.append(assistant_message)
64
+
65
+ tool_calls = self._extract_tool_calls(response)
66
+ if not tool_calls:
67
+ break
68
+
69
+ tool_messages = await asyncio.gather(*[self._execute_tool_call(tc) for tc in tool_calls])
70
+ for tool_message in tool_messages:
71
+ messages.append(tool_message)
72
+
73
+ return messages
74
+
75
+ async def _execute_tool_call(self, tool_call: Dict[str, Any]) -> Dict[str, Any]:
76
+ tool_name = tool_call["function"]["name"]
77
+ tool_arguments = tool_call["function"].get("arguments", {})
78
+ if isinstance(tool_arguments, str):
79
+ tool_arguments = json.loads(tool_arguments)
80
+
81
+ if tool_name in self.tools:
82
+ result = await self.tools[tool_name].fn(**tool_arguments)
83
+ content = json.dumps(result) if isinstance(result, (dict, list)) else str(result)
84
+ else:
85
+ content = f"Error: Unknown tool '{tool_name}'"
86
+
87
+ return { "role": "tool", "tool_call_id": tool_call.get("id", ""), "content": content }
88
+
89
+ def _create_component(self, component_id: str) -> ComponentService:
90
+ _, config = ComponentResolver(self.global_configs.components).resolve(component_id)
91
+ return create_component(component_id, config, self.global_configs, daemon=False)
92
+
93
+ async def _render_model_input(self, context: ComponentActionContext, input_mapping: Dict[str, Any], messages: List[Dict[str, Any]], tools: Optional[List[Dict[str, Any]]]) -> Dict[str, Any]:
94
+ context.register_source("messages", messages)
95
+ if tools:
96
+ context.register_source("tools", tools)
97
+
98
+ return await context.render_variable(input_mapping)
99
+
100
+ def _extract_tool_calls(self, response: Any) -> Optional[List[Dict[str, Any]]]:
101
+ if isinstance(response, dict):
102
+ return response.get("tool_calls")
103
+ return None
104
+
105
+ def _extract_content(self, response: Any) -> Any:
106
+ if isinstance(response, dict):
107
+ return response.get("content", response)
108
+ return response
109
+
110
+ async def _build_initial_messages(self, context: ComponentActionContext) -> List[Dict[str, Any]]:
111
+ messages: List[Dict[str, Any]] = []
112
+
113
+ if self.action.system_prompt:
114
+ system = await context.render_variable(self.action.system_prompt)
115
+ messages.append({ "role": "system", "content": system if isinstance(system, str) else json.dumps(system) })
116
+
117
+ user_input = self.action.user_prompt
118
+ user = (await context.render_variable(user_input)) if user_input else context.input
119
+ messages.append({ "role": "user", "content": user if isinstance(user, str) else json.dumps(user) })
120
+
121
+ return messages
122
+
123
+ async def _build_assistant_message(self, response: Any) -> Dict[str, Any]:
124
+ if isinstance(response, dict):
125
+ message: Dict[str, Any] = {"role": "assistant"}
126
+ if "content" in response:
127
+ message["content"] = response["content"]
128
+ if "tool_calls" in response:
129
+ message["tool_calls"] = response["tool_calls"]
130
+ return message
131
+ return { "role": "assistant", "content": str(response) }
132
+
133
+ async def _build_function_schema(name: str, tool: WorkflowTool) -> Dict[str, Any]:
134
+ properties: Dict[str, Any] = {}
135
+ required: List[str] = []
136
+
137
+ for param in tool.parameters:
138
+ prop: Dict[str, Any] = { "type": _JSON_SCHEMA_TYPE_MAP.get(param.type, "string") }
139
+ if param.description:
140
+ prop["description"] = param.description
141
+ if param.default is not None:
142
+ prop["default"] = param.default
143
+ if param.required:
144
+ required.append(param.name)
145
+ properties[param.name] = prop
146
+
147
+ schema: Dict[str, Any] = {
148
+ "type": "function",
149
+ "function": {
150
+ "name": name,
151
+ "parameters": {"type": "object", "properties": properties}
152
+ }
153
+ }
154
+
155
+ if tool.description:
156
+ schema["function"]["description"] = tool.description
157
+ if required:
158
+ schema["function"]["parameters"]["required"] = required
159
+
160
+ return schema
161
+
162
+ @register_component(ComponentType.AGENT)
163
+ class AgentComponent(ComponentService):
164
+ def __init__(self, id: str, config: AgentComponentConfig, global_configs: ComponentGlobalConfigs, daemon: bool):
165
+ super().__init__(id, config, global_configs, daemon)
166
+
167
+ self.tools: Optional[Dict[str, WorkflowTool]] = None
168
+ self.function_schemas: Optional[List[Dict[str, Any]]] = None
169
+
170
+ async def _start(self) -> None:
171
+ self.tools = await self._generate_tools()
172
+ self.function_schemas = await asyncio.gather(*[ _build_function_schema(name, tool) for name, tool in self.tools.items() ])
173
+ await super()._start()
174
+
175
+ async def _run(self, action: ActionConfig, context: ComponentActionContext) -> Any:
176
+ return await AgentAction(action, self.config, self.global_configs, self.tools, self.function_schemas).run(context)
177
+
178
+ async def _generate_tools(self) -> Dict[str, WorkflowTool]:
179
+ workflow_schemas = create_workflow_schemas(self.global_configs.workflows, self.global_configs.components)
180
+ tools: Dict[str, WorkflowTool] = {}
181
+
182
+ for workflow_id in self.config.tools:
183
+ if workflow_id not in workflow_schemas:
184
+ raise ValueError(f"Workflow not found for tool: {workflow_id}")
185
+
186
+ workflow = workflow_schemas[workflow_id]
187
+ tool = WorkflowToolGenerator().generate(workflow_id, workflow, self._run_workflow)
188
+ tools[workflow.name or workflow_id] = tool
189
+
190
+ return tools
191
+
192
+ async def _run_workflow(self, workflow_id: str, input: Any) -> Any:
193
+ workflow = create_workflow(*WorkflowResolver(self.global_configs.workflows).resolve(workflow_id), self.global_configs)
194
+ return await workflow.run(ulid.ulid(), input)
@@ -97,12 +97,12 @@ class HttpClientAction:
97
97
  response, result = await client.request(url_or_path, method, params, body, headers), None
98
98
 
99
99
  if isinstance(response, HttpEventStreamResource) and context.contains_variable_reference("response[]", self.config.output):
100
- async def _stream_generator(stream: HttpEventStreamResource):
100
+ async def _stream_output_generator(stream: HttpEventStreamResource):
101
101
  async for chunk in stream:
102
102
  context.register_source("response[]", self._convert_stream_chunk(chunk))
103
103
  yield await context.render_variable(self.config.output, ignore_files=True)
104
104
 
105
- return _stream_generator(response)
105
+ return _stream_output_generator(response)
106
106
 
107
107
  context.register_source("response", response)
108
108
 
@@ -110,12 +110,12 @@ class HttpClientAction:
110
110
  result = await self.completion.run(context, client)
111
111
 
112
112
  if isinstance(result, HttpEventStreamResource) and context.contains_variable_reference("result[]", self.config.output):
113
- async def _stream_generator(stream: HttpEventStreamResource):
113
+ async def _stream_output_generator(stream: HttpEventStreamResource):
114
114
  async for chunk in stream:
115
115
  context.register_source("result[]", self._convert_stream_chunk(chunk))
116
116
  yield await context.render_variable(self.config.output, ignore_files=True)
117
117
 
118
- return _stream_generator(result)
118
+ return _stream_output_generator(result)
119
119
 
120
120
  context.register_source("result", result)
121
121
 
@@ -128,13 +128,13 @@ class HttpClientAction:
128
128
  return await context.render_variable(self.config.endpoint)
129
129
 
130
130
  def _convert_stream_chunk(self, chunk: bytes) -> Any:
131
- if self.config.streaming_format == HttpStreamFormat.JSON:
131
+ if self.config.stream_format == HttpStreamFormat.JSON:
132
132
  try:
133
133
  return json.loads(chunk)
134
134
  except:
135
135
  return None
136
136
 
137
- if self.config.streaming_format == HttpStreamFormat.TEXT:
137
+ if self.config.stream_format == HttpStreamFormat.TEXT:
138
138
  return chunk.decode("utf-8", errors="replace")
139
139
 
140
140
  return chunk
@@ -92,12 +92,12 @@ class HttpServerAction:
92
92
  response, result = await client.request(path or "", method, params, body, headers), None
93
93
 
94
94
  if isinstance(response, HttpEventStreamResource) and context.contains_variable_reference("response[]", self.config.output):
95
- async def _stream_generator(stream: HttpEventStreamResource):
95
+ async def _stream_output_generator(stream: HttpEventStreamResource):
96
96
  async for chunk in stream:
97
97
  context.register_source("response[]", self._convert_stream_chunk(chunk))
98
98
  yield await context.render_variable(self.config.output, ignore_files=True)
99
99
 
100
- return _stream_generator(response)
100
+ return _stream_output_generator(response)
101
101
 
102
102
  context.register_source("response", response)
103
103
 
@@ -105,25 +105,25 @@ class HttpServerAction:
105
105
  result = await self.completion.run(context, client)
106
106
 
107
107
  if isinstance(result, HttpEventStreamResource) and context.contains_variable_reference("result[]", self.config.output):
108
- async def _stream_generator(stream: HttpEventStreamResource):
108
+ async def _stream_output_generator(stream: HttpEventStreamResource):
109
109
  async for chunk in stream:
110
110
  context.register_source("result[]", self._convert_stream_chunk(chunk))
111
111
  yield await context.render_variable(self.config.output, ignore_files=True)
112
112
 
113
- return _stream_generator(result)
113
+ return _stream_output_generator(result)
114
114
 
115
115
  context.register_source("result", result)
116
116
 
117
117
  return (await context.render_variable(self.config.output, ignore_files=True)) if self.config.output else (result or response)
118
118
 
119
119
  def _convert_stream_chunk(self, chunk: bytes) -> Any:
120
- if self.config.streaming_format == HttpStreamFormat.JSON:
120
+ if self.config.stream_format == HttpStreamFormat.JSON:
121
121
  try:
122
122
  return json.loads(chunk)
123
123
  except:
124
124
  return None
125
125
 
126
- if self.config.streaming_format == HttpStreamFormat.TEXT:
126
+ if self.config.stream_format == HttpStreamFormat.TEXT:
127
127
  return chunk.decode("utf-8", errors="replace")
128
128
 
129
129
  return chunk
@@ -5,3 +5,4 @@ from .text_embedding import *
5
5
  from .image_to_text import *
6
6
  from .image_upscale import *
7
7
  from .face_embedding import *
8
+ from .text_to_speech import *
@@ -51,7 +51,7 @@ class ImageUpscaleTaskAction:
51
51
 
52
52
  raise ValueError(f"Unsupported color format: {color_format}")
53
53
 
54
- def _downsample_image(self, image: PILImage.Image, method: Literal["lanczos", "bicubic"], scale: int = 4) -> PILImage.Image:
54
+ def _downsample_image(self, image: PILImage.Image, method: Literal[ "lanczos", "bicubic" ], scale: int = 4) -> PILImage.Image:
55
55
  downsample_size = (max(1, image.size[0] // scale), max(1, image.size[1] // scale))
56
56
 
57
57
  if method not in _resample_map:
@@ -1,24 +1,24 @@
1
1
  from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, TypeAlias, Any
2
- from mindor.dsl.schema.component import ModelComponentConfig, ImageUpscaleModelArchitecture
2
+ from mindor.dsl.schema.component import ModelComponentConfig, ImageUpscaleModelFamily
3
3
  from ...base import ModelTaskType, ModelDriver, register_model_task_service
4
4
 
5
5
  @register_model_task_service(ModelTaskType.IMAGE_UPSCALE, ModelDriver.CUSTOM)
6
6
  class CustomImageUpscaleTaskService:
7
7
  def __new__(cls, id: str, config: ModelComponentConfig, daemon: bool):
8
- if config.architecture == ImageUpscaleModelArchitecture.ESRGAN:
8
+ if config.family == ImageUpscaleModelFamily.ESRGAN:
9
9
  from .esrgan import EsrganImageUpscaleTaskService
10
10
  return EsrganImageUpscaleTaskService(id, config, daemon)
11
11
 
12
- if config.architecture == ImageUpscaleModelArchitecture.REAL_ESRGAN:
12
+ if config.family == ImageUpscaleModelFamily.REAL_ESRGAN:
13
13
  from .real_esrgan import RealEsrganImageUpscaleTaskService
14
14
  return RealEsrganImageUpscaleTaskService(id, config, daemon)
15
15
 
16
- if config.architecture == ImageUpscaleModelArchitecture.LDSR:
16
+ if config.family == ImageUpscaleModelFamily.LDSR:
17
17
  from .ldsr import LdsrImageUpscaleTaskService
18
18
  return LdsrImageUpscaleTaskService(id, config, daemon)
19
19
 
20
- if config.architecture == ImageUpscaleModelArchitecture.SWINIR:
20
+ if config.family == ImageUpscaleModelFamily.SWINIR:
21
21
  from .swinir import SwinIRImageUpscaleTaskService
22
22
  return SwinIRImageUpscaleTaskService(id, config, daemon)
23
23
 
24
- raise ValueError(f"Unknown architecture: {config.architecture}")
24
+ raise ValueError(f"Unknown family: {config.family}")
@@ -0,0 +1,38 @@
1
+ from __future__ import annotations
2
+ from typing import TYPE_CHECKING
3
+
4
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, TypeAlias, Any
5
+ from abc import ABC, abstractmethod
6
+ from mindor.dsl.schema.action import TextToSpeechModelActionConfig
7
+ from mindor.core.logger import logging
8
+ from ...base import ModelTaskService, ComponentActionContext
9
+
10
+ if TYPE_CHECKING:
11
+ import torch
12
+
13
+ class TextToSpeechTaskAction:
14
+ def __init__(self, config: TextToSpeechModelActionConfig, device: Optional[torch.device]):
15
+ self.config: TextToSpeechModelActionConfig = config
16
+ self.device: Optional[torch.device] = device
17
+
18
+ async def run(self, context: ComponentActionContext) -> Any:
19
+ text = await self._prepare_input(context)
20
+ is_single_input = not isinstance(text, list)
21
+ texts: List[str] = [ text ] if is_single_input else text
22
+ results = []
23
+
24
+ for t in texts:
25
+ audio_bytes = await self._generate(t, context)
26
+ results.append(audio_bytes)
27
+
28
+ return results[0] if is_single_input else results
29
+
30
+ async def _prepare_input(self, context: ComponentActionContext) -> Union[str, List[str]]:
31
+ return await context.render_variable(self.config.text)
32
+
33
+ @abstractmethod
34
+ async def _generate(self, text: str, context: ComponentActionContext) -> bytes:
35
+ pass
36
+
37
+ class TextToSpeechTaskService(ModelTaskService):
38
+ pass
@@ -0,0 +1,12 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, TypeAlias, Any
2
+ from mindor.dsl.schema.component import ModelComponentConfig, TextToSpeechModelFamily
3
+ from ...base import ModelTaskType, ModelDriver, register_model_task_service
4
+
5
+ @register_model_task_service(ModelTaskType.TEXT_TO_SPEECH, ModelDriver.CUSTOM)
6
+ class CustomTextToSpeechTaskService:
7
+ def __new__(cls, id: str, config: ModelComponentConfig, daemon: bool):
8
+ if config.family == TextToSpeechModelFamily.QWEN:
9
+ from .qwen import QwenTextToSpeechTaskService
10
+ return QwenTextToSpeechTaskService(id, config, daemon)
11
+
12
+ raise ValueError(f"Unknown family: {config.family}")