model-compose 0.4.7__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 (370) 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.7 → model_compose-0.4.12}/pyproject.toml +2 -3
  4. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/cli/compose.py +57 -26
  5. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/base.py +14 -38
  6. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/context.py +3 -2
  7. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/__init__.py +2 -0
  8. model_compose-0.4.12/src/mindor/core/component/services/datasets/__init__.py +1 -0
  9. model_compose-0.4.12/src/mindor/core/component/services/datasets/datasets.py +129 -0
  10. model_compose-0.4.12/src/mindor/core/component/services/datasets/providers/__init__.py +2 -0
  11. model_compose-0.4.12/src/mindor/core/component/services/datasets/providers/common.py +18 -0
  12. model_compose-0.4.12/src/mindor/core/component/services/datasets/providers/huggingface.py +36 -0
  13. model_compose-0.4.12/src/mindor/core/component/services/datasets/providers/local.py +32 -0
  14. model_compose-0.4.12/src/mindor/core/component/services/datasets/utils.py +12 -0
  15. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/http_client.py +5 -5
  16. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/http_server.py +2 -2
  17. model_compose-0.4.12/src/mindor/core/component/services/image_processor.py +210 -0
  18. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/common.py +1 -1
  19. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/huggingface.py +96 -20
  20. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/__init__.py +1 -0
  21. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +12 -2
  22. model_compose-0.4.12/src/mindor/core/component/services/model/tasks/face_embedding/common.py +47 -0
  23. model_compose-0.4.12/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +12 -0
  24. model_compose-0.4.12/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +113 -0
  25. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/common.py +6 -6
  26. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +1 -1
  27. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +1 -1
  28. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +1 -1
  29. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +1 -1
  30. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +7 -7
  31. model_compose-0.4.12/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +1 -0
  32. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +2 -2
  33. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +2 -2
  34. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +2 -2
  35. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +1 -1
  36. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +2 -2
  37. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +2 -2
  38. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +2 -2
  39. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +13 -10
  40. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/text_splitter.py +0 -1
  41. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/base.py +1 -1
  42. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/vector_store.py +8 -8
  43. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/base.py +35 -4
  44. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runner/http_client.py +6 -5
  45. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/services/http_server.py +62 -26
  46. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/services/mcp_server.py +1 -1
  47. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/webui/gradio.py +6 -0
  48. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/webui/webui.py +1 -1
  49. {model_compose-0.4.7/src/mindor/core/services → model_compose-0.4.12/src/mindor/core/foundation}/async_service.py +32 -2
  50. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/gateway/base.py +11 -2
  51. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/gateway/gateway.py +1 -1
  52. model_compose-0.4.12/src/mindor/core/gateway/services/http_tunnel/base.py +29 -0
  53. model_compose-0.4.12/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +2 -0
  54. model_compose-0.4.12/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +14 -0
  55. model_compose-0.4.12/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +36 -0
  56. model_compose-0.4.12/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +45 -0
  57. model_compose-0.4.12/src/mindor/core/gateway/services/ssh_tunnel.py +82 -0
  58. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/listener/base.py +13 -8
  59. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/listener/services/__init__.py +1 -0
  60. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/listener/services/http_callback.py +12 -14
  61. model_compose-0.4.12/src/mindor/core/listener/services/http_trigger.py +136 -0
  62. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/logger/base.py +1 -1
  63. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/http_client.py +6 -4
  64. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/renderers.py +9 -3
  65. model_compose-0.4.12/src/mindor/core/utils/ssh_client.py +206 -0
  66. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/time.py +6 -3
  67. model_compose-0.4.12/src/mindor/core/utils/url.py +33 -0
  68. model_compose-0.4.12/src/mindor/core/utils/websocket_client.py +56 -0
  69. model_compose-0.4.7/src/mindor/core/utils/workqueue.py → model_compose-0.4.12/src/mindor/core/utils/work_queue.py +3 -3
  70. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/random_router.py +2 -2
  71. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/workflow.py +4 -4
  72. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/loader.py +4 -0
  73. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/action.py +1 -0
  74. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/__init__.py +3 -0
  75. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/datasets/__init__.py +1 -0
  76. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/datasets/common.py +14 -0
  77. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/datasets/datasets.py +48 -0
  78. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +2 -0
  79. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +19 -0
  80. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +12 -0
  81. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +10 -0
  82. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/http_client.py +2 -2
  83. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/http_server.py +2 -2
  84. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/image_processor.py +91 -0
  85. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +2 -0
  86. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +14 -1
  87. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/common.py +1 -1
  88. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +1 -0
  89. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/face_embedding.py +8 -0
  90. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/__init__.py +4 -0
  91. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/common.py +12 -0
  92. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/dlib.py +18 -0
  93. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/facenet.py +19 -0
  94. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/insightface.py +19 -0
  95. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +1 -0
  96. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +3 -0
  97. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +7 -0
  98. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +85 -0
  99. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +25 -0
  100. model_compose-0.4.12/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +8 -0
  101. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -1
  102. {model_compose-0.4.7/src/mindor/dsl/schema/component → model_compose-0.4.12/src/mindor/dsl/schema/action}/impl/vector_store/impl/__init__.py +1 -0
  103. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +6 -1
  104. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +6 -1
  105. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +6 -1
  106. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +6 -1
  107. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/component.py +3 -1
  108. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/__init__.py +3 -0
  109. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/common.py +11 -4
  110. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/datasets/__init__.py +1 -0
  111. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/datasets/datasets.py +18 -0
  112. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/http_client.py +2 -2
  113. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/image_processor.py +17 -0
  114. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +1 -0
  115. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +3 -3
  116. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/common.py +140 -0
  117. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +1 -0
  118. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/face_embedding.py +12 -0
  119. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/__init__.py +4 -0
  120. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/common.py +29 -0
  121. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/dlib.py +14 -0
  122. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/facenet.py +14 -0
  123. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/insightface.py +14 -0
  124. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +4 -3
  125. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +3 -3
  126. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +3 -3
  127. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/model.py +1 -0
  128. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +1 -0
  129. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +3 -0
  130. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +17 -0
  131. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +27 -0
  132. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +17 -0
  133. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +11 -0
  134. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/types.py +15 -0
  135. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +1 -1
  136. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +6 -1
  137. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +2 -2
  138. model_compose-0.4.12/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +32 -0
  139. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/common.py +1 -1
  140. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/http_server.py +2 -2
  141. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/mcp_server.py +2 -2
  142. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/common.py +2 -2
  143. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/common.py +0 -1
  144. model_compose-0.4.12/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +1 -0
  145. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +1 -0
  146. model_compose-0.4.12/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +26 -0
  147. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/__init__.py +1 -0
  148. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/http_callback.py +3 -3
  149. model_compose-0.4.12/src/mindor/dsl/schema/listener/impl/http_trigger.py +27 -0
  150. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/types.py +1 -0
  151. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/listener.py +2 -1
  152. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/docker.py +3 -3
  153. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/transport/ssh.py +1 -1
  154. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/workflow.py +1 -0
  155. model_compose-0.4.12/src/mindor/dsl/utils/path.py +23 -0
  156. model_compose-0.4.12/src/model_compose.egg-info/PKG-INFO +190 -0
  157. {model_compose-0.4.7 → model_compose-0.4.12}/src/model_compose.egg-info/SOURCES.txt +63 -6
  158. {model_compose-0.4.7 → model_compose-0.4.12}/src/model_compose.egg-info/requires.txt +0 -1
  159. model_compose-0.4.7/PKG-INFO +0 -429
  160. model_compose-0.4.7/README.md +0 -404
  161. model_compose-0.4.7/src/mindor/core/gateway/services/http_tunnel.py +0 -82
  162. model_compose-0.4.7/src/mindor/core/gateway/services/ssh_tunnel.py +0 -24
  163. model_compose-0.4.7/src/mindor/core/utils/ssh_client.py +0 -4
  164. model_compose-0.4.7/src/mindor/dsl/schema/component/impl/model/impl/common.py +0 -97
  165. model_compose-0.4.7/src/mindor/dsl/schema/component/impl/model/impl/types.py +0 -10
  166. model_compose-0.4.7/src/mindor/dsl/schema/component/impl/types.py +0 -12
  167. model_compose-0.4.7/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -41
  168. model_compose-0.4.7/src/mindor/dsl/schema/component/impl/vector_store/impl/types.py +0 -7
  169. model_compose-0.4.7/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -9
  170. model_compose-0.4.7/src/model_compose.egg-info/PKG-INFO +0 -429
  171. {model_compose-0.4.7 → model_compose-0.4.12}/LICENSE +0 -0
  172. {model_compose-0.4.7 → model_compose-0.4.12}/setup.cfg +0 -0
  173. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/__init__.py +0 -0
  174. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/cli/__init__.py +0 -0
  175. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/__init__.py +0 -0
  176. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/__init__.py +0 -0
  177. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/component.py +0 -0
  178. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/mcp_client.py +0 -0
  179. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/mcp_server.py +0 -0
  180. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/__init__.py +0 -0
  181. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/__init__.py +0 -0
  182. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
  183. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
  184. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/model.py +0 -0
  185. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
  186. {model_compose-0.4.7/src/mindor/core/component/services/model/tasks/image_generation → model_compose-0.4.12/src/mindor/core/component/services/model/tasks/face_embedding}/__init__.py +0 -0
  187. {model_compose-0.4.7/src/mindor/core/component/services/model/tasks/image_upscale → model_compose-0.4.12/src/mindor/core/component/services/model/tasks/image_generation}/__init__.py +0 -0
  188. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
  189. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +0 -0
  190. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
  191. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
  192. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
  193. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/shell.py +0 -0
  194. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
  195. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
  196. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
  197. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
  198. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/component/services/workflow.py +0 -0
  199. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/compose/__init__.py +0 -0
  200. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/compose/compose.py +0 -0
  201. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/compose/manager.py +0 -0
  202. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/__init__.py +0 -0
  203. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/controller.py +0 -0
  204. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runner/__init__.py +0 -0
  205. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runner/client.py +0 -0
  206. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  207. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runner/runner.py +0 -0
  208. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runtime/__init__.py +0 -0
  209. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
  210. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runtime/docker/context/Dockerfile +0 -0
  211. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
  212. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
  213. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runtime/native/native.py +0 -0
  214. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/runtime/specs.py +0 -0
  215. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/services/__init__.py +0 -0
  216. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/controller/webui/__init__.py +0 -0
  217. {model_compose-0.4.7/src/mindor/core/services → model_compose-0.4.12/src/mindor/core/foundation}/__init__.py +0 -0
  218. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/gateway/__init__.py +0 -0
  219. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/gateway/services/__init__.py +0 -0
  220. {model_compose-0.4.7/src/mindor/dsl/schema/gateway/impl → model_compose-0.4.12/src/mindor/core/gateway/services}/http_tunnel/__init__.py +0 -0
  221. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/listener/__init__.py +0 -0
  222. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/listener/listener.py +0 -0
  223. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/logger/__init__.py +0 -0
  224. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/logger/logger.py +0 -0
  225. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/logger/logging.py +0 -0
  226. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/logger/services/__init__.py +0 -0
  227. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/logger/services/console.py +0 -0
  228. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/logger/services/file.py +0 -0
  229. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/runtime/__init__.py +0 -0
  230. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/runtime/docker/__init__.py +0 -0
  231. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/runtime/docker/docker.py +0 -0
  232. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/runtime/env.py +0 -0
  233. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/__init__.py +0 -0
  234. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/caching.py +0 -0
  235. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/http_request.py +0 -0
  236. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/http_response.py +0 -0
  237. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/http_status.py +0 -0
  238. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/image.py +0 -0
  239. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/mcp_client.py +0 -0
  240. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/package.py +0 -0
  241. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/resolvers.py +0 -0
  242. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/shell.py +0 -0
  243. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/streamer.py +0 -0
  244. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/utils/streaming.py +0 -0
  245. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/__init__.py +0 -0
  246. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/context.py +0 -0
  247. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/__init__.py +0 -0
  248. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/base.py +0 -0
  249. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
  250. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/action.py +0 -0
  251. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  252. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/filter.py +0 -0
  253. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/if_.py +0 -0
  254. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/impl/switch.py +0 -0
  255. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/job/job.py +0 -0
  256. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/core/workflow/schema.py +0 -0
  257. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/__init__.py +0 -0
  258. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/__init__.py +0 -0
  259. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/__init__.py +0 -0
  260. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  261. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  262. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
  263. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
  264. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
  265. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/image_generation.py +0 -0
  266. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/__init__.py +0 -0
  267. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/common.py +0 -0
  268. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/flux.py +0 -0
  269. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  270. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  271. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
  272. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
  273. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/image_upscale.py +0 -0
  274. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  275. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/common.py +0 -0
  276. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  277. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  278. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  279. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  280. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
  281. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
  282. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
  283. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/model/model.py +0 -0
  284. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  285. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
  286. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
  287. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
  288. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  289. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/__init__.py +0 -0
  290. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
  291. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
  292. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
  293. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
  294. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
  295. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/image_generation.py +0 -0
  296. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/__init__.py +0 -0
  297. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +0 -0
  298. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/flux.py +0 -0
  299. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  300. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  301. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -0
  302. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
  303. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/image_upscale.py +0 -0
  304. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  305. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +0 -0
  306. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  307. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  308. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  309. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  310. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
  311. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -0
  312. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
  313. {model_compose-0.4.7/src/mindor/dsl/schema/action → model_compose-0.4.12/src/mindor/dsl/schema/component}/impl/vector_store/impl/__init__.py +0 -0
  314. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -0
  315. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
  316. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
  317. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/compose.py +0 -0
  318. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  319. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/controller.py +0 -0
  320. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  321. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
  322. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
  323. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
  324. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
  325. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
  326. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
  327. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
  328. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  329. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  330. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  331. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
  332. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
  333. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
  334. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
  335. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  336. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/__init__.py +0 -0
  337. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
  338. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/action.py +0 -0
  339. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  340. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  341. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
  342. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/if_.py +0 -0
  343. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
  344. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/switch.py +0 -0
  345. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/impl/types.py +0 -0
  346. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/job/job.py +0 -0
  347. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  348. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  349. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/__init__.py +0 -0
  350. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
  351. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
  352. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
  353. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
  354. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
  355. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/logger/logger.py +0 -0
  356. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  357. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
  358. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  359. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
  360. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
  361. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
  362. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/transport/__init__.py +0 -0
  363. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/schema/transport/http.py +0 -0
  364. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/utils/__init__.py +0 -0
  365. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/utils/annotation.py +0 -0
  366. {model_compose-0.4.7 → model_compose-0.4.12}/src/mindor/dsl/utils/enum.py +0 -0
  367. {model_compose-0.4.7 → model_compose-0.4.12}/src/model_compose.egg-info/dependency_links.txt +0 -0
  368. {model_compose-0.4.7 → model_compose-0.4.12}/src/model_compose.egg-info/entry_points.txt +0 -0
  369. {model_compose-0.4.7 → model_compose-0.4.12}/src/model_compose.egg-info/top_level.txt +0 -0
  370. {model_compose-0.4.7 → 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.7"
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
  ]
@@ -17,7 +17,6 @@ dependencies = [
17
17
  "fastapi",
18
18
  "uvicorn",
19
19
  "mcp>=1.10.1",
20
- "pyngrok",
21
20
  "ulid",
22
21
  "gradio",
23
22
  "Pillow",
@@ -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)
@@ -5,9 +5,8 @@ from mindor.dsl.schema.action import ActionConfig
5
5
  from mindor.dsl.schema.listener import ListenerConfig
6
6
  from mindor.dsl.schema.gateway import GatewayConfig
7
7
  from mindor.dsl.schema.workflow import WorkflowConfig
8
- from mindor.core.services import AsyncService
9
- from mindor.core.utils.workqueue import WorkQueue
10
- from mindor.core.utils.package import install_package, parse_requirement, is_requirement_satisfied
8
+ from mindor.core.foundation import AsyncService
9
+ from mindor.core.utils.work_queue import WorkQueue
11
10
  from mindor.core.logger import logging
12
11
  from .context import ComponentActionContext
13
12
 
@@ -50,20 +49,10 @@ class ComponentService(AsyncService):
50
49
  self.id: str = id
51
50
  self.config: ComponentConfig = config
52
51
  self.global_configs: ComponentGlobalConfigs = global_configs
53
- self.queue: Optional[WorkQueue] = None
52
+ self.work_queue: Optional[WorkQueue] = None
54
53
 
55
54
  if self.config.max_concurrent_count > 0:
56
- self.queue = WorkQueue(self.config.max_concurrent_count, self._run)
57
-
58
- async def setup(self) -> None:
59
- dependencies = self._get_setup_requirements()
60
- if dependencies:
61
- await self._install_packages(dependencies)
62
-
63
- await self._setup()
64
-
65
- async def teardown(self) -> None:
66
- await self._teardown()
55
+ self.work_queue = WorkQueue(self.config.max_concurrent_count, self._run)
67
56
 
68
57
  async def start(self, background: bool = False) -> None:
69
58
  await super().start(background)
@@ -73,29 +62,20 @@ class ComponentService(AsyncService):
73
62
  _, action = ActionResolver(self.config.actions).resolve(action_id)
74
63
  context = ComponentActionContext(run_id, input)
75
64
 
76
- if self.queue:
77
- return await (await self.queue.schedule(action, context))
65
+ if self.work_queue:
66
+ return await (await self.work_queue.schedule(action, context))
78
67
 
79
68
  return await self._run(action, context)
80
69
 
81
- async def _setup(self) -> None:
82
- pass
83
-
84
- async def _teardown(self) -> None:
85
- pass
86
-
87
- def _get_setup_requirements(self) -> Optional[List[str]]:
88
- return None
89
-
90
70
  async def _start(self) -> None:
91
- if self.queue:
92
- await self.queue.start()
71
+ if self.work_queue:
72
+ await self.work_queue.start()
93
73
 
94
74
  await super()._start()
95
75
 
96
76
  async def _stop(self) -> None:
97
- if self.queue:
98
- await self.queue.stop()
77
+ if self.work_queue:
78
+ await self.work_queue.stop()
99
79
 
100
80
  await super()._stop()
101
81
 
@@ -111,14 +91,10 @@ class ComponentService(AsyncService):
111
91
  @abstractmethod
112
92
  async def _run(self, action: ActionConfig, context: ComponentActionContext) -> Any:
113
93
  pass
114
-
115
- async def _install_packages(self, packages: List[str]) -> None:
116
- for package_spec in packages:
117
- package_spec, repository = (package_spec.split("@") + [ None ])[:2]
118
- requirement = parse_requirement(package_spec)
119
- if not requirement or not is_requirement_satisfied(requirement):
120
- logging.info(f"Installing missing module: {package_spec}")
121
- await install_package(repository or package_spec)
94
+
95
+ async def _install_package(self, package_spec: str, repository: Optional[str]) -> None:
96
+ logging.info(f"Installing required module: {package_spec}")
97
+ await super()._install_package(package_spec, repository)
122
98
 
123
99
  def register_component(type: ComponentType):
124
100
  def decorator(cls: Type[ComponentService]) -> Type[ComponentService]:
@@ -1,6 +1,7 @@
1
1
  from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
2
  from mindor.core.utils.renderers import VariableRenderer, ImageValueRenderer
3
3
  from mindor.core.gateway import find_gateway_by_port
4
+ from PIL import Image as PILImage
4
5
 
5
6
  class ComponentActionContext:
6
7
  def __init__(self, run_id: str, input: Dict[str, Any]):
@@ -16,7 +17,7 @@ class ComponentActionContext:
16
17
  async def render_variable(self, value: Any, ignore_files: bool = False) -> Any:
17
18
  return await self.renderer.render(value, ignore_files)
18
19
 
19
- async def render_image(self, value: Any) -> Any:
20
+ async def render_image(self, value: Any) -> Optional[PILImage.Image]:
20
21
  return await ImageValueRenderer().render(await self.render_variable(value))
21
22
 
22
23
  def contains_variable_reference(self, key: str, value: Any) -> bool:
@@ -42,6 +43,6 @@ class ComponentActionContext:
42
43
  gateway = find_gateway_by_port(int(port)) if port else None
43
44
 
44
45
  if gateway:
45
- return gateway.get_context()
46
+ return gateway.get_context(int(port))
46
47
 
47
48
  return None
@@ -3,7 +3,9 @@ from .http_client import *
3
3
  from .mcp_server import *
4
4
  from .mcp_client import *
5
5
  from .model import *
6
+ from .datasets import *
6
7
  from .vector_store import *
7
8
  from .workflow import *
8
9
  from .shell import *
9
10
  from .text_splitter import *
11
+ from .image_processor import *
@@ -0,0 +1 @@
1
+ from .datasets import *