model-compose 0.4.31__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.31 → model_compose-0.4.32}/PKG-INFO +1 -1
- {model_compose-0.4.31 → model_compose-0.4.32}/pyproject.toml +1 -1
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/mcp_server.py +5 -5
- {model_compose-0.4.31 → 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.31 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/context/Dockerfile +3 -1
- {model_compose-0.4.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_client.py +2 -2
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/http_server.py +2 -2
- {model_compose-0.4.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/runtime.py +2 -1
- {model_compose-0.4.31 → model_compose-0.4.32}/src/model_compose.egg-info/PKG-INFO +1 -1
- {model_compose-0.4.31 → model_compose-0.4.32}/src/model_compose.egg-info/SOURCES.txt +5 -0
- model_compose-0.4.31/src/mindor/dsl/schema/runtime/impl/types.py +0 -7
- {model_compose-0.4.31 → model_compose-0.4.32}/LICENSE +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/README.md +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/setup.cfg +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/cli/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/cli/compose.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/cli/interrupt.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/component.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/context.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/runtime/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/runtime/process_manager.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/runtime/process_worker.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/agent.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/datasets.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/providers/local.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/datasets/utils.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/http_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/http_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/image_processor.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/mcp_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/mcp_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/model.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/custom.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/model/tasks/text_to_speech/qwen.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/shell.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/text_splitter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/vector_store/vector_store.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/ffmpeg.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/pyscenedetect.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/drivers/transnetv2.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/video_scene_detector/video_scene_detector.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/web_browser.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/web_scraper.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/component/services/workflow.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/compose/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/compose/compose.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/compose/manager.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/compose/validator.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/adapter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/http_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/drivers/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/drivers/redis.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/adapters/services/queue_subscriber/queue_subscriber.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/controller.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/queue/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/queue/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/queue/drivers/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/queue/drivers/redis.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/queue/queue.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runner/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runner/client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runner/http_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runner/mcp_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runner/runner.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runtime/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runtime/native/native.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/runtime/specs.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/webui/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/webui/gradio.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/controller/webui/webui.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/errors.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/evaluator/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/evaluator/condition.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/foundation/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/foundation/async_service.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/foundation/compat/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/foundation/compat/asyncio.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/foundation/ipc_messages.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/foundation/package.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/foundation/process_worker.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/gateway.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/gateway/services/ssh_tunnel.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/listener/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/listener/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/listener/listener.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/listener/services/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/listener/services/http_callback.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/listener/services/http_trigger.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/logger/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/logger/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/logger/logger.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/logger/logging.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/logger/services/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/logger/services/console.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/logger/services/file.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/runtime/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/runtime/docker/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/runtime/docker/docker.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/runtime/env.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/system/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/system/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/system/services/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/system/services/docker_compose.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/system/system.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/active_counter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/caching.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/cdp_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/http_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/http_request.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/http_response.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/http_status.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/image.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/mcp_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/renderers.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/resolvers.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/shell.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/ssh_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/streamer.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/streaming.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/time.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/url.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/websocket_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/utils/work_queue.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/context.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/interrupt.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/base.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/component.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/delay.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/filter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/if_.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/random_router.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/impl/switch.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/job/job.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/schema.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/tool.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/core/workflow/workflow.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/loader.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/action.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/agent.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/datasets.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/image_processor.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/face_embedding.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/dlib.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/facenet.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/insightface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/image_generation.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/flux.py +0 -0
- {model_compose-0.4.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/sdxl.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/image_upscale.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
- {model_compose-0.4.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/swinir.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/__init__.py +0 -0
- {model_compose-0.4.31 → 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.31 → 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.31 → 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.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model/model.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/video_scene_detector.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/web_browser.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/web_scraper.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/component.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/agent.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/datasets/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/datasets/datasets.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/image_processor.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/face_embedding.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/dlib.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/facenet.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/insightface.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/image_generation.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/flux.py +0 -0
- {model_compose-0.4.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/sdxl.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/image_upscale.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
- {model_compose-0.4.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/__init__.py +0 -0
- {model_compose-0.4.31 → 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.31 → 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.31 → 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.31 → 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.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model/model.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/types.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/video_scene_detector.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/web_browser.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/web_scraper.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/compose.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/adapter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/http_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/mcp_server.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/impl/redis.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/queue_subscriber/queue_subscriber.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/adapter/impl/types.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/controller.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/impl/redis.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/queue/queue.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/component.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/if_.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/switch.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/impl/types.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/job/job.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/http_trigger.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/listener/listener.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/logger/logger.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/operator/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/operator/condition.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/embedded.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/runtime/impl/process.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/system/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/common.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/docker_compose.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/system/impl/types.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/system/system.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/http.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/transport/ssh.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/schema/workflow.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/utils/__init__.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/utils/enum.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/mindor/dsl/utils/path.py +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/model_compose.egg-info/dependency_links.txt +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/model_compose.egg-info/entry_points.txt +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/model_compose.egg-info/requires.txt +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/src/model_compose.egg-info/top_level.txt +0 -0
- {model_compose-0.4.31 → model_compose-0.4.32}/tests/test_cli.py +0 -0
|
@@ -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.31 → 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.31 → 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.")
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
|
|
2
|
+
from pydantic import BaseModel, Field
|
|
3
|
+
from pydantic import model_validator
|
|
4
|
+
from .common import RuntimeType, CommonRuntimeConfig
|
|
5
|
+
|
|
6
|
+
class AppleContainerBuildConfig(BaseModel):
|
|
7
|
+
context: Optional[str] = Field(default=None, description="Build context path.")
|
|
8
|
+
dockerfile: Optional[str] = Field(default=None, description="Path to Dockerfile relative to context.")
|
|
9
|
+
args: Optional[Dict[str, Union[str, int, float, bool]]] = Field(default=None, description="Build arguments as key-value pairs.")
|
|
10
|
+
|
|
11
|
+
class AppleContainerVolumeConfig(BaseModel):
|
|
12
|
+
name: str = Field(..., description="Volume name.")
|
|
13
|
+
target: str = Field(..., description="Mount path inside the container.")
|
|
14
|
+
read_only: Optional[bool] = Field(default=None, description="Mount as read-only.")
|
|
15
|
+
|
|
16
|
+
class AppleContainerDnsConfig(BaseModel):
|
|
17
|
+
domain: str = Field(..., description="DNS domain name (e.g., 'test', 'dev').")
|
|
18
|
+
hostname: Optional[str] = Field(default=None, description="Container hostname within the domain.")
|
|
19
|
+
|
|
20
|
+
class AppleContainerHealthCheck(BaseModel):
|
|
21
|
+
test: Union[str, List[str]] = Field(..., description="Health check command.")
|
|
22
|
+
interval: str = Field(default="30s", description="Time between checks.")
|
|
23
|
+
timeout: str = Field(default="30s", description="Timeout for each check.")
|
|
24
|
+
max_retry_count: Optional[int] = Field(default=3, description="Number of failures before marking as unhealthy.")
|
|
25
|
+
start_period: Optional[str] = Field(default="0s", description="Startup grace period before checks start.")
|
|
26
|
+
|
|
27
|
+
class AppleContainerRuntimeConfig(CommonRuntimeConfig):
|
|
28
|
+
type: Literal[RuntimeType.APPLE_CONTAINER]
|
|
29
|
+
# Image or build
|
|
30
|
+
image: Optional[str] = Field(default=None, description="Container image name with optional tag.")
|
|
31
|
+
build: Optional[AppleContainerBuildConfig] = Field(default=None, description="Build configuration for building image locally.")
|
|
32
|
+
# Container identity
|
|
33
|
+
container_name: Optional[str] = Field(default=None, description="Name of the container.")
|
|
34
|
+
# Networking
|
|
35
|
+
ports: Optional[List[Union[str, int]]] = Field(default=None, description="Port mappings (e.g., '8080:80', 8080).")
|
|
36
|
+
dns: Optional[AppleContainerDnsConfig] = Field(default=None, description="DNS domain configuration for dedicated IP access.")
|
|
37
|
+
# Volumes
|
|
38
|
+
volumes: Optional[List[Union[str, AppleContainerVolumeConfig]]] = Field(default=None, description="Named volume mounts.")
|
|
39
|
+
# Environment variables
|
|
40
|
+
environment: Optional[Dict[str, Union[str, int, float, bool]]] = Field(default=None, description="Environment variables.")
|
|
41
|
+
# Command overrides
|
|
42
|
+
command: Optional[Union[str, List[str]]] = Field(default=None, description="Override the default command.")
|
|
43
|
+
# Resource limits
|
|
44
|
+
cpus: Optional[Union[str, float]] = Field(default=None, description="CPU core limit.")
|
|
45
|
+
mem_limit: Optional[str] = Field(default=None, description="Memory limit (e.g., '1G', '512M').")
|
|
46
|
+
# Health check
|
|
47
|
+
healthcheck: Optional[AppleContainerHealthCheck] = Field(default=None, description="Health check configuration.")
|
|
48
|
+
# Miscellaneous
|
|
49
|
+
labels: Optional[Dict[str, str]] = Field(default=None, description="Container labels.")
|