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.
- {model_compose-0.4.30 → model_compose-0.4.32}/PKG-INFO +4 -3
- {model_compose-0.4.30 → model_compose-0.4.32}/README.md +2 -2
- {model_compose-0.4.30 → model_compose-0.4.32}/pyproject.toml +2 -1
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/mcp_server.py +5 -5
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/base.py +25 -0
- model_compose-0.4.32/src/mindor/core/controller/runtime/apple_container/__init__.py +1 -0
- model_compose-0.4.32/src/mindor/core/controller/runtime/apple_container/apple_container.py +127 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/context/Dockerfile +3 -1
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/process_manager.py +6 -9
- model_compose-0.4.32/src/mindor/core/runtime/apple_container/__init__.py +1 -0
- model_compose-0.4.32/src/mindor/core/runtime/apple_container/apple_container.py +222 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_client.py +2 -2
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_server.py +2 -2
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/__init__.py +1 -0
- model_compose-0.4.32/src/mindor/dsl/schema/runtime/impl/apple_container.py +49 -0
- model_compose-0.4.32/src/mindor/dsl/schema/runtime/impl/types.py +8 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/runtime.py +2 -1
- {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/PKG-INFO +4 -3
- {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/SOURCES.txt +5 -0
- model_compose-0.4.30/src/mindor/dsl/schema/runtime/impl/types.py +0 -7
- {model_compose-0.4.30 → model_compose-0.4.32}/LICENSE +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/setup.cfg +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/cli/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/cli/compose.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/cli/interrupt.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/component.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/context.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/runtime/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/runtime/process_manager.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/runtime/process_worker.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/agent.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/datasets.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/local.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/utils.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/http_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/http_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/image_processor.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/mcp_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/mcp_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/model.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/custom.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/qwen.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/shell.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/text_splitter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/vector_store.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/ffmpeg.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/pyscenedetect.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/transnetv2.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/video_scene_detector.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/web_browser.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/web_scraper.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/component/services/workflow.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/compose.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/manager.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/compose/validator.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/adapter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/http_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/drivers/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/drivers/redis.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/queue_subscriber.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/controller.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/drivers/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/drivers/redis.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/queue/queue.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/http_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/mcp_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runner/runner.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/native/native.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/runtime/specs.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/webui/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/webui/gradio.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/controller/webui/webui.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/errors.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/evaluator/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/evaluator/condition.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/async_service.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/compat/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/compat/asyncio.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/ipc_messages.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/package.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/foundation/process_worker.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/gateway.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/gateway/services/ssh_tunnel.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/listener.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/services/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/services/http_callback.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/listener/services/http_trigger.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/logger.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/logging.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/services/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/services/console.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/logger/services/file.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/docker/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/docker/docker.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/runtime/env.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/services/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/services/docker_compose.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/system/system.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/active_counter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/caching.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/cdp_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_request.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_response.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/http_status.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/image.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/mcp_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/renderers.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/resolvers.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/shell.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/ssh_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/streamer.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/streaming.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/time.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/url.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/websocket_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/utils/work_queue.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/context.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/interrupt.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/base.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/component.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/delay.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/filter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/if_.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/random_router.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/switch.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/job/job.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/schema.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/tool.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/core/workflow/workflow.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/loader.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/action.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/agent.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/datasets.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/image_processor.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/model.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/video_scene_detector.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/web_browser.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/web_scraper.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/component.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/agent.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/datasets/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/datasets/datasets.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/image_processor.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/model.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/types.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/video_scene_detector.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/web_browser.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/web_scraper.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/compose.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/adapter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/http_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/mcp_server.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/redis.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/queue_subscriber.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/types.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/controller.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/redis.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/queue.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/component.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/if_.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/switch.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/types.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/job/job.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/http_trigger.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/listener.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/logger.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/operator/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/operator/condition.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/embedded.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/process.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/common.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/docker_compose.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/types.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/system/system.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/http.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/ssh.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/workflow.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/utils/__init__.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/utils/enum.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/utils/path.py +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/dependency_links.txt +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/entry_points.txt +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/requires.txt +0 -0
- {model_compose-0.4.30 → model_compose-0.4.32}/src/model_compose.egg-info/top_level.txt +0 -0
- {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.
|
|
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
|

|
|
32
33
|
|
|
33
|
-
[](https://python.org)
|
|
34
35
|
[](https://pypi.org/project/model-compose/)
|
|
35
36
|
[](https://opensource.org/licenses/MIT)
|
|
36
37
|
[](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.
|
|
124
|
+
> Requires: Python 3.10 or higher
|
|
124
125
|
|
|
125
126
|
---
|
|
126
127
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
[](https://python.org)
|
|
6
6
|
[](https://pypi.org/project/model-compose/)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
8
|
[](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.
|
|
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.
|
|
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)
|
|
@@ -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
|
|
129
|
-
|
|
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()
|
{model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_client.py
RENAMED
|
@@ -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,
|
|
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,
|
|
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
|
|
{model_compose-0.4.30 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_server.py
RENAMED
|
@@ -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,
|
|
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,
|
|
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.")
|