model-compose 0.4.26__tar.gz → 0.4.27__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 (394) hide show
  1. {model_compose-0.4.26/src/model_compose.egg-info → model_compose-0.4.27}/PKG-INFO +14 -8
  2. {model_compose-0.4.26 → model_compose-0.4.27}/README.md +13 -7
  3. {model_compose-0.4.26 → model_compose-0.4.27}/pyproject.toml +1 -1
  4. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/web_scraper.py +7 -3
  5. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/compose/validator.py +3 -3
  6. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/impl/__init__.py +1 -1
  7. model_compose-0.4.26/src/mindor/core/workflow/job/impl/action.py → model_compose-0.4.27/src/mindor/core/workflow/job/impl/component.py +8 -8
  8. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/schema.py +4 -4
  9. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/__init__.py +1 -1
  10. model_compose-0.4.26/src/mindor/dsl/schema/job/impl/action.py → model_compose-0.4.27/src/mindor/dsl/schema/job/impl/component.py +10 -10
  11. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/types.py +1 -1
  12. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/job.py +1 -1
  13. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/workflow.py +4 -5
  14. {model_compose-0.4.26 → model_compose-0.4.27/src/model_compose.egg-info}/PKG-INFO +14 -8
  15. {model_compose-0.4.26 → model_compose-0.4.27}/src/model_compose.egg-info/SOURCES.txt +2 -3
  16. model_compose-0.4.26/src/mindor/dsl/utils/annotation.py +0 -19
  17. {model_compose-0.4.26 → model_compose-0.4.27}/LICENSE +0 -0
  18. {model_compose-0.4.26 → model_compose-0.4.27}/setup.cfg +0 -0
  19. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/__init__.py +0 -0
  20. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/cli/__init__.py +0 -0
  21. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/cli/compose.py +0 -0
  22. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/cli/interrupt.py +0 -0
  23. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/__init__.py +0 -0
  24. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/__init__.py +0 -0
  25. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/base.py +0 -0
  26. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/component.py +0 -0
  27. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/context.py +0 -0
  28. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/runtime/__init__.py +0 -0
  29. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/runtime/process_manager.py +0 -0
  30. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/runtime/process_worker.py +0 -0
  31. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/__init__.py +0 -0
  32. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/agent.py +0 -0
  33. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/datasets/__init__.py +0 -0
  34. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/datasets/datasets.py +0 -0
  35. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/datasets/providers/__init__.py +0 -0
  36. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/datasets/providers/common.py +0 -0
  37. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/datasets/providers/huggingface.py +0 -0
  38. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/datasets/providers/local.py +0 -0
  39. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/datasets/utils.py +0 -0
  40. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/http_client.py +0 -0
  41. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/http_server.py +0 -0
  42. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/image_processor.py +0 -0
  43. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/mcp_client.py +0 -0
  44. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/mcp_server.py +0 -0
  45. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/__init__.py +0 -0
  46. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/base/__init__.py +0 -0
  47. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/base/common.py +0 -0
  48. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/base/huggingface.py +0 -0
  49. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
  50. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
  51. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/model.py +0 -0
  52. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/__init__.py +0 -0
  53. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
  54. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +0 -0
  55. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/face_embedding/__init__.py +0 -0
  56. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/face_embedding/common.py +0 -0
  57. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +0 -0
  58. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +0 -0
  59. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_generation/__init__.py +0 -0
  60. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_generation/common.py +0 -0
  61. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +0 -0
  62. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +0 -0
  63. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +0 -0
  64. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +0 -0
  65. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
  66. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +0 -0
  67. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +0 -0
  68. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +0 -0
  69. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +0 -0
  70. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +0 -0
  71. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +0 -0
  72. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +0 -0
  73. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +0 -0
  74. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
  75. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +0 -0
  76. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
  77. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +0 -0
  78. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
  79. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +0 -0
  80. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_to_speech/__init__.py +0 -0
  81. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_to_speech/common.py +0 -0
  82. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_to_speech/custom.py +0 -0
  83. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/model/tasks/text_to_speech/qwen.py +0 -0
  84. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/shell.py +0 -0
  85. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/text_splitter.py +0 -0
  86. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
  87. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/vector_store/base.py +0 -0
  88. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
  89. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
  90. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
  91. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/vector_store/vector_store.py +0 -0
  92. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/component/services/workflow.py +0 -0
  93. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/compose/__init__.py +0 -0
  94. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/compose/compose.py +0 -0
  95. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/compose/manager.py +0 -0
  96. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/__init__.py +0 -0
  97. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/base.py +0 -0
  98. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/controller.py +0 -0
  99. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runner/__init__.py +0 -0
  100. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runner/client.py +0 -0
  101. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runner/http_client.py +0 -0
  102. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  103. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runner/runner.py +0 -0
  104. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runtime/__init__.py +0 -0
  105. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
  106. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runtime/docker/context/Dockerfile +0 -0
  107. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
  108. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
  109. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runtime/native/native.py +0 -0
  110. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/runtime/specs.py +0 -0
  111. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/services/__init__.py +0 -0
  112. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/services/http_server.py +0 -0
  113. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/services/mcp_server.py +0 -0
  114. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/webui/__init__.py +0 -0
  115. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/webui/gradio.py +0 -0
  116. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/controller/webui/webui.py +0 -0
  117. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/evaluator/__init__.py +0 -0
  118. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/evaluator/condition.py +0 -0
  119. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/foundation/__init__.py +0 -0
  120. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/foundation/async_service.py +0 -0
  121. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/foundation/ipc_messages.py +0 -0
  122. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/foundation/process_manager.py +0 -0
  123. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/foundation/process_worker.py +0 -0
  124. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/__init__.py +0 -0
  125. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/base.py +0 -0
  126. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/gateway.py +0 -0
  127. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/__init__.py +0 -0
  128. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/http_tunnel/__init__.py +0 -0
  129. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/http_tunnel/base.py +0 -0
  130. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +0 -0
  131. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +0 -0
  132. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +0 -0
  133. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +0 -0
  134. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/gateway/services/ssh_tunnel.py +0 -0
  135. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/listener/__init__.py +0 -0
  136. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/listener/base.py +0 -0
  137. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/listener/listener.py +0 -0
  138. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/listener/services/__init__.py +0 -0
  139. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/listener/services/http_callback.py +0 -0
  140. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/listener/services/http_trigger.py +0 -0
  141. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/logger/__init__.py +0 -0
  142. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/logger/base.py +0 -0
  143. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/logger/logger.py +0 -0
  144. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/logger/logging.py +0 -0
  145. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/logger/services/__init__.py +0 -0
  146. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/logger/services/console.py +0 -0
  147. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/logger/services/file.py +0 -0
  148. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/runtime/__init__.py +0 -0
  149. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/runtime/docker/__init__.py +0 -0
  150. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/runtime/docker/docker.py +0 -0
  151. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/runtime/env.py +0 -0
  152. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/__init__.py +0 -0
  153. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/caching.py +0 -0
  154. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/http_client.py +0 -0
  155. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/http_request.py +0 -0
  156. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/http_response.py +0 -0
  157. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/http_status.py +0 -0
  158. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/image.py +0 -0
  159. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/mcp_client.py +0 -0
  160. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/package.py +0 -0
  161. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/renderers.py +0 -0
  162. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/resolvers.py +0 -0
  163. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/shell.py +0 -0
  164. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/ssh_client.py +0 -0
  165. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/streamer.py +0 -0
  166. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/streaming.py +0 -0
  167. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/time.py +0 -0
  168. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/url.py +0 -0
  169. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/websocket_client.py +0 -0
  170. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/utils/work_queue.py +0 -0
  171. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/__init__.py +0 -0
  172. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/context.py +0 -0
  173. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/interrupt.py +0 -0
  174. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/__init__.py +0 -0
  175. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/base.py +0 -0
  176. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  177. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/impl/filter.py +0 -0
  178. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/impl/if_.py +0 -0
  179. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/impl/random_router.py +0 -0
  180. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/impl/switch.py +0 -0
  181. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/job/job.py +0 -0
  182. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/tool.py +0 -0
  183. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/core/workflow/workflow.py +0 -0
  184. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/__init__.py +0 -0
  185. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/loader.py +0 -0
  186. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/__init__.py +0 -0
  187. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/__init__.py +0 -0
  188. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/action.py +0 -0
  189. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/__init__.py +0 -0
  190. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/agent.py +0 -0
  191. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  192. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/datasets/__init__.py +0 -0
  193. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/datasets/common.py +0 -0
  194. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/datasets/datasets.py +0 -0
  195. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +0 -0
  196. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +0 -0
  197. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +0 -0
  198. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +0 -0
  199. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/http_client.py +0 -0
  200. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/http_server.py +0 -0
  201. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/image_processor.py +0 -0
  202. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  203. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
  204. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
  205. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +0 -0
  206. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +0 -0
  207. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/common.py +0 -0
  208. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +0 -0
  209. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/face_embedding.py +0 -0
  210. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  211. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/common.py +0 -0
  212. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/dlib.py +0 -0
  213. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/facenet.py +0 -0
  214. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/insightface.py +0 -0
  215. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
  216. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/image_generation.py +0 -0
  217. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/__init__.py +0 -0
  218. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/common.py +0 -0
  219. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/flux.py +0 -0
  220. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  221. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  222. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
  223. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
  224. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/image_upscale.py +0 -0
  225. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  226. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/common.py +0 -0
  227. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  228. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  229. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  230. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  231. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
  232. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
  233. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
  234. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/__init__.py +0 -0
  235. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/__init__.py +0 -0
  236. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/common.py +0 -0
  237. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/qwen.py +0 -0
  238. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/text_to_speech.py +0 -0
  239. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model/model.py +0 -0
  240. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +0 -0
  241. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +0 -0
  242. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +0 -0
  243. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +0 -0
  244. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +0 -0
  245. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +0 -0
  246. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  247. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -0
  248. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
  249. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/impl/__init__.py +0 -0
  250. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +0 -0
  251. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
  252. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +0 -0
  253. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +0 -0
  254. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +0 -0
  255. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
  256. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/web_scraper.py +0 -0
  257. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  258. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/__init__.py +0 -0
  259. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/component.py +0 -0
  260. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/__init__.py +0 -0
  261. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/agent.py +0 -0
  262. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/common.py +0 -0
  263. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/datasets/__init__.py +0 -0
  264. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/datasets/datasets.py +0 -0
  265. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
  266. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
  267. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/image_processor.py +0 -0
  268. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
  269. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
  270. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
  271. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +0 -0
  272. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +0 -0
  273. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/common.py +0 -0
  274. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +0 -0
  275. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/face_embedding.py +0 -0
  276. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  277. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/common.py +0 -0
  278. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/dlib.py +0 -0
  279. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/facenet.py +0 -0
  280. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/insightface.py +0 -0
  281. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
  282. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/image_generation.py +0 -0
  283. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/__init__.py +0 -0
  284. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +0 -0
  285. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/flux.py +0 -0
  286. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  287. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  288. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -0
  289. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
  290. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/image_upscale.py +0 -0
  291. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  292. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +0 -0
  293. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  294. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  295. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  296. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  297. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +0 -0
  298. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +0 -0
  299. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +0 -0
  300. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/__init__.py +0 -0
  301. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/__init__.py +0 -0
  302. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/common.py +0 -0
  303. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/qwen.py +0 -0
  304. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/text_to_speech.py +0 -0
  305. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model/model.py +0 -0
  306. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +0 -0
  307. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +0 -0
  308. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +0 -0
  309. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +0 -0
  310. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +0 -0
  311. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +0 -0
  312. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
  313. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -0
  314. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/types.py +0 -0
  315. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
  316. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/impl/__init__.py +0 -0
  317. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +0 -0
  318. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +0 -0
  319. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -0
  320. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +0 -0
  321. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -0
  322. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
  323. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/web_scraper.py +0 -0
  324. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
  325. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/compose.py +0 -0
  326. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  327. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/controller.py +0 -0
  328. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  329. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/impl/common.py +0 -0
  330. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/impl/http_server.py +0 -0
  331. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/impl/mcp_server.py +0 -0
  332. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
  333. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
  334. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
  335. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/webui/impl/common.py +0 -0
  336. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
  337. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
  338. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
  339. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
  340. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  341. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  342. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  343. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
  344. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +0 -0
  345. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
  346. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
  347. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
  348. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +0 -0
  349. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
  350. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
  351. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  352. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/__init__.py +0 -0
  353. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  354. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  355. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
  356. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/if_.py +0 -0
  357. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
  358. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/job/impl/switch.py +0 -0
  359. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  360. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
  361. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  362. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
  363. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/listener/impl/http_trigger.py +0 -0
  364. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
  365. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/listener/listener.py +0 -0
  366. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/logger/__init__.py +0 -0
  367. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
  368. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
  369. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
  370. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
  371. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
  372. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/logger/logger.py +0 -0
  373. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/operator/__init__.py +0 -0
  374. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/operator/condition.py +0 -0
  375. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  376. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
  377. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  378. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
  379. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/impl/embedded.py +0 -0
  380. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
  381. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/impl/process.py +0 -0
  382. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
  383. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
  384. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/transport/__init__.py +0 -0
  385. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/transport/http.py +0 -0
  386. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/schema/transport/ssh.py +0 -0
  387. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/utils/__init__.py +0 -0
  388. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/utils/enum.py +0 -0
  389. {model_compose-0.4.26 → model_compose-0.4.27}/src/mindor/dsl/utils/path.py +0 -0
  390. {model_compose-0.4.26 → model_compose-0.4.27}/src/model_compose.egg-info/dependency_links.txt +0 -0
  391. {model_compose-0.4.26 → model_compose-0.4.27}/src/model_compose.egg-info/entry_points.txt +0 -0
  392. {model_compose-0.4.26 → model_compose-0.4.27}/src/model_compose.egg-info/requires.txt +0 -0
  393. {model_compose-0.4.26 → model_compose-0.4.27}/src/model_compose.egg-info/top_level.txt +0 -0
  394. {model_compose-0.4.26 → model_compose-0.4.27}/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.26
3
+ Version: 0.4.27
4
4
  Summary: model-compose: Declarative AI Workflow Orchestrator
5
5
  Author-email: Hanyeol Cho <hanyeol.cho@gmail.com>
6
6
  License-Expression: MIT
@@ -62,6 +62,12 @@ Define complex AI workflows entirely in YAML—no Python, no JavaScript, no codi
62
62
  ### 🔗 **Universal AI Service Integration**
63
63
  Connect to any AI provider out of the box—OpenAI, Anthropic Claude, Google Gemini, ElevenLabs, Stability AI, Replicate, or any custom HTTP API. Mix and match services in a single workflow.
64
64
 
65
+ ### 🤖 **Agent Components**
66
+ Build autonomous AI agents that use workflows as tools. Agents can reason, plan, and execute multi-step tasks by dynamically invoking other workflows—all defined declaratively in YAML.
67
+
68
+ ### ✋ **Human-in-the-Loop**
69
+ Add approval gates and user input steps to any workflow with interrupt configuration. Workflows pause, prompt for human input via CLI, Web UI, or API, and resume seamlessly—perfect for review, moderation, and supervised AI pipelines.
70
+
65
71
  ### 🖥️ **Local Model Execution**
66
72
  Run models from HuggingFace and other sources locally with native support for transformers, PyTorch, and model serving frameworks. Fine-tune models with LoRA/PEFT, train with custom datasets, all through YAML configuration.
67
73
 
@@ -124,6 +130,12 @@ controller:
124
130
  webui:
125
131
  port: 8081
126
132
 
133
+ workflows:
134
+ - id: chat
135
+ default: true
136
+ jobs:
137
+ - component: chatgpt
138
+
127
139
  components:
128
140
  - id: chatgpt
129
141
  type: http-client
@@ -137,12 +149,6 @@ components:
137
149
  messages:
138
150
  - role: user
139
151
  content: ${input.prompt}
140
-
141
- workflows:
142
- - id: chat
143
- default: true
144
- jobs:
145
- - component: chatgpt
146
152
  ```
147
153
 
148
154
  Create a `.env` file:
@@ -211,7 +217,7 @@ pip install -e .[dev]
211
217
  ---
212
218
 
213
219
  ## 📄 License
214
- MIT License © 2025 Hanyeol Cho.
220
+ MIT License © 2025-2026 Hanyeol Cho.
215
221
 
216
222
  ---
217
223
 
@@ -36,6 +36,12 @@ Define complex AI workflows entirely in YAML—no Python, no JavaScript, no codi
36
36
  ### 🔗 **Universal AI Service Integration**
37
37
  Connect to any AI provider out of the box—OpenAI, Anthropic Claude, Google Gemini, ElevenLabs, Stability AI, Replicate, or any custom HTTP API. Mix and match services in a single workflow.
38
38
 
39
+ ### 🤖 **Agent Components**
40
+ Build autonomous AI agents that use workflows as tools. Agents can reason, plan, and execute multi-step tasks by dynamically invoking other workflows—all defined declaratively in YAML.
41
+
42
+ ### ✋ **Human-in-the-Loop**
43
+ Add approval gates and user input steps to any workflow with interrupt configuration. Workflows pause, prompt for human input via CLI, Web UI, or API, and resume seamlessly—perfect for review, moderation, and supervised AI pipelines.
44
+
39
45
  ### 🖥️ **Local Model Execution**
40
46
  Run models from HuggingFace and other sources locally with native support for transformers, PyTorch, and model serving frameworks. Fine-tune models with LoRA/PEFT, train with custom datasets, all through YAML configuration.
41
47
 
@@ -98,6 +104,12 @@ controller:
98
104
  webui:
99
105
  port: 8081
100
106
 
107
+ workflows:
108
+ - id: chat
109
+ default: true
110
+ jobs:
111
+ - component: chatgpt
112
+
101
113
  components:
102
114
  - id: chatgpt
103
115
  type: http-client
@@ -111,12 +123,6 @@ components:
111
123
  messages:
112
124
  - role: user
113
125
  content: ${input.prompt}
114
-
115
- workflows:
116
- - id: chat
117
- default: true
118
- jobs:
119
- - component: chatgpt
120
126
  ```
121
127
 
122
128
  Create a `.env` file:
@@ -185,7 +191,7 @@ pip install -e .[dev]
185
191
  ---
186
192
 
187
193
  ## 📄 License
188
- MIT License © 2025 Hanyeol Cho.
194
+ MIT License © 2025-2026 Hanyeol Cho.
189
195
 
190
196
  ---
191
197
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "model-compose"
3
- version = "0.4.26"
3
+ version = "0.4.27"
4
4
  description = "model-compose: Declarative AI Workflow Orchestrator"
5
5
  authors = [
6
6
  { name = "Hanyeol Cho", email = "hanyeol.cho@gmail.com" }
@@ -73,7 +73,7 @@ class WebScraperAction:
73
73
  {
74
74
  "name": name,
75
75
  "value": value,
76
- "domain": parsed_url.netloc,
76
+ "domain": parsed_url.hostname,
77
77
  "path": "/"
78
78
  }
79
79
  for name, value in cookies.items()
@@ -122,7 +122,11 @@ class WebScraperAction:
122
122
  await element.click()
123
123
  else:
124
124
  # No selector/xpath: find and submit the first form
125
- await page.evaluate("document.querySelector('form').submit()")
125
+ element = await page.query_selector("form")
126
+ if element:
127
+ await element.evaluate("form => form.submit()")
128
+ else:
129
+ raise ValueError("No <form> element found on the page to submit")
126
130
 
127
131
  # Wait for navigation or specific element after submit
128
132
  if wait_for:
@@ -232,7 +236,7 @@ class WebScraperComponent(ComponentService):
232
236
  super().__init__(id, config, global_configs, daemon)
233
237
 
234
238
  def _get_setup_requirements(self) -> Optional[List[str]]:
235
- return [ "playwright", "bs4", "lxml" ]
239
+ return [ "playwright", "beautifulsoup4", "lxml" ]
236
240
 
237
241
  async def _setup(self) -> None:
238
242
  """Install playwright browsers after package installation."""
@@ -1,6 +1,6 @@
1
1
  from typing import Dict, List, Set
2
2
  from mindor.dsl.schema.compose import ComposeConfig
3
- from mindor.dsl.schema.job.impl.action import ActionJobConfig
3
+ from mindor.dsl.schema.job.impl.component import ComponentJobConfig
4
4
  from mindor.dsl.schema.action.impl.workflow import WorkflowActionConfig
5
5
  from mindor.dsl.schema.listener.impl.http_trigger import HttpTriggerListenerConfig
6
6
  from mindor.dsl.schema.component.impl.workflow import WorkflowComponentConfig
@@ -70,7 +70,7 @@ class ComposeValidator:
70
70
 
71
71
  for wi, workflow in enumerate(self.config.workflows):
72
72
  for ji, job in enumerate(workflow.jobs):
73
- if not isinstance(job, ActionJobConfig):
73
+ if not isinstance(job, ComponentJobConfig):
74
74
  continue
75
75
  if not isinstance(job.component, str):
76
76
  continue
@@ -91,7 +91,7 @@ class ComposeValidator:
91
91
 
92
92
  for wi, workflow in enumerate(self.config.workflows):
93
93
  for ji, job in enumerate(workflow.jobs):
94
- if not isinstance(job, ActionJobConfig):
94
+ if not isinstance(job, ComponentJobConfig):
95
95
  continue
96
96
 
97
97
  action_ref = job.action
@@ -1,4 +1,4 @@
1
- from .action import *
1
+ from .component import *
2
2
  from .delay import *
3
3
  from .if_ import *
4
4
  from .switch import *
@@ -1,5 +1,5 @@
1
1
  from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Callable, Any
2
- from mindor.dsl.schema.job import ActionJobConfig, ActionInterruptPointConfig, JobType
2
+ from mindor.dsl.schema.job import ComponentJobConfig, ComponentInterruptPointConfig, JobType
3
3
  from mindor.core.evaluator.condition import evaluate_condition
4
4
  from mindor.dsl.schema.component import ComponentConfig
5
5
  from mindor.core.component import ComponentService, ComponentGlobalConfigs, ComponentResolver, create_component
@@ -10,9 +10,9 @@ from ..base import Job, JobType, WorkflowContext, RoutingTarget, register_job
10
10
  from datetime import datetime
11
11
  import asyncio, ulid
12
12
 
13
- @register_job(JobType.ACTION)
14
- class ActionJob(Job):
15
- def __init__(self, id: str, config: ActionJobConfig, global_configs: ComponentGlobalConfigs):
13
+ @register_job(JobType.COMPONENT)
14
+ class ComponentJob(Job):
15
+ def __init__(self, id: str, config: ComponentJobConfig, global_configs: ComponentGlobalConfigs):
16
16
  super().__init__(id, config, global_configs)
17
17
 
18
18
  async def run(self, context: WorkflowContext) -> Union[Any, RoutingTarget]:
@@ -28,7 +28,7 @@ class ActionJob(Job):
28
28
  run_id: str = ulid.ulid()
29
29
 
30
30
  job_time_tracker = TimeTracker()
31
- logging.debug("[task-%s] Action 'run-%s' started for job '%s'", context.task_id, run_id, self.id)
31
+ logging.debug("[task-%s] Component 'run-%s' started for job '%s'", context.task_id, run_id, self.id)
32
32
 
33
33
  if self.config.interrupt and self.config.interrupt.before:
34
34
  logging.info("[task-%s] Job '%s' interrupted at 'before' phase.", context.task_id, self.id)
@@ -46,7 +46,7 @@ class ActionJob(Job):
46
46
  output = answer
47
47
  context.register_source("output", output)
48
48
 
49
- logging.debug("[task-%s] Action 'run-%s' completed in %.2f seconds.", context.task_id, run_id, job_time_tracker.elapsed())
49
+ logging.debug("[task-%s] Component 'run-%s' completed in %.2f seconds.", context.task_id, run_id, job_time_tracker.elapsed())
50
50
 
51
51
  output = (await context.render_variable(self.config.output, ignore_files=True)) if self.config.output else output
52
52
  outputs.append(output)
@@ -59,7 +59,7 @@ class ActionJob(Job):
59
59
 
60
60
  return output
61
61
 
62
- async def _interrupt(self, context: WorkflowContext, phase: str, point: ActionInterruptPointConfig) -> Any:
62
+ async def _interrupt(self, context: WorkflowContext, phase: str, point: ComponentInterruptPointConfig) -> Any:
63
63
  if point.condition:
64
64
  input = await context.render_variable(point.condition.input)
65
65
  value = await context.render_variable(point.condition.value)
@@ -90,5 +90,5 @@ class ActionJob(Job):
90
90
  def _resolve_component(self, id: str, component: Union[ComponentConfig, str]) -> Tuple[str, ComponentConfig]:
91
91
  if isinstance(component, str):
92
92
  return ComponentResolver(self.global_configs.components).resolve(component)
93
-
93
+
94
94
  return id, component
@@ -2,7 +2,7 @@ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annot
2
2
  from dataclasses import dataclass, asdict
3
3
  from pydantic import BaseModel
4
4
  from mindor.dsl.schema.workflow import WorkflowConfig, WorkflowVariableConfig, WorkflowVariableGroupConfig
5
- from mindor.dsl.schema.job import ActionJobConfig, OutputJobConfig
5
+ from mindor.dsl.schema.job import ComponentJobConfig, OutputJobConfig
6
6
  from mindor.dsl.schema.component import ComponentConfig, ComponentType
7
7
  from mindor.dsl.schema.action import ActionConfig
8
8
  from mindor.core.component import ComponentResolver, ActionResolver
@@ -204,7 +204,7 @@ class WorkflowInputVariableResolver(WorkflowVariableResolver):
204
204
  variables: List[WorkflowVariable] = []
205
205
 
206
206
  for job in workflow.jobs:
207
- if isinstance(job, ActionJobConfig) and (not job.input or job.input == "${input}"):
207
+ if isinstance(job, ComponentJobConfig) and (not job.input or job.input == "${input}"):
208
208
  if isinstance(job.component, str):
209
209
  _, component = ComponentResolver(components).resolve(job.component, raise_on_error=False)
210
210
  if component:
@@ -245,12 +245,12 @@ class WorkflowOutputVariableResolver(WorkflowVariableResolver):
245
245
  continue
246
246
 
247
247
  job_variables: List[WorkflowVariable] = variables
248
- repeat_count: int = job.repeat_count if isinstance(job, ActionJobConfig) and isinstance(job.repeat_count, int) else 0
248
+ repeat_count: int = job.repeat_count if isinstance(job, ComponentJobConfig) and isinstance(job.repeat_count, int) else 0
249
249
 
250
250
  if repeat_count > 1:
251
251
  variables.append(WorkflowVariableGroup(variables=(job_variables := []), repeat_count=repeat_count))
252
252
 
253
- if isinstance(job, ActionJobConfig) and (not job.output or job.output == "${output}"):
253
+ if isinstance(job, ComponentJobConfig) and (not job.output or job.output == "${output}"):
254
254
  if isinstance(job.component, str):
255
255
  _, component = ComponentResolver(components).resolve(job.component, raise_on_error=False)
256
256
  if component:
@@ -1,5 +1,5 @@
1
1
  from .common import *
2
- from .action import *
2
+ from .component import *
3
3
  from .delay import *
4
4
  from .if_ import *
5
5
  from .switch import *
@@ -5,34 +5,34 @@ from mindor.dsl.schema.component import ComponentConfig
5
5
  from mindor.dsl.schema.operator.condition import ConditionOperator
6
6
  from .common import JobType, OutputJobConfig
7
7
 
8
- class ActionInterruptConditionConfig(BaseModel):
8
+ class ComponentInterruptConditionConfig(BaseModel):
9
9
  operator: ConditionOperator = Field(default=ConditionOperator.EQ, description="Condition operator.")
10
10
  input: Optional[Any] = Field(default=None, description="Input to evaluate.")
11
11
  value: Optional[Any] = Field(default=None, description="Value to compare against.")
12
12
 
13
- class ActionInterruptPointConfig(BaseModel):
14
- condition: Optional[ActionInterruptConditionConfig] = Field(default=None, description="Condition that must be true for the interrupt to fire. If omitted, always interrupts.")
13
+ class ComponentInterruptPointConfig(BaseModel):
14
+ condition: Optional[ComponentInterruptConditionConfig] = Field(default=None, description="Condition that must be true for the interrupt to fire. If omitted, always interrupts.")
15
15
  message: Optional[str] = Field(default=None, description="A message displayed to the user when the workflow is interrupted.")
16
16
  metadata: Optional[Dict[str, Any]] = Field(default=None, description="Structured metadata to pass to the client on interrupt.")
17
17
 
18
- class ActionInterruptConfig(BaseModel):
19
- before: Union[bool, ActionInterruptPointConfig] = Field(default=False, description="Interrupt before the component executes. Set to true or provide {message, metadata}.")
20
- after: Union[bool, ActionInterruptPointConfig] = Field(default=False, description="Interrupt after the component executes. Set to true or provide {message, metadata}.")
18
+ class ComponentInterruptConfig(BaseModel):
19
+ before: Union[bool, ComponentInterruptPointConfig] = Field(default=False, description="Interrupt before the component executes. Set to true or provide {message, metadata}.")
20
+ after: Union[bool, ComponentInterruptPointConfig] = Field(default=False, description="Interrupt after the component executes. Set to true or provide {message, metadata}.")
21
21
 
22
22
  @field_validator("before", "after", mode="before")
23
23
  def normalize_point(cls, value):
24
24
  if value is True:
25
- return ActionInterruptPointConfig()
25
+ return ComponentInterruptPointConfig()
26
26
  if value is False or value is None:
27
27
  return False
28
28
  return value
29
29
 
30
- class ActionJobConfig(OutputJobConfig):
31
- type: Literal[JobType.ACTION]
30
+ class ComponentJobConfig(OutputJobConfig):
31
+ type: Literal[JobType.COMPONENT]
32
32
  component: Union[str, ComponentConfig] = Field(default="__default__", description="The component to run. May be either a string identifier or a full config object.")
33
33
  action: str = Field(default="__default__", description="The action to invoke on the component. Defaults to '__default__'.")
34
34
  input: Optional[Any] = Field(default=None, description="Input data supplied to the component. Accepts any type.")
35
- interrupt: Optional[ActionInterruptConfig] = Field(default=None, description="Configuration for Human-in-the-Loop interrupt points around component execution.")
35
+ interrupt: Optional[ComponentInterruptConfig] = Field(default=None, description="Configuration for Human-in-the-Loop interrupt points around component execution.")
36
36
  repeat_count: Union[int, str] = Field(default=1, description="Number of times to repeat the component execution. Must be at least 1.")
37
37
 
38
38
  @field_validator("repeat_count")
@@ -1,7 +1,7 @@
1
1
  from enum import Enum
2
2
 
3
3
  class JobType(str, Enum):
4
- ACTION = "action"
4
+ COMPONENT = "component"
5
5
  DELAY = "delay"
6
6
  IF = "if"
7
7
  SWITCH = "switch"
@@ -4,7 +4,7 @@ from .impl import *
4
4
 
5
5
  JobConfig = Annotated[
6
6
  Union[
7
- ActionJobConfig,
7
+ ComponentJobConfig,
8
8
  DelayJobConfig,
9
9
  IfJobConfig,
10
10
  SwitchJobConfig,
@@ -2,7 +2,6 @@ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annot
2
2
  from enum import Enum
3
3
  from pydantic import BaseModel, Field
4
4
  from pydantic import model_validator, field_validator
5
- from mindor.dsl.utils.annotation import get_model_union_keys
6
5
  from .job import JobConfig, JobType, DelayJobMode
7
6
 
8
7
  class WorkflowVariableType(str, Enum):
@@ -79,16 +78,16 @@ class WorkflowConfig(BaseModel):
79
78
  @classmethod
80
79
  def inflate_single_job(cls, values: Dict[str, Any]):
81
80
  if "jobs" not in values:
82
- job_keys = set(get_model_union_keys(JobConfig)) - set(WorkflowConfig.model_fields.keys())
83
- if any(k in values for k in job_keys):
84
- values["jobs"] = [ { k: values.pop(k) for k in job_keys if k in values } ]
81
+ job_values = values.pop("job", None)
82
+ if job_values:
83
+ values["jobs"] = [ job_values ]
85
84
  return values
86
85
 
87
86
  @classmethod
88
87
  def fill_missing_job_type(cls, jobs: List[Any]):
89
88
  for job in jobs:
90
89
  if "type" not in job:
91
- job["type"] = JobType.ACTION
90
+ job["type"] = JobType.COMPONENT
92
91
 
93
92
  @classmethod
94
93
  def fill_missing_delay_job_mode(cls, jobs: List[Any]):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-compose
3
- Version: 0.4.26
3
+ Version: 0.4.27
4
4
  Summary: model-compose: Declarative AI Workflow Orchestrator
5
5
  Author-email: Hanyeol Cho <hanyeol.cho@gmail.com>
6
6
  License-Expression: MIT
@@ -62,6 +62,12 @@ Define complex AI workflows entirely in YAML—no Python, no JavaScript, no codi
62
62
  ### 🔗 **Universal AI Service Integration**
63
63
  Connect to any AI provider out of the box—OpenAI, Anthropic Claude, Google Gemini, ElevenLabs, Stability AI, Replicate, or any custom HTTP API. Mix and match services in a single workflow.
64
64
 
65
+ ### 🤖 **Agent Components**
66
+ Build autonomous AI agents that use workflows as tools. Agents can reason, plan, and execute multi-step tasks by dynamically invoking other workflows—all defined declaratively in YAML.
67
+
68
+ ### ✋ **Human-in-the-Loop**
69
+ Add approval gates and user input steps to any workflow with interrupt configuration. Workflows pause, prompt for human input via CLI, Web UI, or API, and resume seamlessly—perfect for review, moderation, and supervised AI pipelines.
70
+
65
71
  ### 🖥️ **Local Model Execution**
66
72
  Run models from HuggingFace and other sources locally with native support for transformers, PyTorch, and model serving frameworks. Fine-tune models with LoRA/PEFT, train with custom datasets, all through YAML configuration.
67
73
 
@@ -124,6 +130,12 @@ controller:
124
130
  webui:
125
131
  port: 8081
126
132
 
133
+ workflows:
134
+ - id: chat
135
+ default: true
136
+ jobs:
137
+ - component: chatgpt
138
+
127
139
  components:
128
140
  - id: chatgpt
129
141
  type: http-client
@@ -137,12 +149,6 @@ components:
137
149
  messages:
138
150
  - role: user
139
151
  content: ${input.prompt}
140
-
141
- workflows:
142
- - id: chat
143
- default: true
144
- jobs:
145
- - component: chatgpt
146
152
  ```
147
153
 
148
154
  Create a `.env` file:
@@ -211,7 +217,7 @@ pip install -e .[dev]
211
217
  ---
212
218
 
213
219
  ## 📄 License
214
- MIT License © 2025 Hanyeol Cho.
220
+ MIT License © 2025-2026 Hanyeol Cho.
215
221
 
216
222
  ---
217
223
 
@@ -165,7 +165,7 @@ src/mindor/core/workflow/job/__init__.py
165
165
  src/mindor/core/workflow/job/base.py
166
166
  src/mindor/core/workflow/job/job.py
167
167
  src/mindor/core/workflow/job/impl/__init__.py
168
- src/mindor/core/workflow/job/impl/action.py
168
+ src/mindor/core/workflow/job/impl/component.py
169
169
  src/mindor/core/workflow/job/impl/delay.py
170
170
  src/mindor/core/workflow/job/impl/filter.py
171
171
  src/mindor/core/workflow/job/impl/if_.py
@@ -343,8 +343,8 @@ src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py
343
343
  src/mindor/dsl/schema/job/__init__.py
344
344
  src/mindor/dsl/schema/job/job.py
345
345
  src/mindor/dsl/schema/job/impl/__init__.py
346
- src/mindor/dsl/schema/job/impl/action.py
347
346
  src/mindor/dsl/schema/job/impl/common.py
347
+ src/mindor/dsl/schema/job/impl/component.py
348
348
  src/mindor/dsl/schema/job/impl/delay.py
349
349
  src/mindor/dsl/schema/job/impl/filter.py
350
350
  src/mindor/dsl/schema/job/impl/if_.py
@@ -380,7 +380,6 @@ src/mindor/dsl/schema/transport/__init__.py
380
380
  src/mindor/dsl/schema/transport/http.py
381
381
  src/mindor/dsl/schema/transport/ssh.py
382
382
  src/mindor/dsl/utils/__init__.py
383
- src/mindor/dsl/utils/annotation.py
384
383
  src/mindor/dsl/utils/enum.py
385
384
  src/mindor/dsl/utils/path.py
386
385
  src/model_compose.egg-info/PKG-INFO
@@ -1,19 +0,0 @@
1
- from typing import Set, Any, get_args
2
- from pydantic import BaseModel
3
-
4
- def get_model_union_keys(model_union_type: Any) -> Set[str]:
5
- keys, stack = set(), [ model_union_type ]
6
-
7
- while stack:
8
- current = stack.pop()
9
-
10
- if isinstance(current, type) and issubclass(current, BaseModel):
11
- keys |= set(current.model_fields.keys())
12
- continue
13
-
14
- args = get_args(current)
15
- if args:
16
- stack.extend(args)
17
- continue
18
-
19
- return keys
File without changes
File without changes