model-compose 0.4.9__tar.gz → 0.4.12__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 (364) hide show
  1. model_compose-0.4.12/PKG-INFO +190 -0
  2. model_compose-0.4.12/README.md +166 -0
  3. {model_compose-0.4.9 → model_compose-0.4.12}/pyproject.toml +2 -2
  4. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/cli/compose.py +57 -26
  5. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/context.py +1 -1
  6. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/base.py +18 -3
  7. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/services/http_server.py +20 -4
  8. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/base.py +5 -1
  9. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/gateway.py +1 -1
  10. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +10 -6
  11. model_compose-0.4.12/src/mindor/core/gateway/services/ssh_tunnel.py +82 -0
  12. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/listener/base.py +1 -1
  13. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/listener/services/__init__.py +1 -0
  14. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/listener/services/http_callback.py +10 -12
  15. model_compose-0.4.12/src/mindor/core/listener/services/http_trigger.py +136 -0
  16. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/http_client.py +6 -4
  17. model_compose-0.4.12/src/mindor/core/utils/ssh_client.py +206 -0
  18. model_compose-0.4.12/src/mindor/core/utils/url.py +33 -0
  19. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +2 -2
  20. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/common.py +1 -1
  21. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/common.py +1 -1
  22. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/common.py +1 -1
  23. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/http_server.py +1 -1
  24. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/mcp_server.py +1 -1
  25. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/common.py +1 -1
  26. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/common.py +0 -1
  27. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +1 -0
  28. model_compose-0.4.12/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +26 -0
  29. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/__init__.py +1 -0
  30. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/http_callback.py +1 -1
  31. model_compose-0.4.12/src/mindor/dsl/schema/listener/impl/http_trigger.py +27 -0
  32. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/types.py +1 -0
  33. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/listener.py +2 -1
  34. model_compose-0.4.12/src/model_compose.egg-info/PKG-INFO +190 -0
  35. {model_compose-0.4.9 → model_compose-0.4.12}/src/model_compose.egg-info/SOURCES.txt +3 -0
  36. model_compose-0.4.9/PKG-INFO +0 -428
  37. model_compose-0.4.9/README.md +0 -404
  38. model_compose-0.4.9/src/mindor/core/gateway/services/ssh_tunnel.py +0 -23
  39. model_compose-0.4.9/src/mindor/core/utils/ssh_client.py +0 -4
  40. model_compose-0.4.9/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -9
  41. model_compose-0.4.9/src/model_compose.egg-info/PKG-INFO +0 -428
  42. {model_compose-0.4.9 → model_compose-0.4.12}/LICENSE +0 -0
  43. {model_compose-0.4.9 → model_compose-0.4.12}/setup.cfg +0 -0
  44. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/__init__.py +0 -0
  45. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/cli/__init__.py +0 -0
  46. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/__init__.py +0 -0
  47. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/__init__.py +0 -0
  48. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/base.py +0 -0
  49. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/component.py +0 -0
  50. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/__init__.py +0 -0
  51. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/datasets/__init__.py +0 -0
  52. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/datasets/datasets.py +0 -0
  53. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/datasets/providers/__init__.py +0 -0
  54. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/datasets/providers/common.py +0 -0
  55. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/datasets/providers/huggingface.py +0 -0
  56. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/datasets/providers/local.py +0 -0
  57. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/datasets/utils.py +0 -0
  58. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/http_client.py +0 -0
  59. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/http_server.py +0 -0
  60. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/image_processor.py +0 -0
  61. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/mcp_client.py +0 -0
  62. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/mcp_server.py +0 -0
  63. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/__init__.py +0 -0
  64. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/__init__.py +0 -0
  65. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/common.py +0 -0
  66. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/huggingface.py +0 -0
  67. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
  68. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
  69. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/model.py +0 -0
  70. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/__init__.py +0 -0
  71. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
  72. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +0 -0
  73. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/face_embedding/__init__.py +0 -0
  74. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/face_embedding/common.py +0 -0
  75. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +0 -0
  76. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +0 -0
  77. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/__init__.py +0 -0
  78. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/common.py +0 -0
  79. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +0 -0
  80. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +0 -0
  81. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +0 -0
  82. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +0 -0
  83. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
  84. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +0 -0
  85. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +0 -0
  86. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +0 -0
  87. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +0 -0
  88. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +0 -0
  89. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +0 -0
  90. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +0 -0
  91. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +0 -0
  92. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
  93. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +0 -0
  94. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
  95. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +0 -0
  96. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
  97. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +0 -0
  98. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/shell.py +0 -0
  99. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/text_splitter.py +0 -0
  100. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
  101. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/base.py +0 -0
  102. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
  103. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
  104. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
  105. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/vector_store.py +0 -0
  106. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/component/services/workflow.py +0 -0
  107. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/compose/__init__.py +0 -0
  108. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/compose/compose.py +0 -0
  109. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/compose/manager.py +0 -0
  110. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/__init__.py +0 -0
  111. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/controller.py +0 -0
  112. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runner/__init__.py +0 -0
  113. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runner/client.py +0 -0
  114. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runner/http_client.py +0 -0
  115. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  116. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runner/runner.py +0 -0
  117. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runtime/__init__.py +0 -0
  118. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
  119. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runtime/docker/context/Dockerfile +0 -0
  120. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
  121. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
  122. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runtime/native/native.py +0 -0
  123. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/runtime/specs.py +0 -0
  124. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/services/__init__.py +0 -0
  125. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/services/mcp_server.py +0 -0
  126. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/webui/__init__.py +0 -0
  127. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/webui/gradio.py +0 -0
  128. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/controller/webui/webui.py +0 -0
  129. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/foundation/__init__.py +0 -0
  130. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/foundation/async_service.py +0 -0
  131. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/__init__.py +0 -0
  132. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/services/__init__.py +0 -0
  133. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/services/http_tunnel/__init__.py +0 -0
  134. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/services/http_tunnel/base.py +0 -0
  135. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +0 -0
  136. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +0 -0
  137. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +0 -0
  138. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/listener/__init__.py +0 -0
  139. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/listener/listener.py +0 -0
  140. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/logger/__init__.py +0 -0
  141. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/logger/base.py +0 -0
  142. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/logger/logger.py +0 -0
  143. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/logger/logging.py +0 -0
  144. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/logger/services/__init__.py +0 -0
  145. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/logger/services/console.py +0 -0
  146. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/logger/services/file.py +0 -0
  147. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/runtime/__init__.py +0 -0
  148. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/runtime/docker/__init__.py +0 -0
  149. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/runtime/docker/docker.py +0 -0
  150. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/runtime/env.py +0 -0
  151. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/__init__.py +0 -0
  152. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/caching.py +0 -0
  153. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/http_request.py +0 -0
  154. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/http_response.py +0 -0
  155. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/http_status.py +0 -0
  156. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/image.py +0 -0
  157. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/mcp_client.py +0 -0
  158. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/package.py +0 -0
  159. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/renderers.py +0 -0
  160. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/resolvers.py +0 -0
  161. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/shell.py +0 -0
  162. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/streamer.py +0 -0
  163. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/streaming.py +0 -0
  164. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/time.py +0 -0
  165. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/websocket_client.py +0 -0
  166. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/utils/work_queue.py +0 -0
  167. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/__init__.py +0 -0
  168. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/context.py +0 -0
  169. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/__init__.py +0 -0
  170. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/base.py +0 -0
  171. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
  172. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/action.py +0 -0
  173. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  174. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/filter.py +0 -0
  175. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/if_.py +0 -0
  176. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/random_router.py +0 -0
  177. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/switch.py +0 -0
  178. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/job/job.py +0 -0
  179. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/schema.py +0 -0
  180. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/core/workflow/workflow.py +0 -0
  181. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/__init__.py +0 -0
  182. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/loader.py +0 -0
  183. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/__init__.py +0 -0
  184. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/__init__.py +0 -0
  185. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/action.py +0 -0
  186. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/__init__.py +0 -0
  187. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  188. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/datasets/__init__.py +0 -0
  189. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/datasets/common.py +0 -0
  190. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/datasets/datasets.py +0 -0
  191. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +0 -0
  192. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +0 -0
  193. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +0 -0
  194. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/http_client.py +0 -0
  195. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/http_server.py +0 -0
  196. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/image_processor.py +0 -0
  197. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  198. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
  199. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
  200. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +0 -0
  201. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +0 -0
  202. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +0 -0
  203. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/face_embedding.py +0 -0
  204. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  205. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/common.py +0 -0
  206. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/dlib.py +0 -0
  207. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/facenet.py +0 -0
  208. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/insightface.py +0 -0
  209. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
  210. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/image_generation.py +0 -0
  211. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/__init__.py +0 -0
  212. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/common.py +0 -0
  213. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/flux.py +0 -0
  214. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  215. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  216. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
  217. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
  218. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/image_upscale.py +0 -0
  219. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  220. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/common.py +0 -0
  221. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  222. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  223. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  224. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  225. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
  226. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
  227. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
  228. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/model.py +0 -0
  229. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +0 -0
  230. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +0 -0
  231. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +0 -0
  232. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +0 -0
  233. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +0 -0
  234. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +0 -0
  235. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  236. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -0
  237. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
  238. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/__init__.py +0 -0
  239. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +0 -0
  240. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
  241. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +0 -0
  242. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +0 -0
  243. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +0 -0
  244. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
  245. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  246. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/__init__.py +0 -0
  247. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/component.py +0 -0
  248. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/__init__.py +0 -0
  249. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/datasets/__init__.py +0 -0
  250. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/datasets/datasets.py +0 -0
  251. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
  252. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
  253. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/image_processor.py +0 -0
  254. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
  255. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
  256. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
  257. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +0 -0
  258. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +0 -0
  259. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/common.py +0 -0
  260. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +0 -0
  261. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/face_embedding.py +0 -0
  262. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  263. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/common.py +0 -0
  264. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/dlib.py +0 -0
  265. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/facenet.py +0 -0
  266. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/insightface.py +0 -0
  267. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
  268. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/image_generation.py +0 -0
  269. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/__init__.py +0 -0
  270. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +0 -0
  271. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/flux.py +0 -0
  272. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  273. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  274. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -0
  275. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
  276. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/image_upscale.py +0 -0
  277. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  278. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +0 -0
  279. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  280. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  281. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  282. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  283. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +0 -0
  284. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +0 -0
  285. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +0 -0
  286. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/model.py +0 -0
  287. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +0 -0
  288. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +0 -0
  289. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +0 -0
  290. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +0 -0
  291. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +0 -0
  292. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +0 -0
  293. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
  294. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -0
  295. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/types.py +0 -0
  296. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
  297. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/__init__.py +0 -0
  298. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +0 -0
  299. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +0 -0
  300. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -0
  301. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +0 -0
  302. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -0
  303. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
  304. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
  305. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/compose.py +0 -0
  306. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  307. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/controller.py +0 -0
  308. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  309. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
  310. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
  311. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
  312. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
  313. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
  314. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
  315. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
  316. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  317. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  318. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  319. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +0 -0
  320. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
  321. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
  322. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
  323. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
  324. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  325. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/__init__.py +0 -0
  326. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
  327. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/action.py +0 -0
  328. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  329. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  330. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
  331. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/if_.py +0 -0
  332. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
  333. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/switch.py +0 -0
  334. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/types.py +0 -0
  335. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/job/job.py +0 -0
  336. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  337. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  338. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/__init__.py +0 -0
  339. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
  340. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
  341. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
  342. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
  343. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
  344. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/logger.py +0 -0
  345. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  346. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
  347. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  348. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
  349. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
  350. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
  351. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
  352. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/transport/__init__.py +0 -0
  353. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/transport/http.py +0 -0
  354. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/transport/ssh.py +0 -0
  355. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/schema/workflow.py +0 -0
  356. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/utils/__init__.py +0 -0
  357. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/utils/annotation.py +0 -0
  358. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/utils/enum.py +0 -0
  359. {model_compose-0.4.9 → model_compose-0.4.12}/src/mindor/dsl/utils/path.py +0 -0
  360. {model_compose-0.4.9 → model_compose-0.4.12}/src/model_compose.egg-info/dependency_links.txt +0 -0
  361. {model_compose-0.4.9 → model_compose-0.4.12}/src/model_compose.egg-info/entry_points.txt +0 -0
  362. {model_compose-0.4.9 → model_compose-0.4.12}/src/model_compose.egg-info/requires.txt +0 -0
  363. {model_compose-0.4.9 → model_compose-0.4.12}/src/model_compose.egg-info/top_level.txt +0 -0
  364. {model_compose-0.4.9 → model_compose-0.4.12}/tests/test_cli.py +0 -0
@@ -0,0 +1,190 @@
1
+ Metadata-Version: 2.4
2
+ Name: model-compose
3
+ Version: 0.4.12
4
+ Summary: model-compose: Declarative AI Workflow Orchestrator
5
+ Author-email: Hanyeol Cho <hanyeol.cho@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/hanyeol/model-compose
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: click
11
+ Requires-Dist: pyyaml
12
+ Requires-Dist: pydantic
13
+ Requires-Dist: python-dotenv
14
+ Requires-Dist: aiohttp
15
+ Requires-Dist: requests
16
+ Requires-Dist: fastapi
17
+ Requires-Dist: uvicorn
18
+ Requires-Dist: mcp>=1.10.1
19
+ Requires-Dist: ulid
20
+ Requires-Dist: gradio
21
+ Requires-Dist: Pillow
22
+ Requires-Dist: docker
23
+ Dynamic: license-file
24
+
25
+ <div align="center">
26
+
27
+ ![model-compose - Declarative AI Workflow Orchestrator](docs/images/main-banner.png)
28
+
29
+ [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://python.org)
30
+ [![PyPI version](https://img.shields.io/pypi/v/model-compose.svg)](https://pypi.org/project/model-compose/)
31
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
32
+ [![Downloads](https://pepy.tech/badge/model-compose)](https://pepy.tech/project/model-compose)
33
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)
34
+
35
+ [한국어](README.ko.md) | [中文](README.zh-cn.md)
36
+
37
+ </div>
38
+
39
+ ---
40
+
41
+ # 🤖 Model-Compose
42
+
43
+ **model-compose** is a declarative AI workflow orchestrator inspired by `docker-compose`. It lets you define and run AI model pipelines using simple YAML files — no custom code required. Effortlessly connect external AI services (OpenAI, Anthropic, Google, etc.), run local AI models, integrate vector stores, and more — all within powerful, composable workflows.
44
+
45
+ **No custom code. Just YAML configuration.**
46
+
47
+ <div align="center">
48
+
49
+ [📖 User Guide](docs/user-guide/README.md) · [🚀 Quick Start](#-quick-start) · [💡 Examples](examples/README.md) · [🤝 Contributing](#-contributing)
50
+
51
+ </div>
52
+
53
+ ---
54
+
55
+ ## ✨ Features
56
+
57
+ - 🎨 **No-Code**: Pure YAML configuration—no scripting required
58
+ - 🔄 **Composable**: Reusable components and multi-step workflows
59
+ - 🚀 **Production Ready**: HTTP/MCP servers + Web UI + Docker deployment
60
+ - 🔌 **Connect Anything**: External AI services, local models, vector stores, and more
61
+ - ⚡ **Stream & Scale**: Real-time streaming and event-driven automation
62
+ - ⚙️ **Configuration**: Environment variables, flexible settings
63
+ - 🔗 **Integration**: Webhooks, tunneling, HTTP servers
64
+
65
+ ---
66
+
67
+
68
+ ## 📦 Installation
69
+
70
+ ```
71
+ pip install model-compose
72
+ ```
73
+
74
+ Or install from source:
75
+
76
+ ```
77
+ git clone https://github.com/hanyeol/model-compose.git
78
+ cd model-compose
79
+ pip install -e .
80
+ ```
81
+
82
+ > Requires: Python 3.9 or higher
83
+
84
+ ---
85
+
86
+ ## 🚀 Quick Start
87
+
88
+ Create a `model-compose.yml`:
89
+
90
+ ```yaml
91
+ controller:
92
+ type: http-server
93
+ port: 8080
94
+ webui:
95
+ port: 8081
96
+
97
+ components:
98
+ - id: chatgpt
99
+ type: http-client
100
+ base_url: https://api.openai.com/v1
101
+ path: /chat/completions
102
+ method: POST
103
+ headers:
104
+ Authorization: Bearer ${env.OPENAI_API_KEY}
105
+ body:
106
+ model: gpt-4o
107
+ messages:
108
+ - role: user
109
+ content: ${input.prompt}
110
+
111
+ workflows:
112
+ - id: chat
113
+ default: true
114
+ jobs:
115
+ - component: chatgpt
116
+ ```
117
+
118
+ Create a `.env` file:
119
+
120
+ ```bash
121
+ OPENAI_API_KEY=your-key
122
+ ```
123
+
124
+ Run it:
125
+
126
+ ```bash
127
+ model-compose up
128
+ ```
129
+
130
+ Your API is now live at `http://localhost:8080` and Web UI at `http://localhost:8081` 🎉
131
+
132
+ > 💡 Explore [examples](examples/README.md) for more workflows or read the [User Guide](docs/user-guide/README.md).
133
+
134
+ ---
135
+ ## 💡 Key Capabilities
136
+
137
+ ### 🖥️ Built-in Web UI
138
+ Add a web interface by adding just 2 lines to your YAML:
139
+ ```yaml
140
+ controller:
141
+ webui:
142
+ port: 8081
143
+ ```
144
+ Instantly get a user-friendly interface to test and monitor your workflows. Supports both Gradio (default) and custom static frontends.
145
+
146
+ ### 🛰️ MCP Server Ready
147
+ Transform your workflows into MCP tools by changing one line:
148
+ ```yaml
149
+ controller:
150
+ type: mcp-server
151
+ ```
152
+ Just set the type to `mcp-server`. Your workflows become instantly accessible via the Model Context Protocol.
153
+
154
+ ### 🐳 Docker Deployment
155
+ Deploy anywhere with built-in Docker support:
156
+ ```yaml
157
+ controller:
158
+ runtime: docker
159
+ ```
160
+ Run your workflows in isolated containers with full control over images, volumes, ports, and environment variables.
161
+
162
+ > 📖 See the [User Guide](docs/user-guide/README.md) for detailed configuration and [Examples](examples/README.md) for ready-to-run samples.
163
+
164
+ ---
165
+ ## 🏗 Architecture
166
+
167
+ ![Archtecture Diagram](docs/images/architecture-diagram.png)
168
+
169
+ ---
170
+
171
+ ## 🤝 Contributing
172
+ We welcome all contributions!
173
+ Whether it's fixing bugs, improving docs, or adding examples — every bit helps.
174
+
175
+ ```
176
+ # Setup for development
177
+ git clone https://github.com/hanyeol/model-compose.git
178
+ cd model-compose
179
+ pip install -e .[dev]
180
+ ```
181
+
182
+ ---
183
+
184
+ ## 📄 License
185
+ MIT License © 2025 Hanyeol Cho.
186
+
187
+ ---
188
+
189
+ ## 📬 Contact
190
+ Have questions, ideas, or feedback? [Open an issue](https://github.com/hanyeol/model-compose/issues) or start a discussion on [GitHub Discussions](https://github.com/hanyeol/model-compose/discussions).
@@ -0,0 +1,166 @@
1
+ <div align="center">
2
+
3
+ ![model-compose - Declarative AI Workflow Orchestrator](docs/images/main-banner.png)
4
+
5
+ [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://python.org)
6
+ [![PyPI version](https://img.shields.io/pypi/v/model-compose.svg)](https://pypi.org/project/model-compose/)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+ [![Downloads](https://pepy.tech/badge/model-compose)](https://pepy.tech/project/model-compose)
9
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)
10
+
11
+ [한국어](README.ko.md) | [中文](README.zh-cn.md)
12
+
13
+ </div>
14
+
15
+ ---
16
+
17
+ # 🤖 Model-Compose
18
+
19
+ **model-compose** is a declarative AI workflow orchestrator inspired by `docker-compose`. It lets you define and run AI model pipelines using simple YAML files — no custom code required. Effortlessly connect external AI services (OpenAI, Anthropic, Google, etc.), run local AI models, integrate vector stores, and more — all within powerful, composable workflows.
20
+
21
+ **No custom code. Just YAML configuration.**
22
+
23
+ <div align="center">
24
+
25
+ [📖 User Guide](docs/user-guide/README.md) · [🚀 Quick Start](#-quick-start) · [💡 Examples](examples/README.md) · [🤝 Contributing](#-contributing)
26
+
27
+ </div>
28
+
29
+ ---
30
+
31
+ ## ✨ Features
32
+
33
+ - 🎨 **No-Code**: Pure YAML configuration—no scripting required
34
+ - 🔄 **Composable**: Reusable components and multi-step workflows
35
+ - 🚀 **Production Ready**: HTTP/MCP servers + Web UI + Docker deployment
36
+ - 🔌 **Connect Anything**: External AI services, local models, vector stores, and more
37
+ - ⚡ **Stream & Scale**: Real-time streaming and event-driven automation
38
+ - ⚙️ **Configuration**: Environment variables, flexible settings
39
+ - 🔗 **Integration**: Webhooks, tunneling, HTTP servers
40
+
41
+ ---
42
+
43
+
44
+ ## 📦 Installation
45
+
46
+ ```
47
+ pip install model-compose
48
+ ```
49
+
50
+ Or install from source:
51
+
52
+ ```
53
+ git clone https://github.com/hanyeol/model-compose.git
54
+ cd model-compose
55
+ pip install -e .
56
+ ```
57
+
58
+ > Requires: Python 3.9 or higher
59
+
60
+ ---
61
+
62
+ ## 🚀 Quick Start
63
+
64
+ Create a `model-compose.yml`:
65
+
66
+ ```yaml
67
+ controller:
68
+ type: http-server
69
+ port: 8080
70
+ webui:
71
+ port: 8081
72
+
73
+ components:
74
+ - id: chatgpt
75
+ type: http-client
76
+ base_url: https://api.openai.com/v1
77
+ path: /chat/completions
78
+ method: POST
79
+ headers:
80
+ Authorization: Bearer ${env.OPENAI_API_KEY}
81
+ body:
82
+ model: gpt-4o
83
+ messages:
84
+ - role: user
85
+ content: ${input.prompt}
86
+
87
+ workflows:
88
+ - id: chat
89
+ default: true
90
+ jobs:
91
+ - component: chatgpt
92
+ ```
93
+
94
+ Create a `.env` file:
95
+
96
+ ```bash
97
+ OPENAI_API_KEY=your-key
98
+ ```
99
+
100
+ Run it:
101
+
102
+ ```bash
103
+ model-compose up
104
+ ```
105
+
106
+ Your API is now live at `http://localhost:8080` and Web UI at `http://localhost:8081` 🎉
107
+
108
+ > 💡 Explore [examples](examples/README.md) for more workflows or read the [User Guide](docs/user-guide/README.md).
109
+
110
+ ---
111
+ ## 💡 Key Capabilities
112
+
113
+ ### 🖥️ Built-in Web UI
114
+ Add a web interface by adding just 2 lines to your YAML:
115
+ ```yaml
116
+ controller:
117
+ webui:
118
+ port: 8081
119
+ ```
120
+ Instantly get a user-friendly interface to test and monitor your workflows. Supports both Gradio (default) and custom static frontends.
121
+
122
+ ### 🛰️ MCP Server Ready
123
+ Transform your workflows into MCP tools by changing one line:
124
+ ```yaml
125
+ controller:
126
+ type: mcp-server
127
+ ```
128
+ Just set the type to `mcp-server`. Your workflows become instantly accessible via the Model Context Protocol.
129
+
130
+ ### 🐳 Docker Deployment
131
+ Deploy anywhere with built-in Docker support:
132
+ ```yaml
133
+ controller:
134
+ runtime: docker
135
+ ```
136
+ Run your workflows in isolated containers with full control over images, volumes, ports, and environment variables.
137
+
138
+ > 📖 See the [User Guide](docs/user-guide/README.md) for detailed configuration and [Examples](examples/README.md) for ready-to-run samples.
139
+
140
+ ---
141
+ ## 🏗 Architecture
142
+
143
+ ![Archtecture Diagram](docs/images/architecture-diagram.png)
144
+
145
+ ---
146
+
147
+ ## 🤝 Contributing
148
+ We welcome all contributions!
149
+ Whether it's fixing bugs, improving docs, or adding examples — every bit helps.
150
+
151
+ ```
152
+ # Setup for development
153
+ git clone https://github.com/hanyeol/model-compose.git
154
+ cd model-compose
155
+ pip install -e .[dev]
156
+ ```
157
+
158
+ ---
159
+
160
+ ## 📄 License
161
+ MIT License © 2025 Hanyeol Cho.
162
+
163
+ ---
164
+
165
+ ## 📬 Contact
166
+ Have questions, ideas, or feedback? [Open an issue](https://github.com/hanyeol/model-compose/issues) or start a discussion on [GitHub Discussions](https://github.com/hanyeol/model-compose/discussions).
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "model-compose"
3
- version = "0.4.9"
4
- description = "model-compose: Declarative AI Model and Workflow Orchestrator"
3
+ version = "0.4.12"
4
+ description = "model-compose: Declarative AI Workflow Orchestrator"
5
5
  authors = [
6
6
  { name = "Hanyeol Cho", email = "hanyeol.cho@gmail.com" }
7
7
  ]
@@ -1,11 +1,18 @@
1
- import click
2
- import json
1
+ from typing import Optional, List
2
+ import importlib.metadata
3
3
  from pathlib import Path
4
+ import click
4
5
  import asyncio
6
+ import json
5
7
 
6
- from mindor.dsl.loader import load_compose_config
7
- from mindor.core.runtime.env import load_env_files, merge_env_data
8
- from mindor.core.compose import *
8
+ def _load_compose_config(config_files: List[Path], env_files: List[Path], env_data: List[str]):
9
+ from mindor.dsl.loader import load_compose_config
10
+ from mindor.core.runtime.env import load_env_files, merge_env_data
11
+
12
+ env = load_env_files(".", env_files or [])
13
+ env = merge_env_data(env, env_data)
14
+
15
+ return load_compose_config(".", config_files, env)
9
16
 
10
17
  @click.group()
11
18
  @click.option(
@@ -13,6 +20,10 @@ from mindor.core.compose import *
13
20
  type=click.Path(exists=True, dir_okay=False, path_type=Path),
14
21
  help="Compose configuration files."
15
22
  )
23
+ @click.version_option(
24
+ version=importlib.metadata.version("model-compose"),
25
+ message="%(prog)s %(version)s"
26
+ )
16
27
  @click.pass_context
17
28
  def compose_command(ctx: click.Context, config_files: List[Path]) -> None:
18
29
  """model-compose"""
@@ -34,21 +45,25 @@ def compose_command(ctx: click.Context, config_files: List[Path]) -> None:
34
45
  @click.option("--verbose", "-v", is_flag=True, help="Enable verbose output.")
35
46
  @click.pass_context
36
47
  def up_command(
37
- ctx: click.Context,
48
+ ctx: click.Context,
38
49
  detach: bool,
39
50
  env_files: List[Path],
40
51
  env_data: List[str],
41
52
  verbose: bool
42
53
  ) -> None:
54
+ from mindor.core.compose import launch_services
43
55
  config_files = ctx.obj.get("config_files", [])
44
56
  async def _async_command():
45
57
  try:
46
- env = load_env_files(".", env_files or [])
47
- env = merge_env_data(env, env_data)
48
- config = load_compose_config(".", config_files, env)
58
+ config = _load_compose_config(config_files, env_files, env_data)
49
59
  await launch_services(config, detach, verbose)
50
60
  except Exception as e:
51
- click.echo(f"❌ {e}", err=True)
61
+ if verbose:
62
+ import traceback
63
+ click.echo(f"❌ Error: {e}\n\nTraceback:", err=True)
64
+ traceback.print_exc()
65
+ else:
66
+ click.echo(f"❌ {e}", err=True)
52
67
  asyncio.run(_async_command())
53
68
 
54
69
  @click.command(name="down")
@@ -70,15 +85,19 @@ def down_command(
70
85
  env_data: List[str],
71
86
  verbose: bool
72
87
  ) -> None:
88
+ from mindor.core.compose import terminate_services
73
89
  config_files = ctx.obj.get("config_files", [])
74
90
  async def _async_command():
75
91
  try:
76
- env = load_env_files(".", env_files or [])
77
- env = merge_env_data(env, env_data)
78
- config = load_compose_config(".", config_files, env)
92
+ config = _load_compose_config(config_files, env_files, env_data)
79
93
  await terminate_services(config, verbose)
80
94
  except Exception as e:
81
- click.echo(f"❌ {e}", err=True)
95
+ if verbose:
96
+ import traceback
97
+ click.echo(f"❌ Error: {e}\n\nTraceback:", err=True)
98
+ traceback.print_exc()
99
+ else:
100
+ click.echo(f"❌ {e}", err=True)
82
101
  asyncio.run(_async_command())
83
102
 
84
103
  @click.command(name="start")
@@ -100,15 +119,19 @@ def start_command(
100
119
  env_data: List[str],
101
120
  verbose: bool
102
121
  ) -> None:
122
+ from mindor.core.compose import start_services
103
123
  config_files = ctx.obj.get("config_files", [])
104
124
  async def _async_command():
105
125
  try:
106
- env = load_env_files(".", env_files or [])
107
- env = merge_env_data(env, env_data)
108
- config = load_compose_config(".", config_files, env)
126
+ config = _load_compose_config(config_files, env_files, env_data)
109
127
  await start_services(config, verbose)
110
128
  except Exception as e:
111
- click.echo(f"❌ {e}", err=True)
129
+ if verbose:
130
+ import traceback
131
+ click.echo(f"❌ Error: {e}\n\nTraceback:", err=True)
132
+ traceback.print_exc()
133
+ else:
134
+ click.echo(f"❌ {e}", err=True)
112
135
  asyncio.run(_async_command())
113
136
 
114
137
  @click.command(name="stop")
@@ -130,15 +153,19 @@ def stop_command(
130
153
  env_data: List[str],
131
154
  verbose: bool
132
155
  ) -> None:
156
+ from mindor.core.compose import stop_services
133
157
  config_files = ctx.obj.get("config_files", [])
134
158
  async def _async_command():
135
159
  try:
136
- env = load_env_files(".", env_files or [])
137
- env = merge_env_data(env, env_data)
138
- config = load_compose_config(".", config_files, env)
160
+ config = _load_compose_config(config_files, env_files, env_data)
139
161
  await stop_services(config, verbose)
140
162
  except Exception as e:
141
- click.echo(f"❌ {e}", err=True)
163
+ if verbose:
164
+ import traceback
165
+ click.echo(f"❌ Error: {e}\n\nTraceback:", err=True)
166
+ traceback.print_exc()
167
+ else:
168
+ click.echo(f"❌ {e}", err=True)
142
169
  asyncio.run(_async_command())
143
170
 
144
171
  @click.command(name="run")
@@ -176,12 +203,11 @@ def run_command(
176
203
  output_path: Optional[Path],
177
204
  verbose: bool
178
205
  ) -> None:
206
+ from mindor.core.compose import run_workflow
179
207
  config_files = ctx.obj.get("config_files", [])
180
208
  async def _async_command():
181
209
  try:
182
- env = load_env_files(".", env_files or [])
183
- env = merge_env_data(env, env_data)
184
- config = load_compose_config(".", config_files, env)
210
+ config = _load_compose_config(config_files, env_files, env_data)
185
211
  input = json.loads(input_json) if input_json else {}
186
212
  state = await run_workflow(config, workflow_id or "__default__", input, output_path, verbose)
187
213
  if isinstance(state.output, (dict, list)) or state.error:
@@ -196,7 +222,12 @@ def run_command(
196
222
  except json.JSONDecodeError:
197
223
  click.echo("❌ Invalid JSON provided for --input", err=True)
198
224
  except Exception as e:
199
- click.echo(f"❌ {e}", err=True)
225
+ if verbose:
226
+ import traceback
227
+ click.echo(f"❌ Error: {e}\n\nTraceback:", err=True)
228
+ traceback.print_exc()
229
+ else:
230
+ click.echo(f"❌ {e}", err=True)
200
231
  asyncio.run(_async_command())
201
232
 
202
233
  compose_command.add_command(up_command)
@@ -43,6 +43,6 @@ class ComponentActionContext:
43
43
  gateway = find_gateway_by_port(int(port)) if port else None
44
44
 
45
45
  if gateway:
46
- return gateway.get_context()
46
+ return gateway.get_context(int(port))
47
47
 
48
48
  return None
@@ -16,14 +16,14 @@ from mindor.core.workflow import Workflow, WorkflowResolver, create_workflow
16
16
  from mindor.core.logger import LoggerService, create_logger
17
17
  from mindor.core.controller.webui import ControllerWebUI
18
18
  from mindor.core.workflow.schema import WorkflowSchema, create_workflow_schemas
19
- from mindor.core.utils.workqueue import WorkQueue
19
+ from mindor.core.utils.work_queue import WorkQueue
20
20
  from mindor.core.utils.caching import ExpiringDict
21
21
  from .runtime.specs import ControllerRuntimeSpecs
22
22
  from .runtime.native import NativeRuntimeLauncher
23
23
  from .runtime.docker import DockerRuntimeLauncher
24
24
  from threading import Lock
25
25
  from pathlib import Path
26
- import asyncio, ulid, os
26
+ import asyncio, ulid, os, threading
27
27
 
28
28
  class TaskStatus(str, Enum):
29
29
  PENDING = "pending"
@@ -39,6 +39,19 @@ class TaskState:
39
39
  error: Optional[Any] = None
40
40
 
41
41
  class ControllerService(AsyncService):
42
+ _shared_instance: Optional["ControllerService"] = None
43
+ _shared_instance_lock = threading.Lock()
44
+
45
+ def __new__(cls, *args, **kwargs):
46
+ with cls._shared_instance_lock:
47
+ if cls._shared_instance is None:
48
+ cls._shared_instance = super().__new__(cls)
49
+ return cls._shared_instance
50
+
51
+ @classmethod
52
+ def get_shared_instance(cls) -> Optional["ControllerService"]:
53
+ return cls._shared_instance
54
+
42
55
  def __init__(
43
56
  self,
44
57
  config: ControllerConfig,
@@ -279,7 +292,9 @@ class ControllerService(AsyncService):
279
292
  output = await workflow.run(task_id, input)
280
293
  state = TaskState(task_id=task_id, status=TaskStatus.COMPLETED, output=output)
281
294
  except Exception as e:
282
- state = TaskState(task_id=task_id, status=TaskStatus.FAILED, error=str(e))
295
+ import traceback
296
+ error_message = f"{str(e)}\n\nTraceback:\n{''.join(traceback.format_exception(type(e), e, e.__traceback__))}"
297
+ state = TaskState(task_id=task_id, status=TaskStatus.FAILED, error=error_message)
283
298
 
284
299
  with self.task_states_lock:
285
300
  self.task_states.set(task_id, state, 1 * 3600)
@@ -42,6 +42,10 @@ class TaskResult(BaseModel):
42
42
  error=instance.error
43
43
  )
44
44
 
45
+ @classmethod
46
+ def to_dict(cls, instance: TaskState) -> Dict[str, Any]:
47
+ return cls.from_instance(instance).model_dump(exclude_none=True)
48
+
45
49
  class WorkflowVariableResult(BaseModel):
46
50
  name: Optional[str]
47
51
  type: str
@@ -83,6 +87,10 @@ class WorkflowSimpleResult(BaseModel):
83
87
  default=instance.default or None
84
88
  )
85
89
 
90
+ @classmethod
91
+ def to_dict(cls, instance: WorkflowSchema) -> Dict[str, Any]:
92
+ return cls.from_instance(instance).model_dump(exclude_none=True)
93
+
86
94
  class WorkflowSchemaResult(BaseModel):
87
95
  workflow_id: str
88
96
  title: Optional[str] = None
@@ -102,6 +110,10 @@ class WorkflowSchemaResult(BaseModel):
102
110
  default=instance.default or None
103
111
  )
104
112
 
113
+ @classmethod
114
+ def to_dict(cls, instance: WorkflowSchema) -> Dict[str, Any]:
115
+ return cls.from_instance(instance).model_dump(exclude_none=True)
116
+
105
117
  @classmethod
106
118
  def _to_variable_result(cls, variable: Union[WorkflowVariableConfig, WorkflowVariableGroupConfig]) -> Union[WorkflowVariableResult, WorkflowVariableGroupResult]:
107
119
  if isinstance(variable, WorkflowVariableGroupConfig):
@@ -176,6 +188,10 @@ class HttpServerController(ControllerService):
176
188
 
177
189
  return self._render_task_response(state, output_only)
178
190
 
191
+ @self.router.get("/health")
192
+ async def health_check():
193
+ return JSONResponse(content={ "status": "ok" })
194
+
179
195
  async def _serve(self) -> None:
180
196
  self.server = uvicorn.Server(uvicorn.Config(
181
197
  self.app,
@@ -231,7 +247,7 @@ class HttpServerController(ControllerService):
231
247
  return self._render_task_state(state)
232
248
 
233
249
  def _render_task_state(self, state: TaskState) -> Response:
234
- return JSONResponse(content=TaskResult.from_instance(state).model_dump(exclude_none=True))
250
+ return JSONResponse(content=TaskResult.to_dict(state))
235
251
 
236
252
  def _render_task_output(self, state: TaskState) -> Response:
237
253
  if state.status in [ TaskStatus.PENDING, TaskStatus.PROCESSING ]:
@@ -279,13 +295,13 @@ class HttpServerController(ControllerService):
279
295
 
280
296
  def _render_workflow_list(self, workflows: Dict[str, WorkflowSchema]) -> Response:
281
297
  return JSONResponse(content=[
282
- WorkflowSimpleResult.from_instance(workflow).model_dump(exclude_none=True) for workflow in workflows.values()
298
+ WorkflowSimpleResult.to_dict(workflow) for workflow in workflows.values()
283
299
  ])
284
300
 
285
301
  def _render_workflow_schemas(self, workflows: Dict[str, WorkflowSchema]) -> Response:
286
302
  return JSONResponse(content=[
287
- WorkflowSchemaResult.from_instance(workflow).model_dump(exclude_none=True) for workflow in workflows.values()
303
+ WorkflowSchemaResult.to_dict(workflow) for workflow in workflows.values()
288
304
  ])
289
305
 
290
306
  def _render_workflow_schema(self, workflow: WorkflowSchema) -> Response:
291
- return JSONResponse(content=WorkflowSchemaResult.from_instance(workflow).model_dump(exclude_none=True))
307
+ return JSONResponse(content=WorkflowSchemaResult.to_dict(workflow))
@@ -12,7 +12,11 @@ class GatewayService(AsyncService):
12
12
  self.config: GatewayConfig = config
13
13
 
14
14
  @abstractmethod
15
- def get_context(self) -> Dict[str, Any]:
15
+ def get_context(self, port: int) -> Optional[Dict[str, Any]]:
16
+ pass
17
+
18
+ @abstractmethod
19
+ def serves_port(self, port: int) -> bool:
16
20
  pass
17
21
 
18
22
  async def _install_package(self, package_spec: str, repository: Optional[str]) -> None:
@@ -20,6 +20,6 @@ def create_gateway(id: str, config: GatewayConfig, daemon: bool) -> GatewayServi
20
20
 
21
21
  def find_gateway_by_port(port: int) -> Optional[GatewayService]:
22
22
  for gateway in GatewayInstances.values():
23
- if gateway.config.port == port:
23
+ if gateway.serves_port(port):
24
24
  return gateway
25
25
  return None