model-compose 0.4.30__tar.gz → 0.4.32__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 (453) hide show
  1. {model_compose-0.4.30 → model_compose-0.4.32}/PKG-INFO +4 -3
  2. {model_compose-0.4.30 → model_compose-0.4.32}/README.md +2 -2
  3. {model_compose-0.4.30 → model_compose-0.4.32}/pyproject.toml +2 -1
  4. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/mcp_server.py +5 -5
  5. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/base.py +25 -0
  6. model_compose-0.4.32/src/mindor/core/controller/runtime/apple_container/__init__.py +1 -0
  7. model_compose-0.4.32/src/mindor/core/controller/runtime/apple_container/apple_container.py +127 -0
  8. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/context/Dockerfile +3 -1
  9. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/process_manager.py +6 -9
  10. model_compose-0.4.32/src/mindor/core/runtime/apple_container/__init__.py +1 -0
  11. model_compose-0.4.32/src/mindor/core/runtime/apple_container/apple_container.py +222 -0
  12. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_client.py +2 -2
  13. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_server.py +2 -2
  14. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/__init__.py +1 -0
  15. model_compose-0.4.32/src/mindor/dsl/schema/runtime/impl/apple_container.py +49 -0
  16. model_compose-0.4.32/src/mindor/dsl/schema/runtime/impl/types.py +8 -0
  17. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/runtime.py +2 -1
  18. {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/PKG-INFO +4 -3
  19. {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/SOURCES.txt +5 -0
  20. model_compose-0.4.30/src/mindor/dsl/schema/runtime/impl/types.py +0 -7
  21. {model_compose-0.4.30 → model_compose-0.4.32}/LICENSE +0 -0
  22. {model_compose-0.4.30 → model_compose-0.4.32}/setup.cfg +0 -0
  23. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/__init__.py +0 -0
  24. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/cli/__init__.py +0 -0
  25. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/cli/compose.py +0 -0
  26. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/cli/interrupt.py +0 -0
  27. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/__init__.py +0 -0
  28. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/__init__.py +0 -0
  29. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/base.py +0 -0
  30. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/component.py +0 -0
  31. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/context.py +0 -0
  32. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/runtime/__init__.py +0 -0
  33. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/runtime/process_manager.py +0 -0
  34. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/runtime/process_worker.py +0 -0
  35. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/__init__.py +0 -0
  36. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/agent.py +0 -0
  37. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/__init__.py +0 -0
  38. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/datasets.py +0 -0
  39. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/__init__.py +0 -0
  40. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/common.py +0 -0
  41. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/huggingface.py +0 -0
  42. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/local.py +0 -0
  43. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/utils.py +0 -0
  44. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/http_client.py +0 -0
  45. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/http_server.py +0 -0
  46. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/image_processor.py +0 -0
  47. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/mcp_client.py +0 -0
  48. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/mcp_server.py +0 -0
  49. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/__init__.py +0 -0
  50. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/__init__.py +0 -0
  51. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/common.py +0 -0
  52. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/huggingface.py +0 -0
  53. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
  54. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
  55. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/model.py +0 -0
  56. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/__init__.py +0 -0
  57. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
  58. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +0 -0
  59. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/__init__.py +0 -0
  60. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/common.py +0 -0
  61. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +0 -0
  62. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +0 -0
  63. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/__init__.py +0 -0
  64. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/common.py +0 -0
  65. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +0 -0
  66. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +0 -0
  67. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +0 -0
  68. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +0 -0
  69. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
  70. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +0 -0
  71. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +0 -0
  72. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +0 -0
  73. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +0 -0
  74. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +0 -0
  75. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +0 -0
  76. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +0 -0
  77. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +0 -0
  78. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
  79. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +0 -0
  80. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
  81. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +0 -0
  82. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
  83. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +0 -0
  84. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/__init__.py +0 -0
  85. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/common.py +0 -0
  86. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/custom.py +0 -0
  87. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/qwen.py +0 -0
  88. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/shell.py +0 -0
  89. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/text_splitter.py +0 -0
  90. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
  91. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/base.py +0 -0
  92. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
  93. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
  94. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
  95. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/vector_store.py +0 -0
  96. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/__init__.py +0 -0
  97. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/base.py +0 -0
  98. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/__init__.py +0 -0
  99. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/ffmpeg.py +0 -0
  100. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/pyscenedetect.py +0 -0
  101. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/transnetv2.py +0 -0
  102. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/video_scene_detector.py +0 -0
  103. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/web_browser.py +0 -0
  104. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/web_scraper.py +0 -0
  105. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/workflow.py +0 -0
  106. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/__init__.py +0 -0
  107. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/compose.py +0 -0
  108. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/manager.py +0 -0
  109. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/validator.py +0 -0
  110. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/__init__.py +0 -0
  111. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/__init__.py +0 -0
  112. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/adapter.py +0 -0
  113. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/base.py +0 -0
  114. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/__init__.py +0 -0
  115. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/http_server.py +0 -0
  116. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/__init__.py +0 -0
  117. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/base.py +0 -0
  118. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/drivers/__init__.py +0 -0
  119. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/drivers/redis.py +0 -0
  120. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/queue_subscriber.py +0 -0
  121. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/controller.py +0 -0
  122. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/__init__.py +0 -0
  123. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/base.py +0 -0
  124. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/drivers/__init__.py +0 -0
  125. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/drivers/redis.py +0 -0
  126. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/queue.py +0 -0
  127. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/__init__.py +0 -0
  128. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/client.py +0 -0
  129. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/http_client.py +0 -0
  130. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  131. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/runner.py +0 -0
  132. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/__init__.py +0 -0
  133. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
  134. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
  135. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
  136. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/native/native.py +0 -0
  137. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/specs.py +0 -0
  138. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/webui/__init__.py +0 -0
  139. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/webui/gradio.py +0 -0
  140. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/webui/webui.py +0 -0
  141. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/errors.py +0 -0
  142. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/evaluator/__init__.py +0 -0
  143. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/evaluator/condition.py +0 -0
  144. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/__init__.py +0 -0
  145. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/async_service.py +0 -0
  146. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/compat/__init__.py +0 -0
  147. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/compat/asyncio.py +0 -0
  148. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/ipc_messages.py +0 -0
  149. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/package.py +0 -0
  150. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/process_worker.py +0 -0
  151. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/__init__.py +0 -0
  152. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/base.py +0 -0
  153. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/gateway.py +0 -0
  154. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/__init__.py +0 -0
  155. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/__init__.py +0 -0
  156. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/base.py +0 -0
  157. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +0 -0
  158. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +0 -0
  159. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +0 -0
  160. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +0 -0
  161. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/ssh_tunnel.py +0 -0
  162. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/__init__.py +0 -0
  163. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/base.py +0 -0
  164. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/listener.py +0 -0
  165. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/services/__init__.py +0 -0
  166. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/services/http_callback.py +0 -0
  167. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/services/http_trigger.py +0 -0
  168. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/__init__.py +0 -0
  169. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/base.py +0 -0
  170. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/logger.py +0 -0
  171. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/logging.py +0 -0
  172. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/services/__init__.py +0 -0
  173. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/services/console.py +0 -0
  174. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/services/file.py +0 -0
  175. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/__init__.py +0 -0
  176. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/docker/__init__.py +0 -0
  177. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/docker/docker.py +0 -0
  178. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/env.py +0 -0
  179. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/__init__.py +0 -0
  180. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/base.py +0 -0
  181. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/services/__init__.py +0 -0
  182. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/services/docker_compose.py +0 -0
  183. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/system.py +0 -0
  184. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/__init__.py +0 -0
  185. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/active_counter.py +0 -0
  186. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/caching.py +0 -0
  187. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/cdp_client.py +0 -0
  188. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_client.py +0 -0
  189. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_request.py +0 -0
  190. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_response.py +0 -0
  191. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_status.py +0 -0
  192. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/image.py +0 -0
  193. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/mcp_client.py +0 -0
  194. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/renderers.py +0 -0
  195. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/resolvers.py +0 -0
  196. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/shell.py +0 -0
  197. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/ssh_client.py +0 -0
  198. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/streamer.py +0 -0
  199. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/streaming.py +0 -0
  200. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/time.py +0 -0
  201. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/url.py +0 -0
  202. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/websocket_client.py +0 -0
  203. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/work_queue.py +0 -0
  204. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/__init__.py +0 -0
  205. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/context.py +0 -0
  206. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/interrupt.py +0 -0
  207. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/__init__.py +0 -0
  208. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/base.py +0 -0
  209. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
  210. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/component.py +0 -0
  211. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  212. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/filter.py +0 -0
  213. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/if_.py +0 -0
  214. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/random_router.py +0 -0
  215. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/switch.py +0 -0
  216. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/job.py +0 -0
  217. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/schema.py +0 -0
  218. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/tool.py +0 -0
  219. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/workflow.py +0 -0
  220. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/__init__.py +0 -0
  221. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/loader.py +0 -0
  222. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/__init__.py +0 -0
  223. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/__init__.py +0 -0
  224. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/action.py +0 -0
  225. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/__init__.py +0 -0
  226. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/agent.py +0 -0
  227. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  228. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/__init__.py +0 -0
  229. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/common.py +0 -0
  230. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/datasets.py +0 -0
  231. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +0 -0
  232. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +0 -0
  233. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +0 -0
  234. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +0 -0
  235. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/image_processor.py +0 -0
  236. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  237. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
  238. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
  239. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +0 -0
  240. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +0 -0
  241. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/common.py +0 -0
  242. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +0 -0
  243. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/face_embedding.py +0 -0
  244. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  245. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/common.py +0 -0
  246. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/dlib.py +0 -0
  247. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/facenet.py +0 -0
  248. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/insightface.py +0 -0
  249. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
  250. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/image_generation.py +0 -0
  251. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/__init__.py +0 -0
  252. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/common.py +0 -0
  253. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/flux.py +0 -0
  254. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  255. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  256. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
  257. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
  258. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/image_upscale.py +0 -0
  259. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  260. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/common.py +0 -0
  261. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  262. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  263. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  264. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  265. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
  266. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
  267. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
  268. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/__init__.py +0 -0
  269. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/__init__.py +0 -0
  270. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/common.py +0 -0
  271. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/qwen.py +0 -0
  272. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/text_to_speech.py +0 -0
  273. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/model.py +0 -0
  274. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +0 -0
  275. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +0 -0
  276. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +0 -0
  277. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +0 -0
  278. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +0 -0
  279. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +0 -0
  280. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  281. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -0
  282. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
  283. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/__init__.py +0 -0
  284. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +0 -0
  285. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
  286. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +0 -0
  287. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +0 -0
  288. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +0 -0
  289. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
  290. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/video_scene_detector.py +0 -0
  291. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/web_browser.py +0 -0
  292. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/web_scraper.py +0 -0
  293. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  294. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/__init__.py +0 -0
  295. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/component.py +0 -0
  296. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/__init__.py +0 -0
  297. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/agent.py +0 -0
  298. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/common.py +0 -0
  299. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/datasets/__init__.py +0 -0
  300. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/datasets/datasets.py +0 -0
  301. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
  302. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
  303. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/image_processor.py +0 -0
  304. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
  305. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
  306. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
  307. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +0 -0
  308. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +0 -0
  309. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/common.py +0 -0
  310. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +0 -0
  311. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/face_embedding.py +0 -0
  312. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/__init__.py +0 -0
  313. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/common.py +0 -0
  314. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/dlib.py +0 -0
  315. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/facenet.py +0 -0
  316. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/insightface.py +0 -0
  317. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
  318. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/image_generation.py +0 -0
  319. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/__init__.py +0 -0
  320. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +0 -0
  321. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/flux.py +0 -0
  322. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
  323. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/sdxl.py +0 -0
  324. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -0
  325. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
  326. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/image_upscale.py +0 -0
  327. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/__init__.py +0 -0
  328. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +0 -0
  329. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
  330. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
  331. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
  332. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +0 -0
  333. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +0 -0
  334. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +0 -0
  335. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +0 -0
  336. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/__init__.py +0 -0
  337. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/__init__.py +0 -0
  338. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/common.py +0 -0
  339. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/qwen.py +0 -0
  340. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/text_to_speech.py +0 -0
  341. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/model.py +0 -0
  342. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +0 -0
  343. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +0 -0
  344. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +0 -0
  345. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +0 -0
  346. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +0 -0
  347. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +0 -0
  348. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
  349. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -0
  350. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/types.py +0 -0
  351. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
  352. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/__init__.py +0 -0
  353. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +0 -0
  354. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +0 -0
  355. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -0
  356. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +0 -0
  357. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -0
  358. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
  359. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/video_scene_detector.py +0 -0
  360. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/web_browser.py +0 -0
  361. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/web_scraper.py +0 -0
  362. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
  363. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/compose.py +0 -0
  364. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  365. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/__init__.py +0 -0
  366. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/adapter.py +0 -0
  367. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/common.py +0 -0
  368. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/__init__.py +0 -0
  369. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/http_server.py +0 -0
  370. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/mcp_server.py +0 -0
  371. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/__init__.py +0 -0
  372. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/__init__.py +0 -0
  373. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/common.py +0 -0
  374. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/redis.py +0 -0
  375. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/queue_subscriber.py +0 -0
  376. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/types.py +0 -0
  377. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/controller.py +0 -0
  378. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  379. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/__init__.py +0 -0
  380. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/__init__.py +0 -0
  381. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/common.py +0 -0
  382. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/redis.py +0 -0
  383. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/queue.py +0 -0
  384. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
  385. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
  386. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/common.py +0 -0
  387. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
  388. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
  389. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
  390. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
  391. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  392. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  393. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  394. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
  395. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +0 -0
  396. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
  397. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
  398. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
  399. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +0 -0
  400. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
  401. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
  402. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  403. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/__init__.py +0 -0
  404. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
  405. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  406. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/component.py +0 -0
  407. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  408. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
  409. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/if_.py +0 -0
  410. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
  411. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/switch.py +0 -0
  412. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/types.py +0 -0
  413. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/job.py +0 -0
  414. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  415. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
  416. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  417. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
  418. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/http_trigger.py +0 -0
  419. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
  420. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/listener.py +0 -0
  421. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/__init__.py +0 -0
  422. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
  423. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
  424. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
  425. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
  426. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
  427. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/logger.py +0 -0
  428. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/operator/__init__.py +0 -0
  429. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/operator/condition.py +0 -0
  430. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  431. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  432. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
  433. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/embedded.py +0 -0
  434. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
  435. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/process.py +0 -0
  436. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/__init__.py +0 -0
  437. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/__init__.py +0 -0
  438. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/common.py +0 -0
  439. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/docker_compose.py +0 -0
  440. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/types.py +0 -0
  441. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/system.py +0 -0
  442. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/__init__.py +0 -0
  443. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/http.py +0 -0
  444. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/ssh.py +0 -0
  445. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/workflow.py +0 -0
  446. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/utils/__init__.py +0 -0
  447. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/utils/enum.py +0 -0
  448. {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/utils/path.py +0 -0
  449. {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/dependency_links.txt +0 -0
  450. {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/entry_points.txt +0 -0
  451. {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/requires.txt +0 -0
  452. {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/top_level.txt +0 -0
  453. {model_compose-0.4.30 → model_compose-0.4.32}/tests/test_cli.py +0 -0
@@ -1,10 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-compose
3
- Version: 0.4.30
3
+ Version: 0.4.32
4
4
  Summary: model-compose: Declarative AI Workflow Orchestrator
5
5
  Author-email: Hanyeol Cho <hanyeol.cho@gmail.com>
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/hanyeol/model-compose
8
+ Requires-Python: >=3.10
8
9
  Description-Content-Type: text/markdown
9
10
  License-File: LICENSE
10
11
  Requires-Dist: click
@@ -30,7 +31,7 @@ Dynamic: license-file
30
31
 
31
32
  ![model-compose - Declarative AI Workflow Orchestrator](docs/images/main-banner.png)
32
33
 
33
- [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://python.org)
34
+ [![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)
34
35
  [![PyPI version](https://img.shields.io/pypi/v/model-compose.svg)](https://pypi.org/project/model-compose/)
35
36
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
36
37
  [![Downloads](https://pepy.tech/badge/model-compose)](https://pepy.tech/project/model-compose)
@@ -120,7 +121,7 @@ cd model-compose
120
121
  pip install -e .
121
122
  ```
122
123
 
123
- > Requires: Python 3.9 or higher
124
+ > Requires: Python 3.10 or higher
124
125
 
125
126
  ---
126
127
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ![model-compose - Declarative AI Workflow Orchestrator](docs/images/main-banner.png)
4
4
 
5
- [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://python.org)
5
+ [![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)
6
6
  [![PyPI version](https://img.shields.io/pypi/v/model-compose.svg)](https://pypi.org/project/model-compose/)
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
8
  [![Downloads](https://pepy.tech/badge/model-compose)](https://pepy.tech/project/model-compose)
@@ -92,7 +92,7 @@ cd model-compose
92
92
  pip install -e .
93
93
  ```
94
94
 
95
- > Requires: Python 3.9 or higher
95
+ > Requires: Python 3.10 or higher
96
96
 
97
97
  ---
98
98
 
@@ -1,12 +1,13 @@
1
1
  [project]
2
2
  name = "model-compose"
3
- version = "0.4.30"
3
+ version = "0.4.32"
4
4
  description = "model-compose: Declarative AI Workflow Orchestrator"
5
5
  authors = [
6
6
  { name = "Hanyeol Cho", email = "hanyeol.cho@gmail.com" }
7
7
  ]
8
8
  readme = "README.md"
9
9
  license = "MIT"
10
+ requires-python = ">=3.10"
10
11
  dependencies = [
11
12
  "click",
12
13
  "pyyaml",
@@ -67,7 +67,7 @@ class McpServerControllerAdapterService(ControllerAdapterService):
67
67
  annotations=None
68
68
  )
69
69
 
70
- async def _run_workflow_as_tool(self, workflow_id: Optional[str], input: Any) -> List[ContentBlock]:
70
+ async def _run_workflow_as_tool(self, workflow_id: Optional[str], input: Any, context: Any = None) -> List[ContentBlock]:
71
71
  state = await self.controller.run_workflow(workflow_id, input, wait_for_completion=True)
72
72
  return await self._build_state_response(state)
73
73
 
@@ -85,17 +85,17 @@ class McpServerControllerAdapterService(ControllerAdapterService):
85
85
  }))]
86
86
 
87
87
  if state.status == TaskStatus.FAILED:
88
- return [TextContent(type="text", text=json.dumps({"status": "failed", "error": state.error}))]
88
+ return [ TextContent(type="text", text=json.dumps({"status": "failed", "error": state.error})) ]
89
89
 
90
90
  workflow = self.controller.workflow_schemas.get(state.workflow_id) if state.workflow_id else None
91
91
  if workflow:
92
92
  return await self._build_output_value(state, workflow)
93
93
 
94
94
  if state.output is None:
95
- return [TextContent(type="text", text=json.dumps({"status": "completed"}))]
95
+ return [ TextContent(type="text", text=json.dumps({"status": "completed"})) ]
96
96
  if isinstance(state.output, (dict, list)):
97
- return [TextContent(type="text", text=json.dumps(state.output))]
98
- return [TextContent(type="text", text=str(state.output))]
97
+ return [ TextContent(type="text", text=json.dumps(state.output)) ]
98
+ return [ TextContent(type="text", text=str(state.output)) ]
99
99
 
100
100
  async def _build_output_value(self, state: TaskState, workflow: WorkflowSchema) -> List[ContentBlock]:
101
101
  output: List[ContentBlock] = []
@@ -29,6 +29,7 @@ from mindor.core.utils.time import parse_duration
29
29
  from .runtime.specs import ControllerRuntimeSpecs
30
30
  from .runtime.native import NativeRuntimeLauncher
31
31
  from .runtime.docker import DockerRuntimeLauncher
32
+ from .runtime.apple_container import AppleContainerRuntimeLauncher
32
33
  from threading import Lock
33
34
  from pathlib import Path
34
35
  import asyncio, ulid, os, logging, threading
@@ -140,6 +141,12 @@ class ControllerService(AsyncService):
140
141
  await self._stop_loggers()
141
142
  return
142
143
 
144
+ if self.config.runtime.type == RuntimeType.APPLE_CONTAINER:
145
+ await self._start_loggers()
146
+ await AppleContainerRuntimeLauncher(self.config, verbose).launch(self._get_runtime_specs(), detach)
147
+ await self._stop_loggers()
148
+ return
149
+
143
150
  async def terminate_services(self, verbose: bool) -> None:
144
151
  if self.config.runtime.type == RuntimeType.NATIVE:
145
152
  await self._start_loggers(verbose)
@@ -157,6 +164,12 @@ class ControllerService(AsyncService):
157
164
  await self._stop_loggers()
158
165
  return
159
166
 
167
+ if self.config.runtime.type == RuntimeType.APPLE_CONTAINER:
168
+ await self._start_loggers()
169
+ await AppleContainerRuntimeLauncher(self.config, verbose).terminate()
170
+ await self._stop_loggers()
171
+ return
172
+
160
173
  async def start_services(self, verbose: bool) -> None:
161
174
  if self.config.runtime.type == RuntimeType.NATIVE:
162
175
  await self._start_loggers(verbose)
@@ -175,6 +188,12 @@ class ControllerService(AsyncService):
175
188
  await self._stop_loggers()
176
189
  return
177
190
 
191
+ if self.config.runtime.type == RuntimeType.APPLE_CONTAINER:
192
+ await self._start_loggers()
193
+ await AppleContainerRuntimeLauncher(self.config, verbose).start()
194
+ await self._stop_loggers()
195
+ return
196
+
178
197
  async def stop_services(self, verbose: bool) -> None:
179
198
  if self.config.runtime.type == RuntimeType.NATIVE:
180
199
  await self._start_loggers(verbose)
@@ -188,6 +207,12 @@ class ControllerService(AsyncService):
188
207
  await self._stop_loggers()
189
208
  return
190
209
 
210
+ if self.config.runtime.type == RuntimeType.APPLE_CONTAINER:
211
+ await self._start_loggers()
212
+ await AppleContainerRuntimeLauncher(self.config, verbose).stop()
213
+ await self._stop_loggers()
214
+ return
215
+
191
216
  async def run_workflow(
192
217
  self,
193
218
  workflow_id: str,
@@ -0,0 +1 @@
1
+ from .apple_container import *
@@ -0,0 +1,127 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from mindor.dsl.schema.controller import ControllerConfig
3
+ from mindor.dsl.schema.runtime import AppleContainerRuntimeConfig, AppleContainerBuildConfig, AppleContainerVolumeConfig
4
+ from mindor.core.runtime.apple_container import AppleContainerRuntimeManager
5
+ from mindor.core.logger import logging
6
+ from ..specs import ControllerRuntimeSpecs
7
+ from pathlib import Path
8
+ import mindor, shutil, yaml, os
9
+
10
+ class AppleContainerRuntimeLauncher:
11
+ def __init__(self, config: ControllerConfig, verbose: bool):
12
+ self.config: ControllerConfig = config
13
+ self.verbose: bool = verbose
14
+
15
+ self._configure_runtime_config()
16
+
17
+ def _configure_runtime_config(self) -> None:
18
+ adapter_ports = [ adapter.port for adapter in self.config.adapters if hasattr(adapter, 'port') ]
19
+ first_port = adapter_ports[0] if adapter_ports else 8080
20
+
21
+ if not self.config.runtime.image:
22
+ if not self.config.runtime.build:
23
+ self.config.runtime.build = AppleContainerBuildConfig(context=".container", dockerfile="Dockerfile")
24
+ self.config.runtime.image = f"mindor/controller-{first_port}:latest"
25
+
26
+ if not self.config.runtime.container_name:
27
+ self.config.runtime.container_name = self.config.name or f"mindor-controller-{first_port}"
28
+
29
+ if not self.config.runtime.ports:
30
+ webui_port = getattr(self.config.webui, "port", None)
31
+ self.config.runtime.ports = list(set(adapter_ports + ([webui_port] if webui_port else [])))
32
+
33
+ async def launch(self, specs: ControllerRuntimeSpecs, detach: bool) -> None:
34
+ manager = AppleContainerRuntimeManager(self.config.runtime, self.verbose)
35
+
36
+ await self._prepare_build_context(specs)
37
+
38
+ if not await manager.exists_image():
39
+ logging.debug("Checking if container image can be pulled...")
40
+ try:
41
+ await manager.pull_image()
42
+ except Exception as e:
43
+ logging.debug("Container image pull failed: %s — will try building instead.", e)
44
+ else:
45
+ if not await manager.exists_image():
46
+ raise RuntimeError("Container image pull completed, but image is still missing.")
47
+ logging.info("Container image pulled successfully.")
48
+
49
+ if not await manager.exists_image():
50
+ logging.debug("Building container image locally. This may take a few minutes...")
51
+ try:
52
+ await manager.build_image()
53
+ logging.info("Container image build completed successfully.")
54
+ except Exception as e:
55
+ logging.error("Container image build failed: %s", e)
56
+ raise
57
+
58
+ # Create volumes and setup DNS (Apple Container specific)
59
+ await manager.create_volumes()
60
+ await manager.setup_dns()
61
+
62
+ if await manager.is_container_running():
63
+ logging.info("Stopping running container before restarting...")
64
+ await manager.stop_container()
65
+
66
+ logging.info("Starting container (%s mode)...", "detached" if detach else "foreground")
67
+ await manager.start_container(detach)
68
+
69
+ async def terminate(self) -> None:
70
+ manager = AppleContainerRuntimeManager(self.config.runtime, self.verbose)
71
+
72
+ if await manager.exists_container():
73
+ await manager.remove_container(force=True)
74
+
75
+ if await manager.exists_image():
76
+ await manager.remove_image()
77
+
78
+ async def start(self) -> None:
79
+ pass
80
+
81
+ async def stop(self) -> None:
82
+ pass
83
+
84
+ async def _prepare_build_context(self, specs: ControllerRuntimeSpecs) -> None:
85
+ context_dir = Path.cwd() / ".container"
86
+ if context_dir.exists():
87
+ shutil.rmtree(context_dir)
88
+
89
+ # Copy source files
90
+ source_files_root = Path(mindor.__file__).resolve().parent
91
+ target_dir = context_dir / "src" / source_files_root.name
92
+ shutil.copytree(
93
+ src=source_files_root,
94
+ dst=target_dir,
95
+ ignore=shutil.ignore_patterns("__pycache__", "*.pyc")
96
+ )
97
+
98
+ # Copy or generate requirements.txt
99
+ file_path = Path.cwd() / "requirements.txt"
100
+ target_path = Path(context_dir) / file_path.name
101
+ if file_path.exists():
102
+ shutil.copy(file_path, target_path)
103
+ else:
104
+ target_path.touch()
105
+
106
+ # Copy or generate webui directory
107
+ Path(context_dir / "webui").mkdir(parents=True, exist_ok=True)
108
+
109
+ if getattr(self.config.webui, "server_dir", None):
110
+ server_dir = Path.cwd() / self.config.webui.server_dir
111
+ target_dir = context_dir / "webui" / "server"
112
+ shutil.copytree(
113
+ src=server_dir,
114
+ dst=target_dir
115
+ )
116
+
117
+ if getattr(self.config.webui, "static_dir", None):
118
+ static_dir = Path.cwd() / self.config.webui.static_dir
119
+ target_dir = context_dir / "webui" / "static"
120
+ shutil.copytree(
121
+ src=static_dir,
122
+ dst=target_dir
123
+ )
124
+
125
+ # Generate model-compose.yml
126
+ with open(context_dir / "model-compose.yml", "w") as f:
127
+ yaml.dump(specs.generate_native_runtime_specs(), f, sort_keys=False)
@@ -27,7 +27,9 @@ RUN pip install --no-cache-dir \
27
27
  pyngrok \
28
28
  ulid \
29
29
  gradio \
30
- Pillow
30
+ Pillow \
31
+ beautifulsoup4 \
32
+ lxml
31
33
 
32
34
  COPY requirements.txt .
33
35
  RUN pip install --no-cache-dir -r requirements.txt
@@ -1,5 +1,4 @@
1
1
  from typing import Any, Dict, Optional, Callable
2
- from mindor.core.logger import logging
3
2
  from .ipc_messages import IpcMessage, IpcMessageType
4
3
  from .process_worker import ProcessWorkerParams
5
4
  from multiprocessing import Process, Queue
@@ -55,7 +54,6 @@ class ProcessRuntimeManager:
55
54
  os.environ[key] = value
56
55
 
57
56
  self.subprocess.start()
58
- logging.info(f"Started subprocess for worker {self.worker_id} (PID: {self.subprocess.pid})")
59
57
 
60
58
  await self._wait_for_ready()
61
59
 
@@ -65,8 +63,6 @@ class ProcessRuntimeManager:
65
63
 
66
64
  async def stop(self) -> None:
67
65
  """Stop the subprocess"""
68
- logging.info(f"Stopping subprocess for worker {self.worker_id}")
69
-
70
66
  stop_message = IpcMessage(
71
67
  type=IpcMessageType.STOP,
72
68
  request_id=str(uuid.uuid4())
@@ -76,11 +72,9 @@ class ProcessRuntimeManager:
76
72
  try:
77
73
  self.subprocess.join(timeout=self.worker_params.stop_timeout)
78
74
  except TimeoutError:
79
- logging.warning(f"Process {self.worker_id} did not stop gracefully, terminating")
80
75
  self.subprocess.terminate()
81
76
  self.subprocess.join(timeout=5)
82
77
  if self.subprocess.is_alive():
83
- logging.error(f"Process {self.worker_id} did not terminate, killing")
84
78
  self.subprocess.kill()
85
79
 
86
80
  if self.response_handler_task:
@@ -125,8 +119,8 @@ class ProcessRuntimeManager:
125
119
  await asyncio.sleep(0.01)
126
120
  except asyncio.CancelledError:
127
121
  break
128
- except Exception as e:
129
- logging.error(f"Error handling response: {e}")
122
+ except Exception:
123
+ pass
130
124
 
131
125
  async def _wait_for_ready(self) -> None:
132
126
  """Wait for subprocess to be ready"""
@@ -138,9 +132,12 @@ class ProcessRuntimeManager:
138
132
  message = IpcMessage(**self.response_queue.get())
139
133
 
140
134
  if message.type == IpcMessageType.STATUS and message.payload.get("status") == "ready":
141
- logging.info(f"Subprocess {self.worker_id} is ready")
142
135
  return
143
136
 
137
+ if message.type == IpcMessageType.ERROR:
138
+ error = message.payload.get("error", "Unknown error") if message.payload else "Unknown error"
139
+ raise RuntimeError(f"Process {self.worker_id} failed to start: {error}")
140
+
144
141
  await asyncio.sleep(0.5)
145
142
 
146
143
  raise TimeoutError(f"Process {self.worker_id} did not start within {timeout}s")
@@ -0,0 +1 @@
1
+ from .apple_container import *
@@ -0,0 +1,222 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from mindor.dsl.schema.runtime import AppleContainerRuntimeConfig, AppleContainerBuildConfig, AppleContainerVolumeConfig
3
+ from mindor.core.logger import logging
4
+ import sys, asyncio, signal
5
+
6
+ class AppleContainerPortsResolver:
7
+ def __init__(self, ports: Optional[List[Union[str, int]]]):
8
+ self.ports: Optional[List[Union[str, int]]] = ports
9
+
10
+ def resolve(self) -> List[str]:
11
+ args: List[str] = []
12
+ for port in self.ports or []:
13
+ if isinstance(port, int):
14
+ args.extend([ "-p", f"{port}:{port}" ])
15
+ continue
16
+ if isinstance(port, str):
17
+ args.extend([ "-p", port ])
18
+ continue
19
+ return args
20
+
21
+ class AppleContainerMountsResolver:
22
+ def __init__(self, volumes: Optional[List[Union[str, AppleContainerVolumeConfig]]]):
23
+ self.volumes: Optional[List[Union[str, AppleContainerVolumeConfig]]] = volumes
24
+
25
+ def resolve(self) -> List[str]:
26
+ args: List[str] = []
27
+ for volume in self.volumes or []:
28
+ if isinstance(volume, str):
29
+ args.extend([ "--volume", volume ])
30
+ continue
31
+ if isinstance(volume, AppleContainerVolumeConfig):
32
+ mount_str = f"{volume.name}:{volume.target}"
33
+ args.extend([ "--volume", mount_str ])
34
+ continue
35
+ return args
36
+
37
+ class AppleContainerRuntimeManager:
38
+ def __init__(self, config: AppleContainerRuntimeConfig, verbose: bool):
39
+ self.config: AppleContainerRuntimeConfig = config
40
+ self.verbose: bool = verbose
41
+ self._shutdown_event: asyncio.Event = asyncio.Event()
42
+
43
+ # ===== Container Lifecycle =====
44
+
45
+ async def start_container(self, detach: bool) -> None:
46
+ args = ["run"]
47
+
48
+ if self.config.container_name:
49
+ args.extend(["--name", self.config.container_name])
50
+
51
+ if detach:
52
+ args.append("-d")
53
+
54
+ args.extend(AppleContainerPortsResolver(self.config.ports).resolve())
55
+ args.extend(AppleContainerMountsResolver(self.config.volumes).resolve())
56
+
57
+ for key, value in (self.config.environment or {}).items():
58
+ args.extend(["-e", f"{key}={value}"])
59
+
60
+ if self.config.cpus is not None:
61
+ args.extend(["--cpus", str(self.config.cpus)])
62
+ if self.config.mem_limit is not None:
63
+ args.extend(["--memory", self.config.mem_limit])
64
+
65
+ args.append(self.config.image)
66
+
67
+ if self.config.command:
68
+ if isinstance(self.config.command, str):
69
+ args.append(self.config.command)
70
+ else:
71
+ args.extend(self.config.command)
72
+
73
+ await self._run_command(args, capture_output=detach)
74
+
75
+ if not detach:
76
+ await self._run_foreground_container()
77
+
78
+ async def stop_container(self) -> None:
79
+ try:
80
+ await self._run_command(["stop", self.config.container_name])
81
+ except RuntimeError as e:
82
+ logging.warning("Failed to stop container '%s': %s", self.config.container_name, e)
83
+
84
+ async def remove_container(self, force: bool = False) -> None:
85
+ args = ["rm"]
86
+ if force:
87
+ args.append("-f")
88
+ args.append(self.config.container_name)
89
+
90
+ try:
91
+ await self._run_command(args)
92
+ except RuntimeError:
93
+ pass
94
+
95
+ async def is_container_running(self) -> bool:
96
+ try:
97
+ process = await self._run_command(["ls"], check=False)
98
+ stdout, _ = await process.communicate()
99
+ return self.config.container_name in stdout.decode()
100
+ except Exception:
101
+ return False
102
+
103
+ async def exists_container(self) -> bool:
104
+ try:
105
+ process = await self._run_command(["ls"], check=False)
106
+ stdout, _ = await process.communicate()
107
+ return self.config.container_name in stdout.decode()
108
+ except Exception:
109
+ return False
110
+
111
+ # ===== Image Management =====
112
+
113
+ async def build_image(self) -> None:
114
+ if not self.config.build:
115
+ raise RuntimeError("Build configuration is required")
116
+
117
+ args = ["build"]
118
+
119
+ if self.config.image:
120
+ args.extend(["-t", self.config.image])
121
+
122
+ if self.config.build.dockerfile:
123
+ args.extend(["-f", self.config.build.dockerfile])
124
+
125
+ for key, value in (self.config.build.args or {}).items():
126
+ args.extend(["--build-arg", f"{key}={value}"])
127
+
128
+ args.append(self.config.build.context or ".")
129
+
130
+ await self._run_command(args, capture_output=False)
131
+
132
+ async def pull_image(self) -> None:
133
+ await self._run_command(["image", "pull", self.config.image], capture_output=False)
134
+
135
+ async def remove_image(self, force: bool = False) -> None:
136
+ try:
137
+ await self._run_command(["image", "rm", self.config.image])
138
+ except RuntimeError:
139
+ pass
140
+
141
+ async def exists_image(self) -> bool:
142
+ try:
143
+ process = await self._run_command(["image", "ls"], check=False)
144
+ stdout, _ = await process.communicate()
145
+ return self.config.image in stdout.decode()
146
+ except Exception:
147
+ return False
148
+
149
+ # ===== DNS Management =====
150
+
151
+ async def setup_dns(self) -> None:
152
+ if not self.config.dns:
153
+ return
154
+
155
+ try:
156
+ await self._run_command(
157
+ ["system", "dns", "create", self.config.dns.domain]
158
+ )
159
+ logging.info(
160
+ "DNS domain '%s' created. Container accessible at: %s.%s",
161
+ self.config.dns.domain,
162
+ self.config.dns.hostname or self.config.container_name,
163
+ self.config.dns.domain
164
+ )
165
+ except RuntimeError as e:
166
+ logging.warning("Failed to setup DNS: %s", e)
167
+
168
+ # ===== Volume Management =====
169
+
170
+ async def create_volumes(self) -> None:
171
+ for volume in self.config.volumes or []:
172
+ if isinstance(volume, AppleContainerVolumeConfig):
173
+ try:
174
+ await self._run_command(["volume", "create", volume.name])
175
+ except RuntimeError:
176
+ pass # may already exist
177
+
178
+ # ===== Private Helpers =====
179
+
180
+ async def _run_command(
181
+ self,
182
+ args: List[str],
183
+ check: bool = True,
184
+ capture_output: bool = True
185
+ ) -> asyncio.subprocess.Process:
186
+ command = ["container"] + args
187
+
188
+ logging.debug("Running: %s", " ".join(command))
189
+
190
+ process = await asyncio.create_subprocess_exec(
191
+ *command,
192
+ stdout=asyncio.subprocess.PIPE if capture_output else sys.stdout,
193
+ stderr=asyncio.subprocess.PIPE if capture_output else sys.stderr
194
+ )
195
+
196
+ if check:
197
+ stdout, stderr = await process.communicate()
198
+ if process.returncode != 0:
199
+ error_msg = stderr.decode() if stderr else "Unknown error"
200
+ raise RuntimeError(
201
+ f"Command '{' '.join(command)}' failed (exit {process.returncode}): {error_msg}"
202
+ )
203
+
204
+ return process
205
+
206
+ async def _run_foreground_container(self) -> None:
207
+ self._register_shutdown_signals()
208
+
209
+ await self._shutdown_event.wait()
210
+
211
+ logging.info(
212
+ "Stopping container '%s' gracefully...",
213
+ self.config.container_name
214
+ )
215
+ await self.stop_container()
216
+
217
+ def _register_shutdown_signals(self) -> None:
218
+ signal.signal(signal.SIGINT, self._handle_shutdown_signal)
219
+ signal.signal(signal.SIGTERM, self._handle_shutdown_signal)
220
+
221
+ def _handle_shutdown_signal(self, signum, frame) -> None:
222
+ self._shutdown_event.set()
@@ -20,7 +20,7 @@ class HttpClientPollingCompletionConfig(HttpClientCommonCompletionConfig):
20
20
  method: Literal[ "GET", "POST", "PUT", "DELETE", "PATCH" ] = Field(default="GET", description="HTTP method for polling requests.")
21
21
  headers: Dict[str, str] = Field(default_factory=dict, description="HTTP headers to include in polling requests.")
22
22
  body: Dict[str, Any] = Field(default_factory=dict, description="Request body data for polling requests.")
23
- params: Dict[str, str] = Field(default_factory=dict, description="URL query parameters for polling requests.")
23
+ params: Dict[str, Any] = Field(default_factory=dict, description="URL query parameters for polling requests.")
24
24
  status: Optional[str] = Field(default=None, description="Field path to check for completion status in polling response.")
25
25
  success_when: Optional[List[Union[int, str]]] = Field(default=None, description="Status codes or values that indicate successful completion.")
26
26
  fail_when: Optional[List[Union[int, str]]] = Field(default=None, description="Status codes or values that indicate failed completion.")
@@ -58,7 +58,7 @@ class HttpClientActionConfig(CommonActionConfig):
58
58
  method: Literal[ "GET", "POST", "PUT", "DELETE", "PATCH" ] = Field(default="POST", description="HTTP method to use for the request")
59
59
  headers: Dict[str, str] = Field(default_factory=dict, description="HTTP headers to include in the request")
60
60
  body: Dict[str, Any] = Field(default_factory=dict, description="Request body data to send with the HTTP request")
61
- params: Dict[str, str] = Field(default_factory=dict, description="URL query parameters to append to the request")
61
+ params: Dict[str, Any] = Field(default_factory=dict, description="URL query parameters to append to the request")
62
62
  stream_format: Optional[HttpStreamFormat] = Field(default=None, description="Format of stream payload.")
63
63
  completion: Optional[HttpClientCompletionConfig] = Field(default=None, description="Configuration for handling asynchronous request completion via polling or callbacks")
64
64
 
@@ -19,7 +19,7 @@ class HttpServerPollingCompletionConfig(HttpServerCommonCompletionConfig):
19
19
  method: Literal[ "GET", "POST", "PUT", "DELETE", "PATCH" ] = Field(default="GET", description="HTTP method for polling completion status.")
20
20
  headers: Dict[str, str] = Field(default_factory=dict, description="HTTP headers to include in polling requests.")
21
21
  body: Dict[str, Any] = Field(default_factory=dict, description="Request body data for polling requests.")
22
- params: Dict[str, str] = Field(default_factory=dict, description="URL query parameters for polling requests.")
22
+ params: Dict[str, Any] = Field(default_factory=dict, description="URL query parameters for polling requests.")
23
23
  status: Optional[str] = Field(default=None, description="Field path to check for completion status in polling response.")
24
24
  success_when: Optional[List[Union[int, str]]] = Field(default=None, description="Status codes or values that indicate successful completion.")
25
25
  fail_when: Optional[List[Union[int, str]]] = Field(default=None, description="Status codes or values that indicate failed completion.")
@@ -50,6 +50,6 @@ class HttpServerActionConfig(CommonActionConfig):
50
50
  method: Literal[ "GET", "POST", "PUT", "DELETE", "PATCH" ] = Field(default="POST", description="HTTP method this endpoint will accept.")
51
51
  headers: Dict[str, str] = Field(default_factory=dict, description="HTTP headers to include in responses from this endpoint.")
52
52
  body: Dict[str, Any] = Field(default_factory=dict, description="Default response body template for this endpoint.")
53
- params: Dict[str, str] = Field(default_factory=dict, description="Expected URL query parameters for this endpoint.")
53
+ params: Dict[str, Any] = Field(default_factory=dict, description="Expected URL query parameters for this endpoint.")
54
54
  stream_format: Optional[HttpStreamFormat] = Field(default=None, description="Format of stream payload.")
55
55
  completion: Optional[HttpServerCompletionConfig] = Field(default=None, description="Configuration for handling asynchronous request completion via polling or callbacks.")
@@ -3,3 +3,4 @@ from .native import *
3
3
  from .embedded import *
4
4
  from .process import *
5
5
  from .docker import *
6
+ from .apple_container import *